新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的海量數據采集系統設計

        基于FPGA的海量數據采集系統設計

        作者: 時間:2017-06-05 來源:網絡 收藏

        最近幾年,以其應用的靈活方便蓬勃發展,在通信、航空航天、醫療設備、消費類電子產品等領域一展身手。使用控制CF的技術到目前為止還沒有成熟,本文從硬件和軟件角度出發,介紹了與CF卡的接口設計、給出了用雙RAM訪問CF卡的編程,并且利用FPGA作為FIFO對AD采集的數據進行緩沖,然后存儲到大容量的CF卡中。

        本文引用地址:http://www.104case.com/article/201706/348866.htm
        1系統方案設計
        數據存儲和采集系統主要由三部分組成,CF卡的存儲、FPGA的數據雙緩沖器、狀態寄存器和A/D轉換器組成。
        1)CF卡數據存儲,其作用是將AD采集到的數據進行存儲,當數據容量存儲滿時,發送滿信息。FPGA得到滿信息后,停止對數據的采集并提示用戶更換CF卡。
        2)FPGA主要利用內部的SRAM提供數據輸出/輸入的雙緩沖作用,采用雙緩沖的原因是防止數據的溢出和保證數據傳輸的連續性。當接收到滿信息時,停止AD采集,并做出提示。
        3)A/D轉換器的作用,是將所要采集的模擬量轉換成數字量;通過濾波和放大后,由FPGA接收、緩沖、存儲至CF卡。高速AD轉換器采用的是轉換速率為20MHz的MAX1425.
        系統工作過程為:系統通過外部一個按鍵的低電平給數據采集系統一個采樣開始控制命令,FPGA根據該命令向AD轉換器發出相應控制信號;由于ADC采樣率為20MHz,為和CF卡存儲速度相匹配,在FPGA內部生成一個FIFO緩存器。AD轉換器在FPGA的ADC接口控制電路控制下,把模擬信號轉換成數字信號,并將采樣數據存入FPGA內部FIFO緩存。同時FPGA的查詢CF卡是否有容量,如果CF卡未滿,那么由FPGA的CF卡接口控制邏輯將采樣結果從FPGA內部FIFO緩存送入CF卡中。當CF卡的容量達到一定程度后,FPGA發出滿信息,向AD狀態機發送停止采集的命令,并提示用戶已滿。由于把FPGA設置為特定的自動模式,因此FPGA控制AD采集以及把數據送往CF卡間的所有操作不需要外部干預,從而保證足夠的數據傳輸速率。采樣過程中FPGA的CF卡接口控制邏輯依次取走批量數據。在進行CF卡的數據存儲時AD仍然持續轉換,FPGA內部FIFO也被持續寫入轉換結果。
        2硬件設計
        系統的硬件由模數轉換接口電路、數據存儲與傳輸控制電路和接口電路構成。
        2.1模數轉換電路設計
        模數轉換接口電路是整個系統的重要組成部分,它由低通濾波器、多路選擇開關和AD轉換器構成。在系統中起這個作用的核心器件是AD轉換芯片MAX1425.
        模擬輸入信號分別經過由運放構成的抗混疊低通濾波器去除高頻成分,防止信號產生“混疊現象”。模數轉換器將模擬信號轉換為數字信號。的控制信號由FPGA板提供,在控制信號的作用下,以適當的時序完成轉換工作。
        2.2數據采集與傳輸控制電路
        數據采集與傳輸控制電路的開發工作主要集中在FPGA上。FPGA負責在CF卡與ADC芯片之間的緩沖與控制。一邊與ADC接口,另一邊與CF卡接口,產生數據采集、AD轉換、FIFO所需的全部控制信號。實現對傳輸數據的緩存、讀/寫控制、時鐘、輸出使能以及對ADC的控制等功能。
        2. 2.1 FPGA內部總體設計
        FPGA設計內部結構由FIFO、CF卡控制狀態機、ADC接口控制狀態機三部分構成。
        從數據流向看,數據在ADC接口控制狀態機的協調下通過ADC接口送入FPGA的FIFO中,經過FIFO的緩沖后,在CF卡控制狀態機的協調下,數據傳輸到FPGA外的CF卡;當CF卡存儲滿時,FPGA通過ADC狀態機停止AD的采集,并提示用戶更換CF卡。
        2.2.2數據雙緩存器FIFO
        FIFO主要由三部分組成:FIFO主體、FIFO讀模塊、FIFO寫模塊。FIFO主體部分利用FPGA內部的RAM,通過coregenerator來生成所使用的FIFO.FIFO讀模塊、FIFO寫模塊主要接收外界給出的讀寫開始與停止脈沖信號,轉換為讀寫請求信號,給到fifo主體中,同時讀寫模塊會處理接口兩邊的時鐘信號,分別反向后再作為fifo的讀寫時鐘使用。
        與CF卡連接的CF卡接口的數據傳輸方式是突發的數據塊傳送,并且數據塊的大小可以設置,每個數據塊是用很高的速率傳送到CF卡,這樣就必須有緩存把AD采集來的數據先存緩存,然后發送到CF卡,進行存儲。
        2.2.3 FPGA內ADC接口模塊設計
        MAX4125的控制信號都由FPGA產生。
        FPGA的工作時鐘為60MHz,該時鐘經分頻成20MHz提供給MAX4125作為工作時鐘,同時也作為FPGA內其他邏輯的工作時鐘。由FPGA內狀態機控制當CS#為低和ADC_Convst為高,MAX4125進入采樣保持狀態。當Clock的第一個上升沿到來,MAX4125開始轉換。MAX4125把轉換結果放到數據總線上,FPGA開始讀入10位數據(FD[15:0]中10一15六位數據線懸空,使數據線和AD的位數匹配)。完成一次轉換后,當ADC_Convst再次為高,開始下一輪轉換。
        2.2.4 FPGA內CF卡接口控制狀態機的設計CF卡的訪問方式有三種,分別為I/O模式、Memory模式和True IDE模式。本系統采用TrueIDE模式訪問CF卡。需要注意的是當主機電源一直接通時,拔插CF卡將會使其從原來的True IDE方式重新配置成Memory式。所以要讓CF卡一直工作在True IDE模式,需要在電源加電啟動時將OE輸入信號接地。
        當CSEL輸入信號接地時,CF卡工作方式為主模式;CSEL輸入信號接高電平時。CF卡工作方式為從模式。本系統中將CF卡配置成從模式工作方式。
        當采用TruelDE訪問模式工作時,第3位到第10位地址線需要接地,WE信號需要接高電平。
        3軟件設計
        CF卡的數據存儲以扇區為基本單位。系統讀寫CF卡時都是以扇區為單位進行的。為了滿足系統對速度和控制連續性的要求,系統的程序設計中,利用FPGA的內部資源開辟了兩塊RAM,用于存儲一個扇區的數據,這樣從CF卡讀數據到RAM和將RAM中的數據讀到被控系統中就成了兩個相對獨立的工作過程,這樣既利用了CF卡大容黿的存儲特性又利用了FPGA的工作速度快和內部資源豐富的優點。
        從CF卡讀取一個扇區的數據,首先根據控制命令設定16位工作模式、設置讀取的扇區數目、相應地址和訪問模;然后發送讀命令(0x20),等待CF卡準備就緒后,從數據寄存器中連續讀取一個扇區的數據放入到數據緩沖區。
        4結束語
        基于FPGA的系統采用FPGA作為控制器,CF卡作為大容量存儲介質。采用FPGA讀寫CF卡,既利用了FPGA的內部資源豐富和設計方便的優點,同時利用了CF卡容量大、體積小和價格低廉等優點,給出了高效讀寫CF卡的方法,該方法已成功應用于實際系統中。
        本文創新點:用FPGA讀寫控制CF卡,并且通過用雙RAM方式存儲數據,利用了FPGA的速度快和可以并行處理數據的優點。大大提高了工作效率。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 淮北市| 五河县| 辽阳县| 康保县| 集安市| 聂荣县| 泰宁县| 浪卡子县| 台州市| 纳雍县| 孝义市| 鸡西市| 鞍山市| 盘山县| 丹阳市| 磐石市| 永清县| 永寿县| 龙川县| 鲁山县| 丰镇市| 永靖县| 古丈县| 扬州市| 静宁县| 贵州省| 常熟市| 顺义区| 榆林市| 方正县| 延长县| 邳州市| 万源市| 黔南| 将乐县| 枝江市| 乐都县| 杭锦后旗| 泌阳县| 合山市| 赤水市|