日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

引言

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

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

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

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

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

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

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

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

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

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

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

2.1SPI總線協(xié)議

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

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

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

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

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

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

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

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

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

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

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

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

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

4結(jié)語

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

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

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉