隨著超大規模集成電路(Very Large Scale Integration VLSI)工藝技術的發展,芯片的規模越來越大,集成規模以摩爾定律增長。現場可編程邏輯器件(FPGA)由于兼具可編程邏輯器件的現場可編程的靈活性,以及門陣列器件集成度高的優點,在數字系統設計被廣泛采用。同時,ASIC技術的不斷完善以及功能強大的EDA軟件開發平臺的出現,使得FPGA器件在現代數字系統設計和微電子技術應用中起著越來越重要的作用。近幾年來,Xilinx等公司推出了內部嵌入存儲器、微處理器的FPGA器件,使得這種器件的應用更顯其優越性;但在某些應用場合如數據采集時,需要將采集到的數據傳送給PC機,然后由PC機進行數據處理,這時就要借助單片機來完成。因此,有必要在FPGA器件中設計一種通信接口電路,以使設計的應用系統具備通信功能。由于SCI通信接口電路具有結構相對簡單、易于實現等特點,因此本文以SCI接口電路為例介紹基于FPGA器件實現的接口電路IP核的設計。 SCI接口電路結構 SCI接口端口映射 SCI的端口映射如圖1所示,共有20個端口,各端口的功能為: 圖1 SCI接口端口映射 SCI接口結構框圖 為SCI接口內部結構框圖如圖2所示,主要包括以下單元: 圖2 SCI接口結構框圖 發送器(TX)及其控制與狀態寄存器。發送數據緩沖寄存器(TXBUF0…7)包含SCI接口要發送的數據;發送移位寄存器(TXSHF);發送狀態寄存器位(TXRDY、TXEMPT);發送控制寄存器位(TINTENA、TXENA)。 接收器(RX)及其控制與狀態寄存器。接收數據緩沖寄存器(RXBUF0…7)包含SCI接口從SCIRXD接收到的數據;接收移位寄存器(RXSHF);接收狀態寄存器位(RXRDY);接收控制寄存器位(RINTENA、RXENA)。 可編程波特率發生器。由波特率高byte寄存器和波特率低byte寄存器組成,可得到64k種不同的位傳輸速率。當系統時鐘為10MHZ時,其位傳輸速率為19.07~625.0kb/s。寄存器地址譯碼器。寄存器地址譯碼器負責對ADDR0…ADDR2進行譯碼,確保能讀/寫SCI中相應的寄存器。其與RD和WR配合完成對SCI內部各寄存器的讀/寫操作。 工作原理 數據傳輸格式 為簡化設計,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接口牽涉到復雜的狀態機描述,需要采用有限狀態機的嵌套,形成樹狀的控制邏輯。這一點和所提倡的層次化、結構化的自頂向下的設計方法相吻合。圖5是一種簡單的狀態機嵌套模型。 圖5 狀態機嵌套模型 采樣一位數據的狀態機 接收數據起始位檢測狀態機 仿真結果 圖6 起始位檢測仿真波形 由圖7仿真波形可知,采樣一位數據的狀態機在數據位的第4、5、6個內部sclk時鐘進行。位值由多數采樣的值決定,圖中rxd在第4、5、6圖7 采樣一位數據的仿真波形個sclk時的值為1,故dok在第8個sclk時鐘輸出1,表示此次采樣的一位數據為1。 圖7 采樣一位數據的仿真波形 結論 SCI接口電路由VerilogHDL語言描述,可讀性好,便于修改與測試,可方便地嵌入到用戶的FPGA系統。筆者利用Xilinx公司的Spartan ⅡFPGAXC2S100成功地實現了FPGA與PC機的串行通信。如在此基礎上增加其它的控制寄存器,則可設計出功能更為完善的SCI接口電路。 |