摘要:简要介绍了现场可编程门阵列(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逻辑设计,可以使系统运行的稳定性得到很大的改善。
新岸线第三代移动芯片问世
新基建为数字化转型提供基础技术支撑,是最重要且必要的驱动力
Spring赌上未来的一击,响应式的WebFlux框架更优雅
用户与内核空间数据交换的方式之一:内核启动参数
手机通讯录丢了怎么恢复?教你如何快速找回苹果手机联系人
MPEG-2编码复用器中的FPGA逻辑设计
昕诺飞协助巴西一城市成功升级安装超过18.2万套全新LED路灯 用电成本将节省50%
LED数码管显示器的连接方式有哪些
什么是VPN协议,工业路由器的vpn协议有什么用
2020年中国将成为全球最大的4K电视消费市场
NAND Flash缺货达巅峰 明年Q1 SSD价格涨幅将超10%
MAX5978 集成10位I²C系统监测器的热插拔
介绍下如何新建一个STM32寄存器版的工程
坐公交车没带零钱?带着手机就行了
中国电子:人工智能芯片和存储器技术是未来人工智能竞赛的关键
小米之家新店预热:神机K30S至尊版线下现货供应!
中国的工业机器人国产化比例由目前的27%提高到50%
自制Vape笔DIY图解
用体育点亮生活!洲明科技不断完善“硬件+软件+内容+交互”一体化解决方案
配电室智能运维解决方案