国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SoC FPGA 的FPGA to HPS數(shù)據(jù)通信系統(tǒng)設(shè)計(jì)*

2021-08-25 07:01:30劉春雅
甘肅科技 2021年13期
關(guān)鍵詞:外設(shè)應(yīng)用程序邏輯

劉春雅

(陜西國(guó)防工業(yè)職業(yè)技術(shù)學(xué)院,陜西 西安 710300)

1 概述

數(shù)字信號(hào)處理領(lǐng)域內(nèi)較為典型的應(yīng)用為ADC高速數(shù)據(jù)采集及處理,由中端或高端FPGA 完成若干通道的ADC 接口邏輯,數(shù)據(jù)接收后進(jìn)入FPGA 邏輯,之后再進(jìn)行諸如FIR 濾波、FFT 運(yùn)算等數(shù)字信號(hào)處理。處理后的一些相關(guān)信息及運(yùn)算結(jié)果需要通過(guò)支持TCP/IP 協(xié)議的以太網(wǎng)GE 口、USB、CAN 等接口發(fā)送至上位機(jī)、存儲(chǔ)單元或其他設(shè)備,而支持TCP/IP 協(xié)議的以太網(wǎng)GE 口、USB、CAN 等接口都帶有協(xié)議解析部分的處理,這在傳統(tǒng)的純FPGA 邏輯內(nèi)很難實(shí)現(xiàn)對(duì)這部分協(xié)議的解析和處理。在很多對(duì)小型化、低功耗等一些設(shè)計(jì)指標(biāo)約束條件較高的場(chǎng)合,傳統(tǒng)的單FPGA 架構(gòu)的方案就會(huì)顯得難以適從。

2 SoC FPGA 的特點(diǎn)

CycloneV SoC FPGA 是Intel PSG 推出的一款在單芯片上集成了ARM 雙核Cortex-A9 處理器和FPGA 邏輯的真正意義上的SoC 芯片。它的出現(xiàn)正好能夠解決上述問(wèn)題,單芯片ARM+FPGA 的架構(gòu)不僅能夠完成以前FPGA 所擅長(zhǎng)的ADC 接口及數(shù)字信號(hào)處理等功能,還可以通過(guò)片上內(nèi)部的ARM來(lái)實(shí)現(xiàn)以太網(wǎng)GE 口、USB、CAN 等不太好使用FPGA 去實(shí)現(xiàn)的一些接口,不僅如此還能夠利用ARM 運(yùn)行嵌入式操作系統(tǒng)完成復(fù)雜的單板事務(wù)流程控制及管理、人機(jī)交互界面等。單芯片的SoC 方案對(duì)設(shè)備小型化、低功耗化的設(shè)備發(fā)展方向提供了有力的幫助。

SoC FPGA 內(nèi)部的ARM 側(cè)和FPGA 側(cè)的數(shù)據(jù)通信是由3 個(gè)橋?qū)崿F(xiàn)的,分別是H2F_AXI_Master橋,用于完成HPS(即Hard Processor System,HSP 為包含了ARM 雙核Cortex-A9 處理器、FLASH 及SDRAM 控制器及諸多外設(shè)接口等在內(nèi)的一整套完整的硬核CPU 系統(tǒng))向FPGA 發(fā)起數(shù)據(jù)讀寫操作;F2H_AXI_Slave 橋,用于完成FPGA 向HPS 發(fā)起數(shù)據(jù)讀寫操作;H2F_LW_AXI_Master 橋,用于HPS 向FPGA 發(fā)起一些控制指令或較小帶寬數(shù)據(jù)讀寫。

對(duì)于之前提到的典型應(yīng)用為高速ADC 數(shù)據(jù)采集及處理來(lái)講,需要確保FPGA 側(cè)處理完的數(shù)據(jù)等信息能夠最終送往HPS 側(cè)才能讓SoC FPGA 發(fā)揮出應(yīng)有的作用。

3 設(shè)計(jì)實(shí)現(xiàn)

3.1 Avalon MM Master Templates 簡(jiǎn)介

Avalon MM Master Templates 實(shí)現(xiàn)了Avalon MM Master 功能。通過(guò)這個(gè)Avalon Master 接口,用戶能夠向?qū)?yīng)的Avalon Slave 設(shè)備寫入數(shù)據(jù),也能夠從對(duì)應(yīng)的Avalon Slave 設(shè)備讀出數(shù)據(jù)。

該Templates 在使用時(shí)需要區(qū)分讀或?qū)憙蓚€(gè)模式,也就是說(shuō)在使用時(shí)需要指定其工作模式是讀或?qū)懼械囊环N,一個(gè)Instance 無(wú)法同時(shí)支持讀寫雙向,如果需要讀寫雙向,可以在系統(tǒng)搭建的時(shí)候例化兩個(gè)Avalon MM Master Templates 并分別指定為讀和寫模式。

Avalon MM Master Templates 讀和寫模式頂層結(jié)構(gòu),(如圖1 和圖2 所示):

圖1 Master 讀模式

圖2 Master 寫模式

對(duì)于Master Templates 的讀或?qū)懩J絹?lái)說(shuō),都是由四個(gè)基本模塊構(gòu)成的,分別是時(shí)鐘復(fù)位、讀/寫Master 邏輯、控制邏輯及FIFO 邏輯。

時(shí)鐘復(fù)位考慮到同步設(shè)計(jì)一般在Platform Designer 系統(tǒng)中保持與整個(gè)HPS 系統(tǒng)一致。

讀/寫Master 邏輯部分的接口是與對(duì)應(yīng)的Slave設(shè)備對(duì)接的,使用時(shí)在Platform Designer 中需要進(jìn)行連接。

3.2 Platform Designer 系統(tǒng)搭建

添加Master Templates 到系統(tǒng)并修改其配置參數(shù),需要將Master Direction 設(shè)置為“Write”,即FPGA 主動(dòng)發(fā)起寫操作到HPS 側(cè)。Data Width 選為32bit,其有8、16、32、64、128、256、512 和1024 共計(jì)8 個(gè)選項(xiàng)。Address Width 選為32bit,與ARM 位寬匹配。打開(kāi)burst 使能,并設(shè)置最大的burst 長(zhǎng)度為128,可以根據(jù)實(shí)際的數(shù)據(jù)吞吐量進(jìn)行設(shè)置。按照這個(gè)設(shè)置,一次burst 最大可以傳輸32×128bit=4096bit的數(shù)據(jù)。配置FIFO 深度為256,使用memory based方式,即使用FPGA 內(nèi)部的Block RAM 搭建FIFO,按照這個(gè)設(shè)置,32×256 會(huì)占用FPGA 內(nèi)部的一個(gè)M10K 做FIFO。最后將master_template 的控制端口和FIFO 端口Export 出來(lái),以便用戶進(jìn)行控制和數(shù)據(jù)寫入。

為了方便后面的測(cè)試,還需要編寫一個(gè)Avalon MM Slave的模塊,將該模塊掛在HPS 的h2f_lw_axi_master 這個(gè)輕量級(jí)總線橋上,在測(cè)試過(guò)程中可以通過(guò)ARM 運(yùn)行的應(yīng)用程序來(lái)控制master_template 的寫入。該模塊可以設(shè)計(jì)含有3 個(gè)寄存器,分別用于控制master_template 的control_go,control_write_base 及control_write_length。編寫完成的代碼需要在Platform Designer 工具中添加為一個(gè)元件進(jìn)來(lái)并掛在h2f_lw_axi_master 這個(gè)輕量級(jí)總線橋上了。

之后在 Platform Designer 工具中將這個(gè)write_ctrl 作為一個(gè)模塊添加到HPS 系統(tǒng)中,連接好時(shí)鐘及復(fù)位信號(hào),將HPS 的h2f_lw_axi_master 連接到該元件的as(即Avalon MM Slave)端口。最終連接好的整個(gè)HPS 系統(tǒng)如圖3 所示:

圖3 添加并連接write_ctrl 模塊到HPS 系統(tǒng)

對(duì)搭建好的HPS 系統(tǒng)分配基地址,Generate HDL 后得到HPS 部分的HDL 代碼。至此,HPS 側(cè)的硬件系統(tǒng)搭建完成。

硬件部分完成后,需要在SoC EDS 工具中生成Linux 軟件和驅(qū)動(dòng)所需包含的hps_0.h 頭文件,該頭文件包含了HPS 側(cè)全部的外設(shè)及接口IP 寄存器定義等。

其命令為:sopc-create-header-files“./soc_system.sopcinfo”--single hps_0.h--module hps_0

生成設(shè)備樹(shù)dts 并轉(zhuǎn)換為L(zhǎng)inux 系統(tǒng)啟動(dòng)所需的dtb。

其命令為:make dtb

由于dtb 文件中包含的信息是與一個(gè)具體的Quartus 工程對(duì)應(yīng)的,在啟動(dòng)時(shí),Linux 操作系統(tǒng)會(huì)根據(jù)dtb 文件中的硬件描述去初始化FPGA 側(cè)添加的各種IP。

3.3 Avalon MM Master Templates 驅(qū)動(dòng)程序設(shè)計(jì)

開(kāi)始Linux 應(yīng)用程序設(shè)計(jì)之前,需要先為Avalon MM Master Templates 編寫相應(yīng)的驅(qū)動(dòng)程序,否則Linux 內(nèi)核無(wú)法識(shí)別該外設(shè)。驅(qū)動(dòng)程序中:

(1)amm_wr_init(viod)為驅(qū)動(dòng)模塊入口,Linux在加載設(shè)備驅(qū)動(dòng)時(shí)會(huì)首先執(zhí)行該函數(shù)并獲取到該設(shè)備的主設(shè)備號(hào)。其中:

①ret=alloc_chrdev_region(&devno,minor,1,"amm_wr");獲取設(shè)備號(hào),設(shè)備節(jié)點(diǎn)命名為"amm_wr"。

②my_kernel_buffer=dma_alloc_coherent(NULL,dma_size,(void *)&(my_kernel_buffer_phy),GFP_K ERNEL);為DMA 內(nèi)存申請(qǐng),申請(qǐng)內(nèi)存大小為dma_size。my_kernel_buffer_phy 為申請(qǐng)到的內(nèi)存物理首地址,F(xiàn)PGA 使用的就是該實(shí)際的物理地址。my_kernel_buffer 為DMA 內(nèi)存空間虛擬地址指針。

(2)amm_wr_read 函數(shù)實(shí)現(xiàn)從內(nèi)核空間讀取數(shù)據(jù)到用戶空間,copy_to_user (buf,my_kernel_buffer,count)為從my_kernel_buffer 中拷貝count 個(gè)數(shù)據(jù)到用戶空間buf 中。

(3)amm_wr_ioctl 函數(shù)是設(shè)備驅(qū)動(dòng)程序中對(duì)設(shè)備的I/O 通道進(jìn)行管理的函數(shù)。所謂對(duì)I/O 通道進(jìn)行管理,就是對(duì)設(shè)備的一些特性進(jìn)行控制。put_user(data,(unsigned int *)arg)可將my_kernel_buffer_phy物理地址拷貝到用戶空間。應(yīng)用程序在調(diào)用ioctl 函數(shù)時(shí),就能夠得到該物理地址,并通過(guò)寫write_ctrl這個(gè)Slave 模塊其中的base 寄存器操作,將FPGA發(fā)起寫傳輸所需的物理地址告知FPGA。

(4)fops 定義部分:

其余部分主要為amm_wr_open 打開(kāi)函數(shù),amm_wr_release 關(guān)閉函數(shù),amm_wr_exit 驅(qū)動(dòng)出口函數(shù)及一些聲明等。

將此驅(qū)動(dòng)的源碼上傳至Ubuntu 系統(tǒng)下,使用root 賬戶登錄Ubuntu,設(shè)置好處理器架構(gòu),設(shè)置好交叉編譯工具,并在Makefile 中指定好linux-soc fpga源碼路徑,之后就可以編譯得到后綴為.ko 的驅(qū)動(dòng)模塊文件。應(yīng)用程序開(kāi)始執(zhí)行之前,需要先使用insmod 命令安裝這個(gè)驅(qū)動(dòng)模塊。

3.4 Linux 應(yīng)用程序設(shè)計(jì)

應(yīng)用程序的功能主要是為了測(cè)試整個(gè)HPS 底層的硬件系統(tǒng),檢驗(yàn)是否能夠完成FPGA 邏輯側(cè)的數(shù)據(jù)寫入HPS 側(cè)的DDR 中,并可將最終寫入DDR的數(shù)據(jù)讀取到Linux 的用戶空間并打印顯示出來(lái)。

該應(yīng)用程序通過(guò)寫模式的Avalon MM Master Templates,將FPGA 邏輯代碼生成的16384 個(gè)數(shù)據(jù)從邏輯側(cè)寫入到了HPS 側(cè)的DDR 中儲(chǔ)存,再通過(guò)read 函數(shù)讀取到用戶空間的read_buffer 中,最后為了顯示方便,僅打印出了前1024 個(gè)數(shù)據(jù)。

應(yīng)用程序中:

(1)periph_vir_base=mmap(NULL,HW_REGS_SPAN,(PROT_READ|PROT_WRITE),MAP_SHARED,fd,HW_REGS_BASE);為通過(guò)mmap 函數(shù)將以地址(HW_REGS_BASE)為起始的一段空間(HW_REGS_SPAN)進(jìn)行虛擬地址映射,得到了HPS 全部外設(shè)的虛擬地址,其中也包括了HPS 側(cè)的h2f_lw_axi_master 總線橋的虛擬地址。

(2)write_ctrl_vir_base=periph_vir_base+((unsigned long)(ALT_LWFPGASLVS_OFST+MASTER_CTRL BASE)&(unsigned long)(HW_REGS_MASK));可得到write_ctrl 自定義元件的基地址,其基地址由外設(shè)虛擬基地址+h2f_lw 總線橋的偏移地址+write_ctrl 元件相對(duì)于h2f_lw 總線橋的偏移地址得到。

(3)int trans_init(void)函數(shù)為通過(guò)ioctl 系統(tǒng)調(diào)用得到申請(qǐng)到的DMA 的一段地址空間,并將這段空間的基地址寫入FPGA 側(cè)write_ctrl 元件的寄存器,同樣的方式,也寫入了數(shù)據(jù)長(zhǎng)度參數(shù)。FPGA 得到這兩個(gè)參數(shù)就能夠向這個(gè)地址寫入此數(shù)據(jù)長(zhǎng)度的一段數(shù)據(jù)了。

(4)main 函數(shù)內(nèi),先對(duì)整個(gè)系統(tǒng)做了復(fù)位,以清除Avalon MM Master Templates 內(nèi)FIFO 的多余數(shù)據(jù),確保FIFO 不會(huì)有殘存數(shù)據(jù)影響本次測(cè)試。之后軟件通過(guò)寫寄存器的方式向write_ctrl 元件寫入控制指令,控制go 發(fā)一次脈沖來(lái)啟動(dòng)傳輸過(guò)程。之后調(diào)用read 函數(shù)將16384 個(gè)數(shù)據(jù)讀取到用戶空間的read_buffer 儲(chǔ)存,最后通過(guò)for 循環(huán),將儲(chǔ)存 的16384 個(gè)數(shù)據(jù)打印出來(lái),為了方便顯示,只打印出了前1024 個(gè)數(shù)據(jù)。

(5)程序退出時(shí)需要取消虛擬地址映射并關(guān)閉打開(kāi)的文件描述符。

3.5 應(yīng)用程序測(cè)試

在SoC EDS 中輸入“eclipse &”打開(kāi)DS-5 并新建軟件工程,添加源代碼和必要的文件包含路徑后編譯工程,得到二進(jìn)制程序文件,再為該文件添加可執(zhí)行權(quán)限。運(yùn)行應(yīng)用程序得到的結(jié)果(如圖4 所示)。

圖4 應(yīng)用程序運(yùn)行結(jié)果

4 結(jié)束語(yǔ)

從該FPGA to HPS 數(shù)據(jù)通信系統(tǒng)設(shè)計(jì)最終的測(cè)試結(jié)果來(lái)看,完全達(dá)到了芯片內(nèi)部FPGA 側(cè)到ARM 側(cè)的數(shù)據(jù)通信的目標(biāo)。如FPGA 邏輯側(cè)接的是ADC 數(shù)據(jù)或是用戶經(jīng)過(guò)數(shù)字信號(hào)處理運(yùn)算后的數(shù)據(jù),通過(guò)此方案就可以達(dá)到將數(shù)據(jù)送往ARM 側(cè)的目的。之后再通過(guò)相應(yīng)的嵌入式軟件開(kāi)發(fā),就可以完成將數(shù)據(jù)最終通過(guò)TCP/IP 協(xié)議的GE 口,USB,CAN 等接口送出的任務(wù)。故該方案可以成為通用的SoC FPGA 數(shù)據(jù)交互通信方案,具備較強(qiáng)的參考價(jià)值。

猜你喜歡
外設(shè)應(yīng)用程序邏輯
刑事印證證明準(zhǔn)確達(dá)成的邏輯反思
法律方法(2022年2期)2022-10-20 06:44:24
邏輯
創(chuàng)新的邏輯
刪除Win10中自帶的應(yīng)用程序
女人買買買的神邏輯
37°女人(2017年11期)2017-11-14 20:27:40
Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
貼身呵護(hù) 必不可少的PSP外設(shè)
外設(shè)天地行情
三星電子將開(kāi)設(shè)應(yīng)用程序下載商店
墨脱县| 江安县| 奉化市| 德化县| 哈巴河县| 进贤县| 勃利县| 伊宁市| 建瓯市| 陕西省| 兖州市| 清苑县| 东丰县| 儋州市| 保靖县| 平乐县| 永顺县| 遂溪县| 乐业县| 灵山县| 黄石市| 台州市| 华容县| 江都市| 阿拉善右旗| 无棣县| 利辛县| 沁水县| 宁南县| 河间市| 社旗县| 宁强县| 合肥市| 若尔盖县| 黔南| 本溪市| 凯里市| 朝阳区| 右玉县| 利辛县| 新河县|