基于ARM+FPGA的高速數(shù)據(jù)采集智能控制器設(shè)計(jì)
摘要:文章以嵌入式和數(shù)據(jù)采集技術(shù)為基礎(chǔ),研究設(shè)計(jì)并實(shí)現(xiàn)了基于ARM+FPGA體系架構(gòu)面向高速實(shí)時(shí)數(shù)據(jù)采集應(yīng)用的一種實(shí)用新型智能控制器。本文闡述了主處理器ARM最小系統(tǒng)、協(xié)處理器FPGA最小系統(tǒng)和ARM與FPGA通信接口等硬件系統(tǒng)技術(shù)的實(shí)現(xiàn),以及Linux FPGA字符設(shè)備驅(qū)動(dòng)程序開發(fā)、協(xié)處理器FPGA控制程序和主處理器ARM應(yīng)用程序設(shè)計(jì)。智能控制器運(yùn)用FPGA并行運(yùn)算處理結(jié)構(gòu)的優(yōu)勢,控制ADC進(jìn)行高速數(shù)據(jù)采集。FPGA還可配置成軟核處理器-Nios II嵌入式處理器,與ARM構(gòu)成雙核處理器系統(tǒng)。智能控制器通過ARM實(shí)現(xiàn)對FPGA的管理控制、實(shí)時(shí)數(shù)據(jù)采集和豐富外圍接口的通信。
本文引用地址:http://butianyuan.cn/article/249568.htm0 引言
自上世紀(jì)七十年代初以來,微處理器的誕生促進(jìn)了計(jì)算機(jī)信息技術(shù)的迅速發(fā)展和應(yīng)用。數(shù)據(jù)采集與處理是集智能傳感器系統(tǒng)、信號采集調(diào)理與轉(zhuǎn)換、計(jì)算機(jī)信息等技術(shù)的綜合,是獲取信息的重要手段。隨著微處理器的普及,數(shù)據(jù)采集技術(shù)在工業(yè)領(lǐng)域中發(fā)揮著越來越重要的作用。
傳統(tǒng)的數(shù)據(jù)采集設(shè)備控制器主要是以單片機(jī)和PC機(jī)為主。前者處理數(shù)據(jù)運(yùn)算能力有限、實(shí)時(shí)性較差;后者成本較高、靈活性差。ARM微處理器具有體積小、成本低,功能豐富等優(yōu)點(diǎn)。FPGA并行運(yùn)算結(jié)構(gòu),I/O資源豐富,在高速實(shí)時(shí)數(shù)據(jù)處理方面優(yōu)勢明顯。采用ARM+FPGA的系統(tǒng)架構(gòu),可以綜合兩者優(yōu)勢,實(shí)現(xiàn)數(shù)據(jù)高速實(shí)時(shí)采集與處理。
ARM與FPGA工作方式為主從模式。主處理器ARM選用美國ATMEL公司的AT91SAM9260,主頻工作在180MHz時(shí)可達(dá)200MIPS的處理性能。協(xié)處理
器選用的FPGA是Altera Cyclone系列EP1C6Q240I8NFPGA。FPGA工作時(shí)鐘是50MHZ,可以通過設(shè)置內(nèi)部鎖相環(huán)使工作時(shí)鐘倍頻。
1 系統(tǒng)總體方案
智能控制器主要由ADC數(shù)據(jù)采集電路、FPGA最小系統(tǒng)、ARM最小系統(tǒng)三個(gè)部分構(gòu)成。ADC選用單電源供電的14位的AD9240,采樣率可達(dá)10 MSPS。它采用高速、低成本的CMOS工藝,分辨率和速度均達(dá)到現(xiàn)有混合方案的水平,而功耗與成本卻低得多。協(xié)處理器選用ALTERA公司的EP1C6O240I8N芯片,通過外接兩片32KB SRAM存儲器、4Mbit串行配置芯片EPCS4、標(biāo)準(zhǔn)AS編程接口、JTAG調(diào)試接口構(gòu)成FPGA最小系統(tǒng)。ARM最小系統(tǒng)由AT91SAM9260微處理器、運(yùn)行和存儲程序的1片64MBytes的SDRAM和1片256 MBytes的NandFlash、1個(gè)RS232接口和1個(gè)10/100-Base-T以太網(wǎng)接口構(gòu)成。
系統(tǒng)工作原理是:首先將信號采集調(diào)理電路過來的兩路信號分別送入兩個(gè)ADC同步采樣,ADC把模擬信號轉(zhuǎn)化為14bit精度的數(shù)字信號;然后FPGA對兩個(gè)通道的ADC轉(zhuǎn)換后的數(shù)字信號進(jìn)行預(yù)處理,采用多點(diǎn)采樣求平均方法濾除50Hz工頻干擾;最后把兩個(gè)ADC采樣數(shù)據(jù)存儲到兩片SRAM緩存中。ARM與FPGA通信采用數(shù)據(jù)總線方式,通過在Linux操作系統(tǒng)下開發(fā)字符型FPGA設(shè)備驅(qū)動(dòng)程序,然后編譯或者加載到Linux內(nèi)核中,ARM可以在應(yīng)用層程序讀取FPGA預(yù)處理后的數(shù)據(jù),此時(shí)FPGA內(nèi)部直接把ARM的總線連接到SRAM的總線上來讀取FPGA預(yù)處理后的數(shù)據(jù)。ARM可以通過以太網(wǎng)和RS232接口與上位機(jī)通信。
2 ARM和FPGA通信接口設(shè)計(jì)
主處理器ARM所在的核心板負(fù)責(zé)整個(gè)系統(tǒng)的控制與管理。智能控制器與上位機(jī)的通信接口串口、以太網(wǎng)、CAN由此板引出。核心板與擴(kuò)展板協(xié)處理器FPGA的通信采用總線方式。這種通信方式的本質(zhì)是FPGA作為ARM的外設(shè)SRAM,ARM訪問存儲器,進(jìn)行讀和寫操作。連接如圖2所示。
ARM與FPGA通過總線相連,ARM的數(shù)據(jù)線D0:D15、地址線A1:A14和片選NCS4、NCS5與FPGA相連,另外2片SRAM直接與FPGA相連。NCS4控制讀寫FPGA內(nèi)部狀態(tài)寄存器和命令寄存器。NCS5控制FPGA讀寫兩片SRAM中存放的數(shù)據(jù)。所有數(shù)據(jù)信息都通過DATA[0:15]雙向數(shù)據(jù)總線傳輸。
NCS4片選有效對應(yīng)ARM的地址映射為0X5000 0000-0X5000 8000,NCS5片選有效地址對應(yīng)ARM的地址映射為0x60000000-0x6000 8000,F(xiàn)PGA此時(shí)實(shí)質(zhì)上相當(dāng)于ARM內(nèi)部存儲器。在地址范圍內(nèi)任意選取地址作為ARM與FPGA通信的FPGA內(nèi)部寄存器地址。這些寄存器有ARM向FPGA內(nèi)部寫寄存器,也有ARM從FPGA內(nèi)部讀寄存器。
主處理器ARM要想從0X6000 0000-0x6000 8000地址范圍內(nèi)直接讀出兩片SRAM中存儲的ADC采樣預(yù)處理后的的數(shù)據(jù),需要有協(xié)處理器FPGA的協(xié)助配合。
這樣就明確了協(xié)處理器FPGA在與主處理器ARM通信時(shí)需要完成的任務(wù):1)解析主處理器ARM寫FPGA寄存器的命令,執(zhí)行相應(yīng)操作;2)將執(zhí)行操作后的一些狀態(tài)信息寫入相應(yīng)的FPGA內(nèi)部寄存器供主處理器查詢操作結(jié)果:3)協(xié)助配合主處理器ARM讀取兩片SRAM中存儲的ADC采集預(yù)處理后的數(shù)據(jù)。
3 系統(tǒng)軟件設(shè)計(jì)
智能控制器軟件包括Linux FPGA字符型設(shè)備驅(qū)動(dòng)程序、主處理器ARM應(yīng)用程序、FPGA數(shù)據(jù)釆集及預(yù)處理存儲程序。軟件系統(tǒng)結(jié)構(gòu)框圖如圖3所示。
3.1 FPGA設(shè)備驅(qū)動(dòng)程序
Linux設(shè)備驅(qū)動(dòng)被分為三類:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備是以字符為單位輸入輸出數(shù)據(jù)的設(shè)備。FPGA設(shè)備驅(qū)動(dòng)程序?yàn)樽址驮O(shè)備驅(qū)動(dòng)程序,其基本框架為:1)定義一個(gè)結(jié)構(gòu)體static structfile operations變量,其內(nèi)定義一些設(shè)備的打開、關(guān)閉、讀、寫、控制函數(shù);2)在結(jié)構(gòu)體外分別實(shí)現(xiàn)結(jié)構(gòu)體中定義的這些函數(shù);3)向內(nèi)核中注冊或刪除驅(qū)動(dòng)模塊。Linux內(nèi)核中一個(gè)字符設(shè)備用cdev數(shù)據(jù)結(jié)構(gòu)來描述和管理設(shè)備文件。智能控制器的協(xié)處理器FPGA用作主處理器ARM外部靜態(tài)存儲器SRAM。因此,主處理器ARM可以通過靜態(tài)存儲控制器(SMC)產(chǎn)生信號控制外部存儲設(shè)備或者外圍接口設(shè)備來進(jìn)行讀寫操作。FPGA字符型設(shè)備驅(qū)動(dòng)程序能夠完成控制FPGA模塊,完成數(shù)據(jù)采集,最為關(guān)鍵的是初始化FPGA模塊,配置主處理器ARM的SMC來實(shí)現(xiàn)FPGA總線驅(qū)動(dòng)。可參照ARM靜態(tài)存儲控制器讀、寫時(shí)序。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
fpga相關(guān)文章:fpga是什么
linux相關(guān)文章:linux教程
鎖相環(huán)相關(guān)文章:鎖相環(huán)原理
評論