基于uPSD323X的EPP增强并口的接口技术_接口电路论文
关键词:epp增强并口 upsd323x psdsoft express
引言
在ibm公司推出pc机时,并行端口已经是pc机的一部分。并口设计之初,是为能代替速度较慢的串行端口驱动当时的高性能点阵式打印机。并口可以同时传输8位数据,而串口只能一位一位地传输,传输速度慢。随着技术的进步和对传输速度要求的提高,最初的标准并行端口即spp模式的并行端口的速度已不能满足要求。1994年3月,ieee 1284委员会颁布了ieee 1284标准.ieee 1284标准提供的在主机和外设之间的并口传输速度,相对于最初的并行端口快了50~100倍。ieee 1284标准定义了5种数据传输模式,分别是兼容模式、半字节模式、字节模式、epp模式和ecp模式。其中epp模式、ecp模式为双向传输模式。epp模式比ecp模式更简洁、灵活、可靠,在工业界得到了更多的实际应用。本文介绍的一种基于upsd323x的epp增强并口的设计核心是,使用upsd323x内部的cpld实现epp接口。
1 epp接口协议介绍
epp(enhanced parallel port,增强并行端口)协议最初是由intel、xirocm、zenith三家公司联合提出的,于1994年在ieee1284标准中发布。epp协议有两个标准:epp1.7和epp1.9。epp接口控制信号由硬件自动产品,整个数据传输可以在一个isa i/o周期完成,通信速率能达到500kb/s~2mb/s。
epp引脚定义如表1所列。
表1 epp接口引脚定义
对应并口引脚 | epp信号 | 方 向 | 说 明 |
1 | nwrit | 输出 | 指示主机是向外设写(低电平)还是从外设读(高电平) |
2~9 | data0~7 | 输入/输出 | 双向数据总线 |
10 | interrupt | 输入 | 下降沿向主机申请中断 |
11 | nwait | 输入 | 低电平表示外设准备好传输数据,高电平表示数据传输完成 |
12 | spare | 输入 | 空余线 |
13 | spare | 输入 | 空余线 |
14 | ndstrb | 输出 | 数据选通信号,低电平有效 |
15 | spare | 输入 | 空余线 |
16 | ninit | 输出 | 初始化信号,低电平有效 |
17 | nastrb | 输出 | 地址数据选通信号,低电平有效 |
18~25 | ground | gnd | 地线 |
1.1 epp接口时序
epp协议定义了4种并口周期:数据写周期、数据读周期、地址写周期和地址读周期。数据周期用于计算机与外设间传送数据;地址周期用于传送地址、通道、命令、控制和状态等辅助。图1是epp数据写的时序图。图1中,niow信号实际上在进行epp数据写时并不会产生,只不过是表示所有的操作都发生在一个i/o周期内。在t1时刻,计算机检测nwait信号,如果nwait为低,表明外设已经准备好,可以启动一个epp周期了。在t2时刻,计算机把nwrite信号置为低,表明是写周期,同时驱动数据线。在t3时刻,计算机把ndatastrobe信号置为低电平,表明是数据周期。当外设在检测到ndatastrobe为低后读取数据并做相应的数据处理,且在t4时刻把nwait置为高,表明已经读取数据,计算机可以结束该epp周期。在t5和t6时刻,计算机把ndatastrobe和nwrite置为高。这样,一个完整的epp数据写周期就完成了。如果就图1中的ndatastrobe信号换为naddstrobe信号,就是epp地址写周期。
图2是epp地址读周期。与epp写周期类似,不同的是nwtrite信号置为高,表明是读周期,并且数据线由外设驱动。
从epp读、写周期可以看出,epp模式的数据传输过程是一个信号互锁的过程。以epp写周期为例子,当检测到nwait为低后,ndatastrobe控制信号就会变低,nwait状态信号会由于ndatastrobe控制信号的变低为而高。当计算机检测到
nwait状态信号变高后,ndatastrobe控制信号就会变高,一个完整的epp写周期结束。因此,epp数据的传输以接口最慢的设备来进行,可以是主机,也可以是外设。
1.2 epp增强并口的定义
epp增强并口模式使用与标准并口(spp,standard paralled port)模式相同的基地址,定义了8个i/o地址。基地址+0是spp数据口,基地址+1是spp状态口,基地址+2是spp控制口。这3个口实际上就是spp模式下的数据、状态和控制口,保证了epp模式和spp模式的软硬件兼容性。
基地址+3是epp地址口。这个i/o口中写数据将产生一个连锁的epp地址写周期,从这个i/o口中读数据将产生一个连锁的epp地址读周期。在不同的epp应用系统中,epp地址口可以根据实际需要设计为设备选择、通道选择、控制寄存器、状态等。给epp应用系统提供了极大的灵活性。
基地址+4是epp数据口。向这个i/o口中写数据将产生一个连锁的epp数据写周期,从这个i/o口读数据将产生一个连锁的epp数据写周期。基地址+5~+7与基地址+4一起提供对epp数据口的双字操作能力。epp允许主机在此个时钟周期内写1个32位双字,epp电路再把32位双字拆为个字节依次从epp数据口中送出去。也可以用其所长6位字方式进行数据传送。
由于epp通过硬件自动握手,对epp地址口和epp数据口的读写操作都自动产生控制信号而无需软件生成。
2 upsd323x及其开发环境psdsoft express
st公司的upsd323x是带8032内核的flash可编程系统器件,将于8032 mcu、地址锁存器、flash、sram、pld等集成在一个芯片内。其主要特点如下:具有在线编程能力和超强的保密功能;2片flash保存器,1片是128k或者256k的主flash存储器,另一片是32k的从flash存储器;片内8k的sdram;可编程的地址解码电路(dpld),使存储器地址可以映射到8032寻址范围内的任何空间;带有16位宏单元的3000门可编程逻辑电路(cpld),可以实现epp接口等及一些不太复杂的接口和控制功能;2个异步串口、i2c接口、usb接口、5通道脉冲宽度调节器、50个i/o引脚等。由于upsd323x采用的是8032内核,因此可以完全得到keil c51编程器的psdsoft express是st公司针对psd系列产品(包括upsd)开发的基于windows平台的一套软件开发环境。经过不断升级,目前最新版是psdsoft express 7.9。它提供非常容易的点击设计窗口环境用户不需要自己编程,也不需要了解hdl语言,只有点击鼠标即可完成对地址锁存器、flash、可编程逻辑电路等外设的所有配置和写入。它支持所有psd器件的开发,使用psdsoft express工具对upsd323x系列器件的可编程逻辑电路的操作简单、直观。psdsoft express工具可以在st网站(www.st.com/psd)免费下载。
3 用upsd323x实现epp接口设计
3.1 硬件接口
epp增强并口的速度最高可达到500kb/s~2mb/s,这对外设的接口设计提供了一个很高的要求,如果外设响应太慢,系统的整体性能将大大下降。用户可编程逻辑器件,系统的整体性能将大大降低。用户可编程逻辑器件,如fpga(field programmable gates array,现场可编程门阵列)和cpld(complex programmable logic device,复杂可编程逻辑器件),可以实现epp增强并口的接口设计,这种实现方案可以达到并口中的速度极限,并且保密性好。st公司的upsd323x内部集成了可编程逻辑电路(cpld),因此使用upsd323x可以很好地实现epp增强并口的接口设计。
epp接口(epp1.7)外设硬件接口原理如图3所示。在本设计中,upsd323x通过中断的方式接收pc机并口的数据,并且当外设准备好数据上传到pc机时,pc机采用的也是中断方式接收外设的数据。
在上述硬件电路的基于上实现epp并口通信还需做两部分的工作:一部分工作是在psdsoft express工具中完成对cpld 的数据的锁存;另一部分工作是在keil c51环境下编写中断服务程序,实现epp数据的读取和发送。
图3
3.2 对cpld的编程及其实现数据锁存的过程
在psdsoft express工具中,将pa端口(eppd0~eppd7)配置成带有时钟上升沿触发的寄存器类型(pt clocked register)的输入宏,pb0(nwait)配置成上升沿触发的d类型寄存器(d-type register)的输出宏,pb3(nwrite)、pb4(ndstrb)、pb2(nastrb)配置成cpld逻辑输入(logic input)口。ndstrb信号和nastrb信号各自取反再相与后的值作为输入宏单元和输出宏单元的时钟。上述对pa、pb端口的配置用方程式表示如下:
porta equations:
=======================
!eppd7_ld_0=nastrb & ndstrb;
eppd0.ld=eppd3_ld_0.fb;
!eppd3_ld_0=nastrb & ndstrb;
eppd1.ld=eppd3_ld_0.fb;
!nwait_c_0=nastrb & ndstrb;
eppd2.ld=eppd3_ld_0.fb;
eppd3.ld=eppd3_ld_0.fb;
eppd4.ld=fppd7_ld_0.fb;
eppd5.ld=eppd7_ld_0.fb;
eppd6.ld=eppd7_ld_0.fb;
eppd7.ld=eppd7_ld_0.fb;
portb equations:
=======================
nwait.d:=1;
nwait.pr=0;
nwait.c=nwait_c_0.fb;
nwait.oe=1;
ndstrb.le=1;
nastrb.le=1;
epp数据的锁存过程如下:以计算机向外设传输数据(即epp数据写周期)为例子,计算机首先检测nwait信号,如果nwait为低计算机把nwrite信号置为低,表明是写周期,同时将数据放到数据总线上,然后置低ndstrb信号。此时,ndstrb信号会出现一个上升沿,此上升沿会将pa端口的数据锁存到输入宏;同时,此上升沿使nwait信号变高,表示外设正忙阻计算机发数年。当计算机检测到nwait信号为高后就会将数据握手信号ndstrb变高,epp数据写周期结束。上述epp数据的锁存和nwait握手信号的产生都由硬件产生,因此数据传输速度快。整个数据传输过程可以在一个i/o周期内完成,锁存到输入宏的数据的读取和nwait信号的清除则在外部中断0服务程序软件完成。
3.3 中断服务程序的功能描述及流程
由硬件原理图可以看出,epp并口的ndstrb和nastrb信号线分别连到upsd323x的外部中断定和外部中断1引脚。当发生epp数据读写时,ndstrb信号就会产生一个下降沿,引起外中断定中断。当发生epp地址读写时,nastrb信号就会产生一个下降沿,引起外中断1中断。外部中断0和外部中断1的中断服务程序的功能是相同的,只不过前者接收或发送的是数据而后者是地址、命令等。以外部中断0的中断服务程序为例,详细介绍数据正向传输(计算机向外设发送数据)和反向传输(外设向计算机传送数据)时中断服务程序的功能。外部中断0中断服务程序流程如图4所示。
(1)数据正向传输
当发生epp数据写周期时,即数据正向传输时,计算机首先检测nwait信号。如果nwait为低,表示外设已准备好接收数据。计算机把nwrite信号置为低,表明是写周期,同时将数据放到数据总线上,然后置低ndstrb。ndstrb信号就会产生一个下降沿,此下降沿一方面将pa端口的数据锁存到输入宏并使nwait信号变高,表示外设正忙另一方面引起外部中断0中断,在外部中断0的中断服务程序中读取输入宏锁存的数据,然后将nwait信号清零通知计算机现在外设已经准备好可以再次接收数据了。
(2)数据反向传输
外设准备好数据需要上传到计算机时,upsd323x就会将数据放到pa端口,同时置低intr信号线,向计算机申请一个中断,计算机中由一个硬件驱动程序来处理并口的硬件中断。驱动程序在并口中断服务程序中,通过读取epp数据口获得外设上传的数据。由于epp接口的握手信号由硬件产生,当计算机读取epp数据口时同样会检测nwait信号。如果nwait为低,计算机把nwrite信号置高,表明是读周期,然后置低ndstrb,ndstrb信号就会产生一个下降沿。此下降沿使nwait信号变高,同时引起upsd323x外部中断定中断。在外部中断0的中断服务程序中,为确保计算机将pa端口的数据取走,需不断检测ndstrb是否为高。当ndstrb为高时,表示计算机已将pa端口听数据读走,然后中断服务程序将nwait置低,epp数据读周期结束。
结语
本文系统地介绍了epp增强并口协议,并给出使用st公司的upsd323x系列器件实现epp增强并口的接口方法。此方案不需要外接门电路,保密性好,成本低。