基于FPGA實現(xiàn)的SCI接口電路IP核的設(shè)計
工作原理
數(shù)據(jù)傳輸格式
為簡化設(shè)計,SCI以固定的串行數(shù)據(jù)格式傳送數(shù)據(jù),采用NRZ幀格式對數(shù)據(jù)進行編碼,一個數(shù)據(jù)由1bit起始位、8bit數(shù)據(jù)位和一個停止bit共10bit組成。為確保采樣到的數(shù)據(jù)位可靠,選取每位數(shù)據(jù)包含8個SCICLK周期。
波特率的產(chǎn)生
SCI內(nèi)部的串行時鐘(SCICLK)由系統(tǒng)時鐘SCLK與波特率寄存器共同決定。通過16bit波特率選擇寄存器,可以為內(nèi)部串行時鐘提供64k種不同的傳輸速率,其計算公式為:
Baud=SCLK/[(BRR+1)*8]其中BRR為16bit波特率選擇寄存器的值。
SCI異步通信
如前所述,在異步通信模式下一幀數(shù)據(jù)包含一個起始bit、8個數(shù)據(jù)bit、一個停止bit。每個數(shù)據(jù)位占用8個SCICLK周期。
接收數(shù)據(jù)時序
接收器在收到有效的起始位后開始操作,有效的起始位由連續(xù)的0電平組成,長度為4個連續(xù)的內(nèi)部SCICLK周期。對于起始位后的各位,接收器通過對該位的中間進行3次采樣來決定位值,采用在第4、第5、第6個SCICLK周期,位值取決于多數(shù)采樣點的值。數(shù)據(jù)從SCIRXD進入RXSHF,移位進入RXBUF寄存器,并產(chǎn)生中斷請求,RXDRDY置1,表示已經(jīng)接收到新字符]。接收一幀數(shù)據(jù)的時序如圖3所示。
圖3 接收一幀數(shù)據(jù)時序
發(fā)送數(shù)據(jù)時序
發(fā)送器與接收器工作原理基本相同,在TXDRDY為低時,向發(fā)送數(shù)據(jù)緩沖寄存器寫入一個數(shù)據(jù)后啟動發(fā)送;然后數(shù)據(jù)進入TXSHF,同時TXDRDY為高,表示TXBUF可以寫入新值,并產(chǎn)生一個中斷請求。數(shù)據(jù)發(fā)送時序如圖4所示。
圖4 發(fā)送一幀數(shù)據(jù)時序
VerilogHDL實現(xiàn)
狀態(tài)機嵌套模型
由于SCI接口牽涉到復(fù)雜的狀態(tài)機描述,需要采用有限狀態(tài)機的嵌套,形成樹狀的控制邏輯。這一點和所提倡的層次化、結(jié)構(gòu)化的自頂向下的設(shè)計方法相吻合[3]。圖5是一種簡單的狀態(tài)機嵌套模型。
圖5 狀態(tài)機嵌套模型
評論