基于FPGA的视频传输流发送系统设计
发布时间:2008/8/28 0:00:00 访问次数:546
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头输出。
fifo的写入时钟即为ts流的字节时钟clock,而读出时钟为固定值27mhz。采用不同的fifo读逻辑,可以产生突发或连续两种asi输出模式。本方案中,fifo、fifo的读写控制逻辑、8b10b编码以及并串转换均由fpga 实现,asi输出为突发模式。
图 1 spi转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最终都将送出固定的
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头输出。
fifo的写入时钟即为ts流的字节时钟clock,而读出时钟为固定值27mhz。采用不同的fifo读逻辑,可以产生突发或连续两种asi输出模式。本方案中,fifo、fifo的读写控制逻辑、8b10b编码以及并串转换均由fpga 实现,asi输出为突发模式。
图 1 spi转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最终都将送出固定的
上一篇:内存技术资料大全