基于FPGA的视频传输流发送系统设计方案
时间:11-08
来源:互联网
点击:
1 引言
在目前的广播电视系统中ASI接口是使用非常广泛的一种接口形式,该接口随同SPI一起被欧洲电信标准化协会(ETSI)制订,以使不同厂家生产的MPEG2单元可以方便地进行互联。本设计方案以FPGA为核心器件,制作出了SPI-ASI接口转换器。这套方案成本较低,利用FPGA的可编程性,硬件的升级较容易。
2 系统结构和功能分析
2.1 DVB-ASI介绍
一般的Mpeg2编码器的输出和解码器的输入都是标准的并行11位信号,处理简单而且扩展性强,符合SPI(Synchronous Parallel InteRFace)信号接口。传输SPI信号,在传输链路上是LVDS技术和25根管脚连接的,因此具有连线多、复杂,传输距离短,容易出现错误等缺点,而且,SPI的热插拔性能也较差。
ASI是个串行传输协议,TS流以串行的方式传输,为了保证接收端能正确恢复出TS流DATA数据,发送端需要插入同步字K28.5。ASI协议中没有PSYNC、DVALID和CLOCK信息,因此,在接收端需要根据TS流的同步字节0x47,由外部逻辑合成这3个信号。
ASI传输流可以发送不同数据速率的Mpeg2数据,但传输速率恒定,为270Mbps。因此ASI可以发送和接收不同速率的Mpeg2数据。ASI传输系统使用分层结构描述,最高层、第2层使用MPEG-2标准ISO/IEC 13818-1,第0层和第1层是基于ISO/IEO CD 14165-1的FC纤维信道。FC支持多种物理传输媒介,本方案选用同轴电缆传输。
2.2 DVB-ASI信号发送系统结构
为了在编、解码器和传输设备之间能正确传递数据,本方案以FPGA(Altera公司的EP1C6T144C8)为核心器件,在SPI和ASI信号之间进行转换。原理如图1所示。其中,27MHz时钟作为系统时钟,为FIFO、8B10B编码和并串转换提供时钟源信号。由于SPI接口采用LVDS电平传输数据,从DB25-F头输入的并行信号,首先需要进行LVDS->TTL电平转换,得到SPI接口定义的DATA、PSYNC、DVALID和CLOCK并行信号。丢弃PSYNC和DVALID信号,将DATA和CLOCK信号直接连接到FIFO的输入端。外部逻辑控制着FIFO的读,从FIFO读出的数据送给8B10B编码模块进行编码转换,并以270Mbps的速率输出串行数据。其中,270MHz时钟由27MHz系统时钟通过锁相环产生。串行信号电气特性为差分的PECL电平,经过1:1的变压器隔离后,由BNC头输出。
图 1 SPI转ASI模块原理图
FIFO的写入时钟即为TS流的字节时钟CLOCK,而读出时钟为固定值27MHz。采用不同的FIFO读逻辑,可以产生突发或连续两种ASI输出模式。本方案中,FIFO、FIFO的读写控制逻辑、8B10B编码以及并串转换均由FPGA 实现,ASI输出为突发模式。
在ASI的编码过程中,只需将MPEG2的八位数据和一位TS码率传输时钟输入到FPGA。在本方案中,TS格式为188个字节,因此数据有效信号DVALID一直为高,FPGA忽略这个信号,只管接收TS码流数据,而不用关心TS码流的同步头。PSYNC帧同步信号则作为FIFO读入的控制信号。FPGA将接收到的数据以TS码率时钟写入FIFO,当FIFO半满时,FPGA接收到FIFO的半满信号,然后FIFO控制逻辑发出FIFO可读信号,编码模块以以27Mbps读取FIFO中的数据;当计数器计数到编码模块读取了一定数量(188个读FIFO信号周期)的FIFO数据,则发送FIFO不可读信号,防止FIFO读空。
在FIFO不可读时,向ASI码流中填充K28.5以维持270Mbps的固定传输速率。最后串行数据经过驱动就可用同轴电缆传送出去。本方案中,K28.5的插入方法选择在每个传输包前必须有至少两个同步字(K28.5字符),这符合ASI的传输规定。
3 系统各结构的实现方法
3.1 信号输入
在ASI的编码过程中,只需将Mpeg2传输流的八位数据和一位TS码率传输时钟输入到FPGA。在本方案中,TS数据通过富士通的专用ASIC芯片MB86391产生。由于控制MB86391产生的TS格式为188个字节,因此数据有效信号DVALID一直为高,FPGA忽略这个信号,只管接收码流数据,而不用关心TS码流的同步头。PSYNC帧同步信号也一样忽略,只是需要从帧同步信号拉高开始,FPGA将接收到的数据以TS码率时钟写入FIFO。
3.2 FIFO模块
FPGA在搜索到188字节包长的包头0x47后开始将数据写入FIFO,同时监测FIFO的半满信号HF, 若半满则将FIFO的读使能信号抬高, 而此时从FIFO读出数据给8B/10B编码模块完成编码。读数据时,由FPGA对FIFO的读信号的时钟脉冲计数,计到188个后,将FIFO的读使能拉低,并判断FIFO是否半满。此时FPGA将不再发出读FIFO信号, 而是在每个时钟的上升沿插入一个K28.5同步字, 待发现FIFO半满信号HF出现后, 再次将FIFO的读使能抬高,并保持188个读FIFO信号周期,如此反复。由于FPGA时钟引脚接一个27MHz的外部时钟, 而在每个时钟的上升沿, 不是输出正常数据就是同步字, 所以不管FIFO是否有数据提供给后端的8B/10B编码器,FPGA最终都将送出固定的270Mbps的串行数据,构成DVB-ASI的标准数据格式。
在目前的广播电视系统中ASI接口是使用非常广泛的一种接口形式,该接口随同SPI一起被欧洲电信标准化协会(ETSI)制订,以使不同厂家生产的MPEG2单元可以方便地进行互联。本设计方案以FPGA为核心器件,制作出了SPI-ASI接口转换器。这套方案成本较低,利用FPGA的可编程性,硬件的升级较容易。
2 系统结构和功能分析
2.1 DVB-ASI介绍
一般的Mpeg2编码器的输出和解码器的输入都是标准的并行11位信号,处理简单而且扩展性强,符合SPI(Synchronous Parallel InteRFace)信号接口。传输SPI信号,在传输链路上是LVDS技术和25根管脚连接的,因此具有连线多、复杂,传输距离短,容易出现错误等缺点,而且,SPI的热插拔性能也较差。
ASI是个串行传输协议,TS流以串行的方式传输,为了保证接收端能正确恢复出TS流DATA数据,发送端需要插入同步字K28.5。ASI协议中没有PSYNC、DVALID和CLOCK信息,因此,在接收端需要根据TS流的同步字节0x47,由外部逻辑合成这3个信号。
ASI传输流可以发送不同数据速率的Mpeg2数据,但传输速率恒定,为270Mbps。因此ASI可以发送和接收不同速率的Mpeg2数据。ASI传输系统使用分层结构描述,最高层、第2层使用MPEG-2标准ISO/IEC 13818-1,第0层和第1层是基于ISO/IEO CD 14165-1的FC纤维信道。FC支持多种物理传输媒介,本方案选用同轴电缆传输。
2.2 DVB-ASI信号发送系统结构
为了在编、解码器和传输设备之间能正确传递数据,本方案以FPGA(Altera公司的EP1C6T144C8)为核心器件,在SPI和ASI信号之间进行转换。原理如图1所示。其中,27MHz时钟作为系统时钟,为FIFO、8B10B编码和并串转换提供时钟源信号。由于SPI接口采用LVDS电平传输数据,从DB25-F头输入的并行信号,首先需要进行LVDS->TTL电平转换,得到SPI接口定义的DATA、PSYNC、DVALID和CLOCK并行信号。丢弃PSYNC和DVALID信号,将DATA和CLOCK信号直接连接到FIFO的输入端。外部逻辑控制着FIFO的读,从FIFO读出的数据送给8B10B编码模块进行编码转换,并以270Mbps的速率输出串行数据。其中,270MHz时钟由27MHz系统时钟通过锁相环产生。串行信号电气特性为差分的PECL电平,经过1:1的变压器隔离后,由BNC头输出。
图 1 SPI转ASI模块原理图
FIFO的写入时钟即为TS流的字节时钟CLOCK,而读出时钟为固定值27MHz。采用不同的FIFO读逻辑,可以产生突发或连续两种ASI输出模式。本方案中,FIFO、FIFO的读写控制逻辑、8B10B编码以及并串转换均由FPGA 实现,ASI输出为突发模式。
在ASI的编码过程中,只需将MPEG2的八位数据和一位TS码率传输时钟输入到FPGA。在本方案中,TS格式为188个字节,因此数据有效信号DVALID一直为高,FPGA忽略这个信号,只管接收TS码流数据,而不用关心TS码流的同步头。PSYNC帧同步信号则作为FIFO读入的控制信号。FPGA将接收到的数据以TS码率时钟写入FIFO,当FIFO半满时,FPGA接收到FIFO的半满信号,然后FIFO控制逻辑发出FIFO可读信号,编码模块以以27Mbps读取FIFO中的数据;当计数器计数到编码模块读取了一定数量(188个读FIFO信号周期)的FIFO数据,则发送FIFO不可读信号,防止FIFO读空。
在FIFO不可读时,向ASI码流中填充K28.5以维持270Mbps的固定传输速率。最后串行数据经过驱动就可用同轴电缆传送出去。本方案中,K28.5的插入方法选择在每个传输包前必须有至少两个同步字(K28.5字符),这符合ASI的传输规定。
3 系统各结构的实现方法
3.1 信号输入
在ASI的编码过程中,只需将Mpeg2传输流的八位数据和一位TS码率传输时钟输入到FPGA。在本方案中,TS数据通过富士通的专用ASIC芯片MB86391产生。由于控制MB86391产生的TS格式为188个字节,因此数据有效信号DVALID一直为高,FPGA忽略这个信号,只管接收码流数据,而不用关心TS码流的同步头。PSYNC帧同步信号也一样忽略,只是需要从帧同步信号拉高开始,FPGA将接收到的数据以TS码率时钟写入FIFO。
3.2 FIFO模块
FPGA在搜索到188字节包长的包头0x47后开始将数据写入FIFO,同时监测FIFO的半满信号HF, 若半满则将FIFO的读使能信号抬高, 而此时从FIFO读出数据给8B/10B编码模块完成编码。读数据时,由FPGA对FIFO的读信号的时钟脉冲计数,计到188个后,将FIFO的读使能拉低,并判断FIFO是否半满。此时FPGA将不再发出读FIFO信号, 而是在每个时钟的上升沿插入一个K28.5同步字, 待发现FIFO半满信号HF出现后, 再次将FIFO的读使能抬高,并保持188个读FIFO信号周期,如此反复。由于FPGA时钟引脚接一个27MHz的外部时钟, 而在每个时钟的上升沿, 不是输出正常数据就是同步字, 所以不管FIFO是否有数据提供给后端的8B/10B编码器,FPGA最终都将送出固定的270Mbps的串行数据,构成DVB-ASI的标准数据格式。
FPGA 编码器 解码器 Altera 变压器 仿真 ModelSim 显示器 VHDL 电路 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)