Motion JPEG视频压缩IP核的设计与实现

2010-07-14 21:41:52来源: 电子技术应用 关键字:IP核  Motion  JPEG  视频压缩  多媒体
引言

  随着多媒体技术及通信技术的快速发展,在嵌入式平台上实现连续图像压缩的需求已变得日益广泛。常用的系统结构是独立处理器配和专用图像压缩芯片或者是只用一个高主频数字信号处理器完成主要功能。但随着大规模集成电路技术的发展及市场对产品低成本的要求不断提高,一种新的在嵌入式平台上实现连续图像压缩的系统结构正逐步成为上述两种系统结构的替代者。这种新的结构就是Altera公司提出的基于Avalon总线的SOPC结构。SOPC结构可以把处理器,图像压缩IP核,通讯单元及控制单元集成到一块FPGA芯片上。较之以往的结构,不但极大地节约了系统资源和成本,更是减少了系统的复杂度。尤其是可以用硬件电路实现软件处理极为耗时的运算功能,使得在低主频,低功耗嵌入式平台上实现连续图像实时压缩变为可能。连续图像压缩IP核也成为整个SOPC系统的一个关键部件。现有的MPEG系列,H26X系列IP核对FPGA的芯片资源及性能要求极高,难以满足系统对低成本,低功耗的要求。所以设计一个适合低成本,低功耗的FPGA芯片的视频压缩IP核变得极为重要。这即要求压缩算法的复杂度不能太高,又要求有适当的压缩效果,Motion JPEG算法恰好满足上述要求。

1.Motion JPEG压缩算法简介

  Motion JPEG是一种基于静态图像JPEG压缩标准的动态图像压缩标准,压缩时将连续图像的每一个帧视为一幅静止图像进行压缩,从而可以生成序列化运动图像。压缩时不对帧间的时间冗余进行压缩,虽然降低了压缩比,但也同时降低了复杂度,易于硬件电路实现。Motion JPEG标准所根据的算法是基于离散余弦变换和熵编码,关键技术有二维离散余弦变换、量化、差分编码、霍夫曼编码和游程编码等。单帧的处理过程如下图所示。

2.IP核的结构设计

  2.1二维离散余弦变换模块

  二维离散余弦变换是由一维离散余弦变换衍生而来的,所以可以用两个级联的一维离散余弦变换实现。实现时要注意第一级一维离散余弦变换模块产生的结果不能直接作为第二级一维离散余弦变换模块的输入量,而是等到第一级一维离散余弦变换模块产生的结果形成一个8×8的矩阵后,对这个8×8的矩阵做转置处理,再把转置后得到的矩阵按行扫描的顺序输出,这时输出的数据才能作为第二级一维离散余弦变换模块的输入量。

  二维离散余弦变换模块处理的对象是8×8的像素矩阵,来自其前一级模块预处理模块。预处理模块一个时钟周期只能输出一个数据,为了满足二维离散余弦变换模块中第一级一维离散余弦变换模块一次运算需要8个输入数据的要求,利用一个串行转并行模块,把每个时钟周期内预处理模块输出的一个数据缓存起来,当数据凑满8个后再一次传给二维离散余弦变换模块。
二维离散余弦变换模块输出的数据是8×8的二维离散余弦系数矩阵,传递给其后一级模块量化模块。量化模块一个时钟周期只能接收一个数据,为了满足二维离散余弦变换模块中第二级一维离散余弦变换模块一次运算产生8个输出数据的条件,使用一个并行转串行模块,把每隔8个时钟周期二维离散余弦变换模块输出一次的8个数据缓存起来,在等待下一次二维离散余弦变换模块输出数据的8个时钟周期的等待隔内,把数据串行传给量化模块。

  2.1.1第一级一维离散余弦变换模块

  根据一维离散余弦变换的定义和cos函数的互补对称性,参考Weiping Li提出的Skew Circular Convolution的概念,能够使一维离散余弦变换达到非常精简的硬件架构。但是考虑到处理的对像是连续帧这个条件,速度就成为主要因素,因此没有完全依照其提出的方法,而是适当的增加电路面积来够造新的11阶全流水线结构,从而获得最大的运算速度。处理过程可划分为4个阶段。

  阶段1:消耗3个时钟周期,完成8位有符号数的加减运算,结果为9位有符号数。

  阶段2:消耗2个时钟周期,完成9位有符号数的固定系数乘法,因为乘的系数是小数,所以要把小数转换为二进制表示。

  阶段2中的乘法操作是用EP2C35芯片中的28个嵌入式乘法单元实现的。EP2C35芯片中共有70个嵌入式乘法单元,一个嵌入式乘法单元可以实现两个 9位数的乘法,两个嵌入式乘法单元并联可以实现两个大于9位小于18位数的乘法。根据这一特性,假如在阶段1中实现乘法会因输入量是8位而浪费了一个嵌入式乘法单元的全部能力,假如在阶段3或阶段4中实现乘法又会因输入量或系数中每个元素的长度大于9位而耗用两个嵌入式乘法单元去完成一个乘法操作,又很不经济。所以在阶段2中实现乘法操作是最为合理的,阶段2的输入量为9位,恰好耗用一个个嵌入式乘法单元。这也同时要求乘法中的固定系数的位数为9位,位数的过多或过少都不能充分利用芯片上的硬件资源

阶段3:消耗3个时钟周期 完成9位有符号数的加减运算,结果为9位有符号数。一般的9位有符号数的加减的结果应该用10位有符号数来表示,因为进位操作或借位操作导致结果的位数从9位增长到10位。但是阶段3的输入序列是由9位有符号数乘以固定系数得到的,且固定系数的值都小于0.5,所以序列之间的加减操作不会引起进位操作或借位操作,9位有符号数足够表示加减操作的结果序列。

  阶段4:消耗3个时钟周期完成9位有符号数的加减运算,结果为10位有符号数,也是第一级一维离散余弦变换的最终结果。

  2.1.2并行矩阵转置模块

  常用的8×8矩阵转置的方法是,先把64个矩阵元素按行扫描的顺序一个个串行输入到一个RAM(64个存储空间)中,然后按转置后的矩阵的行扫描顺序把 RAM中64个矩阵元素逐次输出。这种方法最少需要128时钟周期才能完成一个8×8矩阵的转置。可称其为串行矩阵转置。串行矩阵转置一次接收一个输入数据与一维离散余弦变换一次产生8个输入数据在传输速率上不匹配,第一级一维离散余弦变换模块需要在串行矩阵转置工作期间等待,当串行矩阵转置完成后再产生新的一维离散余弦变换系数并传递给串行矩阵转置模块。这也是二维离散余弦变换难以设计为全并行的原因。

  本文提出了一种新的矩阵转置方法,称为其并行矩阵转置。用8个RAM(每个RAM有8个存储空间)代替一个RAM(有64个存储空间),再增加两个8通道的旋转多路器,同时配合对8个RAM的变址读操作。一次输入原始矩阵的一列,20个周期后完成一个8×8矩阵的转置。比串行矩阵转置节省至少100个时钟周期。

  并行矩阵转置模块的写操作:每个时钟周期变换一次RAM_BANK的接入顺序,每个RAM_BANK每次写入地址随时钟周期而顺序递增从,0增加到7,每次增加1。

  并行矩阵转置模块的读操作:每个时钟周期变换一次RAM_BANK的输出顺序,每个RAM_BANK每次读出地址随时钟周期而变化,且同一时钟周期内不同的RAM_BANK有不同的读出地址。

 

[1] [2] [3] [4]

关键字:IP核  Motion  JPEG  视频压缩  多媒体

编辑:鲁迪 引用地址:http://www.eeworld.com.cn/afdz/2010/0714/article_2775.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:视频监控移动化 相关行业迎来新发展机遇
下一篇:用于预报各种灾害的十字标尺智能摄像机

论坛活动 E手掌握
关注eeworld公众号
快捷获取更多信息
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
IP核
Motion
JPEG
视频压缩
多媒体

小广播

独家专题更多

TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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