随着微电子技术和以太网技术的发展,MPEG-2产品正逐步从传统的模拟传输,向采用IP/ATM传输发展。MPEG-2 over IP是采用以太网传输技术,将MPEG-2视频传输流(TS流)通过以太网进行传输的产品。
如何更好将MPEG-2和以太网传输控制实现有机地结合起来,是研究实现MPEG-2 over IP的重点。本文围绕着这个重点而展开。
1.系统工作原理
典型的MPEG-2 over IP结构如下图1所示。MPEG-2 over IP主要包括MPEG-2编码模块和通信控制模块。MPEG-2编码模块实现对模拟视音频的PMEG-2压缩编码;通信控制模块实现对MPEG-2编码模块的控制、MPEG-2 TS流的采集和在以太网上的传输。
2.编码机系统的实现
根据典型的MPEG-2 over IP产品结构,将编码机硬件体系设计分为MPEG-2编码模块和通信控制模块两个部分。
2.1.MPEG-2编码模块
2.1.1.MPEG-2编码模块的构成
MPEG-2编码模块采用日本富士通公司的MPEG-2编码处理芯片MB86391、SAA7114视频处理芯片、SC5340音频处理芯片和Atmel公司的AVR 8位微处理器Atmega16等构成。其原理图如下图2所示。
2.1.2.MB86391介绍
MB86391的内部框图如图3所示。它是在单一芯片中集合了音频/视频编码。编码使用富士通开发的高性能MPEG-2压缩运算法则。集合了内部DPSRClite CPU处理的硬件和软件。
支持ISO/IEC 11172(MPEG-1)、ISO/IEC 13818(MPEG-2) 标准和MPEG-1音频层-1/2编码功能( ISO/IEC11172-3)。
支持NTSC和PAL制式的视频格式。视频编码最大输出码率可达20Mbps。视频输入接口采用8位并行接口,音频采用串行接口。支持并行或者串行的主机接口。在串行主机接口模式下,其配置和执行MPEG-2算法的firmware(固件)可通过串行主机接口下载。
2.1.3.MPEG-2编码模块的工作原理
模拟视频和音频通过SAA7114视频处理芯片、SC5340音频处理芯片进行模数转换和处理,输出给MPEG-2编码芯片MB86391,MB86391芯片按MPEG-2视频格式将数字视音频作压缩编码处理,最后从MB86391的流输出接口输出。
ATMEL公司的AVR 8位处理器ATmega16为编码模块的CPU,它通过串行总线来控制MB86391和为其下载firmware(MB86391的微码,用于执行编码算法等);ATmega16通过I2C总线与SAA7114和SC5340相连接,完成对前端视音频的控制调节。
同时ATmega16也肩负着MPEG-2编码模块与通信控制模块的通信控制任务,它通过SPI总线与通信控制模块连接。
ATmega16在编码模块中主要为通信控制模块和MB86391、SAA7114以及SC5340提供通信控制的桥梁。
2.2.通信控制模块
通信控制模块是MPEG-2编码机功能的核心。它主要实现对MPEG-2编码模块的控制和传输MPEG-2视频数据流到以太网上的功能。通信控制模块由Winbond公司的32位ARMTDMI核的微处理器W90N740、Lattice公司的FPGA LFXP3C-5T组成。其原理图如图4所示。
图4:通信控制模块框图
2.2.1.W90N740的特点
W90N740是台湾华邦电子公司的一款基于ARM7TDMI核的32位微处理器,内部功能框图如图5所示。
该处理主要针对路由器网络产品而设计,采用ARM7TDMI核,最高工作频率可达80MHz。提供2个10/100M的以太MAC(媒体访问控制器)、EBI(外部总线接口)总线、4个独立可编程的外部中断源、2个24位的定时计数器和一个24位的看门狗定时器,以及21个可编程通用I/O和一个UART接口。
内置的两个以太网MAC控制器,每个MAC都有支持IEEE802.3以太网协以引擎和含有DMA控制器和收/发FIFO,支持媒质独立接口MII(Media Inde-pendent Interface)精简媒质独立接口RMII(Reduced MII)。以太网MAC也支持长帧(长度大于1518字节)和短帧(长度小于64字节)两种帧结构。
EBI控制器支持访问片外SDRAM、RAM/SRAM、ROM/FLASH和I/O设备。提供支持达32M字节的ROM空间、2个最大为32M字节的SDRAM和4个32M的I/O设备空间。
4个可编程的外部中断源,可独立配置电平触发或者边沿触发方式。
W90N740的特点非常适合于在MPEG-2 over IP产品中担当通信控制模块的处理器。
2.2.2.MPEG-2编码模块的通信/控制
MPEG-2编码模块和通信控制模块的通信/控制设计为SPI接口。MPEG-2编码模块为从SPI,通信控制模块为主SPI。W90N740本身没有SPI总线接口。设计时,采用W90N740的通用I/O来模拟一个SPI的主控制器。
同时,为了保证MPEG-2编码模块和通信控制模块的同步,通行控制模块为编码模块提供一个由W90N740的通用I/O控制的复位引脚,在通信控制模块复位的情况下,让编码模块也能复位。
2.2.3.TS流的采集
在编码机系统中,TS流的采集是一个重点。设计时使用FPGA设计异步FIFO将MB86391的输出数据流和W90N740的EBI总线连接起来,实现TS流的采集。
其FPGA中的TS流采集部分如图6所示。
图6的左端是异步FIOF的输入控制部分。它与MPEG-2编码模块的MB86391的图像数据流接口相连。MB86391工作在27M同步并行模式。其输出压缩编码数据流的时序如图7所示:BCLK为同步数据时钟,频率是图像数据流的码率的1/8;STEN是图像数据流数据有效指示;TSPSSUNC是图像数据流同步指示,当一个TS流包(188字节)的第一个字节是0x47时,它为高电平;STDATA是图像数据流的数据。它们分别与图6的TS clk、TS vaild、TS sync、TS D[7..0]相连,8位并行的TS流进过“8bit to 32bit”部分转换输入到32位宽度的异步FIFO进行缓存。
图6的右端是通信控制模块获取TS流的部分,它占用W90N740的EBI I/O设备接口bank0资源。EBI I/O设备接口bank0配置在32位宽度,以提高W90N740的采集数据的能力。当FIFO中的数据缓存到设定的临界值后,FIFO的flag信号将变为高电平。通过FIFO的flag信号产生送给W90N740的中断申请nIRQ0,通知W90N740图像数据准备好了。
W90N740的EBI I/O总线时序如图8所示。利用W90N740的系统时钟MCLK作为异步FIFO的读时钟rd clk;通过片选信号nECS0和读选通信号nOE来产生异步FIFO的读允许rd en。
同时,图6中“控制部分”除了根据W90N740的EBI I/O设备时序产生FIFO的读时序外,它还用W90N740的EBI I/O设备接口和TS vaild信号来产生FIFO的复位,reset信号。
采用异步FIFO采集MPEG-2 TS流的设计,降低了图像数据采集占用CPU的时间。为提高整个编码机的性新能起到非常大的作用。
2.3.编码机的软件结构
2.3.1.存储器分配
大多数的嵌入式系统,采用Flash或者ROM等存储器来存储系统的软件,为了提高系统的运行速度,一般将程序软件放入SDRAM、SRAM或者RAM等快速存储器中运行。
在我们设计编码机的也采用上面的方式来存储和运行程序代码。为了降低对ROM存储器的容量要求,将程序代码采用压缩方式都放置在16Mbit的FLAS中。其分配使用如表1所示。
2.3.2.软件设计
Linux操作系统是源代码开放的多任务操作系统,它具有完善的TCP/IP协议栈,支持多任务,成为软件设计的主选对象。
uClinux是针对没有MMU(内存管理单元)的微处理器而设计的Linux操作系统。它继承了Linux的绝大多功能,支持进程、线程,TCP/IP协议栈功能强大。因此,软件设计选用uClinux操作系统。
在uClinux操作系统下,将软件分为驱动和上层应用两个部分来设计。驱动负责提供上层应用程序访问底层硬件的接口。应用软件完成编码机的功能。
在uClinux中进程和线程都是并行运行的,设计时软件按功能划分为模块,设计为进城或者线程。考虑到进程占用内存资源渐多,而线程占用内存资源少,因此、系统软件结构如图9所示应用软件采用进程和线程来设计。应用软件功能模块如图9所示。
图9:编码机软件结构
划分进程和线程是软件设计的一个关键。分析Linux进程和线程的特点,结合编码机需要用软件实现的功能,将初始化工作(如MPEG-2编码模块的初始化、以太网参数初始化)、条件工作功能(如编码机参数配置、远程升级)设计为辅助进程,这些进程的运行的时间短,只有在系统复位初始化或者条件控制下才运行,并且会退出运行。
主进程将是一个永远运行的进程,在这个进程中将实现编码的主要功能,如图像数据流在网络的传输、远程控制、用于与其它设备通信的RS-485/RS-232低速数据传输、编码机的状态监测等。这些功能之间相互有着联系,如远程控制可以查询编码机的状态,而编码机的状态随时由编码机的监测更新。因此,将这些功能用线程来实现,在主进程中用全局变量来实现各个功能之间的联系。
编码机的核心功能——TS流传输线程和远程控制命令处理线程的流程如下图10所示。
图10:部分线程流程
结 语
通过实际设计表明,在MPEG-2 over IP编码机设计中,采用W90N740作为CPU和uClinux操作系统,使得设计简单,灵活,已于维护。实际效果明显,能实时传输10路4M码率的MPEG-2图像给不同的目的IP。