增强并口EPP与DSP接口的设计增强并口EPP与DSP接口的设计
摘要:提出用计算机的EPP协议与ADSP2181的IDMA口进行快速通信的设计方法。该接口的核心是可编程逻辑器件EPLD,只需要修改EPLD的逻辑就可以满足各种不同设计的要求,因此具有很强的通用性。
关键词:增强并行口(EPP) ADSP2181 EPLD
利用计算机进行数据采集与控制一直都是研究的热点。大部分数据采集与控制系统都是做成插卡的形式;然而,对于日益普及应用的笔记本电脑而言,由于没有提供扩展插槽,不能够直接做成插卡的形式,因此就需要充分利用笔记本提供的外围接口,例如并口、串口等来实现。由于串口速度的限制,对于速度比较高的数据采集与控制系统,往往采用计算机的并口。这几年在国内已经有很多大在做利用增强型并行口(EPP)与外界进行通信这方面的工作,但大部分都是与一些简单外围电路的通信与控制(例如FIFO、A/D转换器),很少有人涉及到与DSP的通信。我们所设计的并口与ADSP2181的接口,为和外围复杂电路进行通信提供了一种途径。
一、EPP并口
最常见的计算机并口模式是SPP模式(标准并行口)。javascript:window.open(this.src);" style="cursor:pointer;"/>该模式数据传输是单向的,如果要完成数据的输入就不得利用状态线。故读入一个数据就需要进行好几次的I/O读周期,因此传输速度就不可能做到很高,仅能做到150KB/s。其外围设计电路并不比EPP简单,因此SPP在数据采集与控制系统中很少应用。
1992年,intel、Xicom与Zenith公司共同制定了EPP1.7标准,并在随后的时间里对该增值修订与完善。对于EPP标准而言,现在主要有EPP1.7与EPP1.9两种标准;对于用户而言,它们在具体的应用中并没有什么不匹配的地方。
EPP协议与标准并行口兼容而且能够完成双向数据传输的协议。它提供了四种数据传送周期:数据读周期、数据写周期、地址读周期、地址写周期。数据周期一般用于主机与外设之间进行数据传送;地址周期一般用于传送地址、通道、命令和控制等信息。在实际操作中,两者并没有太大的区别。几乎可以把地址周期看到另外一种的数据周期。仅有的区别将在后面说明。
表1给出了EPP协议中各引脚的信号的定义与描述。
表1 EPP中各引脚的定义与描述
EPP信号名 | EPP信号方向 | EPP信号描述 | 对应并口引脚 |
Nwrite | 输出 | 低电平写,高电平读 | 1 |
Ndatastb | 输出 | 低有效,进行数据读写 | 14 |
Naddstb | 输出 | 低有效,进行地址读写 | 17 |
Ninit | 输出 | 低有效,得置外设 | 16 |
Intr | 输入 | 外设断,外设对机产生中断请求 | 10 |
Nwait | 输入 | 低有效,外设响应信号 | 11 |
AD[0..7] | 双向 | 双向数据/地址总线 | 2~9 |
用户定义 | 输入 | 用户可灵活定义 | 12 |
用户定义 | 输入 | 用户可灵活定义 | 13 |
用户定义 | 输入 | 用户可灵活定义 | 15 |
图1是EPP数据读周期的时序图。读操作是在一个I/O周期内完成的。这就是说用EPP传输数据,可以达到500KB~2MB/s的传输速率。由于Nwait是互锁形式的握手信号,javascript:window.open(this.src);" style="cursor:pointer;"/>故数据的传输以接口的最慢的设备来进行,可以是主机,也可以是外设。因此设计外围电路就比较灵活。
EPP模式是在BIOS里进行设置的。需要设置的主要是基地址以及中断号。基地址最好设置成378H或278H,而不要设置成3BCH,因为3BFH后面的端口可能为其它设备所占用。EPP共有8个I/O地址端口(假如基地址为378H);378H为SPP的数据口;379H为SPP的状态口;37AH为控制口;37BH为地址读写口;37HC为数据读写口;37DH~37FH可以由用户定义,主要用作16bit与32bit I/O数据读写辅助口。通过对端口基地址+4的I/O读写就可以产生EPP的数据读写周期,对基地址+3的I/O读写就可以产生EPP的地址读写周期。夺址读写周期与数据读写周期的主要区别就是数据读写可以做32bit与16bit的I/O读写,而地址读写周期只能够做8bit的I/O读写(主要因为它没有辅助的端口)。在C语言里面,可以用端口读写函数outportb()、inportb()、outport()、inport()来实现EPP的读写操作,相应的控制信号由计算机自动产生。
二、ADSP2181的IDMA接口
ADSP2181是AD公司制造的ADSP21XX定点DSP系列的一种。它的指令周期为30ns,足以满足信号的实时处理。它内部有16MB的程序存储区(PM)与16MB的数据存储区(DM)。外围接口可以通过IDMA与I/O的方式对存储区进行访问。其IDMA操作的最大优点IDMA的读写操作并不影响ADSP2181程序的运行。但是需要注意的是ADSP2181与外设不能够同时对同一个存储区进行读写,否则,会引起数据紊乱。javascript:window.open(this.src);" style="cursor:pointer;"/>
IDMA端口主要有以下几个信号线:nIRD(输入、读选通)、nIWR(输入、写选通)、nIS(输入、IDMA选通)、IAL(输入、地址锁存使能)、IDA0~15(地址/数据复用线)、nIACK(输出、DSP响应信号)。
IDAM读写的初始地址与存储区的类型由ADSP2181内部专门的寄存器来控制。每进行一次读写,则该初始地址就自动加1。该寄存器呵以由ADSP2181来设置,也可以由外设电路通过IDMA操作来完成。
IDMA读周期的时序图如图2所示。IDMA写周期的时序图如图3所示。需要注意的是在IDMA读周期中,nIWR为高电平,IAL为低电平,在IDMA写周期时序中,nIRD为高电平,IAL为低电平。
三、接口电路以及整体设计的考虑
图4是我们设计的接口电路框图。并口控制线包括Ndatastb、Naddstb、Ninit;DSP控制线包括nIS、nWRITE、nREAD、IAL。
其中可