编码器设计实现 存储器空间分配
bF533采用统一的32位、共4Gb可寻址空间,包括位于片内的L1高速SRAM,片外的同步存储器空间SDRAMSpace,以及异步存储器空间(A syn chronousMemory Space)。
片内Ll SRAM包括:64Kb指令SRAM、16Kb指令Cache/SRAM、32Kb数据SRAM、32Kb数据Cache/SRAM,以及4Kb便签存储器。
L1 SRAM工作在内核时钟频率,内核可以对其进行高速带宽访问。它是所有存储器中访问速度最快的,但容量有限,因此,只应将那些最关键的代码和数据存放在L1SRAM里。同时,指令Cache和数据Cache全部使能,这样可以大大提高访问片外存储器的效率。Cache设置是通过相应的I M E M_C O N T R O L、DMEM_CONtrOL,以及CPLb寄存器配置实现的。
由于bF533片内存储空间有限,而原始视频数据量较大:CIF级4:2:2格式每帧图像占用的空间为202752字节,如果采用模拟PAL制式视频输入,每帧占用空间更是高达829440字节,只能将其放至SDRAM中。同样,视频编码数据也应存放在SDRAM中。此外,系统启动完成boot loader引导后,主要关键代码放在片内L1程序SRAM中执行,但大部分程序代码仍需从SDRAM中执行。由于SDRAM特殊的读/写方式,如果下次访问内存页与当前活动页(Active Page)不同,即出现了页错失(Page Miss),SDRAM就必须首先关闭当前页,再打开新的页,大大降低了SDRAM读写速率。而该系统中SDRAM又需存储多种数据,内核、DMA均需要频繁访问SDRAM,因此,应精心分配SDRAM空间,以使页错失现象尽量少发生。
bF533的SDRAM控制器(SDC)可以支持SDRAM每个内部子集中的一个活动页,且在这4个I-bank中进行切换时无需任何延迟。这样,将不同的数据、代码映射至不同的I-bank,可使页错失现象降到最少,进而改善访问SDRAM的效率。
由于需要实时编码,为保证视频采集和压缩可以同步执行,采用乒乓缓冲技术:设置了两块视频帧接收缓冲区bUF1和bUF2,采用bF533的DMA传输链方式进行传输。当某一DMA缓冲区填满后,内核对其作MPEG-4编码(同时也在构建参考帧),此时DMA开始对另一块缓冲区进行填充。由于bUF1、bUF2、程序代码以及参考帧均位于不同的I-bank,减少了SDRAM页面切换的机会,实现了对SDRAM的高效访问。
MPEG-4程序流程
MPEG-4编码是基于宏块(Macro block)进行的,每个宏块包含4个8×8亮度子块和2个8×8色度子块。MPEG-4编码原理主要包括对I帧和P帧的编码,P帧比I帧多出了运动估计和补偿模块,二者编码流程如图2所示。