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