摘要:在概述MPEG-2传送流(TS)语法规范的基础上,给出了用ADSP-2181 数字信号处理器和MC68302微控制器实现传送复用器的设计方案和实现技术。该方法是在MC68302的控制下,用DSP查询复用器各输入FIFO的状态,根据各FIFO的状态读入数据,完成音频、视频的均匀打包。
关键词:MPEG-2编码传输系统 传送复用器 TS流 打包
当今世界正在向数字化方向发展,电视信号的数字编码、数字化存储、数字化传输、数字化处理在我们的现实世界中已经变得越来越广泛。电视系统的全面数字化给节目制作和传输都带来了革命性的变化。随着码率压缩技术的突破和MPEG标准的建立,从演播室到发射整个系统的各个方面正处于全面数字化的进程中。MPEG-2编解码传输系统是目前解决演播室节目制作和传输的主流产品。
MPEG-2编码传输系统由音、视频编码器(包括音、视频原始流的分组基本流打包)、传输流系统复用器、网络适配器等组成,如图1所示。
复用器是整个系统的关键设备之一,它接收前端多套节目编码器来的视频、音频压缩数据流,按照一定的复用策略将其交织复用成符合MPEG-2系统层规范的单一的系统码流(传输流)。为实现一套节目音频、视频的解码同步,在码流中需插入各种时间标记、系统控制等信息。最后送到网络适配器或者信道调制设备,得到与传输信道相匹配的标准输出码流后,送往信道。复用器还提供整个编码系统的系统时钟。
本文复用器的设计是在MPEG-2音/视频国际标准的第一部分ISO/IEC13818-1系统层语法规范的基础上,采用ADSP-2181信号处理器芯片和MOTOROLA的微处理器MC68302实现的。
1 复用器的设计
1.1 ISO/IEC 13818-1传送层语法结构
复用器以MPEG-2系统规范为基础,对于地面广播方式,复用器按传输流(TS)格式打包。TS包的长度固定为188字节,传送层采用固定字长数据包的优点在于为以后新业务的创立提供了灵活性,新增的比特流可以直接在传送层处理而无需增加硬件。数据包字头信息中采用数据包标识(PID)作为比特流的识别工具,因此可以将视频、音频和其它数据混合在一起。经网络适配器后,得到具有G.703标准的码流,以便在类似SDH多路复用的环境中进行数据的发送;同时也有利于抗信道误码和误码后的恢复。
传送层的语法结构如图2所示。188字节长度的TS包由4字节的链接字头、可变长字节的自适应字头以及有效数据负荷组成。每个TS包的字头信息鉴别一种应用比特流,它们构成TS包的负荷,支持的应用包括视频、音频、数据、节目流和系统控制信息等。
1.2 多路复用流语意的限制
(1)节目参考时钟PCR的编码频率
打包时,TS流的构造应使得含有每一节目的PCR-PID的TS流分组中连续出现program_clock_reference字段最后一位的字节间隔应小于等于0.1s。
(2)显示时间标签的编码频率
对每一个原始视频或音频流来说,传送流的结构应使编码的显示时间标签的最大差值为0.7s,也就是
│tPnk-tPnk’’│≤0.7s
(3)在传送流中,音频采样速率和系统目标解码器的系统时钟频率之间有特定的比例关系,而且视频图象速率和系统时钟频率之间也有特定的比例关系。
2 ADSP-2181的性能
数字信号处理器(DSP)具有速度快、运算能力强、花费低、可扩展和集成度高等优良特性,这就使得我们在选择内嵌环境下工作的信号协处理器时,能够提供非常强大且灵活的系统,并且价格非常合理。
本文采用AD公司的ADSP-2181 数字信号处理器,它具有以下主要性能:
·25ns的单周期指令执行时间
·片内16K字程序存储器PRAM;片内16K字数据存储器DRAM
·三个独立的计算单元ALU、乘法/累加器和桶形移位器
·两个独立的地址发生器
·强有力的程序定序器
·循环无额外时钟开销
·条件算术指令
·具有压扩硬件和自动数据缓冲的两个双缓冲串行口
·可编程的内部定时器
·可编程的等待状态发生器
·16比特内部DMA口可快速访问片内存储器
·具有2048个存储单元的I/O口支持并行的外围设备
·13个可编程的标志管脚可提供灵活的系统信令
·EPROM的自动引导或通过内部DMA口自动引导
这些特点使得它只需最小的外部支持环境就可以工作。
用ADSP-2181实现压缩的音、视频的传输流打包时,如果视频编码器以8Mbps的速率输出压缩的视频流,存于视频FIFO中,而16位操作的DSP每个指令读两个字节,则需读0.5M次,即每秒需要500 000次读指令才能保证FIFO不发生溢出。与此同时,DSP还需对读出的数据进行一定的处理,才能从DSP串口发出。ADSP-2181的最高指令周期为40MIPS,按每秒从FIFO读1MB计算,则平均1秒一个字节可有40条指令的处理时间。对于打包处理,ADSP-2181可以满足一套节目的复用。
3 ADSP-2181的IDMA接口与MC68302的连接
为了使DSP实现最好的性能,有效的微处理器通信是最关键的。摩托罗拉MC68300系列微控制器能提供强大且灵活的总线接口,很适合DSP的要求。
复用器设计时,整个过程的协调控制工作是用摩托罗拉的微处理器MC68302完成的。控制操作流程见图3。图中的标号表示系统的整个初始化过程,其中,“(1)”表示MC68302对打包DSP进行RESET(复位),DSP开始初始化;“(2)”表示MC68302给编码器加载程序;“(3)”表示打包DSP通知MC68302已初始化完毕;“(4)”表示MC68302通知编码器开始工作。
MC68302对整个系统初始化完毕后,ADSP-2181便开始从FIFO中读取分组的视频原始流和音频原始流,并对所读数据进行判断,加相应的包头,然后在外加串口时钟的控制下,以固定速率从ADSP-2181串口把打包的TS流数据送往信道。
下面介绍ADSP-2181芯片的IDMA接口同MC68302微控制器之间的硬件界面和软件接口的设计方案。
3.1 IDMA操作
外部器件能通过DSP的IDMA接口访问ADSP-2181的内存。微处理器MC68302能够通过IDMA接口与ADSP-2181的内存通信,把此DSP芯片当作是隶属自身的以存储区划分的外围设备,并且可以访问ADSP-2181的所有数据存储器(DM)和程序存储器(PM)。
ADSP-2181的IDMA接口由以下几部分组成:一条16比特的地址/数据复用总线(IAD16:0),一条选择线(IS),地址锁存有效信号(ALE),读信号(IAD),写信号(IWR),通知信号(IACK)。MC68302负责所有数据传输的初始化工作。
ADSP-2181的存储器地址装载在IDMA地址寄存器中,IDMA地址寄存器包括14比特的内存地址和1比特限定传输类型的标志位。该标志位用于区分所传输的是24比特的程序存储器代码,还是16比特的数据存储器数据。IDMA地址寄存器的初始化工作既可以由DSP完成,也可以由微处理器完成。微处理器可以通过运行一个地址锁存周期来初始化此寄存器。一个地址锁存周期的过程如下:先由微处理器发ALE信号,然后在IAD上传输15比特位(14位地址信号和位目的存储类型信号)。为了更有效地传送大段的操作代码或数据,并不是IDMA存取都需要一个地址锁存周期。相反,一旦锁定,每个IDMA字传输之后地址就会自动增加。
3.2 硬件界面设计
占用微控制器外围空间的ADSP-2181芯片的IDMA端口需要划分成两个部分:一部分由微控制器使用,用来设置它想访问的DSP存储器地址;另一部分则用于传输数据和指令信息。
对于基于DSP的协处理系统的设计而言,微控制器和DSP之间的硬件接口设计仅仅是驱动工作的一部分。系统的启动问题及微处理器和DSP之间的通信问题在系统设计中是很重要的部分。
3.3 加载DSP芯片
在加电情况下,DSP上的IDMA接口可用来加载程序。这样DSP就无需再用单独的EPROM芯片。对于芯片ADSP-2181,加载过程由管脚MMAP和BMODE来控制。保持管脚MMAP低电位、管脚BMODE高电位,就可以通过IDMA接口进行程序加载了。在此状态下,当有复位信号时,DSP并不激活它的外部地址总线去访问EPROM芯片,而是等待微处理器开始IDMA传输来填充其内部数据存储器和程序存储器,并且利用IDMA接口的地址自动增加特性来加速以升地址顺序进行的代码段的传输。当所有初始化工作结束时,微处理器初始化DSP的重启动向量PM(0x0000),至此,程序加载结束,DSP 程序开始执行。此过程的流程如图4所示。
3.4 产生加载代码
ASDP-21xx系列的指令操作代码位有24位,而IDMA接口只能接收16位的值。为了通过IDMA接口传输指令操作代码,需要先传输16位,然后再传输另外8位 并进行适当的调整。
DSP的可执行文件是由ADSP_21XX链接器生成的。链接器接收由汇编器生成的目标文件,把它们放置在由系统结构文件定义的存储结构中,产生DSP可执行文件。
4 ADSP-2181完成传输流打包
传输流的打包需要在ADSP-2181的数据存储区DM中开辟两个缓冲区,一个是TS头固定长度部分的BUFFER,其中包含是否需要PCR字段的PCR-flag标志;另一个是可调字段的BUFFER,其中包括标识PCR编码的相关字段。根据输入修改TS的两个缓冲,判断是否需要可调字段、是否需加PCR字段、是否有填充字节以及填充字节的数目等。然后以恒定速率(在此是8.448Mbps)发出。
从编码器来的视频、音频原始流分组(PES)在ADSP-2181中被分割成一个个长度为188字节的小包,并插入相应的TS字头。由于视频流的输入速率远大于音频的输入速率,在同一时间内的视频TS包远远多于音频的TS包,因此必须采取一定的措施使得视频、音频数据TS包能够均匀地交织复用到最终的传送码流中,以保证解码端的视频、音频解码器的BUFFER不会产生上溢和下溢。PCR时间标记在传送复用器中规定的视频TS包头中传输,但要说明的是,按照MPEG-2的系统层规范,PCR采样的时刻必须是当PCR字段串行输出离开复用器那一刻的时间,也就是说PCR的插入逻辑是复用器的最后一步操作。此外,一个PES包的包头必须包含在一个新的TS传送包中,同时PES包数据要充满TS传送包的负荷,若PES包数据的结尾无法与TS包结尾对齐,则需要在TS的调整字段中插入相应数量的填充字节,使得两者的结尾对齐。解码时填充字节则直接被丢弃。
复用器启动后,由MC68302首先向前级视频、音频编码器发出系统编码开始信号,同时发送27MHz系统时钟。ADSP-2181被动地接收前级编码数据。视频、音频分别在各自的FIFO中缓存,各FIFO设有各自的双向计数器,动态地反映各FIFO中缓存的视频、音频字节数。采用DSP轮询技术控制复用比特流中各种TS包的交织策略。由于视频PES数据流的输入速率是可变的,而音频的速率则是恒定的,若采用其他固定比例的复用策略,无法保证输出码流各种TS包的均匀性,采用轮询技术除了能够均匀打包输出变速率的视频数据流外,同时对多节目数据流的复用具有很好的灵活性,只需在软件中增加轮询的数目并合理安排其轮询的优先级即可,可用图5来描述。
ADSP-2181按视频、音频的次序对视频FIFOV FIFO、音频FIFOA FIFO进行轮询,即读取反映FIFO状态的双向计数器,若大于预先确定的门限数值,则从相应的FIFO中读取184字节,送入第二级公共FIFO中。
ADSP-2181在对视频、音频184字节的读取过程中,同时检测是否碰到PES包起始码,若未碰到PES字头,则由ADSP-2181向传输缓存器写入相应的TS包头4字节,无可调字段,再将公共FIFO中的184字节送入传输缓存器;若碰到PES字头则立即停止从第一级视频或音频FIFO中读取数据,同时向ADSP-2181发出中断,ADSP-2181的中断服务读取公共FIFO中的字节数目,设其为N,由于在这N字节数据中包含4字节的PES字头,为了使TS包与PES包字头对齐,公共FIFO中的数据要打成两个TS包,由于第一个TS包有效负荷数据只有N-4个字节,PES包的结尾未能和TS包的结尾对齐,因此在第一个TS包的自适应域要插入182-N-4个填充字节0xFF,有效数据负荷为N-4,第二个TS包由于是一个新的PES数据包的开始,公共FIFO中还保留4字节的PES字头,因此ADSP-2181还需从第一级FIFO中读入相应数目字节的视频或音频数据。对于音频来说,不需插入PCR信息,只从音频FIFO中读入184-4个字节的数据。在向输出缓存器写入TS字头后,再将公共FIFO中的数据送入输出缓存器。对视频来说,在不考虑PCR信息插入时其操作同音频一样。
由于两PCR之间的时间间隔在MPEG-2视频编码器传送流中要求为100 ms,因此,在DSP软件中设计了一个计数器,用于对所有已生成的TS包进行计数。由于ADSP-2181串口的输出速率是恒定的(在此是靠外加8.448MHz串口时钟实现的),因而单位时间内的总的TS包的数目也是一定的。要使PCR之间的时间间隔保持恒定,只需将计数器的预置数目设定为“总的TS包数目/每秒÷25”,复用器每生成一个TS包,计数器减1,当计数器计到零时将时间间隔标记置位。ADSP-2181在每次轮询打包TS数据之前,先检测时间间隔标记是否置位,若未置位则按前述方法处理,若置位则在打包的下一个视频TS包中插入PCR时间标记,当然这里只是在TS包头中插入相应的可调字段,而没有插入真正的PCR时间标记,只是将6字节的PCR位置预留出来。因此,如果下一个复用的TS包为视频数据并且恰好需插入PCR时间标记,则DSP从视频FIFO中读的数据是176字节而不是184字节,因为可调字段已占用了8字节。如果该TS包为含有PES字头的视频TS包,则读入的数据字节为172字节。在ADSP-2181的最后输出单元中最重要的是完成PCR时间标记的插入。MPEG-2系统规范要求PCR时间必须为PCR域最后一字节离开复用器的时间,因此,PCR只能在串出的时刻锁存系统时钟。PCR信息只包含在特定的视频TS包中,ADSP-2181在写入该TS字头时可调字段已预先保留6字节的PCR位置,因此,在数据串出的同时要进行字头检测。当满足PCR插入条件时,即在检测到TS包的同步字节以及可调字段标志位后,则在相应时刻启动PCR锁存及串出逻辑。
需要说明的是:对于多节目输入复用的情况,除了可以采用以上所设计的DSP轮询策略外,还应注意优先级的排队问题,以防视频缓冲区有上溢问题出现。对于VBR视频的多节目复用问题,尤其要慎重考虑。不仅要设置双向计数器,动态地反映各FIFO中缓存的视频、音频字节数,还要采用相应的预测机制来即时获取各路视频速率的变化趋势,同时采用相应的返回控制机制来调整输入端的速率,保证各路信号均匀交织,使输入FIFO不溢出也是很有必要的。另外,节目特殊信息PSI的插入要满足PAT之间和PMT之间的时间间隔恒定为40ms,设计时是在TS包计数器置零后紧接着的两个TS包中放入PAT和PMT表格。解码时选择感兴趣的节目就是根据PAT中标明的节目号在PMT中寻找该节目对应的音频、视频信息,进而实现该套节目的同步解码。
上一篇:基于ARCVIEW的ADS显示系统的开发
下一篇:使用TMS320C542构成数据采集处理系统
- 热门资源推荐
- 热门放大器推荐
- 芯启源(上海)将持续发力,“做深做精”EDA及IP产品
- 本田严厉警告日产:若与鸿海合作,那么本田与日产的合作将终止
- Microchip推出新款交钥匙电容式触摸控制器产品 MTCH2120
- Matter对AIoT的意义:连接AIoT设备开发人员指南
- 我国科学家建立生成式模型为医学AI训练提供技术支持
- Diodes 推出符合车用标准的电流分流监测器,通过高精度电压感测快速检测系统故障
- Power Integrations面向800V汽车应用推出新型宽爬电距离开关IC
- 打破台积电垄断!联电夺下高通先进封装订单
- Ampere 年度展望:2025年重塑IT格局的四大关键趋势
- 存储巨头铠侠正式挂牌上市:首日股价上涨超10%