基于uPSD3254A单片机的EPP并口通信技术
时间:08-04
来源:互联网
点击:
在IBM公司推出PC机开始,并口已经是PC机的一部分。最初并口就是为代替串口来驱动高性能点阵式打印机,并口通信有SPP、EPP、ECP三种传输模式,SPP模式是半双工单向传输的,传输速率仅为15KB/S;EPP增强型模式采用双向半双工数据传输,传输速度高达2MB/S;ECP扩充型模式采用双向全双工数据传输,传输速率比EPP高。在设计和实现方面,EPP模式比ECP模式更灵活、简洁、可靠,在工业界得到了更多的实际应用。本文介绍的是一种基于uPSD3254A的EPP增强并口的设计,其核心是使用uPSD323X内部的CPLD实现EPP接口与PC机上并口之间的高速硬件通信,实际测试中速度达到了900KB/S。
1EPP协议介绍
EPP协议是由Intel、Xircom、Zenith三家公司联合提出的,于1994年在IEEE1284标准中发布。EPP协议有EPP1.7和EPP1.9两个标准,可以在PC机的BIOS/外围设备/并行口BIOS/PeripheralSetup/ParallelPortMode)方式中进行设置[3]。与传统并行口标准利用软件实现握手不同,EPP接口协议通过硬件自动握手,能达到500KB/s~2MB/s的通信速率。
1.1EPP工作模式的寄存器和引脚定义
PC并口采用25针的DB型阴极接口,EPP工作模式的25个引脚的定义如表1所示。
表1EPP协议引脚定义
在寄存器方面,EPP定义了8个寄存器,继承了SPP的3个寄存器,其中EPP与SPP共用状态寄存器和控制寄存器,保证了EPP模式和SPP模式软硬件兼容型,其寄存器定义如表2所示。将并口设置为EPP方式时,需要在PC机的BIOS中设置并口工作于EPP方式,寄存器组的基地址(BASE)通常设为0x378。
表2EPP寄存器定义
1.2EPP读写周期
为了能进行有效的EPP数据通信,必须遵循EPP的握手时序。与SPP的软件握手相比,EPP采用硬件完成的握手实现了高速的数据通信速度。EPP协议共分为四种周期:数据写周期、数据读周期、地址写周期和地址读周期,数据周期用于计算机和外设间传送数据;地址周期用于传送地址、通道、命令、控制和状态等辅助信息。
1.2.1EPP数据/地址读周期如图1所示
EPP数据/地址读周期CPU读操作步骤如下:
1)程序对EPP数据寄存器(Base+4)/地址寄存器(Base+3)执行读操作
2)nDstrb/nAstrb被置低如果nWaite信号为低,否则等待
3)主机等待nWaite为高表示数据发送成功
4)从并口中读取8位数据/地址
5)nDstrb/nAstrb被置高
6)EPP数据/地址读周期完成
图1EPP数据/地址读周期
1.2.2EPP数据/地址写周期如图2所示
EPP数据/地址写周期CPU写操作步骤如下:
1)程序对EPP数据寄存器(Base+4)/地址寄存器(Base+3)执行写操作
2)将nWrite信号置低(低表示写操作)
3)将要写的数据/地址数据送到数据总线上
4)nDstrb/nAstrb被置低如果nWaite信号为低,否则等待
5)主机等待nWait握手信号为高表示发送成功
6)nDstrb/nAstrb被置高
7)EPP数据/地址写周期完成
图2EPP数据/地址写周期
其中,使用EPP1.7(PreIEEE1284)握手标准时,则nDstrb/nAstrb信号不考虑nWait是否为低,直接被置低开始一个新的读/写周期;如果使用EPP1.9握手标准,则只有在nWait信号为低时,nDstrb/nAstrb信号才会被置低开始一个新的读/写周期。但是EPP1.7和EPP1.9都要求nWait信号为高时一个读/写周期才结束。
由于nWait、nWrite、nDstrb、nAstrb等信号传输后反向(见表1),因此图1和图2中的时序是从PC端考虑的,nWait信号表示单片机发出的原始信号,在PC端实际采用的是与单片机发出的原始信号取反后的信号。
1EPP协议介绍
EPP协议是由Intel、Xircom、Zenith三家公司联合提出的,于1994年在IEEE1284标准中发布。EPP协议有EPP1.7和EPP1.9两个标准,可以在PC机的BIOS/外围设备/并行口BIOS/PeripheralSetup/ParallelPortMode)方式中进行设置[3]。与传统并行口标准利用软件实现握手不同,EPP接口协议通过硬件自动握手,能达到500KB/s~2MB/s的通信速率。
1.1EPP工作模式的寄存器和引脚定义
PC并口采用25针的DB型阴极接口,EPP工作模式的25个引脚的定义如表1所示。
表1EPP协议引脚定义
引脚号 | EPP信号 | 方向 | 是否反向 | 说明 |
1 | nWrite | 输出 | 是 | 低电平表示写,高电平表示读 |
2"9 | Data0"7 | 输出/输入 | 否 | 数据 |
10 | Interrupt | 输入 | 否 | 上升沿触发中断 |
11 | nWait | 输入 | 是 | 低电平传输数据/地址,高电平传输结束 |
12 | Spare | 输入 | 否 | EPP未定义,可用户自定义 |
13 | Spare | 输入 | 否 | EPP未定义,可用户自定义 |
14 | nDstrb | 输出 | 是 | 低电平表示数据传输 |
15 | Spare | 输入 | 否 | EPP未定义,可用户自定义 |
16 | nReset | 输出 | 否 | 低电平有效 |
17 | nAstrb | 输出 | 是 | 低电平表示地址传输 |
18"25 | GND | — | — | 地 |
在寄存器方面,EPP定义了8个寄存器,继承了SPP的3个寄存器,其中EPP与SPP共用状态寄存器和控制寄存器,保证了EPP模式和SPP模式软硬件兼容型,其寄存器定义如表2所示。将并口设置为EPP方式时,需要在PC机的BIOS中设置并口工作于EPP方式,寄存器组的基地址(BASE)通常设为0x378。
表2EPP寄存器定义
地址 | 端口名称 | 读/写 |
BASE+0 | SPP数据端口 | 写 |
BASE+1 | SPP/EPP状态端口 | 读 |
BASE+2 | SPP/EPP控制端口 | 写 |
BASE+3 | EPP地址端口 | 读/写 |
BASE+4 | EPP数据端口 | 读/写 |
BASE+5"+7 | 用户自定义 | — |
1.2EPP读写周期
为了能进行有效的EPP数据通信,必须遵循EPP的握手时序。与SPP的软件握手相比,EPP采用硬件完成的握手实现了高速的数据通信速度。EPP协议共分为四种周期:数据写周期、数据读周期、地址写周期和地址读周期,数据周期用于计算机和外设间传送数据;地址周期用于传送地址、通道、命令、控制和状态等辅助信息。
1.2.1EPP数据/地址读周期如图1所示
EPP数据/地址读周期CPU读操作步骤如下:
1)程序对EPP数据寄存器(Base+4)/地址寄存器(Base+3)执行读操作
2)nDstrb/nAstrb被置低如果nWaite信号为低,否则等待
3)主机等待nWaite为高表示数据发送成功
4)从并口中读取8位数据/地址
5)nDstrb/nAstrb被置高
6)EPP数据/地址读周期完成
图1EPP数据/地址读周期
1.2.2EPP数据/地址写周期如图2所示
EPP数据/地址写周期CPU写操作步骤如下:
1)程序对EPP数据寄存器(Base+4)/地址寄存器(Base+3)执行写操作
2)将nWrite信号置低(低表示写操作)
3)将要写的数据/地址数据送到数据总线上
4)nDstrb/nAstrb被置低如果nWaite信号为低,否则等待
5)主机等待nWait握手信号为高表示发送成功
6)nDstrb/nAstrb被置高
7)EPP数据/地址写周期完成
图2EPP数据/地址写周期
其中,使用EPP1.7(PreIEEE1284)握手标准时,则nDstrb/nAstrb信号不考虑nWait是否为低,直接被置低开始一个新的读/写周期;如果使用EPP1.9握手标准,则只有在nWait信号为低时,nDstrb/nAstrb信号才会被置低开始一个新的读/写周期。但是EPP1.7和EPP1.9都要求nWait信号为高时一个读/写周期才结束。
由于nWait、nWrite、nDstrb、nAstrb等信号传输后反向(见表1),因此图1和图2中的时序是从PC端考虑的,nWait信号表示单片机发出的原始信号,在PC端实际采用的是与单片机发出的原始信号取反后的信号。
- 基于CPLD的键盘控制器设计(05-20)
- 基于DSP与CPLD的多通道数据采集系统的设计(09-22)
- DSP和CPLD的空间瞬态光辐射信号实时探测研究(01-24)
- 基于CPLD的RS-232串口通信实现(04-23)
- USB数据采集系统中DMA数据传输的实现(06-17)
- 简易USB接口卡的设计和实现(04-21)