當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > 《物聯(lián)網(wǎng)技術(shù)》雜志
[導(dǎo)讀]摘要:隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,硬件間的相互通信速度要求越來(lái)越快。文中給出了采用VerilogHDL語(yǔ)言以有限狀態(tài)機(jī)的形式,在FPGA中實(shí)現(xiàn)對(duì)帶寄存器尋址的SPI接口控制的方法;同時(shí)介紹了通過(guò)SPI接口的結(jié)構(gòu)和工作原理,提出了所設(shè)計(jì)的SPI接口要求,并通過(guò)ModelsimSE6.5仿真軟件進(jìn)行了仿真實(shí)驗(yàn),得到了符合設(shè)計(jì)要求的仿真波形,且在FPGA開(kāi)發(fā)板上得到了正確驗(yàn)證,證明該設(shè)計(jì)可應(yīng)用于帶寄存器尋址的SPI接口配置。

引言

SPI(SerialPeripheralInterface,串行外圍接口)總線是一種高速全雙工同步串行通信接口,可以實(shí)現(xiàn)CPU與各種外圍設(shè)備(如FLAS、LCD顯示驅(qū)動(dòng)器、網(wǎng)絡(luò)控制器、AD轉(zhuǎn)換器、DA轉(zhuǎn)換器和其他CPU等)以串行方式進(jìn)行通信以交換信息。相比于I2c接口和UART等其他串行接口,一般情況下,SPI接口的數(shù)據(jù)傳輸速度最快,可以達(dá)到幾個(gè)Mb/s。I2C接口由于是二線協(xié)議速度,很難超過(guò)1Mb/s;UART工作在方式0(8位移位寄存器)時(shí),時(shí)鐘速度為系統(tǒng)時(shí)鐘的1/12,而SPI接口時(shí)鐘速度一般為系統(tǒng)時(shí)鐘的1/4。本文給出了采用VerilogHDL語(yǔ)言,以FPGA為控制器設(shè)計(jì)的一種帶寄存器尋址的SPI接口的設(shè)計(jì)方法。

1SPI總線結(jié)構(gòu)和工作原理

SPI總線一般使用四條信號(hào)線,以主/從模式工作,這種模式通常有一個(gè)主設(shè)備和多個(gè)從設(shè)備。數(shù)據(jù)傳輸過(guò)程由主機(jī)初始化。它是一種環(huán)形總線結(jié)構(gòu),結(jié)構(gòu)框圖如圖I所示。SPI總線使用的四條信號(hào)線分別為SCLK、MOSI、MISO和CS。其中,SCLK為串行時(shí)鐘線,用來(lái)同步數(shù)據(jù)傳輸,由主機(jī)產(chǎn)生;MOSI是主機(jī)輸出,從機(jī)輸入數(shù)據(jù)線;MISO是主機(jī)輸入,從機(jī)輸出數(shù)據(jù)線;CS是從機(jī)選擇線,由主機(jī)控制輸出。

 基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

圖1  典型SPI總線結(jié)構(gòu)示意圖

CS用于表示控制芯片是否被選中,即只有CS有效時(shí)(高電平或低電平),對(duì)此芯片的操作才有效,從而在同一總線上連接多個(gè)SPI接口設(shè)備成為可能。當(dāng)SPI從機(jī)被選中時(shí),在SPI主機(jī)輸出SCLK的控制下,SPI主機(jī)通過(guò)MOSI引腳發(fā)送數(shù)據(jù),SPI從機(jī)通過(guò)MOSI接收數(shù)據(jù),或者SPI從機(jī)通過(guò)MISO引腳發(fā)送數(shù)據(jù),SPI主機(jī)通過(guò)MISO引腳接收數(shù)據(jù)。

SPI總線通過(guò)時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)兩個(gè)控制位來(lái)配置其工作方式及其接口數(shù)據(jù)傳輸時(shí)序。SPI總線工作時(shí)序圖如圖2所示。CPOL用來(lái)控制SCLK的空閑狀態(tài)電平。當(dāng)CPOL=0時(shí),SCLK的空閑狀態(tài)為低電平;當(dāng)CPOL=1時(shí),SCLK的空閑狀態(tài)為高電平。CPHA用來(lái)控制采樣數(shù)據(jù)的時(shí)刻。當(dāng)CPHA=0時(shí),在SCLK從空閑狀態(tài)跳變的第一個(gè)時(shí)沿(上升或下降)數(shù)據(jù)被采樣;當(dāng)CPHA=1時(shí),在SCLK從空閑狀態(tài)跳變的第二個(gè)時(shí)沿?cái)?shù)據(jù)被采樣。

 基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

SPI總線工作原理:假定CPOL=0,CPHA=1。當(dāng)要傳輸數(shù)據(jù)時(shí),SPI主機(jī)控制CS輸出有效電平,SCLK輸出時(shí)鐘信號(hào),SPI總線處于工作狀態(tài)。當(dāng)SCLK第一個(gè)時(shí)沿(上升沿)來(lái)的時(shí)候,SPI主機(jī)的8位移位寄存器將最高位(MSB)的數(shù)據(jù)移出,并將剩余的數(shù)據(jù)分別左移一位,這時(shí)MOSI線上電平為剛移出MSB代表的電平;同時(shí)SPI從機(jī)的8位移位寄存器將最高位的數(shù)據(jù)移出,并將剩余的數(shù)據(jù)分別左移一位,而MISO線上電平為剛移出MSB代表的電平。然后當(dāng)?shù)诙r(shí)沿(下降沿)到來(lái)的時(shí)候,SPI主機(jī)的8位移位寄存器將鎖存MISO線上的電平,并將其移入最低位(LSB);同時(shí)SPI從機(jī)的8位移位寄存器將鎖存MOSI線上的電平,并將其移入最低位。經(jīng)過(guò)8個(gè)SCLK時(shí)鐘周期后,兩個(gè)移位寄存器就實(shí)現(xiàn)了數(shù)據(jù)交換,即完成了一次SPI接口時(shí)序,然后SPI總線重新回到空閑狀態(tài),從而SPI主機(jī)和SPI從機(jī)之間實(shí)現(xiàn)全雙工通信。

2SPI總線協(xié)議設(shè)計(jì)和軟件實(shí)現(xiàn)

本文采用VerilogHDL語(yǔ)言以同步有限狀態(tài)機(jī)(FSM)的設(shè)計(jì)方法,實(shí)現(xiàn)了一種4線制全雙工的SPI總線冏。通過(guò)SPI主機(jī)訪問(wèn)SPI從機(jī)的控制寄存器,實(shí)現(xiàn)SPI主機(jī)和SPI從機(jī)間的SPI總線協(xié)議通信。

2.1SPI總線協(xié)議

設(shè)計(jì)的SPI總線時(shí)序要求:當(dāng)CS為低電平時(shí),MOSI線和MISO線上數(shù)據(jù)傳輸有效。數(shù)據(jù)傳輸由SCLK控制,每次數(shù)據(jù)傳輸開(kāi)始于SCLK的下降沿。每個(gè)輸出的數(shù)據(jù)位在SCLK上升沿被采樣。1b讀/寫(xiě)位實(shí)現(xiàn)SPI主機(jī)對(duì)SPI從機(jī)的讀操作和寫(xiě)操作。1b的保留位用作擴(kuò)展。6b地址是所要訪問(wèn)的SPI從機(jī)控制寄存器的地址。8b數(shù)據(jù)是寫(xiě)入或讀取SPI從機(jī)指定地址的控制寄存器的內(nèi)容。寫(xiě)操作和讀操作時(shí)序圖如圖3所示。

 基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

2.2SPI接口軟件實(shí)現(xiàn)在

設(shè)計(jì)中,采用100MHz的FPGA內(nèi)部時(shí)鐘FPGA_CLK,而輸出的SPI接口時(shí)鐘SCLK為25MHz。SPI主機(jī)控制SPI從機(jī)實(shí)現(xiàn)讀操作和寫(xiě)操作的主模式程序流程圖如圖4所示。

 基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

在寫(xiě)時(shí)序和讀時(shí)序中可使用同步有限狀態(tài)機(jī)(FSM)實(shí)現(xiàn)其設(shè)計(jì),其狀態(tài)轉(zhuǎn)移圖如圖5所示図。Idle為空閑狀態(tài)時(shí),將檢測(cè)寫(xiě)使能信號(hào)Write_En和讀使能信號(hào)Read_En。

當(dāng)Write_En有效時(shí),進(jìn)入寫(xiě)操作時(shí)序狀態(tài)。在FPGA_CLK時(shí)鐘上升沿的控制下,由Idle狀態(tài)進(jìn)入S1狀態(tài),再進(jìn)入S2狀態(tài),接著進(jìn)入S3狀態(tài)。從S3狀態(tài)開(kāi)始,有限狀態(tài)機(jī)進(jìn)入16次循環(huán)狀態(tài),循環(huán)經(jīng)過(guò)S3、S4、S5和S6狀態(tài)。在S3狀態(tài)時(shí),SPI主機(jī)SCLK輸出低電平,CS輸出低電平,MOSI輸出SPI主機(jī)16位移位寄存器的最高位,而移位寄存器左移一位,最低位補(bǔ)0;在S4狀態(tài)時(shí),SPI主機(jī)SCLK、CS和MOSI輸出保持;在S5狀態(tài)時(shí),SPI主機(jī)SCLK輸出高電平,CS和MOSI輸出保持,16位移位寄存器的最低位鎖存MISO上的電平;在S6狀態(tài)時(shí),SPI主機(jī)SCLK、CS和MOSI輸出保持。當(dāng)16次循環(huán)結(jié)束時(shí),SPI主機(jī)MOSI有效輸出和MISO有效輸入也分別結(jié)束。有限狀態(tài)機(jī)依次進(jìn)入S17、S18、S19、S20,最后回到Idle狀態(tài),寫(xiě)操作時(shí)序結(jié)束。

 基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

當(dāng)Read_En有效時(shí),進(jìn)入讀操作時(shí)序狀態(tài)。由Idle狀態(tài)進(jìn)入S7狀態(tài),再進(jìn)入S8狀態(tài),接著進(jìn)入S9狀態(tài)。從S9狀態(tài)開(kāi)始,有限狀態(tài)機(jī)進(jìn)入8次循環(huán)狀態(tài),循環(huán)經(jīng)過(guò)S9、S10、S11和S12狀態(tài)。在S9狀態(tài)時(shí),SPI主機(jī)SCLK輸出低電平,CS輸出低電平,MOSI輸出SPI主機(jī)16位移位寄存器的最高位,而移位寄存器左移一位,最低位補(bǔ)移位寄存器的最高位數(shù)據(jù);在S10狀態(tài)時(shí),SPI主機(jī)SCLK、CS和MOSI輸出保持;在S11狀態(tài)時(shí),SPI主機(jī)SCLK輸出高電平,CS和MOSI輸出保持;在S12狀態(tài)時(shí),SPI主機(jī)SCLK、CS和MOSI輸出保持。當(dāng)8次循環(huán)結(jié)束時(shí),SPI主機(jī)MOSI有效輸出結(jié)束,而MISO開(kāi)始有效輸入。從S13狀態(tài)開(kāi)始,有限狀態(tài)機(jī)進(jìn)入下一個(gè)8次循環(huán)狀態(tài),循環(huán)經(jīng)過(guò)S13、S14、S15和S16狀態(tài)。在S13狀態(tài),SPI主機(jī)SCLK、CS和MOSI輸出低電平,16位移位寄存器左移一位,最低位補(bǔ)0;在S14狀態(tài)時(shí),SCLK、CS和MOSI輸出保持;在S15狀態(tài)時(shí),SPI主機(jī)SCLK輸出高電平,CS和MOSI輸出保持,16位移位寄存器的最低位鎖存MISO上的電平;在S16狀態(tài)時(shí)候,SCLK、CS和MOSI輸出保持。當(dāng)8次循環(huán)結(jié)束時(shí),SPI主機(jī)MISO有效輸入結(jié)束。有限狀態(tài)機(jī)依次進(jìn)入S17、S18、S19、S20,最后回到Idle狀態(tài),讀操作時(shí)序結(jié)束。

3SPI接口設(shè)計(jì)的仿真和綜合

根據(jù)上述SPI主機(jī)接口的設(shè)計(jì)方案,可采用Altera公司的QuartusII8.1軟件對(duì)其進(jìn)行Verilog編程,并在ModelsimSE6.5軟件中進(jìn)行時(shí)序仿真[10]。SPI接口寫(xiě)操作和寫(xiě)操作時(shí)序仿真圖如圖6所示??梢钥闯?,當(dāng)Write_En為高電平時(shí),將1b讀/寫(xiě)位、1b保留位、6b地址和8b數(shù)據(jù)送入SPI主機(jī)串行發(fā)送緩沖器中?;蛘弋?dāng)Read_En為高電平時(shí),將1b讀/寫(xiě)位、1b保留位和6b地址分別送入SPI主機(jī)串行發(fā)送緩沖器的高8位和低8位中。當(dāng)下一個(gè)FPGA_CLK時(shí)鐘的上升沿到來(lái)時(shí),將SPI主機(jī)串行發(fā)送緩沖器的內(nèi)容送入SPI主機(jī)16b移位寄存器中,接著在FPGA_CLK時(shí)鐘的控制下,進(jìn)入正常的SPI接口寫(xiě)操作或讀操作時(shí)序過(guò)程。當(dāng)CS為高電平時(shí),產(chǎn)生SPI串行通信結(jié)束提示信號(hào)SPI_Done_Sig,并將從MISO接收的數(shù)據(jù)送入SPI串行接收緩沖器。

 基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

從以上仿真結(jié)果可以看出,本設(shè)計(jì)可以滿足SPI總線協(xié)議的設(shè)計(jì)要求,且該SPI模塊功能是可以正常工作的。在QuartusII8.1中完成該模塊的綜合并下載到FPGA開(kāi)發(fā)板上進(jìn)行驗(yàn)證。結(jié)果表明,本設(shè)計(jì)可以實(shí)現(xiàn)FPGA芯片和從設(shè)備間的同步串行通信。

4結(jié)語(yǔ)

本文用VerilogHDL語(yǔ)言以有限狀態(tài)機(jī)的形式設(shè)計(jì)了一種符合SPI總線規(guī)范的主機(jī)模塊,并在仿真軟件ModelsimSE6.5中進(jìn)行了仿真,得到的仿真波形符合設(shè)計(jì)要求。同時(shí),通過(guò)在QuartusII8.1中進(jìn)行綜合并下載到FPGA芯片中實(shí)現(xiàn)了SPI接口功能,也驗(yàn)證了設(shè)計(jì)的正確性。該接口可實(shí)現(xiàn)SPI主機(jī)和帶指定地址控制寄存器的SPI從機(jī)間的同步串行通信,具有一定的實(shí)用價(jià)值。

20211019_616ec9875a558__基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉