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