当前位置:首页 期刊杂志

基于NoC的图像采集系统设计*

时间:2024-07-28

许川佩,占来龙,任智新

(桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004)

NoC(Network on Chip)的核心思想[1]是将计算机网络技术移植到集成电路设计中,从体系结构上彻底解决片上通信的瓶颈问题及时钟问题。它充分借鉴了分布式计算机系统的通信方式,用路由和分组交换技术替代传统的总线通信方式。结构化的网络连线[1]可以更好地控制连线的电气参数,提供更高的带宽,支持多重的并行通信等。此外,NoC还具备数据处理量大、多任务并行计算、架构易扩展及灵活性强等特点。

本设计是在NoC系统上实现实时图像采集、压缩、解压缩、存储和VGA显示等功能,利用FPGA的内部资源设计灵活的逻辑控制,完成高速大容量数据采集的存储和传输。本文提出的设计方案可以在选用成本低、操作简单的静态RAM的情况下,实现实时大容量数据存储需求。在 EDA(Electronic Design Automation)软件中进行了仿真验证,并在DE2开发板上实现高速实时图像采集和处理。

1 系统总体方案设计

NoC系统借鉴并移植计算机网络通信中的概念和方法[1],用于多个核或 IP(Intellectual Property core)的集成。图1是NoC的示意图。

图1 NoC示意图

NoC系统由交换节点(Switch)、资源节点(Resource)和资源网络接口(Resource-Network Interface)3个基本部分组成[1]。交换节点负责资源节点之间的信息交换,资源节点可以是处理器、存储器、可编程逻辑器件、输入输出设备等。交换节点通过互连线按照拓扑结构组成网络的物理架构,资源节点则通过RNI与交换节点相连。狭义的NoC指的就是仅由交换节点构成的网络。

本设计在NoC网络上实现实时图像采集系统,在FPGA上利用2个NIOSⅡ核实现NoC系统上的2个资源节点,实现图像采集的基本功能。其中,1个NIOSⅡ实现采集压缩功能,1个NIOSⅡ核实现解压显示功能。系统由摄像头、NIOSⅡ 1、资源节点 1、路由节点 1、路由节点2、资源节点2、NIOSⅡ 2、SDRAM乒乓存储器和VGA显示等模块组成。系统的工作流程如图2所示。

图2 图像采集系统工作流程

图像采集系统工作流程是:先对OV9650的寄存器进行配置,然后从摄像头模块中接收YUV422格式的数据,由NIOSⅡ 1对接收的数据进行JPEG压缩,压缩的数据发送到资源节点1,再发送到路由节点1上,由路由器把数据发送到目的路由节点2上,再经资源节2发送到NIOSⅡ 2中,由NIOSⅡ 2进行JPEG解压缩,进行VGA显示,VGA显示的缓存采用SDRAM乒乓缓存。

2 图像采集系统的模块设计

2.1 摄像头控制模块

摄像头控制模块的功能是采集图像数据。OV9650摄像头包括CMOS摄像头和图像处理芯片OV9650。用VerilogHDL硬件描述语言编写SCCB总线控制器,OV9650是通过SCCB总线 (SCCB总线的示意图如图3所示,SCL是时钟信号线,SDA是数据线)对其寄存器进行配置的。时钟频率设置为24 MHz,按照其时序完成对OV9650摄像头的初始化配置工作。配置OV9650摄像头的工作模式为 VGA 640×480视频格式, 以 YUV4:2:2数据流输出,视频速率为15 f/s。采集到的 YUV4:2:2格式的数据送到JPEG编码器中进行编码,把编码的数据进行打包,发送到缓冲器中,等待路由节点的信号,通过路由器发送到目的资源节点。

图3 SCCB的示意图

2.2 NIOSⅡ 1模块

NIOSⅡ 1模块由SoPC构建硬件框架[2],再在NIOSⅡ IDE中进行软件程序编写。NIOSⅡ 1的功能是接收摄像头的数据,对图像数据进行JPEG压缩。

JPEG编码算法可以用失真的压缩方式来处理图像,但失真的程度却是肉眼所无法辩认的,这也就是为什么JPEG会有如此满意的压缩比例的原因。它的压缩一般过程是:首先使用正向离散余弦变换FDCT(Forward Discrete Cosine Transform)把空间域表示的图像变换成频率域表示的图像,然后使用加权函数(此加权函数对于人的视觉系统是最佳的)对DCT系数进行量化,最后对量化系数进行编码。JPEG编码器流程图如图4所示。

图4 JPEG编码器流程

2.3 通信节点发送模块

通信节点发送模块有两个作用,一是把4个8 bit数组成32 bit数输出,二是对要发送的数据进行组包。组包协议是:第一包仅包含要发送的包数、发送包的类型、数据发送的资源节点的地址和要接收数据的资源节点的地址、校验位;后面的包包含此包的包号、包的长度、要发送的数据、校验位。资源节点1的模块图如图5所示。

图5 资源节点1模块图

clk_100M是输入时钟,clk_50M是输出时钟,reset是复位信号线,b[11..0]是应用系统发送的数据信号,port_av1是路由节点的请求信号线,ou是应用的请求信号线,data_to_sin1[31..0]是输出信号线,flit_head是头 flit信号线,wren写信号线,readen是读信号线。该模块的功能是衔接应用系统与路由节点,使得它们之间可以进行通信。

2.4 路由节点

路由单元包括交换开关以及东、南、西、北、本地 5个方向的端口链路控制模块。交换开关负责路由单元内部各端口链路之间的数据交换。本地方向模块与本地的资源节点相连,负责转发本地资源节点发出以及接收的数据,另外4个方向模块与其他路由节点连接。由于2D-Mesh拓扑结构具有对称特性,因此路由单元东、南、西和北这4个方向的端口具有相同的电路结构。每个方向端口由输入虚通道选择模块、输入虚通道缓存模块、路由控制模块、请求仲裁模块和输出模块几部分组成。

2.5 通信节点接收模块

通信节点接收模块是通信节点发送模块的逆过程,其有两个作用,一是把一个32 bit数分解成8 bit数输出,二是对要接收的数据进行解包,解包协议是组包协议的逆过程。资源节点2实现如下:

2.6 NIOSⅡ 2模块

NIOSⅡ 2模块由SoPC构建硬件框架,再在NIOS II IDE中进行软件程序编写。用Verilog HDL语言编写VGA控制器和SDRAM控制器,再编写一个接入到Avalon总线的接口文件,把VGA控制器和SDRAM外挂在NIOSⅡ 2上。该模块的功能是接收资源节点的数据,再送入JPEG解码器解码,解码后的数据送入SDRAM乒乓存储器,最后在VGA上显示。

2.6.1 JPEG解码器的设计

JPEG解压缩是JPEG压缩的逆过程,解码流程的主要功能模块包括:头文件解析、熵解码(包括直流系数解码、交流系数解码和差分解码)、反量化与反Z变换(扫描)、IDCT变换和颜色空间转换。在JPEG解码模块启动后,头码流解析单元首先读入JPEG文件的包头,根据JPEG文件数据的存储方式依次检测数据流中包含的各种段的标识符,把要解码的文件信息从数据流中解析出来并存储到相应的存储单元,为后面压缩数据的解码作准备。数据流后经熵解码单元(包括Huffman解码、变长解码和行程解码)进行解码,解码后的数据进入反量化与反Z变换模块,对量化过的像素进行反Z变换,得到8×8的数据块。图像数据是编码时通过正向离散余弦变换得到的结果,解码时必须将其反向余弦变换,将数值向时域转换。JPEG解码器流程图如图6所示。

图6 JPEG解码器流程图

2.6.2 VGA控制模块的设计

VGA显示由FPGA根据VGA显示时序,输出相应像素的RGB格式的数据、行同步信号和帧同步信号,然后经过D/A芯片转换后显示。实际系统采用的显示分辨率为 800×600,帧频率为75 Hz。VGA控制模块设计如下:

其中,ready_out、valid_in、data_in、sop_in、eop_in 和empty_in是 与 Avalon 总 线 连 接 的 信 号 ,vga_clk、vga_hs、vga_vs、vga_de、vga_r、vga_g和 vga_b信号是与 VGA模块连接的信号。VGA模块的工作过程是:数据从SDRAM中读入,送到VGA显示,判断是否已经读取了一行的数据,即640个RGB信号,如果读取了一行数据,则复位行信号H;判断是否已经读取一帧图像,如果读取了一帧,则复位场信号V,至此VGA已经完整显示了一帧图像。

2.6.3 SDRAM乒乓存储器

SDRAM乒乓存储器的作用是为VGA显示作缓存,一片SDRAM的数据输出给VGA时,另一片SDRAM就接收数据,2片SDRAM交叉进行,保证了VGA实时显示。

3 实验结果

3.1 系统资源测试

NoC应用系统的功能子模块设计完成之后,将各个功能子模块组合、联调,由Quartus II 11.0自带的综合工具生成网表及.pof,通过as接口方式烧写到epcs4中,系统综合后的资源消耗图如图7所示。

图7 综合后的资源消耗图

结果表明,该系统能正确可靠地工作。在这个系统中,专用逻辑寄存器占 1%,总的逻辑单元占 2%,总的内存位占5%,因此还有大量的资源可以用于硬件算法或者其他方面的应用。

3.2 系统指标测试

在整个NoC应用系统的实现中,由于采用FPGA作为主控制器,基本上是由硬件完成了整个系统,将图像传感器的帧频设置为15 f/s(最高为 30 f/s),JPEG压缩比例为3.4%,SDRAM乒乓缓存为VGA实时显示提供了条件。通过仿真调试,可以实现通过人机交互界面控制图像采集、传输和VGA显示等功能,并且各部分能同时工作,这也是NoC的优势所在。图8是采集的一帧图像。

图8 一帧图像显示

本文设计的系统的各个模块都在Modelsim中进行了仿真,并在DE2-115开发板上调试成功,实现了图像采集、JPEG编码解码、传输和VGA显示等功能。在NoC系统上实现数据采集系统,采用双核进行处理,通过路由进行数据传输,克服了总线互连、存储带宽及功耗极限等性能提升的瓶颈问题。

[1]阿克塞尔·詹奇,汉努·腾胡宁.网络化芯片[M].王忠,孙继银,周国昌,等,译.西安:西安交通大学出版社,2007.

[2]孙春凤,袁峰,丁振良.基于FPGA的多通道高速 CMOS图像采集系统[J].计算机工程与应用,2008(21):46-48.

[3]Altera.Altera Cycone IV Device Hand-book[Z].http://www.altera.com,2010.

[4]杜慧敏,李宥谋,赵全良.基于 Verilog的 FPGA设计基础[M].西安:西安电子科技大学出版社,2006.

[5]杜林奇,许开宇,张欣璐.基于 FPGA和视频解码芯片的实畦图像采集系统设计[J].电子元器件应用,2008(05):56-60.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!