基于labview的温湿度数据采集_【零偏原创】基于FPGA的多路SPI接口并行数据采集系统...
摘 要:本文簡述了SPI協議,建立了基于FPGA的SPI接口電路模型,并說明其輸入輸出端口和數據發送和接收過程,仿真驗證了在主狀態機控制下10個SPI接口并行采集數據,并在FPGA開發板上進行驗證。
關鍵詞:SPI,FPGA,數據采集,Verilog HDL
1 引言
隨著數字技術發展與應用,越來越多的芯片被用于數據采集與數字交換。在這些芯片中,SPI (Serial Peripheral Interface)作為電路接口應用非常普遍,因而也成為了很多單片機的標準配置。然而很多單片機的SPI接口硬件資源非常有限,在需要同時使用較大數目SPI接口的數據采集系統中,只能對SPI接口擴展并分時復用,這樣勢必造成數據采集速度下降。FPGA具有高度并行的特點[1],筆者根據實際應用,設計了基于FPGA的多路SPI接口并行系統,應用于需多個SPI接口同步運行的數據采集系統中。
2 SPI總線接口
SPI(串行外圍設備接口)是Motorola公司推出的一種同步串行接口,具有傳送速率高、連接線少等特點,常用于MCU與外設數據交換[2]。SPI只需要4條線就能完成主、從與外圍器件全雙工同步通信,這4條線分別為:串行時鐘線(SCK)、主機輸出從機輸入線(MOSI)、主機輸入從機輸出線(MISO)、從機選擇線(CS)。
SPI系統分為主機和從機兩類,其中主機提供SPI時鐘信號和片選信號,作為從機的輸入;從機是接收SPI信號的任何集成電路,包括簡單的TTL移位寄存器或其他MCU等。時鐘極性(CPOL)和時鐘相位(CPHA)的配合完成一次數據傳輸。其中,CPOL表示時鐘在空閑狀態的電平,CPHA決定數據在時鐘的上升沿傳送還是下降沿傳送。CPOL與CPHA的不同,可以使SPI總線工作在4種模式下。
(1) CPOL=0,CPHA=0:SCK的空閑電平為低電平,數據在SCK的第一個跳變沿被采集;
(2) CPOL=0,CPHA=1:SCK的空閑電平為低電平,數據在SCK的第二個跳變沿被采集;
(3) CPOL=1,CPHA=0:SCK的空閑電平為高電平,數據在SCK的第一個跳變沿被采集;
(4) CPOL=1,CPHA=1:SCK的空閑電平為高電平,數據在SCK的第二個跳變沿被采集。
當SPI工作時,發送和接收操作都受控于SPI主機的時鐘信號(SCK)和片選信號(CS),從而保證通信同步。通常情況下,使用一個主機控制多個從機,典型的系統連接如圖1。
圖1 SPI總線系統連接方式
3 主機端SPI接口模塊設計
在筆者設計的數據采集系統中,使用了芯片級傳感器——磁性旋轉編碼器AS5048A[3],用來測量關節點位置,該芯片具備標準SPI輸出。在本數據采集系統中需要同時用到10個SPI接口,設計采用FPGA為主機模式,AS5048A為從機模式。
本數據采集系統,在控制命令作用下通過10個SPI接口完成對10組AS5048A測量值讀取并保存。因此,為實現數據采集目標需要使用硬件描述語言建立SPI總線接口模塊,并設計主狀態機控制系統運行狀態。整個系統在FPGA上實現。
通過對SPI接口建立電路模型,最終生成一個如圖2所示的模塊。模塊的各引腳定義如下:clk為外部輸入時鐘信號,由FPGA提供;rst_n為復位信號,當其為低電平時,系統恢復初始狀態;spi_cmd為SPI接口數據發送控制信號;tx_data為待發送數據;spi_clk、spi_cs、spi_mosi和spi_miso分別為串行時鐘信號、片選信號、主機輸出從機輸入和主機輸入從機輸出信號;rx_data為spi_miso信號經串并轉換得到接收到的數據;tx_done與rx_done分別為數據發送完成與數據接收完成指示信號。
圖2 SPI接口封裝圖
FPGA主狀態機控制整個數據采集的運行狀態。當主狀態機發出讀取控制信號,同時將AS5048A讀取指令存入寄存器tx_data。FPGA作為主機為從機提供時鐘信號和片選信號。當從機AS5048A被選中,并有時鐘信號到來時,開始接收讀取指令。在下一次接收讀取指令的同時,AS5048A在串行時鐘信號的下降沿把測量數據按位依次存入SPI接口模塊緩沖器,直到時鐘停止,等待下一次讀取命令到來。接收完成以后將串并轉換后的測量值存入寄存器rx_data。
4 SPI接口與并行數據采集的Verilog實現與驗證
Verilog HDL是一種用于數字電子系統設計的硬件描述語言,以文本的形式描述數字系統硬件結構和行為。在FPGA開發中,設計者常用它來進行邏輯設計,完成數字邏輯系統的仿真驗證、時序分析和邏輯綜合。
本文中的設計包括SPI接口電路建模和主狀態機,程序均采用Verilog HDL編寫,在Mentor公司的HDL語言仿真軟件ModelSim中成功編譯,運行可以得到仿真波形進行時序分析。SPI接口電路仿真時序如圖3所示,10個SPI接口在主狀態機控制下并行數據采集時序如圖4所示。
圖3 FPGA主機模式下SPI接口電路時序
從圖3可以看出SPI時鐘信號spi_clk空閑電平為低電平,接收數據在其下降沿,上升沿發送數據,與設計一致。讀取AS5048A測量值的控制信號spi_cmd上升沿到來后SPI接口開始發送讀取指令,片選信號使能。在SPI時鐘第一個周期上升沿,主機通過spi_mosi發送最高位至從機,移位寄存器tx_data左移一位;在第一個周期下降沿,主機通過spi_miso接收從機發送的數據最高位,移位寄存器rx_data左移一位。依次類推,值至96位二進制數發送/接收完成,片選信號恢復至高電平,SPI接口電路回到空閑狀態。綜合以上分析,SPI接口電路時序功能正確。
圖4 主狀態機控制10個SPI接口并行數據采集
從圖4可以看出10個SPI接口在主狀態機的控制信號下并行運行,完成AS5048A的測量值讀取,時序功能正確。
通過Altera公司的FPGA開發軟件Quartus II將程序綜合成電路網表,下載到FPGA芯片為Cyclone EP1C12Q240C8的開發板上進行驗證,10路SPI接口可并行完成數據采集,通信功能與預期目標一致。
4 結語
本文簡單介紹了SPI接口,包括SPI協議與SPI輸入輸出端口,建立了基于Verilog的SPI接口電路模型并仿真,并說明了其發送和接收數據的過程。而且,10個SPI接口在主狀態機的控制信號下并行運行,穩定高效,解決了SPI接口資源有限時造成的通信速率下降的問題。隨著技術的進步,FPGA速度越來越快,資源越來越豐富,基于FPGA的高速數據采集系統應用會更加廣泛。
參考文獻
[1]張小新,魏厚龍. FPGA技術及其開發方式概述[J]. 山西電子技術,2008,(05):86-87+90.
[2]楊美剛, 李小文. SPI接口及其在數據交換中的應用[J]. 通信技術, 2007, 40(11):385-387.
[3]AS5048A/AS5048B Data Sheet, AMS, 2014(6)
?
總結
以上是生活随笔為你收集整理的基于labview的温湿度数据采集_【零偏原创】基于FPGA的多路SPI接口并行数据采集系统...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蒙娜丽莎的瓷砖哪个系列的纹理显得有档次?
- 下一篇: python3怎么创建一个链表_怎么创建