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