基于Avalon总线的图像处理IP核的设计

时间:2022-09-28 01:14:16

基于Avalon总线的图像处理IP核的设计

摘 要: IP核是SoPC系统的重要组成部分,针对如何高速、有效地实时处理图像的问题,提出了一种基于Avalon总线的图像处理IP核的设计方法。根据最新的数字视频国际编码标准和颜色空间理论,用Verilog HDL硬件描述语言完成IP核的功能实现,IP核被设计为Avalon总线从端口,通过Avalon总线与Nios Ⅱ处理器进行通信。IP核通过SignalTap Ⅱ在线验证,可修改其参数使之满足不同系统的需求。该方法具有良好的通用性,提高了系统的兼容性,能帮助其他用户明显缩短实时图像处理系统项目的研发周期、降低工作强度。

关键词: SoPC; IP核; 图像处理; Verilog HDL; Avalon总线; SignalTap Ⅱ

中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2013)24?0086?04

Design of image processing IP core based on Avalon bus

CAI Guo?yang, ZHAO Yi, YU Liang?hui

(Nari Technology Development Co., Ltd, Nanjing 210061, China)

Abstract: IP core is an important part of SoPC system. A method of designing the image processing IP core based on Avalon bus is proposed for fast and effective real?time image processing. The function of IP core is realized by Verilog HDL according to the latest international coding standard of digital video and the theory of color space. IP core is designed as Avalon slave port, which communicates with Nios Ⅱ through Avalon bus. IP core can meet the needs of different systems through online verification of SignalTap Ⅱ to modify IP core’s parameters. The method has strong universality, can improve the compatibility of the system and help other users to significantly cut down the development period and reduce the work intensity.

Keywords: SoPC; IP core; image processing; Verilog HDL; Avalon bus; SignalTap Ⅱ

0 引 言

设计实时图像采集系统时,可通过硬件解码芯片对模拟视频信号进行解码,得到符合国际标准ITU?R BT.656的数字信号。要得到有效图像信号,还需对数据流做进一步处理[1]。近年来,由于FPGA的性能不断提高,使得可编程片上系统(System on Programmable Chip,SoPC)的理念得以实现,这为实时图像采集系统的设计提供了一种新的解决方案,即在Avalon总线上挂载IP核对图像进行预处理[2]。Avalon总线是由Altera公司提出,用于连接Nios/Nios Ⅱ处理器与外设的总线结构。基于Avalon总线的SoPC结构可把处理器和各种外设的IP核、通信单元和控制单元集成到一块FPGA芯片上[3?4]。

Altera提供很多免费的IP核,用户也可以根据系统的需求自行设计或者购买第三方厂商的IP核,然后通过Avalon总线将其挂载到系统上[5]。

本文主要介绍用Verilog HDL语言设计图像处理IP核内部功能模块的过程,并对IP核涉及的理论和原理进行阐述,供其他开发者参考借鉴。借助Quartus Ⅱ(Altera公司FPGA的开发工具)中的在线逻辑分析仪(SignalTap Ⅱ)对IP核进行测试与验证。

1 图像处理IP核的原理

在基于SoPC的图像采集系统中,图像处理IP核对硬件采集到的数据进行处理后交给Nios Ⅱ CPU做进一步处理,IP核内部包含有效图像信号提取与标记、图像解交织、颜色空间转换、时钟域的转换等模块,并按照Avalon总线规范进行封装,IP核内部的示意图如图1所示。

2 图像处理IP核的设计

模拟视频信号通过视频解码芯片转化为符合ITU?R BT.656标准的数字信号,这是一种颜色空间为YCbCr的复合信号,它把图像信号的控制信号、有效数据信号和消隐信号按照约定的格式封装编码,图像处理IP核起到图像解码的作用。

图1 图像处理IP核原理示意图

2.1 图像信号的提取与标记

ITU?R BT.656规定了2个计时基准序列SAV和EAV,SAV表示一行有效视频数据的开始,EAV表示一行有效视频数据的结束,每个计时基准序列由串行传输的4个字节序列构成,前3个字节的内容固定为“FF 00 00”,是定时基准前肩标志信号,第4字节(XY)为定时基准信号,包含了行有效(h)、场有效(v)、奇/偶场标志(f)等[6]。

图2是SignalTap Ⅱ测试到的一组实际的YCbCr信号(每行具有360个有效像素)的排列组成方式。

图2 通过SignalTap Ⅱ工具测试到的数据流

根据ITU?R BT.656标准,检测SAV序列并提取SAV中XY[4]位确定行有效信号的开始,再根据已经测得的有效数据信号持续720个时钟周期,可设置计数器使行有效信号持续720个时钟周期的高电平来完成有效信号的标记。XY提供图像信号的f,v,h信息,提取XY相关位可得到图像的控制信号和同步信号。

Verilog HDL为硬件描述语言,在提取SAV序列中的XY数据时,要注意时序的同步性[7]。如图3所示,设置4个寄存器,当img_data3[7:0],img_data2[7:0],img_data1[7:0]中的数据分别为FF,00,00时,提取img_data0[7:0]中的数据存放到另一寄存器中。

图3 提取SAV序列中XY数据的方法

用SignalTap Ⅱ工具测试实际采集到的时钟信号(img_clk)、数据信号(img_data3)、有效数据计数信号(pix_num)和有效像素标记信号(line_pix_valid)如图4所示。

图4 SignalTap Ⅱ采集到的图像信号标记波形

2.2 图像信号解交织

图像数据的解交织是把YCbCr 4∶2∶2格式的数据转换为YCbCr 4∶4∶4格式。解交织的示意图如图5所示,解交织过程中每个Y不变,而对应的每个Cb,Cr分别被复用了一次。

图5 图像数据解交织示意图

用Verilog HDL实现解交织模块时,设置一个计数寄存器,当行有效信号为高电平时,开始计数,每个时钟周期加1,当寄存器中的数据为3时清零,其他情况寄存器清零。图6(a)是计数寄存器程序设计流程图,图6(b)为分量提取程序设计流程图。

计数寄存器从0计数到3,相当于对数据流每4个字节作一次循环操作。用case语句判断计数寄存器,如果为0,则把数据存储到cb[7:0]中;如果为1,则把数据存储到y[7:0]中;如果为2,则把数据存储到cr[7:0]中;如果为3,则把数据存储到y[7:0]中。

同时设置一个标记信号,标记取得YCbCr 4∶4∶4格式的数据。从时序上看出,要标记YCbCr 4∶4∶4的有效数据,可在计数寄存器值为2和3的时候给标记信号置高电平。用SignalTap Ⅱ工具测试实际图像解交织的波形图如图7所示。

2.3 颜色空间转换

显示器一般采用RGB三基色合成的方法来显示颜色,因此需对图像信号进行YCbCr到RGB的颜色空间转换,转换公式如下:

[R=1.164×(Y-16)+1.596×(Cr-128)G=1.164×(Y-16)-0.813×(Cr-128)-0.392×(Cb-128)B=1.164×(Y-16)+2.017×(Cb-128)] (1)

式中:[Y∈[16,235];Cr∈[16,240];Cb∈[16,240]]。

在FPGA中,浮点运算很难实现,计算时需对系数作一些处理,设置5个常量代表新的系数,由于Verilog为硬件描述语言,在程序中常量和数据计算用二进制表示。五个常量及注释如表1所示。

图6 图像数据解交织程序设计流程图

A、B、C、D、E为10位寄存器变量,d代表10进制,b代表二进制。表1中的常量可看作把原数据小数点左移了两位,式(1)可变换为:

[R′=A×(Y′-64)+B×(Cr′-512)G′=A×(Y′-64)-C×(Cr′-512)-D×(Cb′-512)B′=A×(Y′-64)+E×(Cb′-512)] (2)

其中,[Y′∈[64,940],Cr′∈[64,960],Cb′∈[64,960]]。

图7 SignalTap Ⅱ采集到的图像解交织过程波形

表1 常量设置及注释

R,G,B均为8位,取值范围为0~255,而运算过程可能会产生负数和超过255的正数,因此,在获得运算结果后将负数取为0,超过255的正数取为255。这样虽会引入误差,但对图像最终的显示效果不会有太大的影响。图8为SignalTap Ⅱ采集到的颜色空间转换过程波形。

图8 SignalTap Ⅱ采集到的颜色空间转换过程波形

2.4 时钟域的转换

原始图像数据的时钟为27 MHz,Nios Ⅱ软核的时钟为100 MHz(可根据系统需求设定),即有两个时钟域:27 MHz的图像时钟域,100 MHz的Nios Ⅱ系统时钟域,时钟域转换的设计有2部分内容:

(1)将27 MHz的图像控制信号转换到100 MHz的时钟域中,让Nios Ⅱ系统能够识别,根据不同的场帧信号作出相应的处理。

(2)将27 MHz的行有效数据转到100 MHz的时钟域中,可供Nios Ⅱ系统处理。

实现手法是采用Altera中自带的双口异步RAM实现不同时钟域的转换,为了能准确地存储和接收这些异步数据,还要设计部分通知信号,主要为了在不同时钟域之间通信。数据的写入由图像信号时钟和数据有效信号来完成,当数据有效信号有效时,在像素时钟(27 MHz)的控制下,数据被写入双口RAM。读取数据时,时钟为100 MHz,在得到Nios Ⅱ下发的开始读一行数据信号后才可以读数据,设计时要注意数据读写的时序,防止有效信号被覆盖。图9为SignalTap Ⅱ采集到的时钟域转换波形,图中可看出双端口RAM一端写入数据,一定时间后另一端开始读数据,并在下次写数据前读取完毕。

图9 SignalTap Ⅱ采集到的时钟域转换波形

2.5 Avalon总线接口设计

图像处理IP核通过Avalon?MM从端口连接到Avalon总线上,并通过Avalon?MM主端口挂载到Avalon总线上,Avalon?MM从端口由SoPC Builder集成环境自动生成[9]。把图像处理IP核设计为Avalon总线从端口,遵循的时序为Avalon总线从端口的读写时序。设计时用到的Avalon信号如下:address: Avalon从端口的address信号,供用户设定Nios Ⅱ读写从端口所用的寄存器[10];readdata和writedata:与传输相关的数据线;chipselect、read_n和write_n:从端口的1位输入信号,指示一个新的读或写传输何时开始;Nios Ⅱ系统接收到一行数据采集完毕的促发信号后,Avalon总线使得chipselect和可读信号read_n有效,Nios Ⅱ开始读取图像数据。设计时,设置address为2位,Nios Ⅱ读写数据时,利用address不同的取值进行相应的处理,具体见表2。

表2 Avalon总线从端口寄存器设置

图10为一行数据采集触发信号波形图,每次数据计数器vd_pix_num计数到2A9h时触发此信号,数据读取完毕后把此信号清零,等待下次触发。

图10 SignalTap Ⅱ采集到的一行数据采集触发信号波形图

3 结 语

本文设计了一种基于Avalon总线的图像处理IP核,完成了有效信号的标记,控制信号的提取,图像信号的解交织,颜色空间的转换,时钟域的转换和Avalon总线接口的设计工作。IP核能对图像信号进行预处理,并把采集到的每一行有效数据发送给Nios Ⅱ处理器进行下一步处理。IP核具有较强的通用性和可移植性,对于符合ITU?R BT.656格式的视频信号,只需修改一些基本的常量和控制信号(如:每行的有效像素数)便可以供其他开发者使用,也可使用多个IP核联合工作,实现多方位视频监控。

参考文献

[1] 许志祥.数字电视与图像通信技术[M].北京:清华大学出版社,2009.

[2] 马宏峰,党建武,王宏斌.基于SoPC的通用TFT?LCD控制器IP核设计[J].现代电子技术,2010,33(16):77?79.

[3] 周立功.SoPC嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2006.

[4] 杨军.基于FPGA的SoPC实践教程[M].北京:科学出版社, 2010.

[5] 李兰英.Nios Ⅱ嵌入式软核SoPC设计原理及应用[M].北京:北京航空航天大学出版社,2010.

[6] [美]KEITH Jack.视频技术手册[M].杨征,田尊华,张杰良,等译.北京:人民邮电出版社,2009.

[7] 夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2006.

[8] 赵毅.基于SoPC的工业内窥镜图像采集处理系统的设计与实现[D].南京:南京理工大学,2013.

[9] 李欢,景存.基于Avalon总线的SD卡读写控制器的设计[J].现代电子技术,2011,34(4):23?25.

[10] Altera Corporation. Avalon interface specification version1.2 [S]. US: Altera Corporation, 2008.

上一篇:基于三边滤波的Retinex图像去雾算法 下一篇:基于ZigBee和GPRS的支架结构安全监测系统设计