基于Altera ASI IP核的ASI发送卡实现
、可扩展性、较强的抗千扰性等有点;第二种是同步字随机均 匀的插在TS 数据之间,称为非突发模式。
3.设计实现
3.1 ASI 发送卡硬件设计
大部分ASI 编码的实现,都是采用Cypress 公司的CY7B923 实现并行数据到串行数据的 转换。CY7B923 主要实现码字的8/10bit 转换、插入同步字K28.5 和并/串变换。ASI 的传输 速率恒定为270MHz,而输入MPEG-2 TS 码率是不同的,所以要用FIFO 实现速率匹配,需 要对输入的SPI 数据、FIFO 和CY7B923 之间的通信进行逻辑控制。综合性能、价格和程序 复杂度的考虑,本方案采用FPGA,用Verilog 编程来实现它们之间的逻辑控制;采用Altera 公司的ASI IP 核,代替Cypress 公司的CY7B923 来实现ASI 数据的编码。ASI IP 核具有使 用方便、成本低等优点。
在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 部分代码如下:
该接口实现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 核添加的自己的工程中,顶层部分代码
- 一种消防应急灯具专用控制芯片的设计(11-02)
- 基于FPGA的8段数码管动态显示IP核设计(02-03)
- 基于FPGA和IP Core的定制缓冲管理的实现(08-14)
- FPGA的高速多通道数据采集控制器IP核设计(04-22)
- 基于EDA或FPGA的IP保护的实现(09-16)
- 基于PicoBlaze软核的TFT液晶显示控制(09-16)