盐城信息港
汽车
当前位置:首页 > 汽车

基于USB20集成芯片的H264解码器芯

发布时间:2019-02-26 16:02:19 编辑:笔名

基于USB2.0集成芯片的H.264解码器芯片设计

H.264/AVC标准具有一系列优于MPEG4和H.263的新特性,在相同的重建图像质量下,H.264比H.263节约50%左右的码率。但是节约码率的代价是增加了算法复杂度。由于仅用软件已经无法实现实时地解码过程。所以必须利用硬件加速,这正是本解码器设计的初衷。

虽然H.264相较同质量的H.263图像,码率节约一半,但是由于本解码器的目标是解决H.264的高清图像(1080i)的解码工作,同时也要适用于普遍的视频外设,所以选用的接口既需要完成高速的码流源文件的传输工作也要易于插拔。而USB接口恰好符合这两个条件。高质量的源码文件数据量较大,对传输接口要求较高。并且在FPGA的仿真环境下,USB接口还要担负起向PC上位机回传解码结果的任务。这就要求传输速度至少要保证超越解码速度。和USB 1.1接口相比,USB 2.0接口的传输更加符合本设计的要求。

经过计算可知,传输接口需要至少30MB/s的传输速率,才能保证对1080i的图像进行解码。

器件选型

使用FPGA进行仿真和验证基本已成为IC设计过程中必不可少的环节,尤其对于大规模的设计。本解码器IC的设计使用Virtex II FPGA作为仿真环境。对于本设计,利用FF1517 BGA封装的XC2V6000已经充分满足设计要求。在考虑设计成本的前提下,该款FPGA是相对高性价比的选择。

Cypress公司的EZ-USB FX2是一款集成了USB 2.0的微处理器,它集成了USB 2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。FX2的这种优化设计,几乎能达到56MB/s的数据传输率,而USB 2.0允许的带宽是480Mb/s,即60MB/s。该芯片在对传输带宽影响很小的前提下,增加了许多集成的控制功能。GPIF和Slave FIFO模式为外部的FPGA、DSP和ATA等提供了简单和无缝的连接接口。

系统构架

本设计的主体如图1所示,在FPGA的仿真平台中,Virtex II包括了解码器主体和FPGA的接口模块。USB 2.0芯片68013A作为独立部分,负责FPGA和PC之间的USB数据传输。

FPGA片外的SRAM与DRAM作为FPGA的扩展存储设备,用于存放解码器所需的源码文件,解码后的文件以及解码器中用到的软件程序文件。

图1 FPGA仿真传输示意图

本设计中,解码器端具备强大的功能,内嵌有一个CPU。可以进行主动识别命令的功能。所以PC端和解码器处于对等的地位。PC端的工作包括发送命令头,发送命令,发送码流,接收回传解码结果等;FPGA端的工作包括接收并识别命令头与PC命令,接收并向SRAM和DRAM中存储码流,读取SRAM和DRAM中的解码结果并且回传给PC端。

USB 2.0芯片的工作方式及固件编写

1 芯片工作方式的确定

在设计中,存在两个过程涉及到大批量的数据文件传输:PC向下传输源码文件,FPGA向上位PC传输解码结果文件。其对USB传输要求。如果当传输的源码文件无法适应解码速度时,会导致解码器停顿;如果当回传解码结果滞后时,会造成未被传输的解码结果被覆盖。任何一种情况的出现,都将直接导致解码器工作失败。

在传输要求甚高的情况下,选用EZ-USB FX2提供的Slave FIFO的BULK(批量传输)模式,能很好的满足传输要求。在这种模式下,USB芯片内存单元中划分出6个端点(endpoint),以下简称为EP。EP0和EP1被保留作为芯片配置FIFO。EP2、4、6、8可作为用户传输,并且4个EP采用双重FIFO(double FIFO)的方式组织构成。

举例来说,如图2所示,USB执行OUT传输,将EP2端点设成512字节双重FIFO。在外部器件看来,USB端只要有1个512字节的FIFO为“半满”,就可以继续发送数据。当操作的FIFO写“满”时,FX2自动将其转换到外部接口端,排除等候读取;并将USB接口队列中下一个为“空”的FIFO转移到USB接口上,供其继续写数据。外部接口端与此类似,只要有1个FIFO为“半满”,就可以继续读取数据。当前操作的FIFO读“空”时,FX2自动将其转换到USB接口端,排除等候写并将外部接口队列中下一个为“满”的FIFO转移到接口上,供外部器件使用。

图2 EndPoint示意图

图3所示为双重FIFO的工作过程。当一个512字节的FIFO满时,FPGA可以取出里面的数据,同时PC可以向另一个FIFO写入数据(一组实箭头)。当一个512字节的FIFO空时,PC可以写入数据。同时FPGA可以读取另一个仍然有数据的FIFO(一组虚箭头)。

图3 双重EP运作模式

2 固件程序设计

在通过编写固件程序初始化USB设备过程中,以下重要的配置寄存器需要设置。

IFCONFIG;设置USB时钟由外部提供,并且选用Slave FIFO模式。

EPXCFG(X=2,4,6,8);配置4个EP(端点FIFO)的模式。

EPXFIFOCFG(X=2,4,6,8);配置4个EP的自动传输模式以及传输位宽。

其他一些寄存器,根据实际的需要可以单独配置。本设计中配置EP2用于传输命令头,EP4用于传输源码文件,EP6用于传输命令,EP8用于传输解码结果文件。

在完成固件程序的设计之后,可以利用FX2自带的Control Panel将固件程序的编译结果下载到68013A的芯片中,或者存放在外部的I2C中,以便下次复位时,芯片自己读取。

3 电路设计原理图

图4 电路设计原理图

图4为本设计的电路设计原理图,原件按左起以及上起顺序分别为:CY7C68013A芯片、电源耦合电容组、USB 2.0标准接口、标准RS232串行口、外部晶体振荡器和HIN232串口芯片。本设计是按照这一电路原理图制作电路板图,完成USB 2.0的功能的。

FPGA上解码器与USB接口模块的设计

SLAVE FIFO的模式下,FPGA可以主动决定是否有必要读取USB内部FIFO中的数据,而不仅仅是被动的接受PC发送的数据。如图5所示,控制方式:SLOE、SLRD和SLWR作为EP的读写信号与使能控制信号。FIFOADR[1:0]作为4个EP的选择信号,即选择当前操作的目标EP。PKTEND是FPGA主动命令USB芯片向上位PC发送数据的控制端。FLAGX(X=A,B,C,D)表示当前选中的FIFO的空满信息。FD(8位或者16位)为双向的数据传输口。FPGA接口控制这些端口,达到对USB进行操作的目的。

图5 解码器与USB接口

FPGA接口中,本设计还定义了一个深度为256,宽度为32位的FIFO(内部FIFO)。原因在于:本设计中SRAM和DRAM部分要不断地被解码器调用,这样就导致存储单元被占用。此时USB是无法对存储单元操作的。所以在FPGA接口中,先将多个USB传输的数据FD(8位或者16位)拼接成32位数据存入内部FIFO,当SRAM和DRAM空闲时,再向其传输。这样的处理,使得USB传输不依赖于存储单元的工作状态,进一步提高了USB传输的速度,以满足传输的要求。

设计验证及结果分析

当开发完Windows操作系统下的USB驱动程序后,本设计成功的利用EZ-USB芯片与Virtex II FPGA完成了视频数据的传输工作。并且在FPGA工作的66MHz以下的频率时,完成了对H.264格式视频的实时传输、解码。传输速率的检测中,USB对大批量数据的传输可以达到33MB/s以上的速度,完全适应解码器的要求。

设计分析:本设计利用了两级的FIFO,充分的发挥了USB 2.0的速度优势。设计方案解除了传输与解码过程中的瓶颈,实现了无缝连接。不足之处是由于USB芯片的Slave FIFO模式限制,PC与解码器直接必须使用命令交互的方式进行通信,占用了一定的带宽。在命令过于频繁的状态下,效率不高,但对大批量数据传输影响很小。

结束语

验证平台下成功,并且实际通过多种压缩率的源码文件测试,实现了平均33MB/s,40MB/s的速率。完成并且超过了设计要求。

小儿食积
1500元手机魅蓝小米荣耀谁更强
超级日程表带领观众探寻全球创业天堂的奥秘
友情链接
宝宝消化不良 儿童咳嗽吃什么药好 小孩咳嗽吃什么药 宝宝发烧吃什么好 一岁宝宝发烧怎么办 儿童反复发烧怎么办 宝宝发烧抽搐怎么办 小孩风寒感冒 婴儿手心出汗是怎么回事 孩子一到晚上就咳嗽怎么回事啊 两个月宝宝发烧怎么办 宝宝每天早上起来咳嗽怎么回事 小孩快速止咳小妙招 一岁多宝宝发烧 小孩发高烧怎么办 宝宝发烧了怎么办 宝宝发烧39度 小孩消化不良吃什么药 儿童晚上咳嗽厉害怎么办 小孩反复高烧是怎么回事 小孩发烧怎么回事 宝宝风寒感冒 儿童化痰的药哪个好 小孩37度算发烧吗 一周岁宝宝咳嗽怎么办 儿童咳嗽吃什么药 儿童晚上咳嗽厉害怎么办 小孩高烧怎么办 小孩反复发烧一般几天 五个月宝宝退烧小妙招 伊犁有哪些三乙医院 乌兰察布有哪些医院 广安综合医院哪家好 浙江口腔科医院哪家好 湖北传染科医院哪家好 湖北心脏科医院哪家好 云南针灸科医院哪家好 西藏小儿血液科医院哪家好 海南过敏反应科医院哪家好 青海小儿消化科医院哪家好 江门心血管外科医院哪家好 揭阳中医儿科医院哪家好 莱芜传染病科医院哪家好 南通针灸科医院哪家好 宿迁小儿免疫科医院哪家好 金华中医心内科医院哪家好 舟山儿童口腔科医院哪家好 丽水心血管医院哪家好 黄石中医血液科医院哪家好 宜昌心血管医院哪家好 宜昌中医肛肠科医院哪家好 孝感生殖中心医院哪家好 荆州肿瘤妇科医院哪家好 嘉兴有哪些小儿感染科医院 黄冈小儿神经内科医院哪家好 绍兴有哪些小儿胸外科医院 随州小儿外科医院哪家好 金华有哪些脊柱外科医院 舟山有哪些心脏科医院 潜江医疗美容科医院哪家好 丽水有哪些中医肾病内科医院 郑州神经外科医院哪家好 武汉有哪些功能神经外科医院 郑州心胸外科医院哪家好 黄石有哪些老年病科医院 黄石有哪些过敏反应科医院 鹤壁神经内科医院哪家好 鄂州有哪些小儿内科医院 焦作老年病科医院哪家好 孝感有哪些小儿泌尿科医院 孝感有哪些小儿胸外科医院 仙桃有哪些妇科内分泌医院 郑州有哪些房缺医院 驻马店精神科医院哪家好 自贡骨关节科医院哪家好 安阳有哪些普通内科医院 攀枝花骨肿瘤科医院哪家好 安阳有哪些小儿泌尿科医院 攀枝花过敏反应科医院哪家好 焦作有哪些五官科医院 三门峡有哪些医学影像科医院 三门峡有哪些五官科医院 自贡有哪些手外科医院 石家庄血液科医院哪家好 德阳有哪些小儿内分泌科医院 运城有哪些颌面外科医院 运城有哪些耳鼻喉医院 临汾有哪些肝病科医院 吕梁有哪些眼底医院 宝鸡有哪些功能检查科医院 渭南有哪些眼底医院 吉安有哪些牙周科医院 上饶有哪些生殖医学科医院 上饶有哪些药学部医院 白山有哪些口腔预防科医院 松原有哪些中医血液科医院 南宁有哪些神经内科医院 南宁有哪些头颈外科医院 桂林有哪些特诊科医院 防城港有哪些医学影像科医院