当前位置:首页 > 电源 > 数字电源
[导读]摘要:介绍一种基于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,以使算法占用它。
[!--empirenews.page--]

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流。[!--empirenews.page--]


    采用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通道即可。[!--empirenews.page--]
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接口简单得多,并用改进的乒乓方式提高程序运行效率。

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

GPIO全称General Purpose Input Output即通用输入/输出,其实GPIO的本质就是芯片的一个引脚,通常在ARM中所有的I/O都是通用的。不过由于每个开发板上都会设计不同的外围电路,这就造成GPI...

关键字: GPIO 芯片

Q:如果系统中的FPGA/微处理器上只剩下一个GPIO,该如何进行模拟测量?A:可以使用电压-频率转换器代替模数转换器。在关注机器健康和其他物联网(IoT)解决方案的现代应用中,随着检测功能的日趋普及,对更简单的接口以及...

关键字: GPIO 测量温度 数字接口 ADC

固定点的图像监控传输系统无线图像传输系统从应用层面来说分为两大类,一是固定点的图像监控传输系统,二是移动视频图像传输系统。

关键字: 无线图像传输 移动视频 固定点视频

作 者:道哥,10年嵌入式开发老兵,专注于:C/C、嵌入式、Linux。关注下方公众号,回复【书籍】,获取Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章(PDF格式)。目录示例程序目标编写驱动程序编写应...

关键字: GPIO 编写 驱动程序

击上方“程序员小哈”,选择“星标公众号”干货福利,第一时间送达!大家好,我是程序员小哈。今天给大家分享一下GPIO基础,参考资料:STM32F1xx官方资料:《STM32中文参考手册V10》-第8章通用和复用功能IO(G...

关键字: GPIO

你是否遇到过某个MCU串口不够的情况? 这时我们可以考虑用GPIO去模拟,如何具体实现呢?首选我们需要了解串口的传输协议,UART使用异步模式工作,不需要时钟信号,其一般格式为:起始位数据位校验位停止位。其中起始位1位,...

关键字: GPIO IO模拟

摘要:随着DSP技术的发展、宽带网络的普及和国际视频编码标准的不断更新,通过网络进行视频信号的实时传输已经成为多媒体技术领域的一个重要研究方向。文中设计了一种基于TMS320DM642核心处理器的实时网络视频监控平台。详...

关键字: 物联网 DM642 网络传输 视频采集

关于GPIO,先来看个笑话 面试官:“听说过GPIO么?” 工程师:“听说过,经常用。” “GPIO是什么?“” “。。。。。。GPIO就是GPIO啊。。。” “GPIO有什么用?” “。。。。。。不知道。。。” “好了...

关键字: GPIO

GPIO口的定义: GPIO口,通用输入输出,这个大家都知道,但是输入,输出的电路是什么样的,其实并不用太关心,只需配置寄存器即可,但是还是要摸一摸,为了方便理解,引入了单片机的IO口原理图来说明(道理是一样的)。 认识...

关键字: GPIO 上拉电阻 电路图

GPIO口的定义: GPIO口,通用输入输出,这个大家都知道,但是输入,输出的电路是什么样的,其实并不用太关心,只需配置寄存器即可,但是还是要摸一摸,为了方便理解,引入了单片机的IO口原理图来说明(道理是一样的)。 认识...

关键字: GPIO 上拉电阻
关闭
关闭