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
主站蜘蛛池模板: 2019国产在线| 中文字幕亚洲另类天堂| 91精品啪在线观看国产60岁| 成人免费黄色小视频| 97在线观看视频免费| 亚洲国产精品美女| 国产三级国产精品国产普男人| 2020极品精品国产| 久久香蕉国产线看精品| 亚洲一级毛片免费观看| 大陆国产精品视频| 亚洲国产欧洲精品路线久久| 久久国语对白| 最新精品国偷自产在线| 日韩无码视频专区| 久久免费精品琪琪| 亚洲日产2021三区在线| 亚洲成AV人手机在线观看网站| 国产精品视频第一专区| 国产精品亚洲天堂| 二级特黄绝大片免费视频大片| 国产精品香蕉在线| a欧美在线| 国产aaaaa一级毛片| 色网在线视频| 五月婷婷精品| 久久精品人妻中文系列| 午夜综合网| 国产成人精品男人的天堂| 亚洲三级片在线看| 91激情视频| 麻豆精品国产自产在线| 日本中文字幕久久网站| 日本精品影院| 青草视频免费在线观看| 亚洲人成网7777777国产| 2020久久国产综合精品swag| 尤物午夜福利视频| 国产精品女主播| 国产区在线观看视频| 国产迷奸在线看| 国产欧美日韩资源在线观看| 2021国产精品自拍| 国产成人精品视频一区二区电影 | 久久精品免费国产大片| 狠狠亚洲婷婷综合色香| 国产成人一区免费观看| 丝袜美女被出水视频一区| 国产精品分类视频分类一区| 91小视频在线观看免费版高清| 2021国产精品自产拍在线观看| www.91在线播放| 一边摸一边做爽的视频17国产| 精品国产Av电影无码久久久| 色综合色国产热无码一| 欧美激情视频二区| 日韩在线网址| 国产 日韩 欧美 第二页| а∨天堂一区中文字幕| 99久久国产综合精品女同| 毛片a级毛片免费观看免下载| 亚洲精品国产精品乱码不卞| 另类专区亚洲| 日本精品中文字幕在线不卡| 欧美色图第一页| 欧美一区二区三区欧美日韩亚洲| 在线毛片网站| 亚洲av综合网| 玖玖精品视频在线观看| 亚洲网综合| 亚洲69视频| 久久国产精品电影| 91丝袜乱伦| 精品超清无码视频在线观看| 久久黄色影院| 色综合五月| 国产激情国语对白普通话| 国产玖玖视频| 一区二区三区成人| 精品视频一区二区三区在线播 | 国产高清毛片| 999国产精品永久免费视频精品久久 |