当前位置: 首页 > 技术资料 > 视频处理DSP 并行接口的IP 核设计

视频处理DSP 并行接口的IP 核设计

QooIC.com 新闻出处:电子市场 | 发布时间:2010/11/18 13:45:14

  1 引言


  视频数字信号处理器是电子信息领域IT 产业视讯应用产品的关键芯片,当今通讯领域的热点之一是动态图像传输,图像传送的难点是图像信息的数据量大,同时处理器的速度慢,传送线路的带宽窄;我们设计的视频DSP 采用并行处理技术,大大提高了处理器的运算速度,通过视频DSP 处理器配合好的软件算法,可以实时的完成视频信号数据的压缩,从而可以在带宽较窄的线路上传送清晰流畅的视频信号。


  并行接口是我们设计的视频处理DSP 中的重要组成部分,它完成视频数据和其他数据输入或输出DSP 的内存,传送的视频数据能够兼容多种视频图像格式,很方便的与多种视频编码或解码芯片交换数据。


  本文主要介绍视频处理DSP的并行接口的设计方案,并行接口的传送方式我们采用DMA的块传送方式,采用这种方案,可以大大提高数据的传输效率。


  2 并行接口的设计


  2.1 软核实现的功能


  我们设计的视频处理DSP 中有三个并行接口,左、右并口用于视频信号输入或输出,主并口用于整个芯片的启动和与其他系统通讯。三个接口结构基本相同,只是主并口还有用于系统启动的功能。工作模式有两种,一是视频工作模式,用于传视频信号,一是包工作模式,用于传送指定大小的数据包。


  具体实现功能如下:


  (1)可以捕捉、处理和显示NTSC/PAL/SRGB的图像格式;


  (2)视频图像可以以50Mbit/s以上的高速速率在内存和外部端口之间通过DMA 方式实时传送,不需要CPU 进行额外的干预。任何大小的图像可以在端口控制信号的控制下传送;


  (3)可以进行传送交叠的和非交叠的视频数据,这些数据的数据源可以是视频编码器,视频解码器,或者数字图像传感器;


  (4)可以传送8 位或16 位的视频信号,或者传送两个同步8位的信号;


  (5)使用了一个128字节的FIFO,用来做端口与内存之间的缓冲;


  (6)采用中断方式,当一条线传输完毕,一场传输完毕,一帧传输完毕等情况下可以产生中断,从而调用相应的中断处理程序。


  2.2 顶层接口框图


  并行接口主要与三个部分交换数据,他们分别是内存总线、CPU 总线、外部端口总线。整体框图如图1。


  每部分总线的功能如下:


  (1)内存总线:功能是与内存之间输入输出数据。由于和内存的传送是DMA 的方式,所以这部分总线还有DMA请求,和DMA 的响应信号。


  (2)CPU总线:这部分的功能是与CPU 之间传送数据,CPU 通过CPU 总线来设置并行接口的控制寄存器,从而完成对并行接口工作方式的设置;另外CPU 通过CPU 总线可以读取到并行端口一些状态寄存器,从而可以监视和控制并行接口的工作状态。


  (3)外部端口总线:这部分功能是与外部总线进行数据交换,外部总线是多个设备同时使用的,所以在外部总线上还有端口总线请求和端口总线响应信号。


  整个工作过程就是通过CPU 总线设置并行端口中的控制寄存器,设定好工作模式后,通过并行端口将外部数据传送到内存中,或者将内存中的数据传送到外部端口。


  我们整体设计方案中内存的传送速率是532Mbit/s,而并行端口设计的传送速率是50Mbit/s,为了保证端口50Mbit/s的传送速率内存必须每1.28μs 就要进行一次传送(一次传送64 字节数据),而每次的传送时间大概是0.15μs。整个系统中有三个并行端口,一个数据CACHE,一个指令CACHE,一个串行接口,再最坏情况下并行端口的一次传送结束后有五个设备进行DMA 传送,这样传送时间间隔是0.15μs×5=0.75μs,所以内存总线的速度能满足每个并行端口在50Mbit/s 的速率传送数据。


  2.3 功能模块划分


  根据并行DMA 端口设计方案的需要,我们将并行端口内部设计成三个模块,控制器与寄存器模块、FIFO 模块、端口模块。各部门的功能如图2。


  各个模块的功能如下:


  (1)控制器和寄存器模块:这个模块是整个并行DMA 端口的核心控制模块,CPU 通过CPU 总线将相应的寄存器设置好,控制传输中的一些参数,并行端口就可以独立的完成传送任务。例如,在包模式工作下,设定好包传送的方向,包的大小,包传送的内存中的地址;在视频传送模式下,设定好传送的方向,传送视频信号的帧、场、线的大小,以及在内存中存放的开始地址,当传送开始后,控制器就可以根据场同步信号、水平同步信号、垂直同步信号来计算每一帧、每一条线在内存中的存放地址,这样就可以发出控制信号,控制FIFO,和端口模块进行数据传送。


  (2)FIFO 模块:由于外部数据的速度远远低于内存总线的速度,为了提高内存总线的传送效率和外部数据传送的连续性,我们设计了FIFO 模块来做为缓冲区。FIFO 是128 字节的数据缓冲区,在实际使用中分成两个区,各64 个字节,再传送过程中,内存使用一半,端口模块操作另一半。内存的一次传送都是以64 个字节为单位的。以写模式为例说明工作过程,(为了说明方便,我们指定上半区为A 区,下半区为B 区)在写工作模式下(写内存)端口模块先将数据写入到A 区,同时内存一端在A 区的首部等待,不进行操作;当端口模块将A 区数据写满后,发出写内存的DMA 请求,当系统响应了DMA 请求,内存一端就从A 区读出数据写入到内存相应的地址,将A 区的数据全部写到内存后,内存总线释放,这时其他设备就可以使用内存总线;与此同时端口模块在FIFO 的B 区将新的数据写入FIFO,当内存总线将A 区的数据写入到内存后,如果端口模块还在B 区操作,则内存端口在B 区的首部等待,当端口模块将数据写满B 区,这时再一次发出写内存DMA 请求,当系统响应DMA 请求时,内存接口从B 区读出数据写入到内存相应地址;整个工作就是这样循环往复。通过这种传送方案可以保证低速的端口总线可连续的将数据写入内存。而内存也能同时响应多个设备的内存操作请求。读工作模式(读内存)的工作过程与写模式类似,只不过是工作的方向和顺序刚好相反。示意图如图3 所示。


  (3)端口模块:内存接口我们设计为32 位宽度,原因是考虑到以后要进行ASIC 实现,ASIC 电路的成本与封装管角的数量有很大关系,综合考虑成本与工作速度和工作效率,我们最终决定采用32 位宽度。端口数据总线我们设计为16 位。端口模块的一个重要功能就是传送数据时需要将数据宽度转换;另外整个端口可以使用CPU 的时钟分频,或者使用外部输入的时钟,所以时钟控制也在这部分完成,处理好的时钟输出供给整个端口使用。


  3 设计中难点与解决


  如何在高速的32 位的数据总线与16 位的低速的数据总线之间传送数据?


  在设计中我们采用了双端口异步FIFO的技术,成功的实现了高速与低速数据总线之间的数据交换。FIFO 的大小的选取是很重要的,FIFO 容量大整个软核的规模就大,影响到以后ASIC 的实现规模就大;FIFO 的容量小,就不能满足端口要求的传送速度(50Mbit/s),通过对传送速度和规模的综合考虑,我们采用了128 字节FIFO 的方案,这样以来,即能够保证端口的传送速度,又使规模尽量的小。FIFO 的工作原理参见FIFO 模块的说明。


  如何保证高速的内存总线能够高效率的工作,能响应多个设备的总线请求?


  我们采用DMA工作方式,DMA方式可以减少CPU 工作负担,传送过程完全是自动的,不需要CPU 干预,CPU 只需要控制每个设备的控制寄存器,以此来管理工作模式。


  在DMA 传送有三种传送方式:单字节传送方式、指定大小传送方式、块传送方式。考虑到并行端口传送视频数据具有连续性的特点,和内存总线的传送效率,我们采用了第三种,既块传送方式的方案。我们方案中每次传送64 字节的数据,这样控制起来比较方便,另外我们有多个设备,如:左并口,右并口,主并口,数据cache,指令cache??都需要使用内存总线,为了提高内存总线的传输效率,采用这种方案可以避免内存总线在多个设备之间频繁的低效率的切换。


  4 接口时序


  各个接口的时序如下:


  (1)内存接口(以写时序为例)如图4


  (2)CPU 总线时序(以写时序为例)如图5


  5 设计实现


  硬件描述语言(HDL)具有电路设计速度快,易于修改,可移植性好等优点,正逐步取代传统设计方法,成为第三代硬件设计方法。我们设计时选用了Verilog HDL 和采用自顶向下(Top-Down)的设计方法进行方案的电路设计。这样可以方便的进行功能的验证和测试。我们使用Candence 的VerilogXL 工具进行设计和测试设计完成后,就是仿真验证工作,并行DMA 的测试工作主要是工作模式比较多,所以测试的情况比较多。经过测试,各种工作状态工作都正常。


  6 结论


  在整个视频处理DSP 的系统中进行应用调试,测试的内容包括CPU 发出指令,控制并行DMA 接口的工作方式,中断的发出和响应,以及中断服务程序的执行,调试结果:各种工作状态工作正常,中断发出正常,中断服务程序执行正常,符合设计方案的要求。


  该软核可移植性好,在同类系统的开发中,只要经过一些调整就可以将该软核嵌入系统中,这样可以大大加快整个系统的开发速度。