當(dāng)前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]摘要:文章以嵌入式和數(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通信接口等硬

摘要:文章以嵌入式和數(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)勢(shì),控制ADC進(jìn)行高速數(shù)據(jù)采集。FPGA還可配置成軟核處理器-Nios II嵌入式處理器,與ARM構(gòu)成雙核處理器系統(tǒng)。智能控制器通過ARM實(shí)現(xiàn)對(duì)FPGA的管理控制、實(shí)時(shí)數(shù)據(jù)采集和豐富外圍接口的通信。

0 引言

自上世紀(jì)七十年代初以來,微處理器的誕生促進(jìn)了計(jì)算機(jī)信息技術(shù)的迅速發(fā)展和應(yīng)用。數(shù)據(jù)采集與處理是集智能傳感器系統(tǒng)、信號(hào)采集調(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)勢(shì)明顯。采用ARM+FPGA的系統(tǒng)架構(gòu),可以綜合兩者優(yōu)勢(shì),實(shí)現(xiàn)數(shù)據(jù)高速實(shí)時(shí)采集與處理。

ARM與FPGA工作方式為主從模式。主處理器ARM選用美國(guó)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存儲(chǔ)器、4Mbit串行配置芯片EPCS4、標(biāo)準(zhǔn)AS編程接口、JTAG調(diào)試接口構(gòu)成FPGA最小系統(tǒng)。ARM最小系統(tǒng)由AT91SAM9260微處理器、運(yùn)行和存儲(chǔ)程序的1片64MBytes的SDRAM和1片256 MBytes的NandFlash、1個(gè)RS232接口和1個(gè)10/100-Base-T以太網(wǎng)接口構(gòu)成。

系統(tǒng)工作原理是:首先將信號(hào)采集調(diào)理電路過來的兩路信號(hào)分別送入兩個(gè)ADC同步采樣,ADC把模擬信號(hào)轉(zhuǎn)化為14bit精度的數(shù)字信號(hào);然后FPGA對(duì)兩個(gè)通道的ADC轉(zhuǎn)換后的數(shù)字信號(hào)進(jìn)行預(yù)處理,采用多點(diǎn)采樣求平均方法濾除50Hz工頻干擾;最后把兩個(gè)ADC采樣數(shù)據(jù)存儲(chǔ)到兩片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訪問存儲(chǔ)器,進(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片選有效對(duì)應(yīng)ARM的地址映射為0X5000 0000-0X5000 8000,NCS5片選有效地址對(duì)應(yīng)ARM的地址映射為0x60000000-0x6000 8000,F(xiàn)PGA此時(shí)實(shí)質(zhì)上相當(dāng)于ARM內(nèi)部存儲(chǔ)器。在地址范圍內(nèi)任意選取地址作為ARM與FPGA通信的FPGA內(nèi)部寄存器地址。這些寄存器有ARM向FPGA內(nèi)部寫寄存器,也有ARM從FPGA內(nèi)部讀寄存器。

主處理器ARM要想從0X6000 0000-0x6000 8000地址范圍內(nèi)直接讀出兩片SRAM中存儲(chǔ)的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中存儲(chǔ)的ADC采集預(yù)處理后的數(shù)據(jù)。

3 系統(tǒng)軟件設(shè)計(jì)

智能控制器軟件包括Linux FPGA字符型設(shè)備驅(qū)動(dòng)程序、主處理器ARM應(yīng)用程序、FPGA數(shù)據(jù)釆集及預(yù)處理存儲(chǔ)程序。軟件系統(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)核中注冊(cè)或刪除驅(qū)動(dòng)模塊。Linux內(nèi)核中一個(gè)字符設(shè)備用cdev數(shù)據(jù)結(jié)構(gòu)來描述和管理設(shè)備文件。智能控制器的協(xié)處理器FPGA用作主處理器ARM外部靜態(tài)存儲(chǔ)器SRAM。因此,主處理器ARM可以通過靜態(tài)存儲(chǔ)控制器(SMC)產(chǎn)生信號(hào)控制外部存儲(chǔ)設(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)存儲(chǔ)控制器讀、寫時(shí)序。

由上圖可知主要是配置靜態(tài)存儲(chǔ)控制器SMC_SETUP、SMC_PULSE、SMC_CYCLE、SMC_MODE四個(gè)參數(shù)。配置是通過函數(shù)static inline void at91_sys write(unsigned intreg_effset,unsigned long value)實(shí)現(xiàn),詳細(xì)配置如下:

at91_sys_write(AT91_SMC_SETUP(5),AT91_SMC_NWESETUP(0x02)|AT91_SMC_NCS_WRSETUP_(0x00)|AT91_SMC_NRDSETUP_(0x00)|AT91_SMC

_NCS_RDSETUP_(0X00));

at91_sys_write(AT91_SMC_PULSE(5),AT91_SMC_NWEPULSE_(0x06)|AT91_SMC_NCS_WRPULSE(0x0A)|AT91_SMC_NRDPULSE(0x0A)|AT91_SMC_ NCS_RDPULSE_(0x0A));

at91_sys_write(AT91_SMC_CYCLE(5),AT91_SMC_NWECYCLE_(0X0A)|AT91_SMC_NRDCYCLE_(0X0A));

at91_sys_write(AT91_SMC_MODE(5),AT91_SMC_READMODE|AT91_SMC_WRITEMODE|AT91_SMC_EXNWMODE_DISABLE|AT91_SMC_DBW_16|AT91_ SMC_TDF_(1));

申請(qǐng)I/O內(nèi)存:

request_mem_region((unsigned long)sram_buf_1,SRAM_BUFSIZE,“fpga_arm”);

request_mem_region((unsigned long)sram_buf_2,SRAM_BUFSIZE,“fpga_arm”);

FPGA寄存器地址映射:

sram_buf_1=(unsigned char*)ioremap(0x60000000,SRAM_BUFSIZE);

sram_buf_2=(unsigned char*)ioremap(0x60004000,SRAM_BUFSIZE);

以上為FPGA字符設(shè)備驅(qū)動(dòng)程序初始化最為關(guān)鍵的配置。剩下的是在file operation結(jié)構(gòu)下編寫驅(qū)動(dòng)函數(shù),結(jié)構(gòu)中的每個(gè)成員除了owner必須指向驅(qū)動(dòng)中的函數(shù)。其中最為重要的內(nèi)核態(tài)函數(shù)是staticssize_t fpga_arm_read(struct file*filp,char_user*buf,size_tsize,loff_ t*ppos),它對(duì)應(yīng)應(yīng)用層的函數(shù)read。驅(qū)動(dòng)程序從FPGA讀取數(shù)據(jù)使用readw函數(shù),完成從內(nèi)存映射的I/O空間讀取16位數(shù)據(jù)。copy_to_user(buf, (void*)(read_mem),size)復(fù)制數(shù)據(jù)從內(nèi)核空間到用戶空間。FPGA字符設(shè)備驅(qū)動(dòng)程序基本實(shí)現(xiàn)了控制和管理FPGA讀取狀態(tài)信息和兩路ADC采集的數(shù)據(jù)。

3.2 協(xié)處理器FPGA控制程序

協(xié)處理器FPGA控制程序分為三個(gè)部分:控制ADC數(shù)據(jù)采集模塊、控制讀寫SRAM模塊和FPGA與ARM總線通信模塊。其中FPGA與ARM總線通信模塊位于頂層模塊,控制ADC數(shù)據(jù)采集模塊、控制讀寫SRAM模塊的是底層模塊。頂層模塊主要是例化底層模塊,然后進(jìn)行數(shù)字信號(hào)綜合處理。

控制ADC數(shù)據(jù)采集模塊,控制并行ADC比較簡(jiǎn)單,正常工作需要時(shí)鐘驅(qū)動(dòng)ADC CLK,在編寫ADC采樣程序時(shí)最為關(guān)鍵的是注意在ADC CLK上升沿讀取采集的數(shù)據(jù)才是穩(wěn)定可靠的。FPGA會(huì)對(duì)兩路ADC采集的數(shù)據(jù)進(jìn)行多點(diǎn)求平均的預(yù)處理,主要是濾除50Hz的工頻干擾,然后寫入SRAM存儲(chǔ)。

控制讀寫SRAM模塊,F(xiàn)PGA寫SRAM與讀SRAM操作是非常相似的,SRAM型號(hào)是CY7C1021DV33,工作時(shí)片選信號(hào)CE要拉低。讀操作時(shí)注意OE信號(hào)先拉低再拉高,在其上升沿,讀取數(shù)據(jù)。寫操作時(shí)注意WE信號(hào)先拉低再拉高,在其上升沿,寫入數(shù)據(jù)。FPGA讀SRAM時(shí)需要關(guān)注sram_cs(片選)、sram_oe(讀控制)、sram_addr(地址線)和sram1_data(16bit數(shù)據(jù)線),將sram_cs、sram_oe同時(shí)拉低,同時(shí)給地址線sram_addr賦值,一個(gè)時(shí)鐘后數(shù)據(jù)端口sram_data的數(shù)據(jù)就有效了。

FPGA與ARM通信模塊較為復(fù)雜,首先,是ARM向FPGA發(fā)控制命令。ARM寫FPGA內(nèi)部寄存器時(shí)比較重要的信號(hào)有:NCS4(片選)、at9260_wr(寫信號(hào))、at9260_addr(地址線)、at9260_data(數(shù)據(jù)線),當(dāng)NCS4=0&&at9260_wr=0時(shí),意味著ARM9260正在寫FPGA寄存器,具體寫哪個(gè)寄存器由地址信號(hào)at9260_addr決定,這樣可以將at9260_data寫入到相應(yīng)地址處對(duì)應(yīng)的寄存器。

其次,ARM讀FPGA內(nèi)部狀態(tài)寄存器,與ARM寫FPGA寄存器是非常類似的,當(dāng)NCS4=0 &&at9260_rd=0時(shí),意味著ARM9260正在讀FPGA寄存器,這時(shí)我們將寄存器的值賦給at9260_data即可,at9260_data是雙向IO,在不讀時(shí)需要置為高阻態(tài)。

最后,ARM獲取兩片SRAM存儲(chǔ)的預(yù)處理后的數(shù)據(jù),ARM的控制信號(hào)是NCS5、at9260_rd、at9260_addr、A14,F(xiàn)PGA將這些信號(hào)轉(zhuǎn)換為FPGA讀SRAM的信號(hào),然后將FPGA讀到的數(shù)據(jù)傳給ARM,這里FPGA起到數(shù)據(jù)中轉(zhuǎn)的作用。

3.3 主處理器ARM應(yīng)用程序

主處理器ARM的應(yīng)用程序是整個(gè)軟件系統(tǒng)的控制核心。應(yīng)用程序由兩個(gè)線程構(gòu)成:main主線程和data_recv線程。main主線程主要是創(chuàng)建線程,向FPGA發(fā)送控制命令;data_recv線程接收FPGA狀態(tài)信息和FPGA預(yù)處理后ADC采集的數(shù)據(jù)。應(yīng)用程序是通過文件描述符fd_fpga來控制和管理協(xié)處理器FPGA設(shè)備。因?yàn)樵谥魈幚砥鰽RM移植了操作系統(tǒng)Linux,內(nèi)核版本為Kernel 2.6.30,所以應(yīng)用程序的開發(fā)是在Linux操作系統(tǒng)Ubuntul2.04 LTS版本下,使用開發(fā)軟件是Eclipse C/C++。設(shè)置Eclipse使用交叉編譯器arm-none-linux-gnueabi-gcc和Release配置生成二進(jìn)制可執(zhí)行文件。然后可以通過Tftp服務(wù)下載到目標(biāo)板上。

4 結(jié)束語

本文論述了基于ARM+FPGA體系架構(gòu)的高速實(shí)時(shí)數(shù)據(jù)采集智能控制器的設(shè)計(jì)與實(shí)現(xiàn)。其結(jié)合ARM和FPGA兩者的優(yōu)勢(shì),具有更好的運(yùn)算處理性能,豐富的外圍標(biāo)準(zhǔn)接口。系統(tǒng)采樣率達(dá)10MSPS,滿足高速實(shí)時(shí)性的要求。具有很高的應(yīng)用價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉