,,
(西北農(nóng)林科技大學(xué) 信息工程學(xué)院,楊凌 712100)
Qsys平臺(tái)的SoC圖像傳輸控制器設(shè)計(jì)
李東坤,來智勇,谷浩亮
(西北農(nóng)林科技大學(xué) 信息工程學(xué)院,楊凌 712100)
介紹了用Altera公司的CylconeV系列SoC芯片來實(shí)現(xiàn)圖像傳輸控制的方法。512×640像素點(diǎn)的圖像數(shù)據(jù)存儲(chǔ)于該芯片PL側(cè)的ROM中,通過FIFO緩存和AXI總線實(shí)現(xiàn)PL部分和PS部分的圖像數(shù)據(jù)的交互。整個(gè)SoC系統(tǒng)的搭建基于Qsys平臺(tái),HPS側(cè)在Linux 嵌入式系統(tǒng)基礎(chǔ)上開發(fā)應(yīng)用程序,以讀取文件數(shù)據(jù)的形式將像素點(diǎn)的數(shù)據(jù)通過以太網(wǎng)發(fā)送給上位機(jī)。上位機(jī)通過Matlab軟件實(shí)現(xiàn)原始圖像的恢復(fù)。
SoC;AXI總線;Qsys;圖像傳輸控制器
傳統(tǒng)的圖像采集、處理和傳輸系統(tǒng)多采用FPGA+DSP或FPGA+DSP+ARM 的架構(gòu)。這種構(gòu)架對(duì)硬件設(shè)計(jì)的要求比較高且系統(tǒng)復(fù)雜,而且多片芯片間的總線連接存在芯片級(jí)間數(shù)據(jù)傳輸帶寬的瓶頸,要實(shí)現(xiàn)高速、高分辨率的圖像數(shù)據(jù)的采集、處理和傳輸比較困難,并且功耗大、不容易擴(kuò)展外設(shè)、不能做到小型化、成本也比較高[3]。Altera公司CycloneV系列的SoC芯片5CSEMA5F31 C6N含有ARM Cortex-A9硬核處理器系統(tǒng)(HPS) ,兼具FPGA邏輯部分的優(yōu)點(diǎn)和處理器的特性。該芯片的ARM處理器和FPGA之間通過高速AXI總線進(jìn)行互聯(lián)通信,提供了足夠的片內(nèi)帶寬,消除了芯片級(jí)間互聯(lián)帶來的帶寬瓶頸[4]。本文采用該芯片進(jìn)行SoC圖像傳輸控制器的實(shí)現(xiàn)研究。
圖像傳輸控制系統(tǒng)由圖像采集器、SoC圖像傳輸控制器和圖像恢復(fù)子系統(tǒng)三個(gè)主要部分組成,其結(jié)構(gòu)如圖1所示 。
圖1 圖像傳輸控制系統(tǒng)示意圖
圖像采集器功能為采集圖像數(shù)據(jù),并按照?qǐng)D像采集傳感器的接口時(shí)序?qū)⒉杉降囊粠瑘D像數(shù)據(jù)傳送給FPGA接收。其工作過程為:首先連接圖像采集傳感器和FPGA之間的板間連接器;其次圖像采集器上電啟動(dòng)并等待進(jìn)入正常運(yùn)行狀態(tài),當(dāng)機(jī)芯組件接收到SoC圖像傳輸控制器發(fā)出的讀取圖像采集器采集的圖像數(shù)據(jù)指令時(shí),圖像采集器將采集到的圖像點(diǎn)陣數(shù)據(jù)通過10位 LVTTL數(shù)字視頻接口輸出給FPGA接收。
SoC圖像傳輸控制器功能為捕獲硬核處理器(HPS)發(fā)出的中斷指令、將圖像數(shù)據(jù)源產(chǎn)生的圖像數(shù)據(jù)通過FIFO緩存并按照RGB格式組幀、將圖像源模塊的圖像數(shù)據(jù)通過高速的AXI總線傳輸?shù)接埠颂幚砥?HPS)側(cè)的DDR3中存儲(chǔ)、硬核處理器(HPS)側(cè)啟動(dòng)Linux應(yīng)用程序?qū)D像源數(shù)據(jù)通過以太網(wǎng)發(fā)送給上位機(jī)。其工作過程為:將圖像源數(shù)據(jù)存放在FPGA側(cè)的ROM中模擬圖像采集器模塊的一幀圖像源數(shù)據(jù),F(xiàn)PGA收到硬核處理器(HPS)發(fā)出的捕獲指令后將一幀圖像源數(shù)據(jù)打包、組幀后通過AXI總線將圖像源數(shù)據(jù)傳輸?shù)接埠颂幚砥?HPS)側(cè)的DDR3中。硬核處理器(HPS)側(cè)運(yùn)行 Linux操作系統(tǒng)、加載硬件設(shè)備驅(qū)動(dòng)、運(yùn)行Socket程序?qū)崿F(xiàn)與上位機(jī)的通信,實(shí)現(xiàn)圖像數(shù)據(jù)的網(wǎng)絡(luò)傳輸至上位機(jī)。SoC圖像傳輸控制器采用友晶科技的DE1-SOC開發(fā)板為硬件平臺(tái)實(shí)現(xiàn)圖像的傳輸和控制功能,該控制器的數(shù)據(jù)流框圖如圖2所示。
圖2 SoC圖像傳輸控制器數(shù)據(jù)流框圖
圖像恢復(fù)子系統(tǒng)的功能為將傳輸至上位機(jī)的圖像源數(shù)據(jù)恢復(fù)成原始圖像。其工作過程為:首先將傳輸至上位機(jī)的圖像數(shù)據(jù)保存為文本形式,然后啟動(dòng)Matlab圖像恢復(fù)程序,圖像恢復(fù)程序運(yùn)行后將圖像源數(shù)據(jù)文本寫入Matlab接口函數(shù)fopen('* ','r'),再利用matlab的reshape(x,m,n)函數(shù)實(shí)現(xiàn)圖像源數(shù)據(jù)的m行n列像素點(diǎn)的排列,最后利用imshow(I)函數(shù)顯示reshape(x,m,n)函數(shù)排列好的m行n列像素點(diǎn)的圖像。
本設(shè)計(jì)重點(diǎn)介紹SoC圖像傳輸控制器的系統(tǒng)硬件搭建和軟件實(shí)現(xiàn)方法。
以友晶科技的DE1-SoC開發(fā)板為硬件平臺(tái)的SoC圖像傳輸控制器是一款A(yù)ltera公司的SoC FPGA的嵌入式開發(fā)套件,其包含Cyclone V 系列的5CSEMA5F31C6N 型SoC芯片,其內(nèi)部集成了FPGA邏輯單元和HPS高性能處理單元兩部分。
HPS側(cè)外掛一片1 GB DDR3(S43TR16256A-15HBL)用于擴(kuò)展SoC的緩存空間和10/100/1000M太網(wǎng)收發(fā)器(KSZ9021RN),實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸以及豐富的外圍擴(kuò)展接口和硬件資源[5,8]。
2.1 圖像源數(shù)據(jù)模擬模塊
圖3 機(jī)芯組件用戶接口
圖像采集器采用XCore公司研發(fā)的氧化釩非制冷紅外焦平面探測(cè)器為核心采集器件,其機(jī)芯組件用戶接口如圖3所示,采用SAMTEC 50針芯連接器其包含機(jī)芯組件供電電源接口、RS-232串行通信接口、USRT通信接口、模擬視頻接口、14位或者10位 LVCMOS數(shù)字視頻接口、LVDS數(shù)字視頻接口,以及4個(gè)按鍵接口等。
用戶可采用板間連接器與機(jī)芯組件用戶接口進(jìn)行對(duì)接,機(jī)芯組件輸出的圖像數(shù)據(jù)時(shí)序圖如圖4所示。
圖4 機(jī)芯組件圖像采集時(shí)序圖
在圖像傳輸控制器的主控芯片——SoC的PL側(cè)按照XCore公司LA系列紅外機(jī)芯組件的圖像時(shí)序要求模擬并送出本設(shè)計(jì)需要的像素點(diǎn)的圖像數(shù)據(jù),通過FIFO緩存把512×640像素點(diǎn)數(shù)據(jù)(作為一幀圖像時(shí)序,以512像素點(diǎn)為一行、640像素點(diǎn)為一列)緩存于FPGA的BRAM中[6],為后續(xù)PL側(cè)和PS側(cè)數(shù)據(jù)的交互降低傳輸速率,并滿足片上系統(tǒng)的傳輸帶寬。經(jīng)Modelsim軟件仿真的圖像源數(shù)據(jù)的時(shí)序如圖5所示。
圖5 模擬機(jī)芯組件圖像時(shí)序仿真圖
2.2 數(shù)據(jù)緩存模塊——DDR3
DDR3作為大容量數(shù)據(jù)存儲(chǔ)芯片,選擇的芯片型號(hào)為S43TR16256A-15HBL。此芯片的存儲(chǔ)容量為1 GB。數(shù)據(jù)傳輸速率最大為1600 Mbps,本次設(shè)計(jì)選擇的數(shù)據(jù)傳輸速率為1333 Mbps。DDR3(Double Data Rate 3 SDRAM)采用了在時(shí)鐘的上升沿和下降沿同時(shí)進(jìn)行數(shù)據(jù)傳輸?shù)幕痉绞剑珼DR3擁有差分雙向數(shù)據(jù)閘門、差分時(shí)鐘輸入和8位數(shù)據(jù)讀預(yù)取能力等特性。DDR3連接SoC的HPS部分連接關(guān)系如圖6所示。
圖6 HPS與DDR3連接關(guān)系
2.3 數(shù)據(jù)傳輸模塊——以太網(wǎng)收發(fā)器
選用的KSZ9021RN以太網(wǎng)收發(fā)器是一個(gè)物理層器件,用于實(shí)現(xiàn)1000BASE-T、100BASE-T和10BASE-T類型的以太網(wǎng)。本次設(shè)計(jì)中的5CSEMA5F31C6N型SoC芯片支持RGMII模式(即Reduced GMII,是GMII的簡(jiǎn)化版本)。其與HPS的連接關(guān)系如圖7所示。PHY模塊原理圖如圖8所示。
圖7 HPS與PHY連接關(guān)系
圖8 PHY模塊原理圖
Altera公司的SoC芯片將FPGA和硬核集成到了單塊芯片上,實(shí)現(xiàn)了基于ARM架構(gòu)的用戶可定制開發(fā)設(shè)計(jì)思路。該芯片硬核處理系統(tǒng)是ARM公司的Cortex-A9 雙核處理器,擁有十分豐富的存儲(chǔ)與外設(shè)接口?;贒E1-SoC開發(fā)板的圖像傳輸控制器,其PL側(cè)與PS側(cè)的數(shù)據(jù)交互可利用SoC芯片的AXI 總線的雙向特性的優(yōu)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)的高帶寬傳輸,使得SoC圖像傳輸控制器性能更好。其開發(fā)流程分為硬件開發(fā)與軟件開發(fā)兩部分,流程圖如圖9所示。
圖9 基于SoC的FPGA嵌入式設(shè)計(jì)流程
3.1 Qsys系統(tǒng)架構(gòu)搭建
基于SoC的嵌入式開發(fā)需要先進(jìn)行系統(tǒng)架構(gòu)搭建,而系統(tǒng)架構(gòu)搭建開發(fā)則需要先創(chuàng)建 Qsys工程,完成事先設(shè)計(jì)好的自定義模塊的IP核封裝與掛載,一些在前期設(shè)計(jì)驗(yàn)證中用到的系統(tǒng)自帶IP核則可以直接調(diào)用獲得。Qsys設(shè)計(jì)的核心是處理器系統(tǒng)各個(gè)IP的配置,處理器系統(tǒng)內(nèi)部基本結(jié)構(gòu)如圖10所示。
Qsys中的HPS配置分為4大部分:SDRAM配置、HPS時(shí)鐘配置、接口引腳復(fù)用配置以及 FPGA接口配置,其中FPGA接口配置可以實(shí)現(xiàn)FPGA與HPS之間的存儲(chǔ)共享和數(shù)據(jù)傳輸。Altera SoC FPGA提供了兩種方式用于FPGA和HPS通信,它們是FPGA to SDRAM和AXI bridge 接口。FPGA to SDRAM 接口是HPS內(nèi)部的SDRAM控制器提供給FPGA訪問HPS內(nèi)存的接口。 AXI bridge是 FPGA 和HPS 總線之間數(shù)據(jù)交互的接口,包括FPGA-to-HPS AXI、HPS-to-FPGA AXI和Light-weight HPS-to-FPGA AXI。
本設(shè)計(jì)中FPGA-to-HPS的AXI接口橋使能,如圖11所示,通過FPGA-to-HPS的AXI接口橋可以訪問HPS側(cè)的DDR3。Qsys軟件提供了system console工具使用JTAG對(duì)HPS DDR3的一段存儲(chǔ)區(qū)域進(jìn)行讀或?qū)懀瑫r(shí)在Linux系統(tǒng)中,通過軟件對(duì)DDR3的同一存儲(chǔ)區(qū)域?qū)懟蜃x[7]。經(jīng)數(shù)據(jù)對(duì)比驗(yàn)證可知,兩種方式對(duì)DDR3的同一存儲(chǔ)區(qū)域進(jìn)行讀或?qū)?寫或讀)的數(shù)據(jù)一致。因此FPGA 可以通過FPGA-to-HPS的AXI接口橋訪問HPS 的DDR3。
圖10 硬核處理器(HPS)系統(tǒng)結(jié)構(gòu)圖
圖11 FPGA-to-HPS接口
本設(shè)計(jì)中的圖像源數(shù)據(jù)模塊通過.mif文件模擬一幀分辨率為512×640的圖像數(shù)據(jù),經(jīng)過傳輸緩存到VIP_CAPTURE這個(gè)模塊。該模塊通過Avalon ST接口的sop和eop信號(hào)捕獲一個(gè)完整的package數(shù)據(jù)包,經(jīng)過FIFO緩存后數(shù)據(jù)通過Avalon總線的主設(shè)備接口被寫入到HPS的從設(shè)備端接口。此具體實(shí)現(xiàn)過程是:HPS側(cè)的輕量級(jí)HPS-to-FPGA主設(shè)備橋接口與VIP_CAPTURE的Avalon總線的從設(shè)備橋接口相連,然后HPS側(cè)通過軟件完成對(duì)FPGA側(cè)的VIP_CAPTURE模塊的相應(yīng)控制和狀態(tài)的讀取。其中,VIP_CAPTURE模塊的輕量級(jí)主設(shè)備HPS-to-FPGA 橋接口總線分配的基址為0x0000 0000;在Qsys中連接Avalon總線的主設(shè)備橋接口和HPS模塊的FPGA-to-HPS從設(shè)備橋接口的連線,此連接關(guān)系可以實(shí)現(xiàn)FPGA側(cè)的圖像數(shù)據(jù)向HPS側(cè)的DDR3中的傳輸。Qsys中連接關(guān)系如圖12所示。
圖12 Qsys中連接關(guān)系
3.2 軟件設(shè)計(jì)
3.2.1 Linux操作系統(tǒng)的啟動(dòng)
Linux操作系統(tǒng)運(yùn)行穩(wěn)定,擁有良好的移植性、優(yōu)秀的網(wǎng)絡(luò)功能、完備的對(duì)各種文件系統(tǒng)的支持以及豐富的各種協(xié)議標(biāo)準(zhǔn)等。因此,啟動(dòng)運(yùn)行Linux操作系統(tǒng)對(duì)本設(shè)計(jì)實(shí)現(xiàn)處理器 (HPS)側(cè)到上位機(jī)的網(wǎng)絡(luò)傳輸至關(guān)重要。
CycloneV SoC FPGA的Linux操作系統(tǒng)一般有三種啟動(dòng)方式: JTAG、Quad-SPI/NAND /NOR Flash或SD卡。本設(shè)計(jì)中,采用SD卡啟動(dòng),啟動(dòng)前把啟動(dòng)配置引腳配置成SD卡啟動(dòng)。通過SD卡引導(dǎo) Preloader和U-boot完成對(duì)HPS的底層和外設(shè)的驅(qū)動(dòng),再通過U-boot讀取NAND Flash里存儲(chǔ)的FPGA配置文件、Linux數(shù)據(jù)來配置FPGA和裝載Linux。為了啟動(dòng)Linux系統(tǒng),必須在SD卡中建立Boot.bin、Devicetree.dtb、zImage、根文件系統(tǒng)。圖像傳輸控制器運(yùn)行操作系統(tǒng)后會(huì)更方便地控制硬件設(shè)備間的協(xié)調(diào)工作[8]。
3.2.2 軟件部分設(shè)計(jì)
本設(shè)計(jì)軟件部分需要完成兩個(gè)主要功能:一是控制VIP_CAPTURE的工作并獲取具體狀態(tài);二是等待VIP_CAPTURE完成數(shù)據(jù)傳輸后把數(shù)據(jù)從內(nèi)存中讀取出來,并通過網(wǎng)口發(fā)給上位機(jī)。Linux內(nèi)核的內(nèi)存管理系統(tǒng)不允許程序直接訪問物理內(nèi)存單元,需要經(jīng)過系統(tǒng)分配并映射到虛擬地址。VIP_CAPTURE模塊的控制程序中先通過mmap()函數(shù)把輕量級(jí)HPS-to-FPGA 橋接口映射到Linux 應(yīng)用程序可以訪問的虛擬地址,然后再通過Qsys中分配的基址就訪到VIP_CAPTURE模塊。
本設(shè)計(jì)提供Linux內(nèi)核模塊完成物理內(nèi)存的分配,然后通過字符設(shè)備的read函數(shù)把內(nèi)存區(qū)域的數(shù)據(jù)傳送到用戶空間。用戶可以直接打開字符設(shè)備使用read函數(shù)來讀取數(shù)據(jù),并上傳至上位機(jī)重構(gòu)原始圖像信息[7-8]。具體軟件程序開發(fā)流程如圖13所示。
在上位機(jī)中運(yùn)行Matlab圖像恢復(fù)程序,其功能是讀取圖像信息文件,并顯示圖像數(shù)據(jù)源模塊產(chǎn)生的圖像信息,運(yùn)行結(jié)果如圖14所示。恢復(fù)的圖片與模擬圖像源模塊產(chǎn)生的一幀圖像信息相符。
圖13 軟件流程圖
圖14 原始圖片
[1] 翁天陽,莊宇,于瑋,等.基于HPS和FPGA的圖像壓縮感知編解碼系統(tǒng)[J].電子技術(shù)應(yīng)用,2017,43(5):1.
[2] 王浩健.高速圖像采集壓縮存儲(chǔ)系統(tǒng)設(shè)計(jì)[D].成都:西南科技大學(xué),2016.
[3] 祝清瑞,湯心溢,李爭(zhēng),等.基于全可編程SoC的高速紅外成像系統(tǒng)設(shè)計(jì)研究[J].激光與紅外,2016,46(12):1-3.
[4] 鄧海濤,吳捷,李建輝,等.DE1_SoC開發(fā)平臺(tái)上的圖像采集系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017(1):2-3.
[5] 聶永軍,徐光輝,鄭國(guó)建.基于Altera SoC FPGA的圖像采集系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016(1):2-4.
[6] 譚會(huì)生.EDA技術(shù)及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2011.
[7] 任愛鋒,羅豐,宋士權(quán),等.基于FPGA的嵌入式系統(tǒng)設(shè)——Altera SoC FPGA[M].西安:西安電子科技大學(xué)出版社,2014.
李東坤(碩士),主要研究方向?yàn)镕PGA的嵌入式系統(tǒng)設(shè)計(jì);來智勇(教授),主要研究方向?yàn)榍度胧接?jì)算機(jī)系統(tǒng)設(shè)計(jì);谷浩亮(碩士),主要研究方向?yàn)榍度胧杰浻布f(xié)同設(shè)計(jì)。
DesignofSoCImageTransmissionControllerBasedonQsysPlatform
LiDongkun,LaiZhiyong,GuHaoliang
(Information Engineering Institute,Northwest A&F University,Yangling 712100,China)
In the paper,the method of using Altera's CylconeV series SoC chip to realize image transmission control is introduced.The image data of 512×640 pixels is stored in ROM on the SoC chip's PL side,and the interaction between the PL part and the PS part is realized through FIFO cache and AXI bus.The whole SoC system is built on the Qsys platform.The HPS side develops applications based on Linux embedded system.The HPS sends the pixel data to the upper machine in the form of reading file data.The restoration of the original image of the upper plane is realized by Matlab software.
SoC;AXI bus;Qsys;image transmission controller
TN919.5
A
2017-08-04)