新闻中心

EEPW首页 > 消费电子 > 设计应用 > 基于Altera ASI IP核的ASI发送卡实现

基于Altera ASI IP核的ASI发送卡实现

作者: 时间:2011-02-16 来源:网络 收藏

在ASI 的编码过程中,只需将MPEG-2 编码的TS 码流的8 位数据和一位TS 码率传输时 钟输入到FPGA 中,本方案是PCI 33M 的时钟信号。因为在本方案中,TS 格式为188 个字节 的突发模式发送数据,根据数据有效信号DVALID,FPGA 检测这个信号来判断什么时间内是 有效数据,来接收TS 码流数据,而不用关心TS 码流的同步头。FPGA 将接收到的数据以TS 码率时钟写入FIFO。当FIFO 半满时,FPGA 接收到FIFO 的半满信号,然后FPGA 给ASI 核发出FIFO 可读信号,ASI 核以27Mbps 读取FIFO 中的数据;当FPGA 计数到ASI 核读取了一定数量的FIFO 数据,FPGA 则向ASI IP 核发送FIFO 不可读信号,防止FIFO 读空。MPEG-2 传 输码率的并行最大速度为132Mbps,而读FIFO 速率为27Mbps,因此FIFO 会有溢出。因此在发送MPEG-2 传输流时,有驱动程序控制一次发送数据的多少。考虑到延时,本方案在FPGA 内部烧制了一个2K 大小的异步FIFO。ASI IP 核在FIFO 中数据不可读时,向ASI 码流中填 充K28.5 以维持270Mbps 的固定传输速率。最后串行数据经过驱动就可用同轴电缆传送出去。 本方案中,同步字K28.5 的插入采用传输码流的单个字节前后不能都是K28.5 同步字的方式。

ASI 发送卡的硬件实现框图如下:

该系统是基于 ALTERA 公司的FPGA 芯片,Cyclone Ⅱ EP2C8Q208 设计的。经过编码的并行数据流经过PCI 总线送入异步FIFO。异步FIFO 主要实现数据缓存和时钟匹配的作用。 系统进行DMA 操作,把数据送入板卡。FIFO 将这些数据缓存,以避免数据丢失。又由于时 钟有PCI 33M 的时钟信号和27M 的ASI 输入时钟信号。这就要求把这两个不同频率的时钟同 步。FIFO 在两个不同的时钟下工作,数据的输入和输出分别使用不同的时钟。这就实现了 时钟的隔离和无缝连接。FIFO 采用32 位输入、8 位输出,分别与PCI 的数据宽度和ASI IP 核的输入数据宽度相一致。ASI IP 核实现8 位数据到10 位的编码。其中ASI IP 核的参考 时钟为27M,输出时钟是270M。采用外部锁相环,27MHz 时钟频率有晶振产生,通过锁相环 产生270M 的时钟,用于ASI 接口的数据输出。PE65508 实现耦合和阻抗匹配,最终经BNC 插头发送出去。

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 数据发送。


上一页 1 2 下一页

关键词: 编解码器

评论


相关推荐

技术专区

关闭