鄭瑞 肖順文 王涌 陳韻文 羅春梅


摘要:本文設計了一種多通道數據采集與發送速率可變的系統,采用FPGA芯片EP4CE10F17C8N作為核心控制器件,利用Verilog HDL在QUARTUS II 13.1平臺上對數據采集模塊、數據存儲模塊、數據發送模塊以及系統控制模塊進行描述,并使用Modelsim仿真工具對各個模塊進行模擬仿真,最后通過AC620開發板測試,實現了多通道的數據采集和速率可變的串口發送功能。
關鍵詞:數據采集;FPGA;Verilog HDL
中圖分類號:TP274.2 文獻標識碼:A 文章編號:1007-9416(2020)01-0117-02
0 引言
科學技術的蓬勃發展,數據采集系統已廣泛應用于各個領域,航天、軍事、醫療、工業等尤其是在高精度產品的檢測和監控項目中發揮著重要作用。與單片機、ARM相比,FPGA具有內部資源豐富、并行處理能力強、穩定性好、可重配置等優良特點,特適合用于數據采集系統設計。本設計以FPGA芯片作為核心控制器件,實現8通道12位分辨率的A/D數據采集與速率可改變的串口發送系統。為方便在AC620開發板上進行測試,將本系統的采樣率設計為6.25MHz,發送速率為1200、2400、9600、19200、115200等,利用RS232串口將數據發送到PC端。與傳統的數據采集系統相比,本設計將數據采集系統與數據發送系統相結合,同時發送速率可變,實現了數據采集與發送的一體化。
1 系統設計
1.1 系統總體電路設計
如圖1所示為本系統設計模塊圖,該系統由按鍵消抖、控制A/D采樣、數據采樣、數據存儲、控制數據發送、串口發送等六個模塊組成。當控制A/D采樣模塊檢測到按鍵按下,立即產生使能信號啟動A/D數據采樣模塊進行100次的數據采樣,因A/D采樣的速率與串口發送速率不匹配,為保證數據不丟失,設計將采樣數據暫存FIFO存儲器中,當控制數據發送模塊檢測到FIFO中有數據時便啟動串口發送數據,一直到FIFO中全部數據發送完為止。
1.2 按鍵消抖模塊設計
物理按鍵存在一個反作用彈簧,因此當按鍵按下或者松開時均會產生額外的物理抖動,物理抖動會產生電平的抖動,抖動的次數與時間間隔不可預期。當控制A/D采樣模塊檢測到按鍵按下時就會啟動A/D數據采樣模塊進行工作,不斷啟動數據采集與發送,與設計相悖,因此需要濾除抖動。一般情況下,抖動的時間會持續20ms左右,本設計通過軟件方式編寫狀態機進行處理,產生一個按鍵按下標志信號Key_Flag,當系統檢查到按鍵真正按下,拉高Key_Flag,控制系統開始數據采樣。
1.3 A/D數據采樣模塊設計
設計使用的模/數轉換器為逐次逼近型的低功耗芯片ADC128S052,具有8通道以及12位的分辨率,因此1bit代表的電壓值即為VA/4096。對于FPGA,按照SPI時序搭建控制電路,以實現對ADC128S052的控制。ADC128S052通過SPI接口與FPGA進行通信。本設計采用的SCLK頻率為6.25MHz,利用線性序列機的設計思想,產生一個兩倍于采樣時鐘SCLK的信號SCLK_2,對系統時鐘50MHz進行四分頻即12.5MHz。對時序圖分析,在程序設計中,通過對SCLK_2進行計數,在不同的計數點給CS、SCLK、DIN、DOUT信號不同的值即可產生該時序。
1.4 串口發送模塊設計
通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter,UART)是一種異步收發傳輸器,其數據發送時將并行數據轉換成串行數據來傳輸,在數據接收時將接收到的串行數據轉換成并行數據,可以實現全雙工傳輸和接收。設計采用RS232的接口標準規范,配置是8N1(即8位數據位、無奇偶校驗位、1位停止位),根據串口發送一字節的時序圖,當bps_clk信號的第1個上升沿到來時,字節發送模塊開始發送起始位,接下來的2~9個上升沿,發送8個數據位,第10個上升沿到第11個上升沿為停止位的發送。在程序設計時,利用兩個計數器,一個計數器bps_cnt用于計數來產生波特率時鐘;另一個計數器則是對bps_clk,也就是每一位信號開始的標志進行計數,利用線性序列機的思想,根據計數值給對應計數點賦值即可。
為實現發送速率可變,保證模塊的復用性,設計一個發送速率查找表,當需要不同發送速率時,只需要設置不同的波特率時鐘計數器的計數值。同時由于A/D采樣數據為12位,而串口一次只能發送8位數據,因此程序設計時通過產生一個Sel信號來控制將待發送的12位數據分成高4位和低8位,然后傳給UART串口發送。
2 系統電路及仿真測試
2.1 程序仿真
編寫Testbench測試文件,利用仿真工具Modelsim進行模擬仿真,結果如圖2所示。模擬仿真時,設計采樣通道為通道0,A/D轉換的結果DOUT依次輸入0到99,100個數,串口發送速率115200Hz,通過仿真圖可以得到采樣通道為通道0,采樣頻率為32.5MHz,串口發送速率為115200Hz,同時能夠依次發送0到99,100個數據,滿足設計要求。
2.2 采樣系統精度測試
通過外加電壓與高精度電壓表測量比較,ADC128S052實際測量誤差在0~3.3V的電壓輸入范圍內最大為0.0219V內。如表1所示為8個通道對3個模擬電壓的測試結果。第一列為基準電壓,后8列分別為采樣結果。根據測試得出,該數據采集系統的測量誤差在0.0219V以內,因此將該系統用于多通道的A/D采樣與數據傳輸具有靈活性強,精度高,誤差小等特點。
3 結語
利用Verilog HDL設計A/D多通道數據采集與串口發送系統,不僅通過Modelsim仿真軟件驗證功能,同時經AC620開發板測試,將采樣數據與實際電壓比較,分析整個系統的性能。結果表明,該系統不僅完成了數據采集和串口發送數據到上位機的功能,而且該系統具有采樣誤差小、精度高等特點,具有相當大的實用價值。
參考文獻
[1] 易志強,韓賓,江虹,等.基于FPGA的多通道同步實時高速數據采集系統設計[J].電子技術應用,2019,45(06):70-74.
[2] 袁玉卓,曾凱鋒,梅雪松.FPGA自學筆記:設計與驗證[M].北京:北京航空航天大學出版社,2017.
[3] 王永云.基于FPGA的多通道數據采集系統的設計[D].廊坊:北華航天工業學院,2018.
[4] 王華剛,鄧志燕,董鵬飛.多功能多通道數據采集系統設計與實現[J].自動化與儀器儀表,2016(09):36-37.
[5] 談良,紀凌.基于FPGA的多通道數據采集系統設計與實現[J].電子測量技術,2018,41(05):57-63.