H.264解码器FPGA实现中的USB下载接口设计

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:yymmttjjjj
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文介绍了如何利用USB接口为H.264解码器FPGA验证平台提供文件下载功能,并根据H.264解码器的特点分别从硬件设计、FPGA固件设计、USB驱动程序设计和USB应用程序设计四个方面对该系统的结构和功能进行了阐述。
  关键词:H.264;FPGA;USB
  
  引言
  
  H.264是ITU2T的视频编码专家组(VCEG)和ISO/IEC的活动图像编码专家组(MPEG)联合制定的一种新的数字视频编码标准。它优异的压缩性能将在数字电视广播、视频实时通信、网络视频流媒体传递以及多媒短信等各个方面发挥重要作用。因此,设计符合H.264标准的芯片将是大势所趋。
  H.264解码器芯片的FPGA验证平台要求将待解码的视频数据从PC机下载到H.264解码器验证板上供解码之用,由于下载的数据量大而且要求下载的速度快,串口显然是无法胜任的。另外,为了减少开发成本和增加系统的灵活性,不采用直接将所有数据下载到验证板上的方案,而是要求数据实时的下载供H.264解码器解码。笔者为H.264解码器的FPGA验证平台提出了一种USB下载方案,并在Xilinx公司的FPGA xc3s5000上实现。
  
  硬件设计
  
  USB接口芯片选择
  本系统采用了Philips公司的一款带并行总线、支持D M A传输的U S B接口芯片PDIUSBDl2,它符合USBl.1版规范,可与任何外部微控制器或微处理器实现高速并行接口(2MB/s);主端点的双缓冲区配置增加了数据吞吐量并轻松实现实时传输;采用GoodLink技术的连接指示器,根据通信的状况会有不同的指示,易于诊断设备的故障;外围接口电路简单。PDIUSBDl2的这些特点满足了H.264解码器验证平台所要求的速度要求,并且使用该接口器件易于调试,可大大缩短开发周期。
  
  USR接口硬件电路
  FPGA与PDIUSBDl2的连接电路与51单片机与PDIUSBDl2(以下简称D12)的接法类似,如图1所示,但有几点需要注意:(1)FPGA的IO口电压范围一般是0--3.3V,应采用D12的3,3V接法,即:将D12的Vcc和Vout3.3脚同时接到3.3V电压,如下图所示。(2)D12有两种供电方式:总线供电和自供电方式。前者的最大电流为500mA,但这是在配置以后才有的,在设备配置前设备只能获得最大100mA的电流,也就是说在配置总线前设备的电流要控制在100mA内。考虑到H.264解码器验证平台的器件较多,并且为了以后扩展方便,采用后者即自供电方式。采用自供电方式时需要注意的是:自供电电源要与USB总线共地,EOT脚通过电阻连接到Vbus上,使用EOT来检测USB总线是否连接上,同时也保证了设备不会通过USB口向Vbus输出电流。
  
  软件设计
  
  H.264解码器从比特流中提取数据的方法
  H.264协议中用描述子定义了从比特流中提取句法元素的方法,描述子是句法元素的解码算法,每个句法元素都有相应得描述子。H.264定义了的描述子有:ae(v)、b(8)、ce(v)、f(n)、i(n),i(v)、me(v)、se(V)、te(V)、u(n)/u(V)、ue(v)。可以看到,描述子都在括号中带有一个参数,这个参数表示需要提取的比特数。当参数是n时,表明调用这个描述子的时候会指明n的值,也即该句法元素是定长编码的。当参数是v时,对应的句法元素是变长编码,这时有两种情况:i(v)和u(v)两个描述子的v由以前的句法元素指定,也就是说在前面会有句法元素指定当前句法元素的比特长度,除了这两个描述子外,其他描述子都是熵编码,它们的解码算法本身能够确定当前句法元素的比特长度。
  


  由上可知,H.264解码器从比特流中提取数据的长度是不固定的,为了保证H.264解码器能够流畅的从比特流中提取数据,我们需要建立一个合适大小的缓冲区,将从PC机发送来的比特流放在该缓冲区内,并且始终保证该缓冲区有一定量的数据存在。
  
  USB下载程序流程
  为了保证H.264解码器的缓冲区内始终有一定量的数据可用,采取的解决方案如图2所示。左半部分是PC机的工作流程图,右半部分是FPGA的工作流程图。PC机首先对USB设备进行枚举操作,枚举成功后,开始通过管道2I~ipe2)向D12的端点2发送数据,然后再读取从FPGA返回的数据,若PC机收到的数据是FF,则继续发送;若不是,则进行循环读设备操作,直到所读取的数据为FF才继续向设备发送数据。FPGA首先对PC机发来的枚举命令进行响应,枚举成功后,判断H.264解码器的两个缓冲区(这里使用两个缓冲区是为了将下载数据的接收和H.264解码器对数据的提取两个部分分隔开,使两者互不影响)是否均为满,若均为满,则发00到PC机,用来通知PC机暂时停止发送数据;若缓冲区1为空,则将从PC机接收来的数据放入缓冲区l,同时发FF到PC机;缓冲区2为空时同缓冲区1的处理类似。
  
  FPGA固件开发
  本系统FPGA固件部分可分为两大部分:USB_Core部分(图3中的虚线框内部分)、与H.264解码器的接口缓冲区部分(图3中除虚线框和H.264 Decoder之外的部分)。下面具体介绍各个部分。
  ·FPGAMemory D12模块
  该模块是FPGA内部的一块Bl o ckMemory,分为三个区域:D l 2_buffer;DeviceDescr,ConfigDescr,InterfaceDescr,EndpointDescr;Top_buffer。第一块区域D12_buffer用作D12_CmdHandle模块的读写缓冲区;第二块区域用来存放D12的属性信息,包括:设备描述符DeviceDescr、配置描述符ConfigDescr、接口描述符InterfaceDescr和端点描述符EndpointDe scr。第三块区域用作U S B—t o p模块的数据读/写缓冲区。Initialize USB、USB_top、D12_CmdHandle三个模块通过一个三选一数据选择器MUX3分时复用该模块。
  ·Initialize_USB模块
  该模块负责在程序刚开始的时候将D12的属性信息写到FPGAMemory_D12内部,供枚举之用。
  ·D12_CmdHandle模块
  该模块负责实现对D12的读写操作,对D12的读写操作有3种基本类型命令:初始化、数据流和普通命令。该模块为上层的USB_top模块提供命令接口,对USB_top模块发来的命令进行处理,并将结果返回给USB_top模块。需 要注意的是该模块工作的时钟是经过分频之后的时钟,频率低于2Mhz。这主要是为了满足D12的读写时序要求(D12的读和写周期不能小于500ns)。
  ·USB_top模块
  该模块是整个USB_Core部分的核心模块。开始时,它调用Initialize USB模块将D12的属性信息写入FPGAMemory D12中;然后,处理PC机发来的中断,调用D12 CmdHandle模块对D12进行读写操作;另外还包含了对USB标准请求和厂商请求的处理。同时它还为与H.264解码器的接口缓冲区部分提供了接口,将缓冲区的满空情况传送给PC机来控制PC机对数据的发送或停止。
  ·FPGAMemory_l和FPGAMemory_2模块
  该两个模块是FPGA内部两个大小相同的Block Memory,它们用作H.264解码器(H.264_Decoder)的数据缓冲区。当这两个缓冲区中的任何一个为空时,就将PC机通过USB口发来的数据放入该缓冲区;当两个缓冲区均为满时,通过将停止命令写入D12缓冲区然后PC机进行读设备操作的方法使PC机暂停数据发送,其中两个缓冲区的使用数据选择器MUX2进行切换。H.264解码器则是顺序从这两个缓冲区读数据,当读完一个缓冲区的数据时,通过数据选择器MUX2切换到另一个缓冲区,同时将该缓冲区空满标志位置为空标志。
  
  主机端软件部分的设计
  图1、图2
  
  USB驱动程序
  WIN98/2000/XP的驱动程序与以往的直接跟硬件打交道的WIN95的VXD方式的驱动程序不同。它是WDM(windows Driver Model)类型的。开发驱动程序的传统方法是使用Microsoft公司提供的Windows DDK,但使用其开发USB驱动是十分的复杂的,笔者使用了驱动程序的快速开发工具DriverStudio,该软件能自动生成WDM程序的框架,一般都已经包括了标准的请求的建立,我们所需要做的仅仅是加上厂商请求的建立。
  在调试usB驱动时,我们可以使用DriverStudio的SoftlCE软件进行驱动程序的调试。SoftlCE结合了硬件调试器的强大功能和符号调试器的易用性,能够显示程序的源代码,并允许通过符号名访问局部和全局的数据。
  
  USB应用程序
  USB应用程序通过USB驱动程序实现对设备的访问,编写USB应用程序必须符合USB驱动程序定义的接口规范。一般说来使用Driver Wizard生成一个驱动程序后,会同时生成一个*ioctl.h的文件,这个文件是建立软件和驱动之间的通信的桥梁,它定义了访问驱动程序的接口,在编写USB应用程序的时候需要将其引用进去。
  USB应用程序的编写使用VC编译环境下的API函数实现。程序中主要用到两个API函数:CreateFile()和DeviceloControl()。首先查找设备,打开设备的句柄:调用Win32函数CreatFile()得到设备驱动程序的句柄。然后进行读写和控制操作:调用win 3 2函数D eVi c eIoCont rol()通过得到的句柄把IOControlCode和相关的输入输出缓冲区提交给驱动程序。最后关闭设备句柄:当退出用户程序时,用CloseHandle()关闭设备。
  
  结语
  
  该USB下载系统已经在Xilinx公司的FPGA xc3s5000上实现,成功地应用于H.264解码器验证平台。该模块共占用1079个Slice、541个Slice触发器、1968个4输入LUT。通过对该模块的进一步优化,可将其作为IP Core嵌入到H.264解码器芯片中,进一步增强芯片的功能。
  1.刘韬,楼兴华.FPGA数字电子系统设计与开发实例导航.人民邮电出版社,2005年1月
  2.周立功等.PDIUSBDl 2 USB固件编程与驱动开发.北京航空航天大学出版社,2005年5月
  3.毕厚杰.新一代视频压缩编码标准一一H.264/AVC.人民邮电出版社,2005年11月
  4.PhiIip s SemicOnducto r.PDIUSBD 1 2USB interface device with par-allel bus datasheet.1 999 Jan 08
  5.武安河.Windows 2000/×P WDM设备驱动程序开发.电子工业出版社,2005年5月
其他文献
GPS定位系统在出现之初,一直应用在军事、航空、航海、勘测等专业领域,随着技术的发展,体积、成本都得到极大的改善,从而进入民用市场,尤其是和电子地图联手的汽车导航系统和手持式GPS定位终端。借助于手机的普及,“卫星通行+移动通信”的双效模式大有可为,有预计在未来几年里GPS产品将呈现健康的增长,年均增长率接近32%(图1)。目前,在接收端除了少数几家专业GPS芯片厂商(例如,美国的SiRF、瑞士的
期刊
十九世纪是电学和光学的启蒙时代,英国物理学家J.c.马克斯威尔在1864年在前人的研究基础上,归纳和修正成四个描述电场和磁场特性的方程式,它们分别是:电荷产生电场的高斯定律,磁偶极子的实验验证,电流和电场变化产生磁场的安培一马克斯威尔定律,以及磁场变化产生电场的法拉第感应定律。为了纪念马克斯威尔的贡献,物理学界将它们称为马克斯威尔方程式。此外,马克斯威尔还在1865年提出电场和磁场的振动波在自由空
期刊
CataIyst半导体公司Anthony Russell Chris Bartholomeusz  无需增加成本、外围元件和印刷电路板空间,新式白光LED驱动拓扑就能够提供业界领先的效率和简单架构的电荷泵。  系统设计人员目前面临一个艰巨的挑战,他们需要利用彩色便携式显示屏来最大限度地提升系统功能和效率,同时又要实现成本和尺寸最小化。现在已经到了需要为系统设计师提供一种全新的LED驱动拓扑的时候
期刊
中国科学院计算技术研究所  宁波中科集成电路设计中心无线传感器网络事业部 徐勇军 杨 宇  摘要:无线传感器网络作为信息科学领域中一个全新的发展方向,同时也是新兴学科与传统学科进行领域间学术交叉的结果,已经引起了学术界和工业界的广泛关注。本文将简单介绍一下无线传感器网络学术领域的发展历程,并就制约其大规模应用的主要因素进行简单的分析,与国内广大学术同仁及工业界的朋友共同探讨。  关键词:无线传感器
期刊
9月12日举办的“中国微处理器论坛”上,国内外主要的微处理器厂商济济一堂:InteI,ARM,IBM,NXP,MIPS,中国的神州龙芯等,论坛还邀请到了国内的重要专家。例如中国科学院沈绪榜院士,中国计算机学会微机专业委员会(嵌入式专委会)单片机学会理事长陈章龙教授、尽管这两天深圳在下着中雨,但仍有专程从广东和中国各地赶来的300多位微处理器的工程师参会。    共同畅想嵌入式的未来    嵌入式处
期刊
摘要:传统路灯照明系统主要是采用时间和光照强度来控制,这造成了巨大的能源浪费。为了减少这种不必要的浪费,我们在路灯照明系统的控制方法上提出了“随需而动”的思想。本文介绍了我们设计的智能路灯照明系统-Starswave的设计思路、组成、功能和特点。  关键词:嵌入式技术;智能路灯照明系统;Windows CE  今年微软嵌入式系统全球竞赛的主题是:保护、保持和改善环境。节能问题一直是世界各国关心和重
期刊
摘要:本文从正交频分复用信号幅度的概率分布出发,提出了一种降低其峰平功率比的新方法。理论分析和仿真结果表明,本方法效果明显,易于实现,而且没有信号失真和频谱损失。  关键词:正交频分复用;OFDM;峰平功率比;分组;矩阵变换    引言    正交频分复用(OFDM)多载波系统采用了正交频分信道,能在不采用复杂均衡技术的情况下支持高速无线数据的传输,抗频率选择性衰落和符号间干扰(ISI)能力强、频
期刊
Altera亚太区市场行销总监Louie Leung  摘要:本文研究Altera在65nm工艺上的工程策略,介绍公司如何为客户降低生产和计划风险,并同时从根本上提高密度、性能,及降低成本和功耗。  关键词:65nm;FPGA;功耗    65nm的功耗    迈向65nm工艺体现了Moore定律对密度和性能的预测。例如,与基于90nm的StratixⅡ器件相比,下一代65nm工艺StratixF
期刊
IDT全球装置和测试部副总裁Anne Katz  摘要:Ic供应商可建立全面和具有前瞻性的策略,协助客户制造符合RoHS严厉要求的产品,以建立环保规范的竞争价值  关键词:Pb;RoHS;无铅封装  如果只看一个IC,很难想象它会对环境造成严重的威胁,但是在日益增长的重金属环境污染危害中,每年由数千家厂商制造的数以千亿的IC扮演了非常关键的角色,特别是环境中的铅(Pb)。虽然单个Ic造成的有毒废弃
期刊
图1经典CORDIC硬件实现架构等精度表示范围内误差为0,且输出表示为标准IEEE754类型。一次计算所需时钟周期数为34。    自定义指令    Altera公司NiosⅡ处理器增加了多达256条用户自定义指令,这是其它SOC系统无法比拟的。用户自定义就是让NiosⅡ软核完成一个用HDL描述的电路模块功能。用户自定义指令可以在几个时钟周期之内完成复杂算法的处理能力,访问存储器或系统外的逻辑单元
期刊