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