<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 科伟奇电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=506 </link><title>基于FPGA的视频传输流发送系统设计方案</title><author>冰雪</author><pubDate>2009/12/23 9:11:49</pubDate><description><![CDATA[<strong>1 引言</strong>
<p sizset="0" sizcache="2">　　在目前的广播电视系统中ASI接口是使用非常广泛的一种接口形式，该接口随同SPI一起被欧洲电信标准化协会（ETSI）制订，以使不同厂家生产的MPEG2单元可以方便地进行互联。本设计方案以FPGA为核心器件，制作出了SPI-ASI接口<nobr style="border-bottom: rgb(102,0,255) 1px dotted; background-color: transparent; color: #cb4bfc; cursor: pointer; text-decoration: underline" id="nobr180" jquery1260716040812="46">转换器</nobr>。这套方案成本较低，利用FPGA的可编程性，硬件的升级较容易。</p>
<p>　　<strong>2 系统结构和功能分析 </strong></p>
<p><strong>　　2.1 DVB－ASI介绍</strong></p>
<p sizset="1" sizcache="2">　　一般的Mpeg2编码器的输出和解码器的输入都是标准的并行11位信号，处理简单而且扩展性强，符合SPI（Synchronous Parallel Inte<nobr style="border-bottom: rgb(102,0,255) 1px dotted; background-color: transparent; color: #cb4bfc; cursor: pointer; text-decoration: underline" id="nobr84" jquery1260716040812="47">RF</nobr>ace）信号接口。传输SPI信号，在传输链路上是LVDS技术和25根管脚连接的，因此具有连线多、复杂，传输距离短，容易出现错误等缺点，而且，SPI的热插拔性能也较差。</p>
<p>　　ASI是个串行传输协议，TS流以串行的方式传输，为了保证接收端能正确恢复出TS流DATA数据，发送端需要插入同步字K28.5。ASI协议中没有PSYNC、DVALID和CLOCK信息，因此，在接收端需要根据TS流的同步字节0x47，由外部逻辑合成这3个信号。</p>
<p>　　ASI传输流可以发送不同数据速率的Mpeg2数据，但传输速率恒定，为270Mbps。因此ASI可以发送和接收不同速率的Mpeg2数据。ASI传输系统使用分层结构描述，最高层、第2层使用MPEG-2标准ISO/IEC 13818-1，第0层和第1层是基于ISO/IEO CD 14165-1的FC纤维信道。FC支持多种物理传输媒介，本方案选用同轴电缆传输。</p>
<p>　　<strong>2.2 DVB－ASI信号发送系统结构</strong></p>
<p>　　为了在编、解码器和传输设备之间能正确传递数据，本方案以FPGA（Altera公司的EP1C6T144C8）为核心器件，在SPI和ASI信号之间进行转换。原理如图1所示。其中，27MHz时钟作为系统时钟，为FIFO、8B10B编码和并串转换提供时钟源信号。由于SPI接口采用LVDS电平传输数据，从DB25-F头输入的并行信号，首先需要进行LVDS-&gt;TTL电平转换，得到SPI接口定义的DATA、PSYNC、DVALID和CLOCK并行信号。丢弃PSYNC和DVALID信号，将DATA和CLOCK信号直接连接到FIFO的输入端。外部逻辑控制着FIFO的读，从FIFO读出的数据送给8B10B编码模块进行编码转换，并以270Mbps的速率输出串行数据。其中，270MHz时钟由27MHz系统时钟通过锁相环产生。串行信号电气特性为差分的PECL电平，经过1:1的变压器隔离后，由BNC头输出。</p>
<p align="center"><img style="letter-spacing: normal" border="0" hspace="0" alt="SPI转ASI模块原理图 " src="/uploadfile/FPGA/uploadfile/200912/20091213105522433.jpg" width="450" height="143" /></p>
<p align="center">图 1 SPI转ASI模块原理图</p>
<p>　　FIFO的写入时钟即为TS流的字节时钟CLOCK，而读出时钟为固定值27MHz。采用不同的FIFO读逻辑，可以产生突发或连续两种ASI输出模式。本方案中，FIFO、FIFO的读写控制逻辑、8B10B编码以及并串转换均由FPGA 实现，ASI输出为突发模式。</p>
<p>　　在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读空。</p>
<p>　　在FIFO不可读时，向ASI码流中填充K28.5以维持270Mbps的固定传输速率。最后串行数据经过驱动就可用同轴电缆传送出去。本方案中，K28.5的插入方法选择在每个传输包前必须有至少两个同步字（K28.5字符），这符合ASI的传输规定。
<script type="text/javascript">
function ImgZoom(Id)//重新设置图片大小 防止撑破表格
{
var w = $(Id).width;
var m = 650;
if(w < m){return;}
else{
var h = $(Id).height;
$(Id).height = parseInt(h*m/w);
$(Id).width = m;
}
}
window.onload = function()
{
var Imgs = $("content").getElementsByTagName("img");
var i=0;
for(;i<Imgs.length;i++)
{
ImgZoom(Imgs[i]);
}
}
       </script>
</p>
<p>　　<strong>3 系统各结构的实现方法 </strong></p>
<p><strong>　　3.1 信号输入</strong></p>
<p>　　在ASI的编码过程中，只需将Mpeg2传输流的八位数据和一位TS码率传输时钟输入到FPGA。在本方案中，TS数据通过富士通的专用ASIC芯片MB86391产生。由于控制MB86391产生的TS格式为188个字节，因此数据有效信号DVALID一直为高，FPGA忽略这个信号，只管接收码流数据，而不用关心TS码流的同步头。PSYNC帧同步信号也一样忽略，只是需要从帧同步信号拉高开始，FPGA将接收到的数据以TS码率时钟写入FIFO。</p>
<p>　　<strong>3.2 FIFO模块</strong></p>
<p>　　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的标准数据格式。</p>
<p>　　<strong>3.3 8B/10B编码模块</strong></p>
<p>　　8B/10B编码模块是ASI接口转换的核心之一。DVB-ASI数据编码层的传输规约包括串行编码规则、专用字符和差错控制。它采用DC平衡的8B/10B传输码。这种码把每一个8bit数据字节变换成符合直流平衡特性的10bit码字。这种码通过无效传输码点和&ldquo;运行&rdquo;的不均衡性来提供差错校验。作为超出对数据字节进行编码需要的额外码点,规定了专用字符。</p>
<p>　　系统以字节同步的方式接收MPEG-2传送包,接收的参考时钟是采用固定的27MHz的时钟频率。接着,对字节进行8B/10B编码,对出现的每一个8bit字节产生一个10bit的字,使这些10bit字通过以固定输出比特率270Mbps工作的并/串转换。</p>
<p>　　将8B/10B编码划分为3个模块实现,较好地反映了8B/10B编码的特点,实现流程清楚,容易编写代码。具体实现步骤为: ① 判断是特殊字符还是数据; ② 若是特殊字符（3B4B）,根据RD极性直接取值; ③ 若是数据,根据RD极性和前一个10bit模块的编码情况确定当前6 bit的取值; ④ 根据当前6 bit编码值确定当前4 bit的编码取值。⑤ 将当前6 bit编码和当前4bit编码组成当前10bit编码输出。</p>
<p>　　<strong>3.4 并串转换模块</strong></p>
<p>　　在完成8B10B编码以后，将信号送至并串转换模块转换为串行数据流，通过270MHz时钟将串行信号送出，ASI接口采用两线差分方式进行串行数据传输。
<script type="text/javascript">
function ImgZoom(Id)//重新设置图片大小 防止撑破表格
{
var w = $(Id).width;
var m = 650;
if(w < m){return;}
else{
var h = $(Id).height;
$(Id).height = parseInt(h*m/w);
$(Id).width = m;
}
}
window.onload = function()
{
var Imgs = $("content").getElementsByTagName("img");
var i=0;
for(;i<Imgs.length;i++)
{
ImgZoom(Imgs[i]);
}
}
       </script>
　<strong>4 测试结果</strong></p>
<p>　　首先对ASI发送系统进行功能仿真，仿真平台为ModelSim6.0，本设计中，ASI发送系统的输入输出的仿真波形如下图所示：</p>
<p align="center"><img style="letter-spacing: normal" border="0" hspace="0" alt="ASI发送系统的仿真波形" src="/uploadfile/FPGA/uploadfile/200912/20091213105523805.jpg" width="486" height="120" /></p>
<p align="center">图 2 ASI发送系统的仿真波形</p>
<p>　　仿真结果表明，输入信号与编码信号之间顺序相差一个码元周期，输出抖动被完全消除。</p>
<p sizset="0" sizcache="2">　　本文中的ASI接口测试由Honeywell公司的摄像头、自行研制的MPEG2编码板(视频压缩芯片为MB86391)、MPEG2解码器、<nobr style="border-bottom: rgb(102,0,255) 1px dotted; background-color: transparent; color: #cb4bfc; cursor: pointer; text-decoration: underline" id="nobr83" jquery1260716101578="45">显示器</nobr>构成，如图3所示。</p>
<p align="center"><img style="letter-spacing: normal" border="0" hspace="0" alt="系统组成" src="/uploadfile/FPGA/uploadfile/200912/20091213105523698.jpg" width="206" height="183" /></p>
<p align="center">图 3 系统组成</p>
<p>　　ASI发送测试为：Honeywell公司的摄像头和自行研制的MPEG2编码板输出符合MPEG2标准的TS流,通过标准SPI口送给本文的ASI转换系统的SPI输入，而经SPI到ASI的转换，通过BNC接头的有线电缆送给解码器的ASI口输入，解码后的视频输出送给显示器,连续播放数十小时，图像清晰且显示正常无误。</p>
<p>　　实验结果证明，采用本文方法设计的ASI发送系统，符合标准ASI接口规范，能有效可靠的实现SPI－ASI的编码功能和高速串行数据流的发送功能。</p>
<p>　<strong>　5 结语</strong></p>
<p>　　本文作者创新点: 在分析ASI发送系统机理的基础之上，提出一种使用FPGA完成ASI发送系统的实现方案，并使用VHDL语言在Altara的FPGA上实现了硬件电路，仿真结果和实际测试完全正确。该方案层次分明、结构简洁、编码速度快、输出抖动小，与现有的使用专用芯片CY7B923的方法相比，具有更大的灵活性，为高速ASI数传的应用前端提供了条件。</p>]]></description></item></channel></rss>