,,
(西北农林科技大学 信息工程学院,杨凌 712100)
Qsys平台的SoC图像传输控制器设计
李东坤,来智勇,谷浩亮
(西北农林科技大学 信息工程学院,杨凌 712100)
介绍了用Altera公司的CylconeV系列SoC芯片来实现图像传输控制的方法。512×640像素点的图像数据存储于该芯片PL侧的ROM中,通过FIFO缓存和AXI总线实现PL部分和PS部分的图像数据的交互。整个SoC系统的搭建基于Qsys平台,HPS侧在Linux 嵌入式系统基础上开发应用程序,以读取文件数据的形式将像素点的数据通过以太网发送给上位机。上位机通过Matlab软件实现原始图像的恢复。
SoC;AXI总线;Qsys;图像传输控制器
传统的图像采集、处理和传输系统多采用FPGA+DSP或FPGA+DSP+ARM 的架构。这种构架对硬件设计的要求比较高且系统复杂,而且多片芯片间的总线连接存在芯片级间数据传输带宽的瓶颈,要实现高速、高分辨率的图像数据的采集、处理和传输比较困难,并且功耗大、不容易扩展外设、不能做到小型化、成本也比较高[3]。Altera公司CycloneV系列的SoC芯片5CSEMA5F31 C6N含有ARM Cortex-A9硬核处理器系统(HPS) ,兼具FPGA逻辑部分的优点和处理器的特性。该芯片的ARM处理器和FPGA之间通过高速AXI总线进行互联通信,提供了足够的片内带宽,消除了芯片级间互联带来的带宽瓶颈[4]。本文采用该芯片进行SoC图像传输控制器的实现研究。
图像传输控制系统由图像采集器、SoC图像传输控制器和图像恢复子系统三个主要部分组成,其结构如图1所示 。
图1 图像传输控制系统示意图
图像采集器功能为采集图像数据,并按照图像采集传感器的接口时序将采集到的一帧图像数据传送给FPGA接收。其工作过程为:首先连接图像采集传感器和FPGA之间的板间连接器;其次图像采集器上电启动并等待进入正常运行状态,当机芯组件接收到SoC图像传输控制器发出的读取图像采集器采集的图像数据指令时,图像采集器将采集到的图像点阵数据通过10位 LVTTL数字视频接口输出给FPGA接收。
SoC图像传输控制器功能为捕获硬核处理器(HPS)发出的中断指令、将图像数据源产生的图像数据通过FIFO缓存并按照RGB格式组帧、将图像源模块的图像数据通过高速的AXI总线传输到硬核处理器(HPS)侧的DDR3中存储、硬核处理器(HPS)侧启动Linux应用程序将图像源数据通过以太网发送给上位机。其工作过程为:将图像源数据存放在FPGA侧的ROM中模拟图像采集器模块的一帧图像源数据,FPGA收到硬核处理器(HPS)发出的捕获指令后将一帧图像源数据打包、组帧后通过AXI总线将图像源数据传输到硬核处理器(HPS)侧的DDR3中。硬核处理器(HPS)侧运行 Linux操作系统、加载硬件设备驱动、运行Socket程序实现与上位机的通信,实现图像数据的网络传输至上位机。SoC图像传输控制器采用友晶科技的DE1-SOC开发板为硬件平台实现图像的传输和控制功能,该控制器的数据流框图如图2所示。
图2 SoC图像传输控制器数据流框图
图像恢复子系统的功能为将传输至上位机的图像源数据恢复成原始图像。其工作过程为:首先将传输至上位机的图像数据保存为文本形式,然后启动Matlab图像恢复程序,图像恢复程序运行后将图像源数据文本写入Matlab接口函数fopen('* ','r'),再利用matlab的reshape(x,m,n)函数实现图像源数据的m行n列像素点的排列,最后利用imshow(I)函数显示reshape(x,m,n)函数排列好的m行n列像素点的图像。
本设计重点介绍SoC图像传输控制器的系统硬件搭建和软件实现方法。
以友晶科技的DE1-SoC开发板为硬件平台的SoC图像传输控制器是一款Altera公司的SoC FPGA的嵌入式开发套件,其包含Cyclone V 系列的5CSEMA5F31C6N 型SoC芯片,其内部集成了FPGA逻辑单元和HPS高性能处理单元两部分。
HPS侧外挂一片1 GB DDR3(S43TR16256A-15HBL)用于扩展SoC的缓存空间和10/100/1000M太网收发器(KSZ9021RN),实现数据的网络传输以及丰富的外围扩展接口和硬件资源[5,8]。
2.1 图像源数据模拟模块
图3 机芯组件用户接口
图像采集器采用XCore公司研发的氧化钒非制冷红外焦平面探测器为核心采集器件,其机芯组件用户接口如图3所示,采用SAMTEC 50针芯连接器其包含机芯组件供电电源接口、RS-232串行通信接口、USRT通信接口、模拟视频接口、14位或者10位 LVCMOS数字视频接口、LVDS数字视频接口,以及4个按键接口等。
用户可采用板间连接器与机芯组件用户接口进行对接,机芯组件输出的图像数据时序图如图4所示。
图4 机芯组件图像采集时序图
在图像传输控制器的主控芯片——SoC的PL侧按照XCore公司LA系列红外机芯组件的图像时序要求模拟并送出本设计需要的像素点的图像数据,通过FIFO缓存把512×640像素点数据(作为一帧图像时序,以512像素点为一行、640像素点为一列)缓存于FPGA的BRAM中[6],为后续PL侧和PS侧数据的交互降低传输速率,并满足片上系统的传输带宽。经Modelsim软件仿真的图像源数据的时序如图5所示。
图5 模拟机芯组件图像时序仿真图
2.2 数据缓存模块——DDR3
DDR3作为大容量数据存储芯片,选择的芯片型号为S43TR16256A-15HBL。此芯片的存储容量为1 GB。数据传输速率最大为1600 Mbps,本次设计选择的数据传输速率为1333 Mbps。DDR3(Double Data Rate 3 SDRAM)采用了在时钟的上升沿和下降沿同时进行数据传输的基本方式,DDR3拥有差分双向数据闸门、差分时钟输入和8位数据读预取能力等特性。DDR3连接SoC的HPS部分连接关系如图6所示。
图6 HPS与DDR3连接关系
2.3 数据传输模块——以太网收发器
选用的KSZ9021RN以太网收发器是一个物理层器件,用于实现1000BASE-T、100BASE-T和10BASE-T类型的以太网。本次设计中的5CSEMA5F31C6N型SoC芯片支持RGMII模式(即Reduced GMII,是GMII的简化版本)。其与HPS的连接关系如图7所示。PHY模块原理图如图8所示。
图7 HPS与PHY连接关系
图8 PHY模块原理图
Altera公司的SoC芯片将FPGA和硬核集成到了单块芯片上,实现了基于ARM架构的用户可定制开发设计思路。该芯片硬核处理系统是ARM公司的Cortex-A9 双核处理器,拥有十分丰富的存储与外设接口。基于DE1-SoC开发板的图像传输控制器,其PL侧与PS侧的数据交互可利用SoC芯片的AXI 总线的双向特性的优点实现数据的高带宽传输,使得SoC图像传输控制器性能更好。其开发流程分为硬件开发与软件开发两部分,流程图如图9所示。
图9 基于SoC的FPGA嵌入式设计流程
3.1 Qsys系统架构搭建
基于SoC的嵌入式开发需要先进行系统架构搭建,而系统架构搭建开发则需要先创建 Qsys工程,完成事先设计好的自定义模块的IP核封装与挂载,一些在前期设计验证中用到的系统自带IP核则可以直接调用获得。Qsys设计的核心是处理器系统各个IP的配置,处理器系统内部基本结构如图10所示。
Qsys中的HPS配置分为4大部分:SDRAM配置、HPS时钟配置、接口引脚复用配置以及 FPGA接口配置,其中FPGA接口配置可以实现FPGA与HPS之间的存储共享和数据传输。Altera SoC FPGA提供了两种方式用于FPGA和HPS通信,它们是FPGA to SDRAM和AXI bridge 接口。FPGA to SDRAM 接口是HPS内部的SDRAM控制器提供给FPGA访问HPS内存的接口。 AXI bridge是 FPGA 和HPS 总线之间数据交互的接口,包括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的一段存储区域进行读或写,同时在Linux系统中,通过软件对DDR3的同一存储区域写或读[7]。经数据对比验证可知,两种方式对DDR3的同一存储区域进行读或写(写或读)的数据一致。因此FPGA 可以通过FPGA-to-HPS的AXI接口桥访问HPS 的DDR3。
图10 硬核处理器(HPS)系统结构图
图11 FPGA-to-HPS接口
本设计中的图像源数据模块通过.mif文件模拟一帧分辨率为512×640的图像数据,经过传输缓存到VIP_CAPTURE这个模块。该模块通过Avalon ST接口的sop和eop信号捕获一个完整的package数据包,经过FIFO缓存后数据通过Avalon总线的主设备接口被写入到HPS的从设备端接口。此具体实现过程是:HPS侧的轻量级HPS-to-FPGA主设备桥接口与VIP_CAPTURE的Avalon总线的从设备桥接口相连,然后HPS侧通过软件完成对FPGA侧的VIP_CAPTURE模块的相应控制和状态的读取。其中,VIP_CAPTURE模块的轻量级主设备HPS-to-FPGA 桥接口总线分配的基址为0x0000 0000;在Qsys中连接Avalon总线的主设备桥接口和HPS模块的FPGA-to-HPS从设备桥接口的连线,此连接关系可以实现FPGA侧的图像数据向HPS侧的DDR3中的传输。Qsys中连接关系如图12所示。
图12 Qsys中连接关系
3.2 软件设计
3.2.1 Linux操作系统的启动
Linux操作系统运行稳定,拥有良好的移植性、优秀的网络功能、完备的对各种文件系统的支持以及丰富的各种协议标准等。因此,启动运行Linux操作系统对本设计实现处理器 (HPS)侧到上位机的网络传输至关重要。
CycloneV SoC FPGA的Linux操作系统一般有三种启动方式: JTAG、Quad-SPI/NAND /NOR Flash或SD卡。本设计中,采用SD卡启动,启动前把启动配置引脚配置成SD卡启动。通过SD卡引导 Preloader和U-boot完成对HPS的底层和外设的驱动,再通过U-boot读取NAND Flash里存储的FPGA配置文件、Linux数据来配置FPGA和装载Linux。为了启动Linux系统,必须在SD卡中建立Boot.bin、Devicetree.dtb、zImage、根文件系统。图像传输控制器运行操作系统后会更方便地控制硬件设备间的协调工作[8]。
3.2.2 软件部分设计
本设计软件部分需要完成两个主要功能:一是控制VIP_CAPTURE的工作并获取具体状态;二是等待VIP_CAPTURE完成数据传输后把数据从内存中读取出来,并通过网口发给上位机。Linux内核的内存管理系统不允许程序直接访问物理内存单元,需要经过系统分配并映射到虚拟地址。VIP_CAPTURE模块的控制程序中先通过mmap()函数把轻量级HPS-to-FPGA 桥接口映射到Linux 应用程序可以访问的虚拟地址,然后再通过Qsys中分配的基址就访到VIP_CAPTURE模块。
本设计提供Linux内核模块完成物理内存的分配,然后通过字符设备的read函数把内存区域的数据传送到用户空间。用户可以直接打开字符设备使用read函数来读取数据,并上传至上位机重构原始图像信息[7-8]。具体软件程序开发流程如图13所示。
在上位机中运行Matlab图像恢复程序,其功能是读取图像信息文件,并显示图像数据源模块产生的图像信息,运行结果如图14所示。恢复的图片与模拟图像源模块产生的一帧图像信息相符。
图13 软件流程图
图14 原始图片
[1] 翁天阳,庄宇,于玮,等.基于HPS和FPGA的图像压缩感知编解码系统[J].电子技术应用,2017,43(5):1.
[2] 王浩健.高速图像采集压缩存储系统设计[D].成都:西南科技大学,2016.
[3] 祝清瑞,汤心溢,李争,等.基于全可编程SoC的高速红外成像系统设计研究[J].激光与红外,2016,46(12):1-3.
[4] 邓海涛,吴捷,李建辉,等.DE1_SoC开发平台上的图像采集系统设计[J].单片机与嵌入式系统应用,2017(1):2-3.
[5] 聂永军,徐光辉,郑国建.基于Altera SoC FPGA的图像采集系统设计[J].单片机与嵌入式系统应用,2016(1):2-4.
[6] 谭会生.EDA技术及应用[M].西安:西安电子科技大学出版社,2011.
[7] 任爱锋,罗丰,宋士权,等.基于FPGA的嵌入式系统设——Altera SoC FPGA[M].西安:西安电子科技大学出版社,2014.
李东坤(硕士),主要研究方向为FPGA的嵌入式系统设计;来智勇(教授),主要研究方向为嵌入式计算机系统设计;谷浩亮(硕士),主要研究方向为嵌入式软硬件协同设计。
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)