随着人们生活节奏的加快,越来越多的场合需要使用电子手段动态发布信息,对计算机外设的数据采集速度的要求也越来越高。传统的异步串行通讯方式虽然具有数据传输距离较远的优势,但是由于数据传输速度慢,会造成传输速率的瓶颈问题。所以在一些需要高速数据传输的场合,使用并行接口一直是一种比较理想的解决方法。
CPLD主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成。其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产之中。
1、并口EPP模式介绍
1.1并行接口的种类
初的PC机并口由8个单向输出,5个位输入和4位双向(控制)线组成,如今为了适应扩展外围设备的需要,并口已经发展出了多种工作模式。总共有标准并行接口、简单双向接口、增强型并行接口及多模式接口这几种。EPP工作模式作为一个提供高性能并口连接的方法,仍与SPP兼容。EPP工作模式优点:
⑴ 8位数据线由原来SPP的单向改成了双向,简化了外围电路的设计;
⑵ 在一个ISA的周期可以完成数据的传输,加快了数据传输速率;
⑶ 只需要对计算机发送一条简单软件指令,接口硬件就可以自动生成握手联络信号;
⑷ 接口数据线可以分别定义为数据和地址,通过综合使用nAstrb和nDstrb两条控制线可以快速的实现数据向不同的设备传输;
⑸ 相对ECP的工作模式,EPP操作简单、易于实现。
1.2 EPP的硬件接口
EPP接口通常是25芯的D-sub接口,符合IEEE1284标准。其中数据选通和地址选通信号为低电平有效, 且两者不可能同时为低,主要是考虑PC比外设快, 外设通过发送等待信号与PC并口协调工作。空闲信号线(Spare)可以由外设根据需要来决定其状态,由PC直接读取并口状态寄存器的相应位来获得Spare的状态信息。
1.3 EPP寄存器说明
在PC机中,标准并行接口使用了3个8位的端口寄存器。PC就是通过对这些寄存器的读写访问并口信号的,这3个寄存器的地址分别是基地址、基地址+1、基地址+2。目前,EPP将在基地址+3到基地址+7的范围内,添加5个寄存器。因此EPP一共使用了8个寄存器,如表1所示。
表1 EPP的8个寄存器及他们的功能

为了能够在EPP模式下读写一个数据字节,你需要将数据读取或者写入EPP数据寄存器(基地址+4),而不是读写基地址。EPP的基地址通常是378h和278h。
1.4 EPP工作模式的时序分析
在EPP和ECP模式中,简单的端口读写操作就会自动产生握手联络信号。图1是一个EPP地址写入周期的时序图。如图所示,对EPP数据寄存器的写操作将导致接口启动一个完整的数据写入周期。接口的硬件把待写入数据置于D0~D7,然后接口自动触发握手联络信号,并检测外设的应答。读取一个字节的过程与此类似。对EPP地址寄存器进行读写操作将引发一个完整的数据读写周期。

图1 EPP地址写入周期的时序图
2、基于WDM的并口驱动程序的实现
在设计PC机外围产品时,不仅需要考虑PC接口定义,与接口相关的寄存器定义,数据传输协议,还要根据上位机采用的操作系统来编写合适的通讯程序,以便上位机对数据进行管理和监控。
2.1 WDM驱动程序的种类和结构
WDM(Win32 Driver Model),即Windows驱动程序模型,是Microsoft力推的全新驱动程序模式,可以用来开发Windows 98和Windows 2000设备驱动程序。图2显示了在Win2000/XP系统中应用程序调用一个硬件操作的基本过程,从中可以看到WDM在整个驱动体系结构中的位置何作用。

图2 Win2000的驱动体系结构
如图3所示,WDM的驱动程序是分层的,一般按照层次分为高层、中间和底层三类。顾名思义,高层驱动程序依赖于中间和底层驱动程序完成工作,而中间驱动程序又依赖于底层驱动程序来完成工作。

图3 并行口EPP模式驱动程序接口框图
2.2 并口EPP模式驱动程序的功能实现
WDM驱动程序开发工具通常用NuMega DriverStudio。它可以集成到VC++ 开发环境中,这样就可以像生成其他工程一样生成驱动程序框架,省去了大量的编写代码的时间。
2.3 EPP模式的基本操作
首先定义类KIoRange的一个实例,以对应EPP


下面就可以用类KIoRange的成员函数来访问EPP的寄存器。
3、并口EPP模式外围电路硬件设计实例
由上文可知,并口EPP模式下的数据传输速度可以达到μs级,所以使用一般的单片机来控制外设与EPP的通讯显然不能满足高速的要求。本文采用大规模可编程逻辑器件,充分利用其高速和大容量特性设计接口电路,可广泛用于数据采集、D/A 转换以及数字控制。
本设计采用Xilinx公司的XC95144芯片作为EPP接口模块的控制单元,并且通过XC95144实现了计算机并口与外部存储器SRAM的数据交换。该EPP接口模块的总体框架如图4所示。

如图4所示,CPLD内部由各个负责不同功能的子模块组成,其作用与早期的分立元件一样,所有子模块用Verilog设计实现。采用ECS将所有的子模块组织起来,集成在一块CPLD内。
图4中的总线74LS245是一个总线收发器,由nWrite信号控制并口数据的传输方向。74LS138子模块是一个3-8译码器,通过EPP的地址线向138写入数据,使能不同的触发信号(CK)来锁存SRAM的地址或者数据总线上的高/低8位数据。该模块的Verilog源码如下:

如果要向SRAM的地址低8位写入数据,PC只需执行outp(0x378+3, 0x00),outp(0x378h+4,地址低8位值) 两条指令,在执行后一条指令的同时,ck_al选通信号将并口的数值锁存到SRAM地址低8位锁存器中。在ck_dh信号触发的同时将由nWE_cre模块使能一个nWE信号,将数据写入SRAM。
4、结束语
采用增强型并口(EPP)模式,极大地扩展了并口通讯的容量和速度。使用CPLD设计并口EPP接口模块,体现了EPP高速传输的特性,将所有的功能模块集成在一块芯片中,提高了系统的可靠性。本文设计的EPP接口模块已被成功的运用到某款单片机仿真器产品中,实验证明这种设计是可行的。
[1]. CPLD datasheet https://www.dzsc.com/datasheet/CPLD_1136600.html.
[2]. XC95144 datasheet https://www.dzsc.com/datasheet/XC95144_727462.html.
[3]. ECS datasheet https://www.dzsc.com/datasheet/ECS_2043506.html.
[4]. 74LS245 datasheet https://www.dzsc.com/datasheet/74LS245_1054125.html.
[5]. 74LS138 datasheet https://www.dzsc.com/datasheet/74LS138_1054480.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。