MPEG-2编码复用器中的FPGA逻辑设计

最新更新时间:2006-05-07来源: 电子产品世界 手机看文章 扫描二维码
随时随地手机看文章

    摘要:简要介绍了现场可编程门阵列(FPGA)的特性,并结合MPEG-2编码复用器开发过程中的经验,给出了在MAX+ PLUS II提供的设计环境下FPGA逻辑设计的一些方法和技巧。设计的逻辑电路通过了验证和硬件仿真,并在复用器的使用中运行正常,达到了设计要求。

    关键词:FPGA  MAX+ PLUS II  逻辑设计  MPEG-2标准  编码复用器

    MPEG-2编码复用器主要由DSP(数字信号处理器)和FPGA两大部分组成。其中,DSP作为整个系统的主控单元,而FPGA则完成相应的辅助逻辑功能。用FPGA实现的编码复用器,具有设计,升级都非常方便,快速的特点,提高了工作效率。 

FPGA芯片简介 

    编码复用器中所使用的FPGA芯片是美国Altera公司生产的FLEX10K50V。 Flex10K系列是Altera公司在FLEX8000系列基础上发展起来的一种新型器件。它的结构的主要特点除了主要的逻辑阵列块(LAB)之外,首次采用了嵌入阵列块(EAB)。 FLEX10K50V的主要特性指标为:

    ●逻辑门数目为50,000门;

    ●最大I/O引脚数为274个;

    ●提供-1,-2,-3,-4四种速度级别;

    ●触发器数目为3,184个;

    ●LE(Logic Element,逻辑单元)数目为2,880个;

    ●总的RAM为20,480bits。

MAX+ PLUS II开发工具

    MAX+ PLUS II是开发Altera公司FPGA产品(包括MAX系列和FLEX系列)的软件工具包。利用MAX+ PLUS II提供的设计环境和设计工具,可以灵活高效地完成各种数字电路设计。在MAX+ PLUS II的设计环境下, FPGA的整个设计流程如图1所示:

    1. MAX+ PLUS II的设计输入可以有三种方式,即图形输入,文本输入和波形输入。此外,符号编辑器用于编辑用户自己的模块符号。需要说明的是: 在本系统中,我们使用AHDL(Altera,HDL) 语言作为文本输入方式。

    2. 设计实现即在FPGA器件内物理地实现所需地逻辑.这个过程由MAX+ PLUS II中的核心部分编译器完成。它依据设计输入文件自动生成用于器件编程、波形仿真、延时分析等所需的数据文件。

    3. 设计仿真是由仿真器和时延分析器利用编译器产生的数据文件,自动完成逻辑功能仿真和延时特性仿真。通过仿真,发现设计中的错误与不足,对设计输入进行修改和完善,最终达到设计要求。

    4. 在仿真结果正确以后,就可以进行器件编程,即通过编程器(Programmer)将设计文件下载到FPGA芯片中,在实际芯片中进行实际信号的时序验证,就芯片的实际运行性能进行系统测试。

复用器中的FPGA逻辑设计

    在MPEG-2编码复用器中,FPGA所实现的逻辑功能主要是:

    (1)系统上电后,完成对其他器件(如DSP、、FIFO)的复位;

    (2)响应系统主控单元DSP的指令,从相应的输入FIFO中读取TS流数据,做并串变换后传输至DSP的串行输入口;

    (3)由于复用器必须对进入该系统的数据传送流(TS流)中的程 序参考时钟域(PCR域)中的数值进行补偿计数.因此,FPGA还需要完成:

    a.在复用器的数据传送流输入端检测PCR域并纪录PCR域初值;

    b.在复用器的数据传送流输出端检测PCR域并将经过补偿计数后的PCR的新值 装载进PCR域;

    (4)其他一些逻辑。

    1、输入输出FIFO的复位模块

    输入输出FIFO复位模块较为简单.它由文本输入方式实现,内部主要由计数器和D触发器组成。它对电路的控制主要包括:整个系统上电后,主控单元DSP通过I/O端口向FPGA发出FIFO复位的指令, FPGA通过地址译码,产生RSFIFO信号.RSFIFO作为计数器内部的清0端信号,CLK38(全局时钟信号)作为计数器的时钟信号,并引导计数器开始计数。计数器计数到一定数值时,再连通D触发器先后产生RESET(输入输出FIFO复位信号)以及FO_ENA(输出FIFO读允许信号),完成了FIFO复位模块的逻辑时序.

    2、并/串转换模块

    图3是并串模块的上层图。其I/O引脚情况见表1:

表1 并/串转换模块I/O引管脚说明

管脚名称 管脚功能
CLK38     并串模块工作时钟
HF     输入FIFO半满信号
Q[8..0]     TS流并行数据信号
P_CLK     TS流串行数据包同步信号
S_DATA     TS流串行数据信号
S_CLK     TS流串行数据时钟信号
FIFO_R_CLK     输入FIFO读时钟信号
CLK_CONTROL     输入FIFO读时钟控制信号

    由于MAX+PLUSII的老式宏函数中只提供了作4、5、8位和16位并串变换的移位寄存器 ,而此处系统完成的是9位并串变换(8位数据位加1位包同步位),因此必须自己编写tdf文件,而不能直接调用宏函数。具体的功能实现为:

    选择使用9个D触发器,将它们相互连通组成9位的移位寄存器。一旦产生输入FIFO的半满信号(HF),模块开始工作,将输入FIFO中的9位并行数据读入移位寄存器中,在CLK38的工作时钟控制下,将9位数据顺序串行移出产生S_DATA(TS流串行数据)。并且,在模块中还设置了一个4位计数器A。计数器A同样在CLK38的工作时钟控制下,整体模块开始工作时开始同步计数。每计数到9时计数器清0,并输出一个高电平信号。而在其他计数值时,该信号输出为低电平。那么,产生的这个信号就是TS流的串行数据包同步信号(P_CLK)。而TS流串行数据的时钟信号(S_CLK),很显然就是CLK38。

    此外,将CLK38时钟进行8分频作为输入FIFO的读时钟信号(FIFO_R_CLK)。而输入FIFO读时钟的控制信号(CLK_CONTROL),则由模块中设置的另外一个计数器B来产生,确保输入FIFO一次半满后,FPGA只从其中读取该FIFO最大容量之一半的数据。例如:在本系统中,输入FIFO的最大容量为512个字节。那么,设置的计数器B就必须是一个9位计数器。计数器的计数时钟为FIFO_R_CLK,从输入FIFO半满,FPGA启动读数时开始计数。每计数到256(输入FIFO容量的一半)时计数器清0,并将输入FIFO读时钟的控制信号(CLK_CONTROL)置为低电平,从而禁止再产生输入FIFO读时钟信号。

    3、PCR补偿计数模块

    根据MPEGII标准,TS流中的PCR域共有42位有效码字,由两部分组成:一部分以系统参考时钟的1/300(90KHZ)为单位,称为program_clock_reference_base,33字段;另一部分称为program_clock_reference_extension, 以系统参考时钟(27MHz)为单位的9位字段。

    因此,整个PCR补偿计数模块分为两大部分:一部分是9位字段(E0~E8)的PCR域补偿计数模块,由一个8位计数器(调用宏函数8COUNT)和一个4位计数器(调用宏函数74161)组成。其中,8COUNT的计数时钟为27MHz时钟(由硬件电路中的27MHz晶振提供);而74161的计数时钟则为8COUNT提供的最高位进位时钟(由8COUNT中的最高位E7取反后得到);另一部分为33位字段(Q32~Q0)的PCR域补偿计数模块,由4个8位计数器(调用宏函数8COUNT)和一个4位计数器(调用宏函数74161)组成。其中,74161的计数时钟为27MHz时钟300分频后得到的90KHZ时钟,它只对33位字段中的最低位Q0进行补偿计数。第一个8COUNT的计数时钟为74161的Q0位的进位时钟(由Q0取反后得到);而其他3个8COUNT的计数时钟则分别为前一个8COUNT的进位时钟(即分别由Q8,Q16,Q24取反后得到)。

    4、复用系统FPGA逻辑设计中一些技巧 

    在该系统FPGA逻辑设计过程中,由于系统结构比较复杂,整个FPGA逻辑设计也比较大,所以在作逻辑设计时,一般应有一个整体的考虑。具体作设计时,应该采用层次化的结构设计。另外,还必须结合整个系统的特点,有意识的对FPGA中逻辑设计进行优化和精简。例如:检测TS数据流的包同步字0X47,由于该同步头字节并不是唯一的,中间可能有码字也恰为其值。因此,一般情况下,FPGA搜索同步码字的逻辑如下:首先找到第一个0X47,然后进行计数,计到187字节后,再检测是否为0X47,如果是,输出包同步信号;接着每隔187检测一次,如是0X47,则继续输出包同步信号,如不是,则从事开始搜索0X47。

    而在该系统的设计中,并没有采用这种方法,而是利用了I/O FIFO的9比特特性,FPGA直接搜索9位包同步字节0X147。另外,在PCR域补偿计数的模块中,也存在一个PCR域确认的问题。PCR域的长度为6个字节48位码字(42位有效码字加6位保留位),在FPGA已经装载PCR域的初值后,完全可以将PCR域中的6个字节改为预先设定好的协议码字(当然,它们必须对于码流而言是唯一的)。这样,在TS码流输出端进行将补偿计数后的PCR数值重新装载进PCR域的工作时,FPGA不仅能够很方便的识别出PCR域的具体位置,而且还可以从这些协议码字中读出较多的复用信息。

    简洁而有效的FPGA逻辑设计,可以使系统运行的稳定性得到很大的改善。

编辑: 引用地址:MPEG-2编码复用器中的FPGA逻辑设计

上一篇:CPLD在IGBT驱动设计中的应用
下一篇:ispPAC10在系统可编程模拟器及其应用

小广播
最新半导体设计/制造文章
换一换 更多 相关热搜器件

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

站点相关: 市场动态 半导体生产 材料技术 封装测试 工艺设备 光伏产业 平板显示 EDA与IP 电子制造 视频教程

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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