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