3.2 ASI IP 核的生成
ASI 编码的实现采用Quartus 6.1 直接生成,进行仿真验证。
ASI 接口的生成。IP 核首先需要安装,可以从Altera 网站上下载。安装之后,打开 Quartus 6.1 新建工程之后,点击tools 菜单里面的Megawizard plug-in Maneger,选择 创建一个新的宏函数变量,按步骤一步步生成asi 文件。可以选择器件和生成文件语言,分 别选择Cyclone Ⅱ和verilog 语言。需要注意的是生成的文件名要与工程的顶层文件名相 一致。选择Transmitter,这里作为发送接口。在ASI 中根据所选器件速度的快慢,可以选 择是否生成锁相环。这里采用外部锁相环,用于产生270MHz 的输出频率。
生成的ASI 接口verilog 部分代码如下:
module asi ( rst, tx_refclk, tx_data, tx_en, tx_clk270, asi_tx);
input rst,tx_refclk,tx_en,tx_clk270,asi_tx;
input [7:0] tx_data;
asi_megacore_top asi_megacore_top_inst( .rst(rst), .tx_refclk(tx_refclk), .tx_data(tx_data),
.tx_en(tx_en), .tx_clk270(tx_clk270), .asi_tx(asi_tx));
……
endmodule
该接口实现8 位数据到10 位数据的编码。在8 位的MPEG-2 数据从输入端输入,流入内 部FIFO 中。tx_data 8 位并行数据输入接口,实现数据编码,即把每个8 位的数据变为10 位的数据;然后串行器把10 位并行数据转换为串行数据。asi_tx 经编码后的串行数据输入 接口。若MPEG-2 的TS 流的传输率小于270Mbps 时,则需要插入同步字符以保障输出端稳定 的270Mbps。tx_refclk 为输入的27M 参考时钟,tx_clk270 为270M 的数据输出时钟。它们是通过外部锁相环得到的。rst 是复位信号,高电平是有效电平,使整个设计停止工作。tx_en 数据输入使能信号,控制FIFO 中待编码的数据进入ASI IP 核实现数据编码和并串转换。
3.3 ASI 工程及仿真波形
把生成的ASI 核添加的自己的工程中,顶层部分代码如下:
module FIFO_ASI(clk27,data,t_out);
input clk27;
output data,t_out
wire clk13,clk270;
wire[31:0] data32;
wire[7:0] data8;
……
endmodule
对其进行仿真,波形如下:
外部接 27M 的时钟,连接到clk27,做为ASI IP 核27M 的输入参考时钟。t_out 为一个 时钟输出信号,对27M 分频,作为指示灯信号,来监测程序是否下载到FPAG 中。在指示灯 正常闪烁情况下,表明程序已经下到芯片中,并且能够工作。经过ASI IP 核编码的ASI 数 据由data 输入。在本工程中,通过一电脑不断地发送TS 流给板卡,经过ASI 编码后通过 ASI 接口输出。在接收端,通过一个ASI 接收卡,读出接收的数据,可以看出ASI 工作正常。 在发送TS 流时采突发模式,其读出的数据如下:
在调试阶段,PC 机连续发送相同的MPEG-2 编码的TS 包。在接收到的数据中,可以看到连 续的MPEG-2 编码的TS 包,且与发送的数据相同。其中TS 包的接收采用一块ASI 接收卡作 为接收端,通过USB 接口输入到电脑里,用相应的软件读取数据后显示。
4.应用意义
本文设计的基于Altera 公司的ASI IP 核实现的DVB-ASI 卡,实现了ASI 数据的正确编 码和发送。用FPGA 实现逻辑控制和数据缓存,可以方便的实现系统升级,实现多个ASI 数 据的发送。与用Cypress 公司的CY7B923 实现的ASI 的发送卡相比,本卡更适合批量生产, 可以节约成本,提高了市场竟争力,具有很好的市场前景。
本文作者创新观点是用Altera 公司的ASI IP 核代替Cypress 公司的CY7B923 专用ASI 发送芯片,实现ASI 数据的稳定发送。本方案降低了成本,设计灵活,并且方便升级到多路ASI 数据发送。
,基于Altera ASI IP核的ASI 发送卡实现