FPGA芯片在1.3K电影播放机中的应用
夏人康
(上海文广科技(集团)有限公司(研究院))
[摘 要] 1.3K高清数字电影播放的数字版权管理利用了AES算法对影片数据做了加密保护。在CPU主频较低的情况下,为了达到流畅的播放的效果,我公司利用FPGA模块实现AES解密算法,通过PCI接口与CPU联接,完成解密任务。基于FPGA解密模块的1.3K电影播放机已大量投放市场。产品以其稳定的性能得到电影局领导,武警部队政治部以及业内同仁的一致好评,同时还获得了广电总局的科技创新二等奖。[关键词] FPGA 嵌入式系统 数字电影播放机 AES算法 1 引言1.3K数字电影是国家广电总局为解决中小城市看电影难的问题提出的一种解决方案,利用了数字电影放映成本小、拷贝费用低、设备投入小的优势。1.3K高清数字电影系统能够对符合中档数字电影规范的影片进行下载,存储,解密,解码,播放。同时,还能够提供商业广告播放等增殖业务,是近几年来广电总局联合国内电影设备生产商开发的,主要针对国内中小城市电影市场的,具有自主知识产权的数字电影放映设备。与之前的0.8K农村流动电影播放器相比较,1.3K中档电影播放服务器的画面分辨率提高到了1280X1024,解码前影片数据码率达到了50Mbps。另外,1.3K中档电影播放服务器加大了对数字电影版权管理的力度,1.3K影片的每一帧都采用高级加密标准算法AES进行了加密处理。这样对播放服务器来讲,需要对高达50Mbps的影片数据进行解密,解码并播放。对于CPU主频有限的嵌入式系统而言,实时的解密操作会消耗大量的CPU时序,影响影片流畅的播放效果,在极端情况下甚至造成整个系统的崩溃。通过FPGA定制专用的AES解密模块,与CPU联接,并行的完成实时解密。可以节省宝贵的CPU资源,在原先播放机硬件的结构上实现的成本也比较低。 2 FPGA芯片的选择现场可编程逻辑门阵列(FPGA,Field Programmable Gate Array),是一个含有可编辑元件的半导体设备,可供使用者现场程式化的逻辑门阵列元件。目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。设计人员可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。如图1所示(注:图1只是一个示意图,实际上每一个系列的FPGA都有其相应 的内部结构),FPGA芯片主要由7部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。FPGA芯片是提高系统集成度、可靠性的最佳选择之一。 基于上述FPGA的结构特点,以及综合考虑到1.3K电影播放服务器对解密模块的功耗,成本以及系统吞吐量等因素的要求,我们最终选用了Actel公司的ProASIC3 series A3P1000芯片。图2所示为该芯片的外观封装。 相比较Altera,Xilinx等世界老牌可编程逻辑器件的SRAM工艺,Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。SRAM架构的FPGA,掉电后数据会丢失,一般需要外加一个配置芯片。而Actel的FPGA模块无需外围配置电路,上电即运行。这一特性大大简化了模块电路设计的难度。另外,与传统SRAM FPGA要求2.5v或者3.3v核心电压供电不同,1.2v或者1.5v的核心电压使得整个系统的功耗很低,散热量小。同时,Actel FPGA内部有2重保密功能:一个是128位Flashlock加密,一个是128位的AES加密(全部在软件里面自由设置),真正保证了Actel的代码不被非法盗取。播放机产品的知识产权得到了这一特性的强有力保护。Actel FPGA所具有的固件免疫能力,更使得播放机解密模块能够适应恶劣的外部环境。通过在FPGA内部实现的66M时钟PCI接口,将主CPU与FPGA模块如图3所示联接在一起。这样,通过标准PCI总线协议,主CPU可以访问并控制FPGA模块。3 AES解密模块AES加密算法即密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。AES核心的工作流程如图4所示。 可细分为,SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)和 AddRound Key。大致说来,AES 加密算法的核心部分有四个操作:1.Add RoundKey 使用从种子密钥值中生成的轮密钥,代替 4 组字节。2.SubBytes 替换,用一个代替表替换单个字节。3.ShiftRows 通过旋转 4字节行的4组字节进行序列置换。4.MixColumns 用,有限域加和有限域乘的组合来替换字节。从算法的流程出发,按照功能模块将算法划分,在FPGA内部实现AES算法的具体功能,我公司实现的AES模块的外部接口连接如图5所示。整个逻辑资源的消耗不到ProASIC3 series A3P1000芯片的20%。每12个工作时钟,AES-CORE完成一次128bit数据位宽的解密操作。主芯片和FPGA之间采用PCI的接口进行连接,在主芯片进行解码之前,由FPGA芯片首先进行数据AES解密操作。整个解密的工作流程是:(1)系统上电后,主CPU在PCI总线上映射FPGA设备,建立与FPGA设备的系统联接。(2)CPU 分配本地DDR内存,读取影片文件,此时文件内容是加了密的,不能播放。(3)CPU 通过PCI接口,以寄存器的形式,告知FPGA内存的PCI总线地址,以及需要解密数据的长度等信息。(4)FPGA启动解密的工作流程。一次DMA读操作,将数据读入本地的block_ram,解密操作后,再通过一次DMA写操作,将block_ram中的数据写回CPU的内存,任务完成后,通过PCI总线上的中断信号告知任务完成。(5)CPU拿到解密完的数据后对数据进行解码并播放。在这个流程中,FPGA中实现的PCI总线硬件逻辑,包括了PCI的内存空间和配置空间的映射,总线DMA的读写操作。通过在FPGA中嵌入的AES-128-CBC解密模块对数据进行处理。FPGA的引入很好的解决了1.3K影片需要解密的问题。在1.3K高清电影播放机的产品研发中,不仅利用了FPGA在数字信号接口上的设计优势,还利用了FPGA实现了数学算法。在不改变原先硬件框架的基础上,整个播放系统的并行处理能力得到充分的发挥,合理利用了宝贵的CPU资源,保证了影片的流畅播放效果。4 结束语我公司基于FPGA模块的1.3K电影播放机,在2009年6月22日,获得了国家广电总局中档数字电影设备质量认定证书。在2009年12月在电影局招标120台1.3K中档电影播放服务器中,中标100台。2010年在武警部队政治部的文化装备招标采购的100台1.3K播放机中,中标60台,当年还获得了广电总局的科技创新二等奖。电子产品的开发流程和方法随着电子元件的不断演进而不断的变化和发展,整个开发平台也从单一化发展为多元化,应对嵌入式应用要求的不断革新,新兴的设计方法和平台结构也不断的涌现,FPGA以其在实际应用中的显著优势,正逐步成为嵌入式设计中不可低估一股力量。 参考文献:1.(美)沃尔夫 著,闫敬文 等译,基于FPGA的系统设计,2006,机械工业出版社2.袁文波,张皓,唐振中 编著,FPGA应用开发:从实践到提高,2007,中国电力出版社 编辑:中国新闻技术工作者联合会
评论 点击评论