摘 要: 以Altera公司MAX7000系列为代表,介绍了CPLD在DSP系统中的应用实例。该方案具有一定的普遍适用性。
关键词: RESET BOOT HPI CPLD的延时 时序
DSP的速度较快,要求译码的速度也必须较快。利用小规模逻辑器件译码的方式已不能满足DSP系统的要求。同时,DSP系统中经常需要外部快速部件的配合,这些部件往往是专门的电路,可由可编程器件实现。 CPLD的时序严格、速度较快、可编程性好,非常适合于实现译码和专门电路。本文以MAX7000系列为例,具体介绍其在 以 TI公司的 TMS320C6202 为平台的网络摄像机系统中的应用。
1 CPLD在DSP系统中的功能介绍
1.1 DSP系统简介
本文所论述的编码器系统是基于DSP的MPEG-4压缩编码器的,主要由前端视频采集、数据预处理以及MPEG-4视频压缩编码三部分组成。基于DSP的MPEG-4编解码器由于其所选用的DSP运算能力强、编程灵活,且实现不同的图像编码算法时只需对DSP内部的程序进行改写便可实现诸如MPEG、H.263等多种图像编码,因而具有良好的应用情景。CPLD芯片对整个编码器起着逻辑控制作用,系统结构如图1所示。
1.2 CPLD在系统中的功能要求
1.2.1产生复位信号
系统上电时,CPLD产生复位信号,使整个系统中的FPGA和DSP模块复位,进入初始状态;系统上电后,数据采集模块自动启动。
系统内共使用三种电源:5V、3.3V、1.8V。其中,5V电源由供电电源接入,3.3V、1.8V电源由TPS56300(TI产品)提供。采用TPS3307(TI产品)为系统提供电源管理,该芯片可同时管理三种电源。当监测到电源电压低于一定值时,产生复位信号。TPS3307在其自身电源电压大于1V的情况下即可以输出复位信号。
当系统出现错误时,可以采用手工方式复位。
复位信号产生原理图如图2所示。其中,RST#为整个系统的复位信号,由MAX7000输出。PBSW_RST#为手动复位信号,由按键接入MAX7000,经MAX7000去抖动后输出给TPS3307。SVS_RST#为电源管理芯片TPS3307产生的复位信号(包括手动复位和电源监控功能)。
1.2.2 BOOT模式的实现
系统复位后,DSP需要进行BOOT自举。在复位信号为低期间,BOOTMODE[4:0]管脚上的设置值被锁存,决定芯片的存储器映射方式以及自举模式。但TMS320C6202没有专门的管脚作为BOOTMODE[4:0]输入管脚,而是将扩展总线的XD[4:0]映射为BOOTMODE[4:0],利用上拉/下拉电阻在复位时进行芯片启动模式设置。总线上的其它位也在复位期间被锁定,决定系统相应的设定值。而扩展总线XD在HPI口读写时要用到,所以使用MAX7000进行隔离。系统处在复位阶段,则通过MAX7000使得DSP的相应管脚的值等于设定值,复位结束后,MAX7000相应管脚为高阻态,使得XD可以作为正常的总线使用。
DSP自举有特定的时间要求。在复位结束后,XD的配置管脚必须保持一段时间,TMS320C6202要求时间为5个时钟周期,例如在200MHz时钟情况下必须保持25ns。
1.2.3 HPI口接口逻辑实现
MPEG-4压缩编码器压缩后的数据,通过网络传输控制模块传输到网络上去,从而实现网络实时图像传输。而DSP与网络传输模块(MCF5272)通过HPI口连接。其接口逻辑由CPLD完成。硬件连线图如图3所示。
根据系统的逻辑要求以及实际的仿真结果,CPLD选用EPM7128SLC84。该芯片共有2500门,128个宏单元,最多100个用户自定义管脚。
2 CPLD逻辑控制的具体实现
2.1 复位信号的实现
复位信号逻辑产生较简单,需要处理的是按键的去抖动。由于按键是机械触点,当机械触点断开、闭合时会有抖动,为使每一次按键只作一次响应,就必须考虑去除抖动。在通过按键获得复位信号为低的信息时,不是立即认定按键已被按下,而是延时一段时间后再次检测复位信号。如果仍为低,说明按键的确按下了,这实际上是避开了按键按下时的抖动时间。同样,在检测到按键释放后,再延时几个毫秒,消除后沿的抖动,然后再对键值处理。由于抖动现象主要出现在按键按下后,采用延时方法可有效地减少按键的抖动现象。
2.2 BOOT模式的实现
为了满足在复位有效期间对相应管脚进行配置,在复位无效时,使管脚进入高阻态。以其中一个管脚为例,采用Verilog语言,用如下语句实现该功能:
assign hd0=(tp4)?rst_hd0:1′bz;
//复位有效期间,tp4为1,hd=rst_hdo,即为设定值;复位无效时,tp4=0,hd 为高阻态。
因为DSP自举有特定的时间要求,在复位信号结束后,配置管脚的值必须至少保持25ns。通过对复位信号作一定的延时,可以满足要求。采用CPLD将信号作一定的延时,并不能简单地在信号后串接一些非门或其它门电路,因为开发软件在综合设计时会将这些门作为冗余逻辑处理,达不到延时的效果。所以采用高频时钟驱动一移位寄存器,对移位寄存器进行正确的设置后,输出即为延时后的数据。语句如下:
always@(posedge eclkout2) //采用dsp的clkout=100MHz 二分频后作延时
begin
if(svs_rst_) //svs_rst_低电平,count始终置1010
begin
count=4'b1010;
end
else if(count==4'b0000) //0000则保持
begin
count=4'b0000;
end //svs_rst_高电平,count
开始计数
else
begin
count=count+4'b0001; //记六次至0000
end
end
assign tp4=count[3];
仿真效果如图4所示。由仿真波形可见,CPLD的信号输出完全符合DSP BOOT 的两个要求。
2.3 HPI口接口逻辑的实现
图像压缩编码器通过DSP的 HPI口与网络模块连接,实现图像的网络传输。TMS320C6202的HPI口是指其扩展总线的主机口接口部分。经过编码器编码后的MPEG-4图像数据以帧为单位存放在DSP内部存储器中,外部主机通过HPI口读取。现以MCF5272微处理器与HPI口通信为例进行说明。
MCF5272将10/100MB以太网控制器和一个USB模块等通信外围设备结合起来, 是一款高集成的ColdFire微处理器。详见参考文献[4]。
MCF5272与TMS320C6202连接采用异步从属工作方式,MCF5272作为上行机,TMS320C6202作为从属机。由MCF5272高位地址线模拟XCNL、XR_W信号,TMS320C6202的多功能串行口3工作在GPIO模式下模拟信号,为MCF5272提供主机口中断。本系统由CPLD——MAX7000编程实现两者硬件接口。仿真后的时序如图5所示,实验证明可以满足双方时序要求,实现数据传输。
以上所讨论的逻辑并不复杂,采用74系列在一定程度上说也可以完成。但是,采用CPLD具有以下优势:体系结构和逻辑单元灵活、集成度高、适用范围广,因而采用CPLD的方案。
在开发阶段,通过硬件实现的控制信号往往不能确定,需要试验验证。而CPLD因其具有灵活性,逐渐成为DSP进行信号处理不可或缺的协处理器。将相关控制信号接入CPLD,只需通过简单的编程即可实现各种需要的逻辑,避免了硬件上的改动,使硬件逻辑控制更加方便灵活,对类似设计具有普遍意义。文中讨论的防抖动以及CPLD延时程序对于类似设计也有一定的借鉴意义。
本文介绍的CPLD在基于DSP的MPEG-4编码压缩模块的系统中的应用实例,已通过下载验证。应用在工程实践中,结果表明该设计是方便灵活且正确有效的。