999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux的FPGA+ARM高速數據采集系統設計

2017-05-10 07:02:52許思琦
計算機測量與控制 2017年4期
關鍵詞:信號系統設計

許思琦

(中國飛行試驗研究院,西安 710089)

基于Linux的FPGA+ARM高速數據采集系統設計

許思琦

(中國飛行試驗研究院,西安 710089)

對于高速A/D的采集,采用I/O讀取方式,ARM9最大能夠采集500KSPS的A/D,因此ARM不能實現對更高速度數據讀取;為達到更高速,提出了FPGA+ARM的雙核架構的高速數據采集的方法,FPGA能夠采集2MSPS的A/D,并采用ARM的DMA完成與FPGA的FIFO通信,以及使用Linux的內存映射技術來提高應用層與內核層數據傳輸效率,完成數據采集;該系統設計了FPGA+ARM接口電路,開發了Linux下的DMA驅動程序;經試驗測試,系統具有高速采集的性能。

FPGA+ARM雙核設計;FIFO+DMA傳輸;內存映射;高速采集

0 引言

為完成更高速AD數據采集,提出以ARM+FPGA雙核硬件架構采集系統;由于FPGA側重于數據處理,采用的并行多通道處理方式,處理速度為ns級別,能實現對數據高速采集;但是FPGA沒有指令系統,控制能力較弱[1],因此,結合ARM的控制能力和FPGA數據處理優勢進行雙核設計。由于FPGA與ARM工作在不同的時鐘域,采用FPGA異步FIFO來實現數據傳輸很好地解決這一問題。為達到數據高速傳輸,系統采用 DMA控制器來讀取FIFO數據[2]。為提高應用程序讀取數據速度,采用Linux內核中的內存映射技術提高數據傳輸效率,完成數據采集。

1 硬件系統架構

1.1 FPGA+ARM的硬件平臺設計

以S3C2440芯片為嵌入式硬件平臺,它是基于ARM920T的架構處理器,片內有4k的SRAM,nandflash控D制器,SDRAM控制器等資源。板級設備包含:全功能的串口,JTAG,Nandflash (256M), SDRAM(64M)等。

FPGA平臺選擇Cyclone IV E系列EP4C6F17C8芯片,該芯片內部資源由6272個邏輯單元LE,392個乘法器LAB,以及179個IO組成,有270 kbit存儲空間,工作電壓為1.2 V,是一款低功耗,高性能的FPGA。

數據采集芯片選擇用ADI公司的AD7621,是一個16位,2MSPS,全差分數模轉換器,可實現較高的采樣速率。

圖1 FPGA+ARM系統總體設計框圖

1.2 ARM的硬件平臺設計

采用和FPGA+ARM平臺相同的A/D和ARM設計一個對比測試平臺,使用ARM來控制A/D,使ARM9處于最大400MHz的時鐘頻率,并提供A/D控制器2.5 MHz時鐘頻率,進行測試ARM在1 s啟動轉換A/D的次數,其測試平臺如圖2所示。

圖2 ARM系統設計框圖

2 FPGA+ARM接口電路設計

根據高速采集要求,設計硬件連接圖如3所示,設置AD模塊的PAR為低電平,選擇AD為并口輸出模式;FPGA提供片選CS,控制啟動轉換CNVST,檢測AD轉換是否忙BUSY信號,以及100 MHz的時鐘SCLK;當FPGA開始采集數據時,通過FIFO的讀數指針把數據存入FIFO中;ARM以DMA方式與FPGA的FIFO進行通信;并采用16位數據線DATA[15:0],提供對FPGA的控制信號,如DREQ,DACK以及讀寫信號,片選信號nGCS4,和輸出時鐘線與FPGA相連,當DMA開始采集FPGA的數據時,FIFO通過寫數指針完成與DMA的數據傳輸。

圖3 FPGA+ARM硬件接口電路

FPGA的異步讀時鐘由FPGA內部提供,寫時鐘由S3C244的外部時鐘CLOCK0提供。 FPGA的片選信號為nGCS4,相當于FIFO掛載到ARM的bank4上,對DMA源地址寄存器寫0x2000_0000~0x2800_0000時,選中FPGA,這時data[15:0]數據線被FPGA占用[3]。

3 FPGA控制AD

采用FPGA+ARM雙核架構, FPGA系統時鐘由外部50MHz晶振提供經過內部PLL倍頻后得到100 MHz;通過設計FPGA內部邏輯電路實現對A/D的控制并將數據寫入FIFO。

FPGA對AD數據讀取:AD7621完成一次采樣需要500 ns,對于2MSPS采樣速度,需要50個周期完成一次采樣,AD7621時序如圖4所示。

圖4 A/D轉換時序圖

根據圖4的AD的時序可知,當CNVST為高電平,BUSY為低電平; FPGA控制CNVST引腳為4個周期連續低電平,AD檢測到CNVST信號為低電平,則會啟動AD轉換,并同時把BUSY信號設置為高電平,FPGA內部檢測到BUSY為高電平時,表示AD正在進行單次數據轉換,當FPGA檢測BUSY為低電平時,AD轉換完成,FPGA內部FIFO讀操作在100 MHz時鐘下開始讀取data[15:0]上數據,并存入FIFO中,利用Quartus II 和Modelsim對數據采樣模塊進行時序仿真如圖5所示。

圖5 Modelsim數據采集仿真時序圖

由圖5仿真時序可知,clk 為FPGA內部100 Mhz的系統時鐘,完成一次采樣需要50個周期,開始轉換時,cnvst的前4周期為低電平,busy在第36個時鐘周期出現低電平,表示完成一次數據轉換,d[15:0]為16位的AD7621輸出數據,q[15:0]為FIFO讀取數據。利用嵌入式邏輯分析儀(SignalTap II Logic Analyzer)對AD7622數據采集卡的測試結果如圖6所示。

圖6 FPGA對AD采集測試圖

4 FPGA的FIFO設計

設計雙時鐘的異步FIFO,解決ARM與FPGA不在同時鐘域問題,FIFO的讀時鐘是由FPGA提供,FIFO的寫時鐘由ARM的CLKOUT0提供,時鐘頻率都為100 Mhz。當rdreq產生上升沿觸發讀使能信號時,FIFO通過data[15:0]讀AD數據,當wrreq產生上升沿觸發寫使能信號時,FIFO通過q[15:0]發送數據;clock是上升沿觸發的時鐘信號,用于FIFO控制讀寫的時鐘,sclr是FIFO同步復位信號;empty/full是用于判斷空/滿的狀態標記信號,empty為高電平表示FIFO為空,full為高電平表示FIFO滿,具體設計如圖7所示。

圖7 FIFO接口圖

5 DMA和FIFO通信

FIFO的讀操作與ARM的DMA操作時序(如下圖8)密切相關,系統采用單觸發握手模式(一次讀兩字節)的DMA操作和FIFO非空立刻發出申請DREQ0信號的方式。

當FIFO有數據,同時DACK0響應信號為高電平時,發起DREQ0申請;當DMA控制器采集DREQ0信號從高電平變低,DMA會發出DACK0的相應信號從高電平變低,此時FIFO檢測到DACK0為低電平,把兩個字節數據送到數據總線上,同時DMA發起一次DMA操作,每傳輸完兩字節數據,DMA把DACK0從低電平拉高;FIFO采集DACK0的高電平信號,如果里面有數據,就會發起下一次申請,如此往復,直到DAM字節計數器為0。這樣就可以防止FIFO數據丟失,保證數據準確性。

圖8 DMA握手模式時序

根據DMA的時序要求,對FPGA與ARM進行通信測試,測試結果如圖9所示。

圖9 ARM與FPGA通信測試圖

clk為FPGA工作時鐘100 Mhz;reset為復位信號,低電平有效;data為AD7621的輸出數據;q為FPGA的采集信號;rereq和wrreq為FIFO的讀寫信號;count_dreq為DMA傳輸數據的個數;DREQ、DACK、nGCS、nOE為DMA的傳輸控制信號;其他信號為FPGA內部溝通信號。由圖9可知,DMA方式的數據傳輸滿足2MSPS高速數據傳輸,達到系統的設計要求。

6 Linux底層驅動設計

6.1 DMA驅動操作函數編寫

所有設備的操作函數都由file_operation結構體提供,根據需要可以定義,open,read,ioctl,mmap等函數[3],具體實現如下:

static struct file_operations Dma_drv_fops=

{

.owner = THIS_MODULE,

.release =dma_close

.ioctl =dma_ioctl,

.mmap =dma_mmap,

};

其中dma_open,dam_release分別為打開和關閉設備,dma_ioctl完成應用程序向驅動的命令傳遞,dma_mmap把內核申請的DMA緩沖區映射到應用層,提高用戶空間和內核空間的數據傳輸效率。

6.2 dma_open函數

dma_open函數向內核空間申請一片連續DMA內存,注冊DMA0的中斷,把相應的I/O端口的物理地址通過ioremap映射到內核空間,然后根據FPGA與ARM的通信協議,配置DMA的控制寄存器,提供FPGA的FIFO讀時鐘信號。關鍵代碼如下:

{

2.3 數據處理 利用Excel 2010對試驗數據進行處理,對每個地塊各深度層面處的3個土壤樣本的有效試驗數據取平均值,用Origin2007進行分析和圖標的制作。

dst = dma_alloc_writecombine(NULL, BUFF_SIZE, &my_des_phy, GFP_KERNEL);

request_irq(IRQ_DMA0, s3c_dma_irq, 0, "s3c_dma", 1)

dma_regs = ioremap(DMA1_BASE_ADDR, sizeof(struct s3c_dma_regs));……//IO端口映射

設置FIFO的讀時鐘為CLKOUT0

*misccr |=(4<<4);

*gpacon |=(1<<14);//NGCS3

*gpbcon |= (2<<16)|(2<<14);//GPB8 nXDREQ1 GPB7 nXDACK1

dma_regs->didst =my_des_phy; /*目的的物理地址*/

dma_regs->disrcc =(0<<1) |(1<<0); /*源位于AHB總線,地址guding */

dma_regs->disrc =0x20000000; /* 源的物理地址*/

dma_regs->didstc=(0<<2) |(0<<1) |(0<<0); /*目的位于AHB,地址增加*/

/*握手模式,AHB,中斷使能,單元傳輸,單服務模式,nXDREQ1,自動加載*/

dma_regs->dcon=(1<<31)|(0<<30)|(0<<29)|(0<<28)|(0<<27)|(0<<26)|(0<<25)|(0<<24)|(1<<23) |(1<<22)|(0<<21)|(0<<20)|(BUFF_SIZE);

}

6.3 dma_ioctl函數

dma_ioctl函數接受應用程序傳入的啟動DMA傳輸命令,如果申請的DMA內存中無數據,就會調用wait_event_interrupt函數,初始狀態ev_dma=0,進程就會休眠。當DMA數據傳輸完,在中斷函數中作相應修改。Dma_ioctl主要代碼如下:

{

dma_regs->dmasktrig = (1<<1) | (1<<0);/*啟動DMA傳輸*/

wait_event_interruptible(dma_waitq, ev_dma);/*DMA未完成數據傳輸,進程進行休眠*/

ev_dam=0;/*重新設置dma完成標志位*/

}

中斷服務函數:

DMA寄存器CURR_CT中值變為0,即DMA傳輸完成,產生中斷。在中斷函數中,設置ev_dma=1,調用wake_up_interruptible把當前進程dma_waitq加入內核進程隊列中,供系統來調度[4]。具體程序如下:

static irqreturn_t s3c_dma_irq(int irq, void *devid)

{ ev_dma = 1;

wake_up_interruptible(&dma_waitq); /* 喚醒休眠的進程 */

return IRQ_HANDLED;

}

6.4 內存映射dma_mmap函數

DMA在內核空間申請的一片連續緩沖區映射到用戶空間,把映射成功的虛擬首地址返回給用戶空間,應用層直接操作這段虛擬地址可以進行文件的讀寫操作[5],不必調用read,write等函數,提高了內核空間與用戶空間之間數據傳輸能力。關鍵代碼如下:

static int dma_mmap(struct file *file, struct vm_area_struct * vma)

{ off = vma->vm_pgoff << PAGE_SHIFT;

start =src_phys ;//把DMA申請緩沖區物理地址賦值給start

len = PAGE_ALIGN((start & ~PAGE_MASK) +BUF_SIZE);//進行頁對齊

start &= PAGE_MASK;

……

off += start;

vma->vm_pgoff = off >> PAGE_SHIFT;

vma->vm_flags |= VM_IO | VM_RESERVED;//設置一些映射保護

if (io_remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT,vma->vm_end vma->vm_start, vma->vm_page_prot))//內存管理會一次完成全部頁表的建

}

7 結論

通過設計FPGA+ARM高速數據采集的嵌入式平臺,采用DMA和FIFO進行高速通信,并使用內核內存映射技術提高數據采集效率;經過實驗測試,系統滿足數據采集的高效性和快速性,并達到4MB/s采樣速度。

[1] 張福洪,徐春暉,胡舜峰,等.基于Linux的ARM與FPGA數據通信設計與實現[J].杭州電子科技大學學報,2015,(4):26-30.

[2] 王小平,王萬剛,蔡 川,等.嵌入式Linux下FPGA與ARM處理器DMA數據采集程序設計[J].西南師范大學學報(自然科學版),2014,(4):120-123.

[3] 方傳杰,朱 健,房志東,等.高速實時數據采集智能控制器的設計與實現[J].電子技術,2014,(5):28-32.

[4] 朱曉鵬,肖鐵軍,趙 蕙,等.ARM+FPGA的實時數據采集系統設計[J].計算機工程與設計,2009,30(13):3088-3090.

[5] 吳 迪,李丙玉,王曉東,等.基于ARM+FPGA 的影像交互與顯示系統設計[J].液晶與顯示,2015,(6):979-986.

DesigningHigh-speedData-acquisitionSystemBasedonLinuxandFPGA+ARM

XuSiqi

(ChineseFlightTestEstablishment,Xi’an710089,China)

For high speed A/D acquisition, using the I/O, ARM9 maximum can collect A/D 500KSPS.So, ARM can’t realize the higher speed data reading.To achieve faster, A high speed data acquisition method based on FPGA+ARM dual core architecture is proposed. FPGA can collect A/D 2MSPS.And the use of DMA ARM to complete the communication with FIFO FPGA. Using the memory remmapping of Linux to improve the application layer and the core layer of data transmission efficiency,completing data collection. Designing the FPGA+ARM interface circuit in this system. Developing of DMA device driver. After the test,the system has the performance of the high-speed sampling.

FPGA+ARM dual-core design;FIFO+DMA transfer;memory mapping;high-speed sample

2016-11-02;

2016-11-24。

許思琦(1990-),女,陜西西安人,碩士研究生,主要從事發動機測試方向的研究。

1671-4598(2017)04-0172-04DOI:10.16526/j.cnki.11-4762/tp

TP

A

猜你喜歡
信號系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
完形填空二則
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
主站蜘蛛池模板: 99re视频在线| 欧美日韩中文字幕二区三区| 亚洲日本www| 精品午夜国产福利观看| 老司机精品久久| 亚洲视屏在线观看| 91视频首页| 国产在线观看一区二区三区| 欧美性猛交xxxx乱大交极品| AV不卡国产在线观看| 美女视频黄频a免费高清不卡| 伊伊人成亚洲综合人网7777| 毛片在线区| 精品三级在线| 国产免费a级片| 这里只有精品在线播放| 精品综合久久久久久97超人该| 九色国产在线| 亚洲V日韩V无码一区二区| 亚洲色中色| 亚洲精品中文字幕午夜| 国产白丝av| 99人体免费视频| 日韩成人午夜| 亚洲天堂首页| 日本在线国产| 国产精品原创不卡在线| 喷潮白浆直流在线播放| 日韩精品一区二区三区中文无码 | 国产嫩草在线观看| 欧美性精品不卡在线观看| 又粗又硬又大又爽免费视频播放| 亚洲成人黄色网址| 四虎综合网| 久久黄色毛片| 全午夜免费一级毛片| 国产网站免费看| 全免费a级毛片免费看不卡| 欧美亚洲中文精品三区| 久久国产精品影院| 全部毛片免费看| 亚洲中久无码永久在线观看软件 | 538国产视频| 色综合热无码热国产| 91麻豆国产在线| 中文字幕在线播放不卡| 99久久亚洲综合精品TS| 视频一本大道香蕉久在线播放| 欧美三级视频网站| 26uuu国产精品视频| 亚洲第一视频网站| 国产精品尹人在线观看| 国产你懂得| 午夜福利网址| 天堂成人在线| 精品乱码久久久久久久| 久久婷婷六月| 日韩在线中文| 日韩二区三区| 亚洲第一网站男人都懂| 国产精品刺激对白在线| 国产99热| 都市激情亚洲综合久久| 亚洲无码高清视频在线观看| www.亚洲色图.com| 99一级毛片| 99精品免费欧美成人小视频| 亚洲欧美成人在线视频| 精品视频在线观看你懂的一区| 亚洲男人的天堂在线| 免费可以看的无遮挡av无码| 国产激爽大片在线播放| 欧美日韩久久综合| 在线免费亚洲无码视频| aaa国产一级毛片| 免费国产一级 片内射老| 伊人久久综在合线亚洲2019| 91精品国产一区| 国产欧美日韩视频怡春院| 日韩毛片免费观看| 国产香蕉国产精品偷在线观看| 国产又粗又猛又爽视频|