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