0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于VHDL语言用FPGA制作SPI-ASI接口转换器

FPGA设计论坛 2023-10-18 12:13 次阅读

本文在分析ASI发送系统机理的基础之上,提出一种使用FPGA完成ASI发送系统的实现方案,并使用VHDL语言在Altara的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输出为突发模式。

wKgaomUu-VaAQtQMAAAiCAb7WnY513.jpg

图 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最终都将送出固定的270Mbps的串行数据,构成DVB-ASI的标准数据格式。

3.3 8B/10B编码模块

8B/10B编码模块是ASI接口转换的核心之一。DVB-ASI数据编码层的传输规约包括串行编码规则、专用字符和差错控制。它采用DC平衡的8B/10B传输码。这种码把每一个8bit数据字节变换成符合直流平衡特性的10bit码字。这种码通过无效传输码点和“运行”的不均衡性来提供差错校验。作为超出对数据字节进行编码需要的额外码点,规定了专用字符。

系统以字节同步的方式接收MPEG-2传送包,接收的参考时钟是采用固定的27MHz的时钟频率。接着,对字节进行8B/10B编码,对出现的每一个8bit字节产生一个10bit的字,使这些10bit字通过以固定输出比特率270Mbps工作的并/串转换。

将8B/10B编码划分为3个模块实现,较好地反映了8B/10B编码的特点,实现流程清楚,容易编写代码。具体实现步骤为:① 判断是特殊字符还是数据; ② 若是特殊字符(3B4B),根据RD极性直接取值; ③ 若是数据,根据RD极性和前一个10bit模块的编码情况确定当前6 bit的取值; ④ 根据当前6 bit编码值确定当前4 bit的编码取值。⑤ 将当前6 bit编码和当前4bit编码组成当前10bit编码输出。

3.4 并串转换模块

在完成8B10B编码以后,将信号送至并串转换模块转换为串行数据流,通过270MHz时钟将串行信号送出,ASI接口采用两线差分方式进行串行数据传输。

4 测试结果

首先对ASI发送系统进行功能仿真,仿真平台为ModelSim6.0,本设计中,ASI发送系统的输入输出的仿真波形如下图所示:

wKgaomUu-VeASs3zAAAxQ_3S4qY255.jpg

图 2 ASI发送系统的仿真波形

仿真结果表明,输入信号与编码信号之间顺序相差一个码元周期,输出抖动被完全消除。

本文中的ASI接口测试由Honeywell公司的摄像头、自行研制的MPEG2编码板(视频压缩芯片为MB86391)、MPEG2解码器、显示器构成,如图3所示。

wKgaomUu-VeAGgitAAAd2ihbnYc033.jpg

图 3 系统组成

ASI发送测试为:Honeywell公司的摄像头和自行研制的MPEG2编码板输出符合MPEG2标准的TS流,通过标准SPI口送给本文的ASI转换系统的SPI输入,而经SPI到ASI的转换,通过BNC接头的有线电缆送给解码器的ASI口输入,解码后的视频输出送给显示器,连续播放数十小时,图像清晰且显示正常无误。

实验结果证明,采用本文方法设计的ASI发送系统,符合标准ASI接口规范,能有效可靠的实现SPI-ASI的编码功能和高速串行数据流的发送功能。

5 结语

本文作者创新点:在分析ASI发送系统机理的基础之上,提出一种使用FPGA完成ASI发送系统的实现方案,并使用VHDL语言在Altara的FPGA上实现了硬件电路,仿真结果和实际测试完全正确。该方案层次分明、结构简洁、编码速度快、输出抖动小,与现有的使用专用芯片CY7B923的方法相比,具有更大的灵活性,为高速ASI数传的应用前端提供了条件。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601665
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1700

    浏览量

    91291
  • ASI
    ASI
    +关注

    关注

    0

    文章

    10

    浏览量

    16654
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    128073
  • 接口转换器
    +关注

    关注

    0

    文章

    35

    浏览量

    8247

原文标题:如何利用FPGA制作出SPI-ASI接口转换器?

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA配置lmk04616,如果用电平转换连接lmk04616的spi数字接口1.8V管脚,什么转换器合适?

    我现在用FPGA配置lmk04616,但是我的bank电平是3.3V,请问如果用电平转换连接lmk04616的spi数字接口1.8V管脚,
    发表于 11-08 12:58

    DVB-C视频传输接口ASI的设计方法

    和视频解码的输入都是标准的并行11位信号。ASI串行传输,只需一根同轴电缆线传输,连线简单,传输距离长。根据SPIASI的优缺点,需要
    发表于 09-26 17:58

    FPGA设计实例】基于FPGASPI接口应用

    ;quot;,意为串行外围接口,是Motorola首先在其MC68HCXX系列处理上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD
    发表于 03-26 15:47

    双向数据转换器VHDL程序设计

    控制。为了使微控制的数据总线(8位)与SDRAM控制的数据总线(32位)相匹配,利用VHDL语言实现8位到32位的双向数据
    发表于 05-08 06:18

    DVB-C视频传输接口ASI的实现

    信号。ASI串行传输,只需一根同轴电缆线传输,连线简单,传输距离长。根据SPIASI的优缺点,需要传输信号的SPI
    发表于 12-07 10:33

    SPIASI接口

    一般的MPEG2视频编码的输出和视频解码的输入都是标准的SPI接口信号。ASI串行传输,只
    发表于 12-11 11:05

    如何实现了SPIASI的相互转换

    如何实现了SPIASI的相互转换
    发表于 06-08 06:32

    如何利用FPGA制作SPI-ASI接口转换器

    本文在分析ASI发送系统机理的基础之上,提出一种使用FPGA完成ASI发送系统的实现方案,并使用VHDL语言在Altara的
    发表于 06-08 06:59

    VHDL语言FPGA/CPLD开发中的应用?

    【摘 要】 通过设计实例详细介绍了VHDL(VHSIC Hardware DescriptionLanguage)语言开发FPGA/CPLD的方法,以及与电路图输入和其它HDL
    发表于 05-10 19:47 1174次阅读
    <b class='flag-5'>VHDL</b><b class='flag-5'>语言</b>在<b class='flag-5'>FPGA</b>/CPLD开发中的应用?

    采用CPLD/FPGAVHDL语言电路优化原理设计

    采用CPLD/FPGAVHDL语言电路优化原理设计 VHDL(Very High Speed Integrated Circuit Hardware Description Lan
    发表于 03-19 11:38 2476次阅读
    采用CPLD/<b class='flag-5'>FPGA</b>的<b class='flag-5'>VHDL</b><b class='flag-5'>语言</b>电路优化原理设计

    VHDL/VerilogHD语言开发PLD/FPGA的完整流程

    VHDL /VerilogHD语言开发PLD/ FPGA 的完整流程为: 1.文本编辑:任何文本编辑
    发表于 05-21 12:58 1278次阅读

    FPGA模拟VGA时序PS_2总线的键盘接口VHDL源代码

    Xilinx FPGA工程例子源码:FPGA模拟VGA时序PS_2总线的键盘接口VHDL源代码
    发表于 06-07 15:11 33次下载

    fpga什么编程语言_fpga的作用

    经常看到不少人在论坛里发问,FPGA是不是C语言开发的?国外有些公司专注于开发解决编译这方面问题,目的让其能够达到C
    发表于 07-29 16:37 2.4w次阅读

    如何使用RS232转SPI实现串口和SPI接口转换

    通过使用专门的转换器来完成,这些转换器将串口数据转换SPI数据,实现串口和SPI协议之间的交互。本文将详细介绍如何使用RS232转
    的头像 发表于 09-14 17:52 2026次阅读

    fpga的是什么编程语言 fpga什么语言开发

    fpga的是什么编程语言 FPGA(现场可编程逻辑门阵列)主要使用的编程语言是硬件描述语言(H
    的头像 发表于 03-14 17:09 3297次阅读