1引言
使用复杂可编程逻辑器件(CPLD)可提高系统集成度、降低噪声、增强系统可靠性并降低成本,同时它不仅具有电擦除特性,而且出现了边缘扫描及在线编程等高级特性,因而可用于状态机、同步、译码、解码、计数、总线接口等很多方面,在信号处理领域的应用也非常活跃。MAX7000系列是ALTERA公司采用先进的0.8μmCMOSEEPROM技术制造的高性能、高密度的CPLD[1]。MAX7000的结构可完全模仿TFL,并可将SSI,MSI,LSI和传统PLD的逻辑函数高密度地集成。EPM7128S是MAX7000系列的高密度器件,它有128个逻辑宏单元和最大100个输入,具有在系统编程(ISP)特性,非常适合输入、输出端要求较多的逻辑复杂的控制密集型系统。将EPM7128S用到DSP与ISA总线声卡的接口电路中,不仅使整个系统体积显著减小,且硬件故障率明显降低,调试工作也变得很容易。
2DSP与ISA总线声卡的接口原理
2.1声卡的工作原理
图1示出了声卡的基本工作原理:主机通过总线将数字化的声音信号以PCM方式送到数模转换器(D/A),将数字信号变成模拟的音频信号;同时又可以通过模数转换器(A/D)将传声器或CD的输入信号转换成数字信号,送到计算机进行各种处理。实际具体声卡的硬件结构请参阅有关资料和手册。
2.2WSS兼容声卡和ISA总线硬件接口
WSS是Microsoft公司为统一声卡的标准、提供方便的应用而提出的Windows环境下多媒体扩展定义的音频子系统标准,它包括硬件平台和软件接口。该类声卡的硬件结构主要包括声音处理芯片/组、功率放大器、总线连接端口、输入输出端口、MIDI及游戏杆接口、CD音频连接器等m。根据实际需要,只需了解声卡与ISA总线的接口信号及时序要求。要实现DSP对声卡的直接操作,DSP系统必须提供上述ISA总线信号。
DSP一般可提供数据信号线、地址信号线、IO读写信号线和READY信号线,同时还有多个中断输入引脚,但并不直接具备DMA功能引脚,这给DSP与声卡之间的接口带来了不便,这也正是笔者所要解决的问题。
2.3TMS320C2XX使用HOLD操作的DMA
TMS320C2XX[~实现DMA功能的关键是,该类芯片提供了两个信号引脚:HOLD/INTl和HOLDA,这两个信号控制的HOLD操作过程为:
(1)HOLD,外部设备可以把该引脚驱动到低电平从而请求对外部总线的控制。如果HOLD/INTl中断线被允许,那么这将触发中断。
(2)HOLDA,在响应HOLD中断时,软件逻辑可以使处理器发出HOLDA应答信号,表示它将放弃对其外部总线的控制。根据百Z圃5五,外部地址信号(A15~A0)、数据信号(D15~D0)以及存储器控制信号(P5,DS,BR,STRB,R/W,RD,WE)被置为高阻状态。
从(1)、(2)可以看出C2XX的HOLD操作允许对外部程序、数据以及I/O空间进行直接存储器访问,但该功能是在INTl中断程序中实现的,因而中断线INTl对下降沿和上升沿两者都应敏感。当C2XX检测到下降沿时,它完成正在执行的当前指令,然后迫使程序控制转到中断服务子程序,此子程序执行IDLE(空闲)指令。根据IDLE,HOLDA变为有效而外部总线被置为高阻状态。只有在检测到HOLD/INTl引脚上的上升沿之后,CPU才退出IDLE状态,HOLDA变为无效,并使外部总线返回到正常状态。
从以上分析可以看出C2XX的DMA操作与PC机中的DMA操作的区别。在PC机中,CPU收到DMA请求信号后,迫使CPU在现行的总线周期结束后,使其地址、数据和部分控制引脚处于三态,从而让出总线的控制权,并给出一个DMA响应信号;在DMA操作完成后,DMA请求信号无效以后,CPU再恢复对系统总线的控制。而在C2XX中,DMA申请信号将引起C2XX中断,在中断程序中发出软件指令使C2XX各信号引脚处于三态,同时也给出了一个DMA响应信号;在DMA操作完成后,C2XX检测到DMA请求信号无效以后,虽然总线返回到正常状态,C2XX仍处在中断程序中。从以上分析可知,尽管中断需要保护断点和现场,使得C2XX的DMA的处理速度与PC机相比要低得多,但毕竟C2XX也实现了DMA操作,从而可借助DMA控制器8237实现对声卡的DMA操作访问[4]。
2.4DSP与声卡的接口电路
整个系统结构框图如图2所示。从图中可以看出,CPLD主要完成数据总线驱动、地址总线驱动、地址锁存器、译码和时钟分频等功能,其中译码电路是整个电路的核心。数据总线驱动电路和地址总线驱动将DSP的内部数据与地址总线与外围电路的数据和地址总线相互隔离;地址锁存器生成8237在DMA服务周期通过数据线DB0~D7输出的高8位地址A8~A15。时钟分频电路为外电路提供需要的各种频率的同步时钟。-译码电路为各单元电路以及外围电路提供读写信号、锁存信号、片选信号和使能信号。
图2中1为DSP内部系统总线,2为外部数据总线,3为DSP内部地址总线,4为外部地址总线,5为数据总线收发电路使能信号,6为地址总线驱动电路使能信号,7为DSP输出控制总线,8为CPLD译码后输人DSP的信号线,9为DSP同步外围电路的时钟,10为DMA输人时钟,11为RAM,8237和声卡的读写信号,12为锁存信号,13为RAM的片选信号。
3EPM7128S内部译码电路的逻辑实现
图3给出了EPM7128S内部译码电路主要的输入和输出信号以及它们的逻辑关系。其中DSP的地址选通信号和读写信号经译码分别得到IO读写信号和存储器读写信号;8237的DMA申请信号HRQ经反相后送到DSP的HOLD引脚以触发DSP中断,DSP在中断程序里发IDLE指令,HOLDA引脚变为低电子,响应DMA申请;同时数据总线和地址总线驱动电路的使能信号关闭,数据总线和地址总线为高阻态,从而8237可以接管总线,进行DMA操作。声卡的中断信号为高电子,须反相后再接DSP的中断引脚。
4系统工作原理及时序
系统工作的时序如图4所示。现结合图2、图3和图4将系统工作原理及操作顺序说明如下:
(1)声卡向8237发出DMA请求信号DREQ;
(2)8237通过CPLD向DSP发出HRQ信号;
(3)DSP的HOLD引脚检测到下降沿后,进入INTl中断,保护完断点和现场后,发IDLE指令,DSP的HOLDA引脚电平变低,u向应外部DMA请求;
(4)8237接管总线后,先向声卡DMA请求的响应信号DACK,表示允许声卡进行DMA传送,然后按事先设置的初始地址和需传送的字节数,依次发送地址和读写命令,使得在RAM和声卡之间直接交换数据,直至全部数据交换完毕;
(5)DMA传送结束后,自动撤消向CPU的总线请求信号HRQ,此时DSP检测到丽iS引脚的上升沿,DSP返回到IDLE指令的下一条指令,DSP获得总线的控制权,继续在INTl中执行程序。
从上面DSP系统的工作原理可以看出,由于DMA是在中断程序中完成的,故DSP的DMA执行频率受限于DSP每秒可执行的中断次数。
5结束语
笔者曾用分立元件设计的DSP与声卡的接口电路中,用了2片74LS245,3片74LS244,1片74LS74,1片74LS573和3片GAL20V8,器件多,PCB布局、布线繁杂。尽管用的是表贴器件,但仍占相当大PCB面积,由引脚松动、虚焊等原因引发的故障率较高。采用CPLD器件后,接口电路全部集成在一片中,系统的可靠性、灵活性大大提高。复杂可编程逻辑器件因其使用方便、具有很高的性价比,必将拥有广阔的应用前景。