摘 要:提出一種基于FPGA實現SPI接口與RS 232接口轉換的方法。首先介紹了ADIS16350的SPI接口及其工作時序,然后給出SPI與RS 232接口轉換電路設計方案,及用Verilog HDL語言,采用模塊化編程方式在FPGA內實現2種接口的通信時序和數據交換。最后通過軟件仿真和硬件實物調試,驗證了該方案通信簡潔、可靠,具有較廣泛的實用價值。關鍵詞:SPI接口; FPGA; Verilog HDL語言; RS 232接口; MEMS
中圖分類號:TN919-34文獻標識碼:A
文章編號:1004-373X(2010)18-0145-03
Design and Implementation of MEMS Sensor ADIS16350's Interface Conversion
TANG Xia-qing1, YAN Chang-ping1, LIU Pei2
(1.Armored Force Engineering Institute, Beijing 100072, China;2.Beijing Special Vehicle Institute, Beijing 100072, China)
Abstract: A method to implement the conversion between SPI interface and RS-232 interface based on FPGA is proposed. At first,the SPI interface and working time-sequence of ADIS16350 is introduced,then, the design scheme of the interface conversion circuit ispresented. Using Verilog HDL language and modularize programming method, the communication of two interface and data exchange have been accomplished within FPGA, the result of simulation and hardware test show that the proposed method is simple, reliable and worthy of using widely.
Keywords: SPI interface; FPGA; Verilog HDL language; RS-232 interface; MEMS
0 引 言
ADIS16350是集三軸陀螺和加速度計于一體的MEMS傳感器,其SPI接口和簡單的輸入/輸出寄存器結構提供了簡易的姿態信息讀取和工作方式配置的方法。SPI是由Motorola公司推出的一種四線制同步串行接口,其具有傳送速率高及良好的擴展性等優點,但非PC標配接口,使其應用受限。
而RS 232接口是目前最為常用的一種串行通信接口,也是PC的標配接口,其簡易模式為兩線制,應用相當廣泛。本文采用基于FPGA的轉換電路,設計與實現了SPI接口與RS 232接口的轉換,使PC通過上位機軟件完成對ADIS16350的配置和姿態信息的讀取。
1 ADIS16350的SPI接口及時序
ADIS16350中SPI接口包括4根信號線:片選使能(CS)、串行時鐘(SCLK)、數據輸入(DIN)及數據輸出(DOUT)。SPI接口一個完整的數據結構為16個時鐘周期,是一種全雙工接口,讀、寫數據在時鐘上升沿有效。它包括以下2種模式:
(1) 一種是配置模式,通過寫命令配置控制寄存器,以初始化ADIS16350的自校準、測量范圍、采樣頻率等。配置一個完整的16位命令時,需2個完整的數據結構。其時序如圖1所示。
圖1 配置模式時序圖
(2) 另一種是讀取模式,通過寫入讀取地址,獲取對應ADIS16350測量的角速率、加速度或陀螺溫度等姿態信息。其時序如圖2所示。
圖2 讀取模式時序圖
2 基于FPGA的接口轉換設計
本設計的目的是,通過FPGA的整合時序實現SPI接口到RS 232接口的轉換。采用的FGPA為Xilinx公司的Spartan 3系列芯片 XC3S400PQ208。
2.1 口轉換電路的結構設計
由本設計的功能可知,接口轉換電路由2部分組成:一是FPGA與ADIS16350的SPI接口通信;另一部分是FPGA與PC的RS 232接口通信。通過對FPGA的編程,實現2種接口的連接和轉換,起到“橋梁”作用。接口轉換電路的結構框如圖3所示。
圖3 接口轉換電路的結構框圖
圖2中FPGA的IO口為3.3 V,與ADIS16350的SPI接口需加專門的電平匹配轉換芯片。與PC的RS 232接口通信電平轉換由MAX 232芯片完成[1]。
2.2 FPGA的軟件實現
FPGA的軟件是在ISE9.1環境下,用Verilog HDL語言以模塊化編程實現,由一個頂層模塊和6個子模塊組成[2]。頂層模塊作為設計的主干,用于例化各子模塊,完成各子模塊間工作狀態信息的傳遞,協調各子模塊的工作轉換;RS 232接口的收、發模塊完成PC上位軟件配置及采集命令的接受和測姿態信息的轉發;SPI通信模塊根據配置命令完成對ADIS16350的配置及對所測姿態信息的讀取工作;波特率生成模塊負責產生其他各子模塊工作的觸發時鐘;2個雙口RAM單元模塊用于存儲配置命令和讀取的姿態信息,其采用FPGA內自帶BlockRAM存儲數據,節約了寄存器資源[3]。整個模塊結構如圖4所示。
圖4 頂層模塊中各子模塊連接圖
頂層模塊TOP_Module初始化各模塊的狀態信號后,先配置ADIS16350(需要時),然后是SPI模塊姿態信息的讀取和UART_Tr模塊發送這個過程,循環獲取所測姿態信息。其流程圖如圖5所示(IMU為ADIS16350)。
圖5 接口轉換流程圖
FPGA的工作方式為并行,本設計中各模塊在BAUD_Gen模塊生成的16×115.2 kHz時鐘觸發下并行工作,通過各模塊的狀態信號線來協調控制整個程序按圖5運行。
SPI模塊根據圖1,圖2所給時序編寫,RS 232收、發模塊根據串口通信協議時序編寫,為提高通信可靠性,對每個通信數據位進行16時鐘周期的采樣,使最終的通信波特率為115.2 kHz[4-8]。
2.3 接口轉換的仿真與驗證
ISE9.1軟件環境支持設計者從最初的程序編寫到功能仿真、設計綜合,再到布局布線、時序仿真,直到最后的程序下載等全部設計流程[9-10]。
本設計采用ISE9.1自帶的仿真工具ISE Simulator進行功能仿真,該仿真在ADIS16350的默認配置及模擬DOUT的輸入條件下進行。其功能仿真圖如圖6所示。
圖6 接口轉換功能仿真圖
圖6中前半部分是SPI模塊對9個姿態信息的讀取;下半部分將收到的姿態信息,加幀頭及驗和幀尾,通過UART_Tr模塊的TXD發送出去,兩個部分循環進行,功能仿真滿足設計的時序邏輯要求。由于本設計Baud_gen生成的工作時鐘遠低于50 MHz,因此不需要進行專門時序約束,在對管腳約束之后,其他通過ISE9.1集成工具自動完成即可滿足要求。最后將程序下載到FPGA中,與接口轉換電路及PC上位機軟件聯調,驗證通信穩定可靠,對ADIS16350的采樣頻率超過300 Hz,滿足設計要求。
3 結 語
通過本文中的設計可以看出:在FPGA中進行2種接口轉換,可以根據實際需要,略去接口協議中的無關內容或者增加一些控制信號線,從而簡化設計,完成PC通過RS 232接口對ADIS16350的配置和讀取;另外,在多種接口芯片共存的電路板上,通過FPGA的轉換“橋梁”作用,既能實現它們之間的高速數據互通,又便于集中處理,節省了布線空間資源,提高了可靠性,這也是現在電路設計中的一種普遍趨勢。
參考文獻
[1]王彥.基于FPGA的工程設計與應用[M].西安:西安電子科技大學出版社,2007.
[2]云創工作室. Verilog HDL 程序設計與實踐[M].北京:人民郵電出版社,1999.
[3]祁曉磊,蔡學良,孫德瑋.用VerilogHDL進行FPGA設計的原則與方法[J].電子測試,2008(3):67-71.
[4]于帥.基于FPGA的SATA2接口視頻采集系統設計[D].濟南:山東大學, 2009.
[5]孫世國,陳帥,陳倩,等.基于FPGA的SPI4.2接口設計[J].微計算機信息,2009,25(2):189-190.
[6]王飛飛,張雅綺,王書娟.基于FPGA的DVB-ASI設計[J].電子測量技術,2006,29(6):121-123,159.
[7]麥胤,柳沁.基于FPGA和MSP430的SPI接口的設計與實現[J].儀器儀表用戶,2007,14(5):100-101.
[8]廖曉維,朱紅.應用CPLD實現ASI-SPI接口轉換的方法[J].儀器儀表用戶,2007(18):74-76.
[9]王誠,薛小剛,鐘信潮.XinlinxISE使用詳解 [M].北京:人民郵電出版社,2005.
[10]薛小剛,葛毅敏.Xilinx ISE 9.X FPGA/CPLID設計指南[M].北京:人民郵電出版社,2007.
[11]曲利新.MEMS開關技術的研究與進展[J].現代電子技術,2008,31(1):147-149.
[12]秦奎,張衛平,陳文元.基于ARM和FPGA的微加速度計數據采集系統設計[J].現代電子技術,2010,33(2):25-27,30.