劉 敏,陳金鷹,唐 偉,李 菊
(成都理工大學信息科學與技術學院,四川 成都 610059)
當在兩個電路間進行8或16位數據傳輸時,需要8或16要數據線進行連接,如果兩個電路相距較遠,采用并行傳輸則不經濟,也不可靠,故常用串行方式進行數據傳輸。由此帶來的問題是傳輸速率將變?yōu)樵瓉淼?/8或1/16。本文提出一種改進的傳輸設計方案,即將并行數據傳輸到FPGA[1],由FPGA以并行數據位數倍的速率按改進的SPI標準進行傳輸,從而實現并行數據的遠程傳輸而保持原來的高速傳輸速率。
并行數據轉改進型SPI輸出接口系統結構如圖1所示。并行數據datain從外部輸入到數據移位寄存器datars中,也可串行從sdi輸入到數據移位寄存器datars中[2]。來自sdi的數據可用來進行收發(fā)兩端傳輸過程的握手,檢驗對方是否正確收到數據。例如,如有必要,對方可將收到數據串行通過sdi發(fā)回到datars中,如果該數據與原datain數據相同,則表明發(fā)送正確。接收到的sdi數據可從數據緩沖寄存器databuf得到。當datain數據發(fā)送完畢,發(fā)送完畢標志信號bf置1。當復位信號reset為1時,bf變?yōu)榈碗娖?,并使nss為低電平,通知對方準備接收數據[3]。
圖1 系統結構
系統工作時鐘為clk,并通過sck為對方提供驅動時鐘。當數據移位寄存器datars中的數據被全部移出時,移完標志信號bf置1,并使串行輸出端口sdo輸出為低電平,否則sdo輸出為datain數據。這里稱之為改進型SPI,其主要特點是在無數據傳輸時,SDI,SDO為低電平以省電,在數據傳輸方式上任采用SPI思想,因此當將該設計電路與現有標準SPI進行接口時,需要注意這種區(qū)別,界時可將無數據傳輸時的電平修改一下即可。如果不與其他原SPI標準通信,兩個該系統電路即可完成高速通信。
系統工作流程如圖2所示。如以發(fā)送端為主設備,接收端為從設備,則系統開始工作時,先通過nss輸出低電平使從設備獲得一個選通信號,進入工作狀態(tài),并向從設備發(fā)送系統工作時鐘sck,使主、從設備能同步傳輸數據。此外還使發(fā)送完畢標志信號bf置0。
圖2 系統工作流程
系統有兩種數據輸入方式:
1)當復位信號reset為1時,將并行數據鎖存輸入主設備,此后在reset為0時進行數據的串行輸出[4]。
2)當復位信號reset為0時,不能從并行輸入端口輸入數據,但可從串行端口輸入數據,使該系統不僅具有與并行輸出設備進行通信的能力,同時具有與串行設備通信的能力。
串行接收的數據通過并行輸出端口databuf從數據緩沖寄存器讀出。系統的端口設置的VHDL語言程序如下:
在Xilinx公司軟件ISE10.1環(huán)境下運行程序,從運行程序綜合后得到的頂層模塊如圖3所示中,可清楚地看到系統與并行設備和串行設備之間進行雙向數據傳輸的接口引腳。
圖3 系統頂層模塊的對外引腳
圖4中為從并行端口輸入兩位十六進制數據B1(10110001b)后,再從串口輸入110000111b后的輸入輸出波形圖。從sdo和databuf輸出引腳可見數據在時鐘sck驅動下的輸出情況[5]。表1則反映了在時鐘驅動下,寄存器中數據和輸入輸出端口上信號的變化過程。
表1 寄存器和輸入輸出端口上信號的變化過程
從表1中可見本改進型SPI串行接口的特點:當數據串行從輸出端口移出時,同時也在串行從輸入端口移入,并沖掉移位寄存器中原有的數據。完成從sdi端口接收一個字節(jié)數據,需要在數據傳輸完成標志bf為高電平后的下一個時鐘才能完成[6]。圖4為仿真程序運行結果。
圖4 仿真程序運行結果(截圖)
隨著電子技術的廣泛應用,不同設備間進行通信變得越來越頻繁和重要,常會遇到不同設備間由于標準不一致,而造成通信困難。該設計可用于解決高速數據的并行傳輸轉SPI方式的串行輸出,其數據傳輸速率與兩個電子設備自身內部的工作頻率無關。數據傳輸時,只需發(fā)信方將數據送到該系統,再發(fā)送一個復位信號reset,數據便可通過該系統傳到對方。此外,還可在發(fā)送數據的同時,通過sdi接收對方數據,并從databuf端口取出,實現雙向通信。
[1]劉慶豐,陳金鷹,王舟兵,等.基于FPGA的DVB-S調制器系統設計[J]. 電視技術,2010,34(1):37-39.
[2]王巍,陳金鷹,鄭恭明.基于ZigBee標準的FPGA設計無線收發(fā)系統[J]. 數字通信世界,2008(9):43-44.
[3]陳培均.基于 FPGA的802.11b設計[D].成都:成都理工大學,2009.
[4]陳卓.基于FPGA的軟件無線電DDC設計[D].成都:成都理工大學,2008.
[5]陳金鷹,孫旭,李燦平.高精度頻率測定的ASIC實現[J].成都理工大學學報:自然科學版,2004,34(4):390-394.
[6]徐國棟,陶安利,徐士敏,等.基于FPGA的DDS函數發(fā)生器的設計與實現[J]. 機械制造與自動化,2010,39(5):91-94.