基于FPGA的帶寄存器尋址SPI接口設(shè)計
摘要:隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,硬件間的相互通信速度要求越來越快。文中給出了采用Verilog HDL語言以有限狀態(tài)機的形式,在FPGA中實現(xiàn)對帶寄存器尋址的SP[接口控制的方法:同時介紹了通過SPI接口的結(jié)構(gòu)和工作原理,提出了所設(shè)計的SPI接口要求,并通過Modelsim SE 6.5仿真軟件進行了仿真實驗,得到了符合設(shè)計要求的仿真波形,且在FPGA開發(fā)板上得到了正確驗證,證明該設(shè)計可應(yīng)用于帶寄存器尋址的SPI接口配置。
關(guān)鍵宇:物聯(lián)網(wǎng);Verilog HDL;FPGA;有限狀態(tài)機;SPI
0 引言
SPI(Serial Peripheral Interface,串行外圍接口)總線是一種高速全雙工同步串行通信接口,可以實現(xiàn)CPU與各種外圍設(shè)備(如FLAS、LCD顯示驅(qū)動器、網(wǎng)絡(luò)控制器、AD轉(zhuǎn)換器、DA轉(zhuǎn)換器和其他CPU等)以串行方式進行通信以交換信息。相比于I2C接口和UART等其他串行接口,一般情況下,SPI接口的數(shù)據(jù)傳輸速度最快,可以達到幾個Mb/s。I2C接口由于是二線協(xié)議速度,很難超過1 Mb/s;UART工作在方式0(8位移位寄存器)時,時鐘速度為系統(tǒng)時鐘的1/12,而SPI接口時鐘速度一般為系統(tǒng)時鐘的1/4。本文給出了采用Verilog HDL語言,以FPGA為控制器設(shè)計的一種帶寄存器尋址的SPI接口的設(shè)計方法。
1 SPI總線結(jié)構(gòu)和工作原理
SPI總線一般使用四條信號線,以主/從模式工作,這種模式通常有一個主設(shè)備和多個從設(shè)備。數(shù)據(jù)傳輸過程由主機初始化。它是一種環(huán)形總線結(jié)構(gòu),結(jié)構(gòu)框圖如圖1所示。SPI總線使用的四條信號線分別為SCLK、MOSI、MISO和CS。其中,SCLK為串行時鐘線,用來同步數(shù)據(jù)傳輸,由主機產(chǎn)生;MOSI是主機輸出,從機輸入數(shù)據(jù)線;MISO是主機輸入,從機輸出數(shù)據(jù)線;CS是從機選擇線,由主機控制輸出。
CS用于表示控制芯片是否被選中,即只有CS有效時(高電平或低電平),對此芯片的操作才有效,從而在同一總線上連接多個SPI接口設(shè)備成為可能。當SPI從機被選中時,在SPI主機輸出SCLK的控制下,SPI主機通過MOSI引腳發(fā)送數(shù)據(jù),SPI從機通過MOSI接收數(shù)據(jù),或者SPI從機通過MISO引腳發(fā)送數(shù)據(jù),SPI主機通過MISO引腳接收數(shù)據(jù)。
SPI總線通過時鐘極性(CPOL)和時鐘相位(CPHA)兩個控制位來配置其工作方式及其接口數(shù)據(jù)傳輸時序。SPI總線工作時序圖如圖2所示。C POL用來控制SCLK的空閑狀態(tài)電平。當CPOL=0時,SCLK的空閑狀態(tài)為低電平;當CPOL=1時,SCLK的空閑狀態(tài)為高電平。CPHA用來控制采樣數(shù)據(jù)的時刻。當CPHA=0時,在SCLK從空閑狀態(tài)跳變的第一個時沿(上升或下降)數(shù)據(jù)被采樣;當CPHA=1時,在SCLK從空閑狀態(tài)跳變的第二個時沿數(shù)據(jù)被采樣。
SPI總線工作原理:假定CPOL=0,CPHA=1。當要傳輸數(shù)據(jù)時,SPI主機控制CS輸出有效電平,SCLK輸出時鐘信號,SPI總線處于工作狀態(tài)。當SCLK第一個時沿(上升沿)來的時候,SPI主機的8位移位寄存器將最高位(MSB)的數(shù)據(jù)移出,并將剩余的數(shù)據(jù)分別左移一位,這時MOSI線上電平為剛移出MSB代表的電平;同時SPI從機的8位移位寄存器將最高位的數(shù)據(jù)移出,并將剩余的數(shù)據(jù)分別左移一位,而MISO線上電平為剛移出MSB代表的電平。然后當?shù)诙r沿(下降沿)到來的時候,SPI主機的8位移位寄存器將鎖存MISO線上的電平,并將其移入最低位(LSB):同時SPI從機的8位移位寄存器將鎖存MOSI線上的電平,并將其移入最低位。經(jīng)過8個SCLK時鐘周期后,兩個移位寄存器就實現(xiàn)了數(shù)據(jù)交換,即完成了一次SPI接口時序,然后SPI總線重新回到空閑狀態(tài),從而SPI主機和SPI從機之間實現(xiàn)全雙工通信。
2 SPI總線協(xié)議設(shè)計和軟件實現(xiàn)
本文采用Verilog HDL語言以同步有限狀態(tài)機(FSM)的設(shè)計方法,實現(xiàn)了一種4線制全雙工的SPI總線。通過SPI主機訪問SPI從機的控制寄存器,實現(xiàn)SPI主機和SPI從機間的SPI總線協(xié)議通信。
2.1 SPI總線協(xié)議
設(shè)計的SPI總線時序要求:當CS為低電平時,MOSI線和MISO線上數(shù)據(jù)傳輸有效。數(shù)據(jù)傳輸由SCLK控制,每次數(shù)據(jù)傳輸開始于SCLK的下降沿。每個輸出的數(shù)據(jù)位在SCLK上升沿被采樣。1 b讀/寫位實現(xiàn)SPI主機對SPI從機的讀操作和寫操作。1 b的保留位用作擴展。6 b地址是所要訪問的SPI從機控制寄存器的地址。8 b數(shù)據(jù)是寫入或讀取SPI從機指定地址的控制寄存器的內(nèi)容。寫操作和讀操作時序圖如圖3所示。
fpga相關(guān)文章:fpga是什么
評論