当前位置:首页 > 通信技术 > 通信技术
[导读]摘要:介绍一种基于M642的视频无线传输系统,在此基础上重点探讨了关于TS流传输的问题,提出了使用McBSP和GPIO方式分别实现TS流传输,并给出了一种改进的乒乓方式。实验结果证明,采用McBSP和GPIO都可以解决TS流传输

摘要:介绍一种基于M642的视频无线传输系统,在此基础上重点探讨了关于TS流传输的问题,提出了使用McBSP和GPIO方式分别实现TS流传输,并给出了一种改进的乒乓方式。实验结果证明,采用McBSP和GPIO都可以解决TS流传输问题,但在速度和实现难度方面采用GPIO表现更好,改进型的乒乓结构也在一定程度上提高了程序的效率。
关键词:TS流传输;DM642;视频无线传输系统;EDMA;McBSP;GPIO

引言
    无线通信技术因其免去了使用实体接线,为生活带来诸多便利,因此受到广大消费者的青睐。其中短距离无线通信技术作为无线通信的一个发展趋势,越来越受到人们的关注。数字图像信息及其处理技术正在发挥着越来越重要的作用,在人们生活中的地位也将越来越高。原来的民用设计普遍采用ASIC方式,如STi5517、STi5518等,但由于禁运等原因无法达到工业级及以上的标准。本设计采用的DM642和FPGA灵活性高,升级优化方便,且达到了工业级等级以上。本文主要介绍TS流传输的新方式,实现信源板中TS流实时传输到信道板上。

1 简介
1.1 基于DVB-T无线视频传输系统
    无线视频传输系统的硬件实现框图如图1所示。本系统硬件分为4个组成部分:信源编码部分、信道编码调制部分、射频部分和接收机部分。


    摄像头采集视频信号,并输出PAL制的模拟电视信号。视频解码器将AV视频信号数字化和解码,转化为YUV(4:2:2)格式输出。TMS320DM 642将原始视频以MPEG-2格式进行编码,并且将编码数据封装为TS数据流。TS数据流以SPI并行数据格式传递给信道解码部分。
    信道编码部分通过FPGA(EP3C55F484)对数据进行DVB-T编码和中频调制,调制信号经过模拟上变频完成射频调制。
    接收机部分通过接收射频信号并对其进行模拟下变频,提取出感兴趣的中频信号,利用信道解调器对其进行信道解码。解码后的信源数据流以TS流格式传送给TMS320DM642处理器。处理器先进行TS解包,再对MPEG-2数据流解压缩。根据系统不同设置,可以通过PCI接口发送至PC端进行后端数据处理,或通过视频编码器将视频信号还原为模拟电视信号。
1.2 传送流(TS流)
    TS流是由打包的视频、音频基本码流再经过打包形成的复合码流,每包长度为188字节,或由PS流分段截取,适用于误码较大的应用环境。传送流的系统层可分作两个子层:一个是相应于特定数据流操作(PES分组层,可变长度),该层是为编解码的控制而定义的逻辑结构,
PES头包括流的性质、版权说明(该节目是原始节目还是复制节目)、加入时间标签PTS和DTS、说明DSM的特殊模式等;另一个是相应于多路复用操作(TS分组层,188字节固定长度结构),该层是针对交换和互操作而定义的,在TS头中加入同步、说明有无差错、有无加扰,加入连续计数和不连续性指示(因为节目流的包相互交叉),加入节目参考时钟PCR以及包识别PID等。两个子层间的复用关系是将PES结构切割成一个个小包,作为TS包的净荷嵌入到TS流结构中而建立起来的,这种结构可以很方便地实现直接从传送流中解出原始音视频数据,也可从一个或多个传送流中抽取想要的基本流来进行解码,或构造新的传送流再次传输,还可以依据通信信道的质量在TS流与PS流间作切换。
1.3 数据在DM642接口的传输
    I2C总线传输为140kb/s,速度慢,接口简单,适合于各种芯片参数的配置或EEPROM访问等数据量小的通信。视频口传输为27M×20b/  s,数据较快,接口复杂,功能单一,一般只用于DSP与视频编/解码器之间的视频数据传输。网口传输为10M/100M,通信协议复杂,若用FPGA实现,则接口也复杂,适合于DSP与PC机间的数据传输。McBSP传输为40 Mb/s,如果用FPGA实现接口较为简单,适合于DSP与FPGA低速数据传输。GPIO传输为10M×n,n是GPIO的引脚数目,接口极其简单,传输速度较快。如DM6437共有111个GPIO引脚,若用3个32位的GPIO则可达到960 Mb/s。即使用1个32位的GPIO bank也可以达到320 Mb/s,能够满足一般的数据传输需求。DM642有16个GPIO口,速度也可达到160 Mb/s,满足设计要求。图2即是GPIO方式传输TS流需要的时序。


    如果利用任务或中断的方式传输数据,因为数据量大,势必增加CPU的负担,这种负担很有可能是CPU无法承受的。例如使用任务来传输,若数据为8 MB/s,则这个任务占用CPU 80%的时间,这是本应该占据大部分时问的图像压缩算法无法忍受的,并且时常可能被突如其来的中断打断而丢失数据。若利用中断来同步传输,而使CPU大部分时间在中断中,亦是不现实的。这里采用DSP中的增强型的DMA模块(EDMA),在CPU不参与的情况下完成数据传输,只有传输完成才进入中断,如此则解放出CPU,以使算法占用它。

2 TS流传输实现
2.1 McBSP实现
    McBSP由数据通道和控制通道组成,可以与外部设备连接,进行数据通信。数据的接收与发送分别工作于不同的引脚上,因此数据通信是全双工的。其他的4个引脚用于传输控制信号(时钟和同步信号)。
    这里采用EDMA进行McBSP与存储器缓冲区之间的数据搬运。EDMA控制器读取从外部设备接收到并保存在DRR(数据接收寄存器)的数据,或者将需要向外部设备发送的数据写入DXR(数据发送寄存器)。被写入DXR的数据经过XSR被移出到DX脚上。同理,接收的数据先被移入RSR,然后被拷贝到RBR,最后再被拷贝到DRR,这时就允许被EDMA访问了。McBSP中内部数据的移出和外部数据的移入可以同时发生,即可以进行全双工的数据通信。
    以EDMA接收数据的配置为例,配置参数RAM。EDMA通道接收数据源地址为McBSP0的DRR寄存器,地址计数模式为不变模式。设置EDMA通道接收数据目的地址为DSP片内存储区PingBuffer首地址,确保第一次传输数据是到PingBuffer,地址计数模式同样为递增模式。配置源地址计数索引值,由于源地址为McBSP0的DRR寄存器,固定不变;配置目的地址计数索引值,由于接收数据为32位,所以srcBidx=srcCidx=4,这是因为DSP内的最小计数单元为1个字节,8bits;配置剩余的参数RAM传输参数,包括设置ACNT=4,BCNT=2 048,CCNT=1,采用一维传输A-SYN C。
    接下来是ping-pong传输的程序实现。替ping-pong各自分配1个通道,于是一共有3个通道,对应3个参数RAM。ping通道的参数RAM与主通道的参数RAM完全一致,pong通道的参数RAM与主通道相比,只需将pong通道接收数据目的地址改为PongBuffer首地址。随后调用EDMA_link三次,分别将主通道和ping通道连接,ping通道和pong通道相互连接。EDMA中断设置与GPIO输出任务一样。
2.2 GPIO实现
    TS流输出任务采用1D到1D的传输模式。SUM=01,DUM=00,即源地址是188字节的Buffer,目的地址是GPIO[8:15]对应的寄存器,GP4的外部触发EDMA传输,传输188字节产生1次EDMA中断。队列优先级设置为紧急,来保证时序。以EXTINT5为EDMA触发事件:

    pong的参数RAM设置类似,只要将源地址改为pong,并将重载的参数RAM地址改为edmacfg_pong即可。
    DM642中,EDMA的64个通道只产生一种中断。当一个通道传输完成后,IPR(Interrupt Pending Register)寄存器里的相应位会被置1,EDMA中断处理器通过查询IPR寄存器,确定是哪个通道完成了传输,并调用相应的中断服务程序,即tccCb(回调函数,即通道传输完成后所调用的中断服务程序)。tccCb=edma_isr,该函数的作用是当一个接收Buffer被填满时,在通道传输完成后发送一个旗语信号给信号处理程序,通知其对收到的数据进行处理。参数RAMOPT中TCINTEN位置1,以使能EDMA中断。随后,利用DSP/BIOS将EDMA中断源和DSP的可屏蔽中断5连接起来。编写相应通道的EDMA中断程序,传输完一个TS包后,检查是否1帧图像的TS流传完,用以生成数据有效信号(Dvalid),通知接收方哪些是有用数据。由于选用了DM642的可屏蔽中断5,还需使能IER寄存器里的对应位。
    TS流输入则只需要将SUM=00,DUM=01,目的地址和源地址交换,再将EDMA中断程序中目的地址变更到188字节后的地址。采用GP4作EDMA同步事件(即SPI时钟),GPIO[8:15]作数据输入,GP7作同步,采用GP6作外部中断,用作数据有效线。在外部中断中重载,在传输完成中断中改变目的地址。如此则可顺利接收到TS流。


    采用Link的ping-pong方式,利用两个参数RAM反复转载得到TS流的数据:在此采用的双缓冲结构,即在DSP缓冲区内开辟两块缓冲用于并行处理FPGA通过McBSP传过来的数据。当EDMA往PingBuffer里传输数据时,CPU即可处理PongBuffer里的数据。当工作完成后,彼此交换缓冲区,EDMA往PongBuffer里写数据,CPU处理PingBuffer里的数据。为了实现双缓冲结构,采用了EDMA提供的Link功能,如图3所示,即将不同的EDMA传输参数RAM连接起来,组成一个传输链。在传输链中,一个传输的结束会导致自动从参数RAM中装载下一个传输需要的事件参数。在具体程序中,只需将ping通道的参数RAM连接到pong通道,同时将pong通道的参数RAM连接到ping通道即可。
2.3 ping-pong操作的改进
    由于原来程序McBSP通过EDMA传输到ping或pong中,在EDMA传输完成中断的过程中还需要复制数据(memcpy)到公共缓冲区。复制数据是一个很费时的过程,但程序不宜停留在中断的时间过长,故而希望EDMA能直接传到公共缓冲区中。


    如图4所示,在建立McBSP和EDMA通信时,将ping目的地址改变成公共缓冲池的首地址,将pong目的地址变为缓冲池下一个缓冲区的首地址。再在EDMA传输完成中断的过程中改变上一次用的PaRAM的目的地址,即ping完成,则中断改变ping的目的地址。这样对原程序改变较小,并且占用的参数RAM也较少。但要求ping,pong通道必须处在同一优先级队列中。当重新转载其中一个时,才不会影响另一个通道。

3 测试结果
    图5是用连续自增的数在32 Mb/s的速度下以McBSP方式在FPGA的SignalTap II中看到的时序。


    图6是时钟为9 MHz时TS输出任务在FPGA的SignalTap II中看到的TS流时序。实测中,输入任务在接收板DSP接收到TS流数据,数据率为9 MB/s,数据有效(Dvalid)上升沿来时,得同步头0x47。
    TS流在SDRAM存放的基地址为0x804DBC88,前4个字节(即0x47 0x40 0x45 0x10)是TS包的包头,从包头的定义规范可以看到,第1个字节0x47为TS包的同步字节;第2个字节0x40说明这个TS包包含1个PES包的包头,它传输的优先级为0级,在这个包中不存在传输错误;第2个字节和第3个字节表明这个TS包的PID是0x45,是这个设计中的视频包的PID;第4个字节说明在这个TS包中仅有有效载荷,没有自适应区。188字节后再次出现同步字节0x47,0x00表示不是第1个TS包,PID也是0x45。再过188个字节还是同步字节0x47。可见,TS流的输入输出任务都较好地实现了它们的功能。

结语
    本文介绍了一种基于DM642和EP3C55F484的无线视频传输系统的实现方式,并就TS流传输进行了讨论。测试结果证明,项目中提出的McBSP和GPIO结合EDMA方式都成功实现了TS流的输入和输出传输,GPIO方式速度较快,信道中直接采用GPIO的方式要比模拟McBSP接口简单得多,并用改进的乒乓方式提高程序运行效率。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

但是,请注意,当从axi4流广播器输出时,它必须连接到axi4流数据FIFO;否则,不输出任何数据。这主要是因为后续IP需要等待所有接口断言tvalid,而S00接口不是这种情况。欲了解更多详细信息,请参阅赛灵思的官方解...

关键字: 过滤器 GPIO PYNQ-Z2板

在量产项目中,确保所有硬件和软件组件按预期运行是至关重要的。然而,当遇到如GPIO(通用输入输出)引脚电压异常的问题时,一个系统化的诊断流程是必不可少的。本文将详细讨论在项目中遇到某GPIO引脚偶尔出现3V毛刺(而设计应...

关键字: GPIO PCB

新竹2025年1月8日 /美通社/ -- 全球领先的硅智财供应商——円星科技(M31 Technology,以下简称"M31")与苏州国芯科技股份有限公司...

关键字: GPIO 芯科 先进制程 电子芯片

在这篇文章中,小编将对钳位二极管的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: 二极管 箝位二极管 GPIO

GPIO是通用输入输出端口的简称,也是CKS32可控制的引脚,CKS32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

关键字: GPIO CKS32 芯片

GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。但是在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)。

关键字: GPIO 漏极开路 推挽

在嵌入式系统设计中,微控制器(MCU)的启动过程是一个复杂而精细的过程,涉及到多个电源域和信号的时序控制。近期,有开发者在设计双MCU系统时遇到了一个令人困惑的问题:当某个GPIO(通用输入输出)端口先于MCU核心上电时...

关键字: GPIO MCU 嵌入式系统

在浩瀚的电子科技海洋中,GPIO(General Purpose Input/Output)作为一个基础而强大的概念,始终扮演着连接微控制器与物理世界的桥梁角色。它不仅仅是一组简单的引脚,更是赋予电子设备感知与响应能力的...

关键字: GPIO 接口 微控制器

串口不像其它的一些协议,有自己的数据线(SDA)与时钟线(CLK),通信双方可以按照时钟线上升或下降的不同状态来进行数据的收发。串口的通信全靠内部的一个波特率发生器来指挥数据的运输。

关键字: MCU GPIO

在这篇文章中,小编将为大家带来GPIO的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: GPIO 电路图 推免输出
关闭