基于DM642的mpeg-2视频压缩编码之硬件结构

来源:互联网 发布:尚观linux视频 百度云 编辑:程序博客网 时间:2024/05/21 16:19

DM642在主频720MHz下处理速度达到5760MIPS,其操作灵活的高速处理器和用数字表达容量的阵列处理器,给高性能DSP规划提供了廉价的解决方案。下面是DM642功能框图:


片内外设:
(1)外部存储器接口(EMIF)
(2)增强直接存储器存取控制器(EDMA)
(3)以太网媒体接入控制器(EMAC)/管理数据输入/输出(MDIO)模块
(4)视频端口/VCXO内插控制(VIC)端口
(5)主机端口接口(HPI)
(6)外设组件互连(PCI)
(7)多通道音频串行接口(McASP)
(8)内部集成电路(IIC)模块
(9)多通道缓冲串行端口(McBSP)
(10)定时器(Timer)
(11)通用输入/输出(GPIO)
(12)锁相环(PLL)控制器

下面我们针对功能框图来详细说明一下DM642的各部分功能,

首先是中央处理单元CPU,我们可以看出在cpu核里主要就是进行程序取指,指令分配,指令译码,这里面有一个很重要的概念就是流水线结构,我们写程序的时候有时候要考虑到程序执行的时间,我们就需要把流水线填满,也就是我们可以同时进行本条指令的取指,上条指令的指令分配,上上条指令的译码,这是在一个时钟周期内完成的。对于DM642来说,最多可以执行八条流水线指令。在程序优化的过程中,我们可以通过程序生成的.asm文件来看程序之间的并行度。

存储器分配:DM642片内RAM采用2级高速缓存存储器结构,程序和数据拥有各自独立的高速缓存。片内的第1级程序缓存称为L1P,第1级数据缓存称为L1D,程序和数据共享的第2级存储器称为L2.下面是二级内存结构框图。


L1P和L1D的大小都是16KB,只能作为高速缓存被CPU访问,不能作为映射的存储器。L2是一个统一的程序/数据空间,大小为256KB,L2可以通过配置分成两部分,一部分作为Cache,一部分作为SRAM,一般情况下,我们应该尽量增大Cache的空间,尤其是做图像处理时,需要大量数据传输处理时,在做MPEG-2编码过程中,我们将256KB大小的L2分配128KB作Cache,128KB作SRAM。这里还需说明一下,为什么会有二级缓存这个结构,在硬件设计中,我们知道离CPU越近,其工作频率就与CPU越接近,而对于外扩的SDRAM,时钟频率只有133MHZ,这样,在进行数据的高速处理时,数据从外部SDRAM到cpu就需要一定的传输时间,(cpu工作频率为600MHZ的情况下),所以当有二级缓存时,我们可以先将数据搬到二级缓存,再由二级缓存送去cpu作相应的处理,这样就免去了数据传输所消耗的时间。需要指出的是,当CPU工作在600MHZ的时候,一级缓存的工作频率为600MHZ,二级缓存的工作频率为300MHZ,外部SDRAM工作频率为133MHZ。


外部存储器接口(EMIF) :

DM642的64位宽外部存储器接口(EMIF)的外部存储器寻址空间可达1024MB,它支持与各种外部器件的无缝连接,包括:SDRAM,SBSRAM,ZBT SRAM,SRAM,FIFO,以及FLASH和IO设备,EMIF外扩的空间可以分为四部分CE0,CE1,CE2,CE3,实际设计中,我们把CE0映射到我们的SDRAM,采用两片4M*32并联的方式,组成64位数据线,地址范围为0x80000000~0x8FFFFFFFF。在进行EMIF的配置时使用到的寄存器有:全局控制寄存器(GBLCTL),CE空间控制寄存器(CExCTL),CE空间第二控制寄存器(CExSEC),SDRAM控制寄存器(SDCTL),SDRAM时序寄存器(SDTIM),SDRAM扩展寄存器(SDEXT)。


视频端口/VCXO内插控制(VIC)端口:  

视频端口外设可用作视频捕捉端口、视频显示端口或传输流接口(TSI)捕捉端口。视频端口由两个通道组成:A和B。对于视频捕捉操作,视频端口可以用作BT.656或原始视频捕捉的两个8/10位通道;或用作8/10位BT.656、8/10位原视频、16/20位Y/C视频、16/20位原始视频或8位TSI的单个通道。DM642有三个可配置的端口:VP0,VP1,VP2,与视频采集芯片连接,无需外加逻辑控制电路和FIFO缓存,只需编写相关驱动程序,就可以实现图像采集或显示。每个视频端口各有20根数据输入输出管脚,每个端口又可以分为A和B两个通道,分别处理一路视频的采集或显示。

视频端口配置为双通道视频采集时,0~9bit管脚分配给A通道,10~19bit管脚分配给B通道,由于采样后的数据按8bit量化,所以仅使用每个通道的后8个管脚,即将VPxD2~9,VPxD12~19直接与A/D芯片的8根输出管脚相连。输入的PAL/NTSC模拟信号经过视频解码芯片A/D后形成的数字视频信号直接进入相应的视频端口中。当采集8bit BT.656数据时,视频端口接受A/D的亮度与色度的复合数据流,然后把它分解成三个单独的数据流,分别是Y,U,V,再将分离后的数据打包存放到各自的FIFO中。将FIFO分成三个部分,其中为亮度数据分量分配的FIFO问哦1280B,为每个色度数据分量分配FIFO为640B,每个FIFO都有相关的存储器映射地址:YSRC,CBSRC和CRSRC,EDMA将使用这些地址作为数据搬运操作的源地址。每个视频端口最多可以使用六个EDMA通道,当某个FIFO的计数器到达VCTHRLDn寄存器设置的数值时,就可以触发相应的EDMA事件。

这里需要说明的是如果采用BT.656模式,那么视频捕获时是按奇偶场的方式捕获,通过设置VDCTL寄存器来确定是捕获奇场还是偶场,还是帧捕获,如果是帧捕获的话,奇偶场是分开存储的。一般情况下式现存奇场再存偶场,地址为连续的。


EDMA:  

EDMA控制所有二级高速缓存/内存控制器和DM642外设之间的数据传输。这些数据传输包括高速缓存取、飞告诉缓存访问、用户可编程数据传输和主机访问等。DM642的EDMA能提供超过2Gb/s外部带宽,支持64路独立触发的事件传输,总共有85个参数对“linking”或“chaining”进行配置。Linking是在1个事件被触发时允许1个序列进行传输。chaining是当1个通道的数据传输完毕时触发另一个通道的数据传输。Linking和chaining使得仅仅被cpu初始配置之后EDMA能够连续的自动运行。

EDMA支持8bit、16bit和32bit数据的存储,在EDMA中定义了下列概念:

(1)数据单元的传输

(2)帧。一般在1维传输中提及

(3)阵列。一般在2维传输中提及

(4)块。

(5)1维(1-D)传输

(6)2维(2-D)传输:第一维是阵列中的数据单元,第二维是阵列的个数。

EDMA配置时为了从FIFO搬运数据到SDRAM中,采用1D/2D传输,即源地址不变,而目的地址则在每次传输后按索引值自动更新。我们为每一场设置一个EDMA参数,并将这些参数连接起来,一次传输任务的结束会自动从参数RAM中装载下一次传输需要的参数,从而实现某些复杂数据流的传输。设置时首先打开与VP口相关的EDMA通道并申请参数,同时为每一个通道申请一个中断号,留给EDMA中断服务程序使用,然后依次配置EDMA参数,包括:数据源地址,数据目的地址,数据单元计数,阵列计数,阵列索引,参数链接地址;可选的参数设置包括:优先级,数据单元字长,1D/2D源/目的地址传输,源/目的地址更新模式,传输结束中断,顶场禁止,EDMA事件连接。通过以上参数设置后三个EDMA通道分别负责从视频端口FIFO中搬运Y,Cb和Cr三个分量到SDRAM中,EDMA每启动一次,从FIFO中搬运一行的采集数据到SDRAM中,并在搬运完毕后自动更新目的地址,EDMA阵列计数值到0后启动参数连接,从参数RAM中装载下一次传输需要的参数,若使用了传输结束中断,则执行EDMA终端服务程序。


IIC:      

对于IIC总线而言,同一种类型的编解码芯片最多只能有两个物理地址,因此只能有两个芯片。如果要设计成4路视频输入的话,可以通过GPIO来切换。在标准IIC协议中,器件的7位地址格式要将地址和读/写方向位一同送入从地址寄存器,但是DM642的IIC的应用中只需要向从地址寄存器中送入7为器件地址,读/写方向位由DM642自动生成。

   

定时器(Timer):  

在做MPEG-2视频压缩的过程中,主要用到定时器作为计时用,在前期测试中使用。


0 0