基于SOPC的视频编解码IP核的设计

发布者:平和的心态最新更新时间:2011-05-27 来源: 与非网关键字:IP核  SOPC  视频编解码 手机看文章 扫描二维码
随时随地手机看文章

  引言

  SOPC是Altera公司提出的片上可编程系统解决方案,它将CPU、存储器、I/O接口、DSP模块以及锁相环的系统设计所必需的模块集成到一块FPGA上,构成一个可编程的片上系统,使设计的电路在其规模、可靠性、体积、功耗、功能、上市周期、开发周期、产品维护以及硬件升级等多方面实现最优化[1]。

  目前在Altera SOPC">SOPC Builder下集成了包括UART、SPI、Ethernet、SDRAM、Flash、DMA 等控制器的IP核。此外,用户也可以根据系统的需要自己设计或者购买第三方厂商的IP核,通过Avalon总线像搭积木一样方便地将其捆绑在系统上。IP 核是经过功能验证的知识产权核,使用IP 核有以下优势:(1)提高设计性能;(2)降低产品开发成本;(3)缩短设计周期;(4)设计灵活性强;(5)仿真方便;(6) OpenCore Plus 支持无风险应用。

  当然本论文所说的IP 核功能没有那么丰富,实际上就是一个功能验证正确的用户逻辑,和商业应用的IP 核还有一定的差距。本文的主要工作就是通过硬件描述语言描述了视频信号的采集,分配,存储以及色度空间的转换等逻辑,并且验证了功能的正确性。

  1.视频编解码Camera_show原理

  嵌入式摄像控制系统除了必要的电源电路以外,还要包括存储电路、通信电路和下载电路等,所有的设备均与Avalon总线连接,这里主要介绍用户逻辑接口Camera_show,它完成了模拟视频数据转化成数字视频数据并在VGA上显示的功能,主要包括模拟视频信号的采集、分配(串并转换电路完成)、存储(存储控制逻辑和片上RAM完成)和色度空间转换。具体的功能框图如图1所示。

户逻辑Camera

 图1 用户逻辑Camera_show的原理框图

  2.视频编解码IP 核Camera_Show设计

  视频编解码IP 核主要完成的功能包含视频信号的采集、分配、存储以及色度空间的转换。模拟视频信号经过ADV7181B 后变成了符合ITU-R656 的YUV 数字信号,但是要对YUV 信号进行处理必须将这三路信号分开并行处理,所以需要采集分配这三路信号,这是2.1 的IP核需要实现的功能;由于模拟视频信号是隔行扫描的,但是CRT显示器是逐行扫描,如果不加处理那么必然会导致行错开,所以需要将数据进行存储,通过控制实现隔行变逐行,这是2.2 的IP 核需要实现的功能;最后经过处理的YUV 三路数字信号,需要完成色度空间的转换变成RGB 信号,这是2.3 的IP 核需要实现的功能。

  2.1 YUV 信号的采集、分配[2]

  在嵌入式摄像控制系统中,ADV7181主要承担着模拟摄像头的视频数据进行解码的任务,将CVBS的等模拟信号转化成ITU-R656标准的YUV信号。图2给出了ADV7181的功能框图。

ADV7181功能框图

图2 ADV7181功能框图

  由图可以看到,对于输入的CVBS 等模拟信号经过ADV7181B芯片转换后输出YUV 信号,行同步信号HS, 帧同步信号VS。这些就是需要的数字视频信号,也就解决了数字视频源的问题。图2 给出了YUV 信号的组成排列方式,“FF,00,00”作为AV 信号的开始,所以需要构造一个检测电路。注意到SAV 和EAV 均是FF , 00 , 00 开头但是XY 的值不一样。根据芯片资料,XY[4]表示的是V ,即有用信号与空白信号的分界点,如果V=0则表示的是SAV,否则是EAV 。XY[6]是场信号的区分标志。0 是奇场,1 是偶场。[page]

  模拟信号的一行是1716 个CLOCK ,有用信号是1440 个CLOCK ,在信号采集和分配的过程中,仅需对有用信号进行采集,所以利用检测到SAV 作为一个标志,启动信号的分配过程是非常有必要的。

  由于YUV 信号在模拟信号中是交织着的,所以需要一个信号选择电路。YUV 一共是三路信号,设计一个计数器进行选择,计数是O和2时,是UV信号,计数是1 和3 时是Y 信号,完成的实际上是串行信号转并行信号的过程。以上过程可以用图3的原理框图来表示。

YUV信号的采集

图3 YUV信号的采集、分配原理图

  在硬件描述语言中,完成上述过程还是比较简单的。例如检测电路,只要描述一个移位寄存器就可以了,具体代码如下:

程序

  其中的wire 变量Y_check 就是当检测到FF,00,00的时候就为1的标志。根据上文所述,区分SAV 和EAV 是根据XY[4]来决定,区分奇偶场是根据XY[7]来区分,所以只有随后的信号是SAV 的时候,信号分配电路才有效,所以需要描述一段逻辑来判断,代码如下:

程序

  START信号就是开始信号采集、分配的标志,只有当TD_D=0 也就是START= 1时信号分配电路才会工作。串转并电路代码如下:

程序

  以上代码完成了图3的功能,输入的信号名为TD_D,输出的三路信号是Cbb , YY , Crr。注意到还有个YPix_clock,实际上是27M 的2 分频,这个时钟非常有用,在下面将详细阐述。[page]

  2.2 YUV 信号的存储

  要将视频信号隔行变逐行,有2 种解决方法:

  第1种:将一帧的数据存储下来,根据奇偶场的不同(区分可以根据XY[7]),在写周期的时候,因为奇场的行之间有偶场的信号,所以写数据的时候需要跳地址写,根据行同步信号(或者SAV也可以)来区分行,换行的时候地址要加额外的720(用来存放夹杂在奇场信号中的偶场信号),直到出现偶场信号(也就是XY[6]=1)地址切换为初始基地址加720,其余的同奇行的处理方法,具体的地址分配表参照图4。

地址分配表

图4 地址分配表

  在读周期只需要按照顺序读出就可以了,需要注意的是写时钟是13.5M,读时钟是27M,而且对于Y、U、V信号要进行分别存储。

  第2种:将一行的数据存储下来,因为1716 个时钟周期刚好等于VGA 两行的时间,所以在这段时间里可以将7加个有效视频信号读取2遍,以奇行的信号去取代偶行的信号,达到隔行变逐行的目的。在实现上只要是两个RAM块进行乒乓操作就可以了,具体在后文阐述。

  比较两种实现方法,方法1的优点在于图像没有失真,即奇偶行信号依旧相间在一起,方法2 却不能做到这一点,而且方法1 也可以通过乒乓方式提高运行的速度,但是由于读写时钟的不同步,每个存储空间应当读2遍。方法2也是读2遍,但是是每行读2遍,方法1是一帧数据读2遍。

  方法1的缺点在于存储的数据量太大。一帧数据仅Y分量就是8bit*720*525 =3024000bit = 378KB,这个数据是不适合在SRAM中操作的,需要使用SDRAM,而操作SDRAM 是比较复杂的,所以一般考虑使用方法2,因为它需要很小的空间,而且可以利用FPGA的片内资源就可以实现。当图像数据传输很快的时候,人眼基本上是分不清奇偶场信号的,所以方法2是可行的。在讲方法2之前,需要了解在流水线操作中经常使用的乒乓操作,这是可编程逻辑常用的设计思想和技巧。乒乓操作常常应用于数据流控制,典型的乒乓操作如图5所示[3][4]。

乒乓操作示意图

图5 乒乓操作示意图

  乒乓操作的处理流程描述如下:输入数据流通过“输入数据流选择单元”,等时地将数据流分配到两个数据缓冲模块。数据缓冲模块可以是任何存储模块,比较常用的存储单元是双口RAM ( DPRAM ),单口RAM ( SPRAM)和FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”。在第2个缓冲周期,通过“输入数据流选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,与此同时,将“数据缓冲模块1”缓存的第1个周期的数据通过“输出数据流选择单元”的选择,送到“数据流运算处理模块”被运算处理。在第3 个缓冲周期,通过“输入数据流选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,与此同时,将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据流选择单元”的选择,送到“数据流运算处理模块”被运算处理。如此循环,周而复始。

  乒乓操作的最大特点是,通过“输入数据流选择单元”和“输出数据流选择单元”按节拍、相互配合的切换,将经过缓冲的数据流没有时间停顿地送到“数据流运算处理模块”,被运算和处理。把乒乓看成一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓方式常常应用于流水线式算法,完成数据的无缝缓冲与处理。[page]

  在FPGA里面,使用乒乓操作是面积与速度互换原则的一个体现。

  方法2 可以这样实现:在FPGA内部使用Megacore,构造一个双口的RAM, 双口RAM 的输入输出信号的硬件描述语言定义如下:

程序

  使用的信号包括:数据信号data_a, dat_b;读写有效信号wren_a, wren_b;地址信号address_a, address_b;时钟信号clock_a,clock_b;输出数据信号q_a,q_b。可以看到所有的信号都是成对出现的,就是为了进行乒乓方式的数据传输。分成了两个RAM区域,A 和B,相当于前面讲乒乓方式里的数据缓冲模块1 和2。两个RAM 块是交替着读写(由I_a和I_b决定),输出数据流也是由I 决定。刚说到写时钟是13.5M,读时钟是27M,所以clock_a 和clock_b必须是读写时钟切换着输入,而且地址的计数也不一样,写周期时候地址增加的时钟是13.5M,读周期地址增加的时钟是27M。所以每行的数据读了两遍,相当于隔行变逐行。图6是在Quartus II下RAM的乒乓操作功能仿真图:

RAM的乒乓操作仿真图

图6 RAM的乒乓操作仿真图

  RAM块进行乒乓方式操作信号的分配表如下:

RAM块进行乒乓方式操作信号的分配表

  最后输出的DATA信号进入下一级单元,即YUV到RGB的转换。[page]

  2.3 颜色-空间转换部分设计[5]

  为什么要有这个转换呢?因为不论是电视机还是CRT显示器,都是使用RGB三基色合成的方法来显示颜色。用RGB三基色来表示彩色的确很直观,但是如果把这种方法用作图像传输则绝不是一个好方法。主要是因为:

  (1) 与黑白图像不兼容;

  (2) 占用太多带宽;

  (3) 抗干扰能力差。

  本系统图像传感器输出YCbCr信号,需要进行到RGB信号的转换,用于CRT显示。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 );

  观察上面公式可以发现,转换均需要乘加运算,并且式子中用到了小数,所以必须要对系数进行放大。经过合理转化,公式如下:

  R = (1/256) * ( 298*Y + 409*Cr - 57065 );

  G = (1/256) * ( 298*Y - 100*Cb - 208*Cr + 34718 );

  B = (1/256) * ( 298*Y + 516*Cb - 70861 );

  用Verilog HDL编写代码,实现YUV到RGB的转化。其中共包括3个模块跟1个仿真激励。在模块const_mult中,主要实现乘法运算,主要代码如下:

程序

  模块csc.v中,调用const_mult模块,通过参数传递改变参数IN_SIZE, OUT_SIZE, CST_MULT的值,然后实现加法运算。

  以R = (1/256) * ( 298*Y + 409*Cr - 57065 )为例,主要代码如下:

程序[page]

  用以实现G、B的代码与上面类似,在此不再赘述。以下代码实现R_full*1/256功能。

程序

  主模块yuv2rgb实现子模块的调用,用Modelsim进行了仿真。仿真波形如图7所示:

仿真波形

图7 YUV到RGB的转化仿真图

  3.结论

  本文设计了基于SOPC">SOPC的视频编解码控制器IP核,根据自顶向下的设计思想,将IP核进行层次功能划分,并对IP核的仿真验证,实现了视频信号的采集,分配,存储以及色度空间的转换。本IP核具有很好的移植性,可以方便的应用到以Nios II为核心的各种需要视频编解码控制器功能的嵌入式中。

关键字:IP核  SOPC  视频编解码 引用地址:基于SOPC的视频编解码IP核的设计

上一篇:PSoC在光纤陀螺脉冲输出采集中的应用
下一篇:基于Xilinx FPGA的数字频域干扰抵消器

推荐阅读最新更新时间:2024-05-02 21:24

基于SOPC技术的核信息远程采集系统
当今对核环境信息的监测具有重要的社会意义。传统的方法是工作人员进行现场操作以获取核数据。但这种方法存在环境适应能力差、测量周期短等诸多弊端,使得应用场合受到很大限制。例如,在放射性样品储藏室中,需对α及γ辐射总量进行长期监测与控制。由于环境恶劣,工作人员无法长期停留在现场,因此研制一种具有远程信息采集能力的系统具有很强的现实意义。 Internet现已覆盖全球,通过Internet可以方便地传送信息,因此,本系统立足于利用Intemet实现核环境信息的远程采集。在实现上,采用了基于SOPC技术的嵌入式解决方案,通过在FPGA中嵌入NioslI软核处理器和所需外设的IP Core(硅知识产权核),然后再配备相应的网络接口,实现利用互
[嵌入式]
可复用SPI模块IP核的设计与验证
摘要:SoC是超大规模集成电路的发展趋势和新世纪集成电路的主流。其复杂性以及快速完成设计、降低成本等要求,决定了系统级芯片的设计必须采用IP(Intellectual Property)复用的方法。本文介绍以可复用IP设计方法,设计串行外设接口SPI(Serial Peripheral Interface)模块IP核的思路,用Verilog语言实现,并经FPGA验证,通过TSMC(台湾集成电路制造公司)的0.25μm工艺生产线流水实现,完成预期功能。 关键词:SoC 可复用IP SPI AMBA总线 引言 随着集成电路设计技术和深亚微米制造技术的飞速发展,集成电路的规模越来越大,出现了片上系统SoC(System on C
[半导体设计/制造]
基于SoPC的数字示波器设计
0 引言 在电子技术领域中,示波器的应用非常广泛,使用它可以方便直观地观察到信号的全貌,并测量信号的幅度、频率、周期等基本参数。传统的模拟示波器显示时采用荧光物质的余辉时间都是一定的,导致其难以观测到周期较长的信号。另外,模拟示波器还无法对信号进行一些特殊的数学处理(如FFT)。而数字示波器正好可以克服模拟示波器的不足,它采用各种先进的测量技术来满足各种应用。如基于采样原理,采用高速A/D转换器实现高速数据采集,将模拟信号数字化,然后借助处理器强大的数据处理能力实现各种数字信号处理算法,将波形以图形的方式直观地显示出来,并能够得到被测信号各种丰富的参数。 1 系统总体方案 本设计的系统框图如图1所示,得益于FPGA的灵活性,系统的
[测试测量]
基于<font color='red'>SoPC</font>的数字示波器设计
SoPC+GPS/GSM实现汽车状态监控系统
引 言: 基于SoPC的汽车安全监控系统采用Altera公司最新的SoPC(可编程片上系统)解决方案——Nios处理器软核为核心,配合GPS和GSM系统,对汽车的停放和运行状态进行监控。 基于SoPC的汽车安全监控系统可广泛应用于汽车的防盗、日常维护和交通事故的处理,为车辆故障提供有效的测试手段。 1 系统硬件组成 设计采用Altera公司的SoPC开发工具。系统的开发包括硬件和软件两大部分。使用SoPC Builder生成Nios嵌入式处理器,Nios嵌入式处理器开发工具允许用户配置一个或多个Nios CPU,从标准库中添加外围设备,综合处理自定义系统,与Quartus II设计软件一起编译系统。软件开发的步骤是:利用SoPC
[嵌入式]
美国Droplet公开VGA视频处理软件
美国Droplet Technology在“CTIA WIRELESS 2008(CTIA)”开幕前夜,公开了能够利用手机图像传感器处理30帧/秒VGA视频的软件。“我们能够把普通的相机手机变成摄像机”(该公司总裁兼首席执行官John Ralston)。   Droplet Technology公开的软件利用基于该公司开发的小波变换(WT,Wavelet Transform)视频编解码技术。该公司计划以“Personal Mobile Video”服务的形式提供此次公开的软件系统。利用该公司提供的服务,可将手机拍摄的VGA视频上传至该公司服务器,可以与个人电脑用户的共享。预定08下半年正式推出相关服务。   该公司认为编解
[焦点新闻]
首场中国国际IP核推介会在京举办
在工业和信息化部电子信息司的指导和国家集成电路公共服务联盟的大力支持下,由工业和信息化部软件与集成电路促进中心(CSIP)主办,苏州国芯科技有限公司承办的2010年中国(北京)国际IP核推介会暨自主创新嵌入式CPU-C*Core专题推介会于6月11日在北京丽亭华苑酒店举行。 此次推介会重点推广我国自主创新嵌入式CPU---C*Core。苏州国芯科技有限公司的技术专家将和来自北京、天津、深圳等地的集成电路设计工程师、技术经理分享C*Core的相关技术和应用解决方案,推动我国自主创新嵌入式CPU的产业化进程。 主办方CSIP透露,随着IC设计复杂度的不断增加,IC设计企业越来越多地采用IP复用的方式进行产品设计,
[半导体设计/制造]
基于SOPC的雷达采集和图像显示系统
  1前言   雷达数据采集及图像显示是雷达的一个基本应用,普遍应用于军事、气象预测、环境监测、船舶导航等领域。雷达数据具有实时性、高速性的特点。一般说来,对雷达信号采样的时钟频率在100MHz以上,雷达数据采集和处理单元的数据吞吐量要求在Gbits/s以上。因此,要实现一个雷达数据采集和图像显示系统,对处理器的处理速度要求很高。传统的雷达数据采集和图像显示系统采用的是微处理器+FPGA(或DSP)方案,利用微处理器实现操作系统、雷达GUI和显示器控制,利用FPGA(或DSP)实现高速雷达数据采集和处理,这种方案的缺点是要想实现雷达图像在800*600以上分辨率的大屏幕显示比较困难,要么有较高的处理器速度,要么有独立显卡的支持,这
[电源管理]
Leon2处理器IP核技术(一)
Leon2是GaislerResearch公司于2003年研制完成的一款32位、符合IEEE-1754(SPARCVS)结构的处理器IP核。它的前身是欧空局研制的Leon以及ERC32。Leon2的目标主要是权衡性能和价格、高的可靠性、可移植性、可扩展性、软件兼容性等.其内部硬件资源可裁剪(可配置)、主要面向嵌入式系统,可以用FPGA/CPLD和ASIC等技术实现。 Leon2处理器的片上资源如下:分离的指令和数据Cache、硬件乘法器和除法器、中断控制器、具有跟踪缓冲器的调试支持单元(DSU)、2个24位定时器、2个通用异步串口(UART)、低功耗模式、看门狗电路、16位I/O端口、灵活的存储控制器、以太网MAC和PC
[模拟电子]
Leon2处理器<font color='red'>IP核</font>技术(一)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved