專利名稱:一種spi串口模塊的fpga實(shí)現(xiàn)裝置的制作方法
技術(shù)領(lǐng)域:
本實(shí)用新型涉及接ロ通信領(lǐng)域,特別是涉及ー種串行外設(shè)接ロ(SPI)通信的基于FPGA實(shí)現(xiàn)的裝置。
背景技術(shù):
串行外設(shè)接ロ(SPI)是ー個(gè)高速同步的串行輸入/輸出口。SPI通常用于處理器和外部外設(shè)以及其它處理器之間進(jìn)行通信。很多新型器件如IXD模塊、FLASH、ADC、EEPROM存儲(chǔ)器以及時(shí)鐘芯片等都采用了 SPI接ロ。但在實(shí)際開(kāi)發(fā)應(yīng)用中,若主控制器無(wú)SPI接ロ或需要與多個(gè)具有SPI接ロ的外設(shè)通信,就要使用主控制器的I/O ロ通過(guò)軟件來(lái)模擬,這在很大程度上限制了其應(yīng)用給數(shù)據(jù)傳輸帶來(lái)不便。當(dāng)前,基于主從處理器結(jié)構(gòu)的系統(tǒng)架構(gòu)已經(jīng)成為ー種主流(如DSP+FPGA,MCU+FPGA等)。FPGA優(yōu)點(diǎn)主要在于它有很強(qiáng)的靈活性,即其內(nèi)部的具體邏輯功能可以根據(jù)需要配置,對(duì)電路的修改和維護(hù)很方便。傳統(tǒng)SPI接ロ的FPGA實(shí)現(xiàn)往往采用廠家提供的IP核實(shí)現(xiàn),這種方法雖能基本滿足SPI通信要求,但設(shè)計(jì)不夠靈活,不利于功能擴(kuò)展。
實(shí)用新型內(nèi)容本實(shí)用新型的目的是提供ー種SPI串ロ模塊的FPGA實(shí)現(xiàn)裝置,該裝置以FPGA為硬件平臺(tái),采用硬件來(lái)實(shí)現(xiàn)SPI接ロ擴(kuò)充,可實(shí)現(xiàn)對(duì)SPI通信數(shù)據(jù)的自動(dòng)接收和發(fā)送,也可由外部對(duì)該SPI串ロ進(jìn)行快速配置,從而完成串ロ通信速率、時(shí)鐘模式、工作方式、數(shù)據(jù)長(zhǎng)度等的動(dòng)態(tài)更改。該設(shè)計(jì)可擴(kuò)充為多路SPI數(shù)據(jù)通信接ロ,一方面彌補(bǔ)了常規(guī)處理控制器件(單片機(jī)、DSP等)所自帶的SPI硬件串ロ操作繁瑣、功能受限的不足,另ー方面也把單片機(jī)、DSP從頻繁的數(shù)據(jù)查詢或數(shù)據(jù)中斷中解放出來(lái),從而投入更多精力到其它的功能控制中。該裝置既能滿足SPI通訊的需求,又設(shè)計(jì)更靈活,更利于功能擴(kuò)展。本實(shí)用新型或發(fā)明采用的技術(shù)方案如下ー種SPI串ロ模塊的FPGA實(shí)現(xiàn)裝置,其特征在于包括對(duì)外并行接ロ模塊I,數(shù)據(jù)接收FIFO模塊2,通信參數(shù)配置模塊3,數(shù)據(jù)發(fā)送FIFO模塊4,串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5,串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6,串行數(shù)據(jù)發(fā)送處理模塊7。所述對(duì)外并行接ロ模塊I分別與數(shù)據(jù)接收FIFO模塊2、通信參數(shù)配置模塊3、數(shù)據(jù)發(fā)送FIFO模塊4相連;所述數(shù)據(jù)接收FIFO模塊2又與串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5相連;所述通信參數(shù)配置模塊3又與串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6相連;所述數(shù)據(jù)發(fā)送FIFO模塊4又與串行數(shù)據(jù)發(fā)送處理模塊7相連;所述串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5,串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6,串行數(shù)據(jù)發(fā)送處理模塊7依次相連。作為優(yōu)選,還包括與串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6相連的狀態(tài)線SPI_STATUSI2o[0012]作為優(yōu)選,所述對(duì)外并行接ロ模塊I與處理控制器8相連。作為優(yōu)選,所述串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5與主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線SPIS0MI9相連。作為優(yōu)選,所述串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6又分別與串行時(shí)鐘線SPICLK10、從機(jī)選通信號(hào)線SPI_CS11相連。作為優(yōu)選,所述串行數(shù)據(jù)發(fā)送處理模塊7又與主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線SPIS頂013相連。與現(xiàn)有技術(shù)相比,本實(shí)用新型的有益效果是1、該設(shè)計(jì)可擴(kuò)充為多路SPI數(shù)據(jù)通信接ロ,一方面彌補(bǔ)了常規(guī)處理控制器件(單片機(jī)、DSP等)所自帶的SPI硬件串ロ操作繁瑣、功能受限的不足,另ー方面也把單片機(jī)、DSP從頻繁的數(shù)據(jù)查詢或數(shù)據(jù)中斷中解放出來(lái),從而投入更多精力到其它的功能控制中。2、該裝置既能滿足SPI通訊的需求,又設(shè)計(jì)更靈活,更利于功能擴(kuò)展。
圖1為本實(shí)用新型的裝置原理示意圖。圖2為本實(shí)用新型其中一實(shí)施例的應(yīng)用示意圖。圖3為圖2所示實(shí)施例的SPI主模式數(shù)據(jù)接收時(shí)序圖。圖4為圖2所示實(shí)施例的SPI主模式數(shù)據(jù)發(fā)送時(shí)序圖。圖5為圖2所示實(shí)施例的SPI主模式數(shù)據(jù)接收流程圖。圖6為圖2所示實(shí)施例的SPI主模式數(shù)據(jù)發(fā)送流程圖。
具體實(shí)施方式
以下結(jié)合附圖和實(shí)施例對(duì)本實(shí)用新型作進(jìn)ー步的說(shuō)明。如圖1所示,ー種SPI串ロ模塊的FPGA實(shí)現(xiàn)裝置,包括對(duì)外并行接ロ模塊1,數(shù)據(jù)接收FIFO模塊2,通信參數(shù)配置模塊3,數(shù)據(jù)發(fā)送FIFO模塊4,串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5,串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6,串行數(shù)據(jù)發(fā)送處理模塊7。所述對(duì)外并行接ロ模塊I分別與數(shù)據(jù)接收FIFO模塊2、通信參數(shù)配置模塊3、數(shù)據(jù)發(fā)送FIFO模塊4相連;所述數(shù)據(jù)接收FIFO模塊2又與串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5相連;所述通信參數(shù)配置模塊3又與串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6相連;所述數(shù)據(jù)發(fā)送FIFO模塊4又與串行數(shù)據(jù)發(fā)送處理模塊7相連;所述串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5,串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6,串行數(shù)據(jù)發(fā)送處理模塊7依次相連。其中,數(shù)據(jù)接收FIFO模塊2和數(shù)據(jù)發(fā)送FIFO模塊4用來(lái)做接收發(fā)送數(shù)據(jù)的FIFO。通信參數(shù)配置模塊3供處理控制器8讀寫配置SPI的各種參數(shù)。對(duì)外并行接ロ模塊I負(fù)責(zé)與現(xiàn)有的外部處理控制器8 (如單片機(jī)、DSP等)進(jìn)行數(shù)據(jù)交互。串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5完成串行數(shù)據(jù)接收、通信命令解析及產(chǎn)生中斷信號(hào)通知處理控制器8進(jìn)行數(shù)據(jù)接收操作。串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6用來(lái)發(fā)生主模式下的時(shí)鐘信號(hào),同時(shí)對(duì)數(shù)據(jù)的接收或者發(fā)送進(jìn)行功能切換。串行數(shù)據(jù)發(fā)送處理模塊7負(fù)責(zé)把并行進(jìn)來(lái)的數(shù)據(jù)串行傳出,完成對(duì)數(shù)據(jù)發(fā)送的處理。如圖2所示,還包括與串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6相連的狀態(tài)線SPI_STATUS12。所述對(duì)外并行接ロ模塊I與處理控制器8相連。所述串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊5與主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線SPIS0MI 9 相連。所述串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊6又分別與串行時(shí)鐘線SPICLK 10、從機(jī)選通信號(hào)線SPI_CS 11相連。所述串行數(shù)據(jù)發(fā)送處理模塊7又與主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線SPISMO 13相連。如圖3和圖4所示,SPI串行接ロ運(yùn)用4條線可與多種標(biāo)準(zhǔn)中心器件間接接ロ 串行時(shí)鐘線SPICLK 10,主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線SPISMO 13,主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線SPIS0MI 9和低電平有效的從機(jī)選通信號(hào)線SPI_CS 11。串行時(shí)鐘線SPICLK 10為主機(jī)時(shí)鐘線,是從機(jī)的一個(gè)輸入,為主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線SPIS0MI 9數(shù)據(jù)的發(fā)送和接收提供同步時(shí)鐘信號(hào)。時(shí)鐘的相位(CPHA)與極性(CPOL)可以用來(lái)控制數(shù)據(jù)的傳輸。CPOL= “0”表示SCLK的靜止?fàn)顟B(tài)為低電平,CPOL= “I”則表示SCLK的靜止?fàn)顟B(tài)為高電平。時(shí)鐘相位(CPHA)可以用來(lái)選擇兩種不同的數(shù)據(jù)傳輸模式。如果CPHA= “0”,數(shù)據(jù)在信號(hào)SPI_CS聲明后的第一個(gè)SCLK邊沿有效。而當(dāng)CPHA= “I”時(shí),數(shù)據(jù)在信號(hào)SPI_CS聲明后的第二個(gè)SCLK邊沿才有效。因此,主機(jī)與從機(jī)中SPI設(shè)備的時(shí)鐘相位和極性必須要一致才能進(jìn)行通信。SPI有兩種工作模式主模式和從模式。工作在主模式下,不管是發(fā)送還是接收數(shù)據(jù),串行時(shí)鐘線SPICLK 10為整個(gè)串行通信網(wǎng)絡(luò)提供時(shí)鐘。串行數(shù)據(jù)發(fā)送時(shí),首先發(fā)送的是最高有效位(MSB),時(shí)鐘信號(hào)的I次作用對(duì)應(yīng)I位數(shù)據(jù)的發(fā)送(SPISIM0)和另I位數(shù)據(jù)的接收(SPIS0MI)。工作在從模式下,不管是發(fā)送還是接收數(shù)據(jù),一直必需在串行時(shí)鐘線SPICLK10信號(hào)作用下停止,并且從機(jī)選通信號(hào)線SPI_CS 11信號(hào)必需有效。I個(gè)典型的SPI系統(tǒng)包括一個(gè)主MCU和I個(gè)或幾個(gè)從外圍器件。本實(shí)用新型在此所舉實(shí)施例按ー個(gè)默認(rèn)數(shù)據(jù)通信速率(5Mbps)、時(shí)鐘模式(無(wú)相位延時(shí)的下降沿)、主/從工作方式(主SPI模式)進(jìn)行SPI數(shù)據(jù)的收發(fā)??赏ㄟ^(guò)外部處理控制器8對(duì)本模塊進(jìn)行各種通信參數(shù)的動(dòng)態(tài)配置,以適應(yīng)不同的通信速率、時(shí)鐘模式、工作方式、數(shù)據(jù)長(zhǎng)度等情況。配置完畢后,即可開(kāi)始SPI數(shù)據(jù)的收發(fā)過(guò)程。本實(shí)施例中增加了一根主/從SPI方的握手信號(hào)線,即狀態(tài)線SPI_STATUS 12,該信號(hào)線在從SPI方發(fā)送數(shù)據(jù)時(shí)被從方拉為低電平,而在從SPI方接收數(shù)據(jù)時(shí)被從方設(shè)置為高電平。如圖5所示,當(dāng)從SPI方發(fā)送數(shù)據(jù)的時(shí)刻到來(lái)時(shí),本裝置檢測(cè)到狀態(tài)線SPI_STATUS12為“低”,則串行時(shí)鐘產(chǎn)生及收發(fā)控制單元立即啟動(dòng)接收邏輯,對(duì)外輸出串行時(shí)鐘線SPICLK 10信號(hào)和選通信號(hào)線SPI_CS 11信號(hào),同時(shí)在串行時(shí)鐘線SPICLK 10上升沿時(shí)刻進(jìn)行數(shù)據(jù)采樣,并將串行數(shù)據(jù)進(jìn)行相應(yīng)緩存。每當(dāng)采樣數(shù)據(jù)構(gòu)成ー個(gè)完整字節(jié)時(shí),由接收模塊將收到的數(shù)據(jù)存入“數(shù)據(jù)接收FIFO”,同時(shí)對(duì)串口數(shù)據(jù)中的特殊字段進(jìn)行協(xié)議解析。過(guò)程如下先檢索收全數(shù)據(jù)同步頭字節(jié)“AAH AAH”后,對(duì)后面接收的完整字節(jié)進(jìn)行+1計(jì)數(shù)處理,再檢索收到串口數(shù)據(jù)總長(zhǎng)度字節(jié)后,判斷已收到的字節(jié)總數(shù)是否達(dá)到串口數(shù)據(jù)總長(zhǎng)度值。如果達(dá)到接收數(shù)據(jù)總長(zhǎng)度值,則表示一幀數(shù)據(jù)命令接收完整,此處由接收模塊置出“命令數(shù)據(jù)接收完整”標(biāo)志;同吋,當(dāng)檢測(cè)到狀態(tài)線SPI_STATUS12的上升沿到來(lái),給出數(shù)據(jù)接收完畢中斷標(biāo)志信號(hào)int_rxd及時(shí)中斷處理控制器8,通知外部控制器讀取數(shù)據(jù)進(jìn)行處理,而不必每接收到I個(gè)字節(jié)就中斷一次,避免了主程序被頻繁中斷。目前,本裝置的接收FIFO和發(fā)送FIFO深度均設(shè)定為2048字節(jié),可以緩存大量的通信數(shù)據(jù),而不會(huì)將先前收到的數(shù)據(jù)覆蓋,外部處理控制器8可以在處理完其它緊要任務(wù)后,再來(lái)進(jìn)行SPI數(shù)據(jù)的讀取和后續(xù)處理,而不必?fù)?dān)心已接收的SPI數(shù)據(jù)會(huì)丟棹。如圖6所示,當(dāng)需要發(fā)送SPI數(shù)據(jù)時(shí),外部處理控制器8將需要發(fā)送的所有數(shù)據(jù)依次寫入本裝置的“數(shù)據(jù)發(fā)送FIFO模塊4”中,再對(duì)本裝置另ー個(gè)地址單元寫入“啟動(dòng)發(fā)送命令”后,即可啟動(dòng)數(shù)據(jù)發(fā)送模塊發(fā)送數(shù)據(jù)。該裝置實(shí)時(shí)判定數(shù)據(jù)發(fā)送FIFO是否為空,若FIFO內(nèi)有數(shù)據(jù)則立即對(duì)外輸出串行時(shí)鐘SPICLK信號(hào)和選通信號(hào)SPI_CS,并在SPICLK的下降沿時(shí)刻對(duì)取出的數(shù)據(jù)進(jìn)行發(fā)送,首先發(fā)送的是最高有效位(MSB)。即對(duì)主程序而言,就是向ー特定地址寫入所有需要發(fā)送的數(shù)據(jù),再寫入ー個(gè)啟動(dòng)發(fā)送命令即可自動(dòng)完成全部數(shù)據(jù)的發(fā)送,無(wú)需進(jìn)行發(fā)送流程控制。另外,為了保證代碼的準(zhǔn)確性,首先應(yīng)根據(jù)模塊功能需求來(lái)編寫相應(yīng)測(cè)試向量作為本SPI模塊的輸入激勵(lì),然后經(jīng)過(guò)查看模塊的輸出結(jié)果,判定本SPI裝置的各項(xiàng)功能是否正確。在建立測(cè)試平臺(tái)吋,首先建立模擬從SPI方數(shù)據(jù)發(fā)送的模塊,同時(shí)建立模擬主SPI方數(shù)據(jù)發(fā)送的模塊,再將接收/發(fā)送數(shù)據(jù)內(nèi)容進(jìn)行比較、驗(yàn)證。在仿真軟件的輔助分析下,得到了正確的結(jié)果。同時(shí),將整個(gè)設(shè)計(jì)工程文件經(jīng)綜合后的EDIF文件提交給ISE進(jìn)行布局、布線后,把所生成的mcs文件下載到XILINX公司的FPGA芯片XCV600E中運(yùn)行,經(jīng)過(guò)實(shí)際測(cè)試,能達(dá)到該系統(tǒng)所要求實(shí)現(xiàn)的性能,具有很強(qiáng)的實(shí)用性。以上所述僅為本實(shí)用新型的較佳實(shí)施例而已,并不用以限制本實(shí)用新型,凡在本實(shí)用新型的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本實(shí)用新型的保護(hù)范圍之內(nèi)。
權(quán)利要求1.一種SPI串口模塊的FPGA實(shí)現(xiàn)裝置,其特征在于包括對(duì)外并行接口模塊(I),數(shù)據(jù)接收FIFO模塊(2 ),通信參數(shù)配置模塊(3 ),數(shù)據(jù)發(fā)送 FIFO模塊(4),串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊(5),串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊(6),串行數(shù)據(jù)發(fā)送處理模塊(7);所述對(duì)外并行接口模塊(I)分別與數(shù)據(jù)接收FIFO模塊(2)、通信參數(shù)配置模塊(3)、數(shù)據(jù)發(fā)送FIFO模塊(4)相連;所述數(shù)據(jù)接收FIFO模塊(2)又與串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊(5)相連; 所述通信參數(shù)配置模塊(3)又與串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊(6)相連;所述數(shù)據(jù)發(fā)送FIFO模塊(4 )又與串行數(shù)據(jù)發(fā)送處理模塊(7 )相連;所述串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊(5),串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊 (6),串行數(shù)據(jù)發(fā)送處理模塊(7)依次相連。
2.根據(jù)權(quán)利要求1所述的一種SPI串口模塊的FPGA實(shí)現(xiàn)裝置,其特征在于還包括與串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊(6)相連的狀態(tài)線SPI_STATUS (12)。
3.根據(jù)權(quán)利要求2所述的一種SPI串口模塊的FPGA實(shí)現(xiàn)裝置,其特征在于所述對(duì)外并行接口模塊(I)與處理控制器(8 )相連。
4.根據(jù)權(quán)利要求2所述的一種SPI串口模塊的FPGA實(shí)現(xiàn)裝置,其特征在于 所述串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊(5)與主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線 SPIS0MI (9)相連。
5.根據(jù)權(quán)利要求2所述的一種SPI串口模塊的FPGA實(shí)現(xiàn)裝置,其特征在于所述串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊(6)又分別與串行時(shí)鐘線SPICLK (10)、從機(jī)選通信號(hào)線SPI_CS (11)相連。
6.根據(jù)權(quán)利要求2所述的一種SPI串口模塊的FPGA實(shí)現(xiàn)裝置,其特征在于所述串行數(shù)據(jù)發(fā)送處理模塊(7)又與主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線SPISMO (13)相連。
專利摘要本實(shí)用新型提供了一種SPI串口模塊的FPGA實(shí)現(xiàn)裝置,屬于接口通信領(lǐng)域。該裝置以FPGA為硬件平臺(tái),包括對(duì)外并行接口模塊(1),數(shù)據(jù)接收FIFO模塊(2),通信參數(shù)配置模塊(3),數(shù)據(jù)發(fā)送FIFO模塊(4),串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生模塊(5),串行時(shí)鐘產(chǎn)生及收發(fā)控制模塊(6),串行數(shù)據(jù)發(fā)送處理模塊(7)。可實(shí)現(xiàn)對(duì)SPI通信數(shù)據(jù)的自動(dòng)接收和發(fā)送,也可由外部對(duì)該SPI串口進(jìn)行快速配置,從而完成串口通信速率、時(shí)鐘模式、工作方式、數(shù)據(jù)長(zhǎng)度等的動(dòng)態(tài)更改。可擴(kuò)充為多路SPI數(shù)據(jù)通信接口,一方面彌補(bǔ)了常規(guī)處理控制器件所自帶的SPI硬件串口操作繁瑣、功能受限的不足,另一方面也把單片機(jī)、DSP從頻繁的數(shù)據(jù)查詢或數(shù)據(jù)中斷中解放出來(lái),從而投入更多精力到其它的功能控制中。
文檔編號(hào)G06F13/24GK202870808SQ201220320399
公開(kāi)日2013年4月10日 申請(qǐng)日期2012年7月4日 優(yōu)先權(quán)日2012年7月4日
發(fā)明者王維維, 昌暢 申請(qǐng)人:四川九洲電器集團(tuán)有限責(zé)任公司