随着高速处理器的不断发展,嵌入式系统应用的领域越来越广泛,高速大容量缓存器被广泛应用于音视频系统中,然而专用的高速大容量缓存芯片价格过于昂贵,传统SDRAM在带宽上已经逐渐无法满足应用要求,特别是对于多路数据多进多出时,两者都无法很好的满足要求,这里提出一种利用双沿随机动态存储器(DDR SDRAM)结合外加专用电路的设计方案。
设计应用在基于DVB-C的EOAM调制器系统中,该系统的基本要求能够缓存集合多路视频TS流的千兆IP数据,并对IP数据进行多路高速分发;输入为2个千兆网口,输出至RF射频接口的数百个数据分发通道。
在以往系统设计中,有人提出使用普通SDRAM芯片作为物理缓存单元,但是由于该类芯片工作速度限制,在基本位宽条件下,达不到上述系统的高带宽要求。若不提高芯片速度,单纯提高位宽,由于各位数据的延时不同,且SDRAM采用的3.3 V电压的上升下降沿过渡较宽,将导致芯片数据采样的稳定时间窗变窄,数据传输可靠性下降;同时由于位宽增大,引脚变多,造成设计复杂度的直线上升。本文使用DDR SDRAM作为存储单元,在不改变系统时钟的情况下,利用时钟双沿传输数据,将同频率芯片的传输带宽在SDRAM基础上提高了一倍,很好地满足了高带宽缓存的需要。
1 DDR存储器简介
DDR存储器即双数据率同步动态随机访问存储器,它和早期的单数据率同步动态随机访问存储器一样,内部存储单元采用电容充电来保存数据,因此必须不断地对电容充电以保持数据,这就是所谓的"刷新".SDRAM的数据总线在每个时钟的上升沿存取数据,而DDR SDRAM则在每个时钟的上升沿和下降沿都存取数据,这样在数据总线宽度和时钟频率不变的条件下数据总线带宽得到了一倍的提升。
2 系统设计
设计采用Xilinx公司的Sptan3a-dsp 1800a作为主控制器,使用Micron公司的MT64V32X16芯片作为存储介质,最大存储容量为512M.本系统的逻辑部分由仲裁模块、输入缓存模块、调度判决模块、地址转换模块和DDR接口控制模块等部分组成,结构框图如图1所示。
核心控制器中的仲裁模块产生相应的控制命令。完成上电后的初始化复位,并在系统运行过程中,针对工作优先级,发出刷新指令、写操作指令和读操作指令;DDR接口控制模块根据DDR芯片操作的基本时序,实现核心控制器指令的针对物理芯片的信息传输;南于DDR芯片具有不可实时操作特性,必须使用内部输入缓存RAM进行基本的实时数据缓冲;而地址转换模块、调度判决模块则和内部输入缓存RAM配合,完成对DDR芯片内部存储空间的映射工作。
3 DDR核心控制器设计
DDR存储器是一种指令相对复杂的高速存储芯片,它在上电后必须完成初始化才能进行其它操作;而且不支持单周期读写操作,只支持周期为2、4、8突发读写操作。另外,DDR芯片由于其电容特性,数据保存在其中是不稳定的,需要在一定时间周期内对其进行刷新操作,以保证数据不会丢失,因此,在DDR操作过程中有数十条指令。但在本设计中DDR接口控制器采用的是Xilinx提供的DDR IP,这样核心控制器中的仲裁模块只需要使用空闲、初始化、读操作和写操作等4个指令就可以完成对DDR-SDRAM的操作,大大降低了设计难度。由于设计目的在于消除来自网络对IP数据的抖动,并且最终要将IP数据分发至512个通道,大大超出了以往设计对DDR的使用需求,因此本文在这里提出图1所示设计,即可完成DDR存储器对高速大容量多通道的设计应用:
(1)输入缓存模块
输入缓存器由一个RAM加外部逻辑电路构成,缓冲已输入但还没来得及写到DDR中的TS分组净荷。待仲裁模块发出允许写入的信号后,再将输入缓存中的数据包传递给仲裁模块,并且释放相应的存储空间。根据DDR的工作模式和DVB-C特性,输入缓存的数据传输以TS包为单位,实现192个字节连续突发传输。
(2)调度判决模块
调度判决模块接收读请求队列信息,实现读数据时将同一个bank内数据量最大的FIFO进行调度出队列的判决。该模块保存各个通道FIFO当前的数据包数量。
(3)地址转换模块
地址转换模块负责实现通道号和DDR SDRAM芯片内部存储空间的映射。该模块中保存的变量包括各个通道在DDR SDRAM中的块起始地址、块终止地址、FIFO头偏移量、FIFO尾偏移量。
(4)仲裁模块
仲裁模块产生相应控制命令,针对工作优先级,发出空闲指令、初始化指令、写操作指令和读操作指令。
4 资源消耗结构的改进
4.1 标准的MIMO结构的缓存器
针对多路数据的缓存,设计了多进多出的缓存结构,对物理通道输入的数据流首先进行识别与分发,给每一路节目流配置一个输入缓存FIFO和一个输出缓存FIFO,结构如图2所示。
这种结构的优点在于,对每一路节目,都有单独的缓存空间对其进行缓存,各路节目相对独立,互不干扰;在节目路数较少的情况下,该结构效率较高,便于扩展。
但上述结构存在的问题在于,如果节目路数过多,输入数据流量过大,会导致FPGA内部缓存数量成几何上升,极大的消耗FPGA资源,降低运行时钟频率,造成系统综合后速度下降。
4.2 端口固定的MIMO结构缓存器
由于标准的MIMO结构存在的问题,难以达到本文所需的应用要求,因此存这里提出的一种改进型设计。这种设计不像标准的MIMO那样对DDR进行逻辑结构上的缓存,而是通过固定DDR高位地址,采用物理结构缓存的方式进行快速存储,如图1所示。
在这种结构中,外部流处理模块先将数据流与该数据流存储的通道号分发至缓存RAM和地址转换模块,再由调度模块调度转换后的对应地址指针,将其发送到DDR上对应的物理存储空间而在输出端口也以同样的方式只针对物理输出端口,这就要求有一个读请求队列,以便将要读的目的通道提前发送。在这里调度模块能够实时检测各个通道使用情况,并将数据流快速分发。这种结构对于EQAM这种一个物理IP端口输入几百路流的设备,可以极大地降低FPGA内部RAM的消耗,且对DDR影响也较小,不会过多降低系统性能。而且在前端数据缓存中直接使用RAM而不使用FIFO更有利于同步数据流和对应地址。
5 系统测试
为了测试本设计止确性,将上述模块嵌入EQAM系统后,接收来至网络的IP视频数据,通过码流分析仪检测数据结果后发现,经DDR缓存后数据流包计数器没有错误,没有出现丢包情况,码流分析仪自带播放器能够清晰连续播放节日,如图3所示。但在节目转换过程中由于节目不同会产生PAT错误,该错误不影响节目正常播放。
6 结束语
本文在这里提出了一种改进MIMO结构DDR缓存器,并对核心控制模块实现功能进行了描述,讨论了改进后的设计对系统的影响。最终测试结果也表明,本设计完全可以应用于多通道大容量的视频设备的缓存中。
参考文献:
[1].PATdatasheethttp://www.dzsc.com/datasheet/PAT_2043345.html.