<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM+FPGA的高速數據采集智能控制器設計

基于A(yíng)RM+FPGA的高速數據采集智能控制器設計

作者: 時(shí)間:2014-07-11 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/249568.htm

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));

申請I/O內存:

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

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

寄存器地址映射:

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

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

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

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

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

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

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

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

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

最后,ARM獲取兩片SRAM存儲的預處理后的數據,ARM的控制信號是NCS5、at9260_rd、at9260_addr、A14,FPGA將這些信號轉換為FPGA讀SRAM的信號,然后將FPGA讀到的數據傳給ARM,這里FPGA起到數據中轉的作用。

3.3 主處理器ARM應用程序

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

4 結束語(yǔ)

本文論述了基于A(yíng)RM+FPGA體系架構的高速實(shí)時(shí)數據采集智能控制器的設計與實(shí)現。其結合ARM和FPGA兩者的優(yōu)勢,具有更好的運算處理性能,豐富的外圍標準接口。系統采樣率達10MSPS,滿(mǎn)足高速實(shí)時(shí)性的要求。具有很高的應用價(jià)值。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

fpga相關(guān)文章:fpga是什么


linux相關(guān)文章:linux教程


鎖相環(huán)相關(guān)文章:鎖相環(huán)原理

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: ARM FPGA 數據采集

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>