并行端口的接口资料

上传人:痛*** 文档编号:151944740 上传时间:2022-09-14 格式:DOC 页数:16 大小:161.03KB
收藏 版权申诉 举报 下载
并行端口的接口资料_第1页
第1页 / 共16页
并行端口的接口资料_第2页
第2页 / 共16页
并行端口的接口资料_第3页
第3页 / 共16页
资源描述:

《并行端口的接口资料》由会员分享,可在线阅读,更多相关《并行端口的接口资料(16页珍藏版)》请在装配图网上搜索。

1、并行端口接口目录一、标准并行端口(SPP)1.1 并行端口导论1.2 硬件特性1.3 端口地址1.4 软件寄存器(SPP) 1.4.1 双向端口 1.4.2 并行端口用于8比特输入 1.4.3并行端口IRQ的使用1.5 编程二、增强型并行端口(EPP)2.1 增强型并行端口2.2 EPP硬件特性2.3 EPP握手(Hand shake)2.4 EPP软件寄存器三、扩展功能端口(ECP)3.1 扩展能力端口入门3.2 ECP硬件特性3.3 ECP握手3.4 RLE运行长编码3.5 ECP软件寄存器3.6 ECP扩展控制寄存器(ECR)3.6.1 ECP的配置寄存器A(cnfgA)3.6.2 EC

2、P的配置寄存器B(cnfgB)一、 并行端口1.1 并行端口导论并行端口在接口设计工程中是最常用的。该端口在任何规定时间内将允许输入达到9比特,输出达到12比特。该端口由4条控制线,5条状态线和8条数据线组成。在PC机后部常常可以见到作为D型25脚阴性连接的端口,或者是D型25引脚的阳性连接。这将是一个RS232串行端口和一个完全不同的端口。关于RS-232串行端口的大量资料可以查看网终止提供的信息。网址为:在1994所以前,连接比如打印机、扫描仪、CD-ROM等设备还没有设置并行端口如何工作的标准。一些人在他们的驱动器中使用TTL(Transistor to Transistor Logic

3、)技术,然而多数人(尤其是最近)使用CMOS(Comp Lementary Metal Dxide Semiconductors)技术。IEEE 1284-1994标准,说明了五种工作模式,它们是:1、 兼容模式2、 半字节模式(本文档中没有对该项进行描述)3、 字节模式(本文档中没有对该项进行描述)4、 EPP模式(增强型并行端口模式)5、 ECP模式(扩展能力模式)其目的是为了设计新型的驱动器和设备,他们之间能够彼此兼容且向下兼容并行端口(SPP),兼容模式,半字节模式和字节模式仅使用于并行端口卡上的标准硬件。而EPP模式和ECP模式需要运行速度更快的附加硬件,并且仍旧向后兼容标准并行端口

4、。正如通常所知“兼容模式”或是Centronics模式,仅以每秒50K字节的典型速度传送数据,但是能够达到每秒150K字节。为了接收数据,你必须把这种模式设为半字节式或字节模式。半字节模式在反方向能够输入一个半字节(4比特),例如从设备到计算机。字节模式使用并行双向的特点(仅在某些卡中有此特性)能够在反方向输入一个字节(8比特)数据。扩展型和增强型并行端口使用附加硬件以控制握手。为输出一比特数据到打印机(或者是其它设备上)可使用兼容模式,软件必须是有以下功能: 写字节到数据端口 检查,确定打印机是否忙?如果忙,打印机不按收任何数据;如这样写的任何数据将被丢失。 设置选取通脉冲(引脚1)为低。来

5、通知打印机在数据线上的数据正确。(引脚2-9) 在设置选通脉冲为低之后,等待大约5微秒后,重新设置选通脉冲为高。(step 3)这就限制了端口可能运行的速度,EPP和ECP端口通过硬件检查确认打印机是否忙,产生一个造通脉冲来解决这一不是。这意味着仅有一个I/O指令需要执行,这样速度就提高了。这些类型的端口,一秒中大约能输出1Mb,ECP端口还具有使用DMA通道的优点,这样不需执行I/O指令数据就能够被传输。1.2 硬件特性下面是D型25脚连接器(插孔)和(Centronics 34脚连接器)到“引脚输出”表D型25脚连接器是计算机并行端口最常用的连接器,而Centronics连接器常见用于打印

6、机。IEEE 1284标准明确说明了三种不同类型用于计算机并行端口的连接器,第一种类型为1284型A,它是D型25脚常用于计算机后部的连接器。第二种类型为1284型B,它是广泛用于打印机的36引脚Centronics连接器。IEEE 1284型C也为36引脚连接器,类似与Centronics连接器,但形状较小一点,该类型的连接器据说有一个接线柱弹簧锁(Clip latch)较好的电气特性,且易于安装,它还包括两个以上的信号引脚,这种信号被用来查看其它设备是否连接好,是否有电。1284型C连接器,被再次要求进行重新设计,因此在不久的将来,我们将会看到新型的连接器。表一:D-型25脚并行端口连接器

7、的引脚分配。Pin No(D-型25)Pin No(centronics)SPP Signaldirection Register HardwareIn/out Inverted11NStrokeIn/outcontrotYes22Data 0OutData33D1OD44D2OD55D3OD66D4OD77D5OD88D6OD99D7OD1010NAckInStatus1111BusyInSYes1212Paper-out /Paper-endInS1313Select InS1414n Auto-Linefeed In/outControl1532n Error/n FaultInStat

8、us1631n InitializeIn/outControl1736n select-printer/n select-InIn/outControlYes18-2519-30GroundGnd上表中在信号名前使用“n”提醒注意该信号的低有效。例如:n Error表示当该线上信号为低时打印机出错,该线通常为高,表示打印机正常工作。“Hardware Inverted ”(硬件反向)意味着信号是通过打印机卡硬件实现反向的。例如Busy线,施加于该引脚的信号为+5v(逻辑1)目被状态寄存器读取,该信号应在相应的位置被回复为逻辑0。1.3 端口地址打印机/并行端口有3个常用的地址,已在下表2中列出

9、。3BCh基址如今不是被典型使用的,但当并行端口连接视频卡时就使用该地址。固定用于LPT1 & LPT2的基址典型地为378h & 278h,小写字符h表示为16进制数,在不同机器中这些地址允许改变。表二:端口地址Address Notes:3BCh-3BFh 具体用于视频卡的并行端口不支持ECP地址378h37Fh 常用于LPT1278h27Fh 常用于LPT2最初打开计算机时,BIOS(Basic Input/ Output System)将确定端口的数目,并分配设备标号LPT1,LPT2,LPT3给它们。BIOS首先查看地址3BCh,如果在此处发现了一个并行端口,该端口将被分配作为LPT

10、1。然后查看地址378h,如在此处发现并行端口,将把下一个空闲的设备标号分配给它,该标号可能为LPT1前提为在3BCh处没有接口卡;或者为LPT2,在3BCh处有接口卡,最后将访问的地址为378h,进行和其它两端口一样的处理,这样就有可能使LPT2所对应的地址为378h,而不是所期望的278h。对于已分配设备LPT1,LPT2&LPT3而言,人们不用担心与他们的计算机接口设备。大多数时间基址是被用于端口接口而不是LPT1等,然而如你想找到LPT1或其他在线打印机设备对应的地址,你可查阅BIOS提供的表,当BIOS分配地址给你的打印机设备时,它在内存中特定位置保存下来这些地址,因此我们可以查询到

11、他们。表三:在BIOS数据区的LPT地址Start AddressFunction0000:0408LPT1的基址0000:040ALPT2的基址0000:040CLPT3的基址0000:040ELPT4的基址(注1)注1:在BIOS数据区的地址0000:040E可能在PS/2被用作扩展的基本输入输出系统数据区和新的Bioses。上表了列出了人们可以在BIOS数据区查找到打印机端口的地址,每一地址占用2个字节,下面的C语言的例子,演示了如何去读这些位置以得到你的打印端口地址。#include#includevoid main(void) unsigned int far*ptraddr;/*p

12、ointer to location of Brt Address */unsigned int address; A Address of Port*/int a;ptraddr=(unsigned int far*)0x00000408;for(a=0;a3;a+)address=*ptraddr;if(address=0) printf(“No port found for LPT%dn”,a+1);else printf(“address assigned to LPT%d is xhn”,a+1,address);*ptraddr+;1.4 软件寄存器标准并行端口(SPP)表3:软件

13、寄存器OffsetnameRead/writeBit NoProperties(特性)Base+0Data PortWriteBit 7Data 7(Note-1)Bit 6Data 7注1Bit 5Data 5Bit 4Data 4Bit 3Data 3Bit 2Data 2Bit 1Data 1Bit 0Data 0Base+1Status PortRead OnlyBit 7BusyBit6BusyBit 5Paper out Bit 4Select inBit 3ErrorBit 2IRQ(Not)Bit 1ReservedBit 0ReservedBase+2Control port

14、Read/writeBit 7UnusedBit6UnusedBit 5EnableBit 4Bi-Directional PortBit 3Enable IRQ Via AckBit 2Select PrinterBit 2Initialize PrinterBit 1Auto-linefeedBit 0Strobe 注1:如果端口为双向的,则读写选择可由数据寄存器来完成。基址常被称为数据端口或数据寄存器,它仅用于在并行端口数据线(引脚2-9)输出数据。该端口通常反为写端口,如你从该端口读入,你得到最近发送的字节,可是如果你的端口是双向的,你能在这个地址上收得数据,想得到更多的详细资料,请参

15、阅“双向端口”。状态端口/寄存器(基址+1)为一只读端口,任何写入该端口的数据均被忽略,该端口由5条输入线(引脚10、11、12、13、15),一个IRQ状态寄存器和2反向位组成。请注意位7(Busy忙)是一个低有效输入,例如如果位7偶尔为“0”,这意味着在引脚11上为+5v。同样地位2(IRQ not),如果位2为“1”,没有中断发生。控制端口(基址+2)打算用作为一个只写端口,当打印机联接到并行端口,使用四条“控制线controls”他们是选通脉冲,自动Linefeed,初始化和选择打印机,这些控制信号除初始化外都被反向。打印机不发送信号去初始化计算机,也不通知计算机去使用自动Linefe

16、ed,然而,上述的四个输出也可被用作输入,如果计算机已经设置一引脚为高(例+5 v)而你的设备想设置它为低,你必须有效地解决端口,在总线上引起冲突,因此这些线是“开放式集电极open collector”输出(或CMOS设备的开放导管open drain)这意味着它有两种状态:低状态(OV)和高阻抗状态(开路)。通常打印机卡拥有一个内部提升电阻(Pull-up resistors),但这并不尽然。某些卡可能仅有开放式集电极输出,而另外一些可能有通常的图腾柱输出。为了使你的设备能正常工作于尽可能多的打印机端口,你一样可使用外部电阻器。如你已拥有内部电阻,它将和外部的并行工作;如你用的是图腾柱输出

17、,电阻器将被视为负载。一个外部4.7K电阻器可用于提升引脚为高。我不使用任何较低阻值的电阻器,仅假如你已拥有一个内部提升电阻,外部电阻器能并行有效地起作用,一个较低阻值的提升电阻。在高阻态时,并行端口中的引脚为高(+5V)。当并行端口取得引脚为低时,通过电阻的5V在输出引脚给出OV电压,在这种方式下,控制端口中的4个引脚可用于双向数据传输。可是控制端口必须被设置为xxxx0000以便能够去读取数据,即在端口所有引脚为+5V如果是你能降低为GND(逻辑0)。位4&5是内部控制信号,位4将用于IRQ(查看使用并行端口IRQ)和位5将用于双向端口,这意味着你可输入8bit(DATA0-7)。这种模式

18、仅当你的卡支持它时才成为可能,位6和位7是反向的。任何写向这两位的信息均会被忽略。1.4.1 双向端口Bi-directional Ports控制端口的位5可使并行端口的双向功能有效或无效,这种功能只存在真正的双向端口才有效。当该位设置为1时,引脚2-9进入高阻态。一旦处于该状态你能够在这些线上输入数据且能够以数据端口(基址)恢复数据。任何写向数据端口的数据将被储存起来,但在数据引脚上无效。为了关掉双向模式,设置控制端口的位5为“0”。然而某些端口不具有此相似的风格。(其中一个原因是因为在IEEE-1284以前没有统一标准)。另外一些类型的端口需要设置控制端口的位6去使双向模式有效,设置位5使

19、双向模式无效。不同的厂商采用不同的放式实现双向端口。如果你希望用你的双向端口输入数据,首先用一逻辑指针或万用表去检测以确定该端口确实为双向模式。1.4.2 使用并行端口输入8bits如果你的并行端口不支持双向模式,不要失望。在任何给定时刻你能输入最多9bits,为了实现这一操作,你可使用状态端口的5条输入线和控制端口的4条输入线(开放式集电报)。通常你仅能在任一给定时刻要么输入4bits(半字节)要么输入8bits(字节)。输入一个字节将使一条数据张空闲。我建议剩下引脚10空闲(Not-Acknowledgment无应答),你可能利用它去产生一个中断请求,切记在你从控制端口读数据之前,必须把x

20、xxx0100写入控制端口。1.4.3 使用并行端口的IRQDOS或Windows环境下,并行端口的中断请求不用于打印早期的OS/2版本使用他们,但也不较多。当用于类似高温报警器的监控设备接口时中断是适合的,你不知它何时何处会发生,使用中断请求方式用软件规律地探测端口以查看是否有事情况发生了变化的方式高效的多。如果你的计算机正执行其他任务,例如使用一个多任务操作系统,使用中断的好处也是显而易见的。使用中断的不足之处是难于编程,这已超出了本文探讨的范围,查看PC接口:使用中断的更多信息。并行端口的中断请求常用IRQ5或IRQ7,但如果这个中断号已被使用也可能使用其它类型的中断号。下述情况也是可能

21、的:如果卡仅用于打印,在卡上的全部中断都是无效的。你必须为地址020h处的PIC(Programmable Interrupt Controuer)编写程序以使能够响应你正使用的中断;然后在适当的中断向量位置设置ISR(Interrupt service Routine)程序。1.5 编程此处程序的源代码是C/C+的。输出一个字节是相当简单的。你可使用包含在dos.h库文件中的指令outportb(port address,byte)每8bits组成一个字节,每字节能表示十进制中的0255间的数字。端口中的每一位所能表示的数值被表示如下:Bit 7 B6 B5 B4 B3 B2 B1 B012

22、8 64 32 16 8 4 2 1如果我们想设置数据端口的位0为高,我们应使用outportb(基址,1);同样如使位7为高,应使用outportb(基址,128)。如果我们想设置多于两条线都为高,那么我们必须把需设置为高的相应位的数值加起来。例我们想置位0,3,5&6为高,我们必须输出为outportb为(基址,169)。Bit 7 B5 B3 B0128 +32 +8 +1 =169下面的例子假设端口地址为0*378:#include/*contains the prototype for outporb &inpoatb */void main (void); outportb(0*3

23、78,1); /*sets Bito High(pin2)*/delay(1000); 设置位0为高(引脚2)outportb(0*378,2); /*设置位1为高(引脚3)*/delay (1000);outportb(0*378,5);/*设置位2和位0为高(引脚4和2)*/delay(1000);outportb(0*378,129);/*设置位0和位7为高(引脚2和9)*/从该端口接受数据实际上是一个相反的过程,使用inportb(基址),我们可以从端口中得到一个字节的数据,是一个8bits相应的值,有两种方法(人工)可算出所置的位,你可用2去除这个数,并记下余数或商,减去一些最重要的

24、权值,例128,64,32等。因我们不想人工去解码,而希望计算机去完成,所以不再进一步探讨这种方法。使用C语言,我们可以利用它位方式操作的优点,特别是AND逻辑功能,我们有一两输入的与门,如果左两输入端输入2个1,我可得到1输出(真),如果在输入端输入其他任何值,输出均为0(假),我们如使用下述指令:if (Byte&128) printf(“Bit 7n”);计算机将按位方式查看字节和128,假设byte为十进制数的134,表示为二进制为:10000110。十进制数128的二进制表示为:10000000。当进行AND运算后一位(最高位)输出为真,即说明该位被置1,上面语句的执行结果为:在屏幕

25、上输出“BIT 7”。如语句为:if (byte&64)printf(“Bit 6n”); byte的值仍为134,该语句将检测到倒数第2位。可是这次AND运算的回答结果为0(假),因此“Bit 6”不会象上例中那样在屏幕上打印出来。可使用这种方法去检查字节中的每一位,以查看每一位相应的引脚是高或低,下面的源代码是利用上述方法接受数据的一个例子。(输入)#include /*contains the prototype for inportb*/#include /*contains the prototype for printf */void main(void)int a ;a=inpo

26、rtb (0*378+1); /*从状态端口以字节方式得到输入*/printf(“%dn”,a); /*把字节的值以十进制方式显示在屏幕上*/if (a&128) printf(“Bit 7-Busyn”);if (a&64) printf(“Bit 6-Ackn”);if (a&32) printf(“Bit 5-paper outn”);if (a&16) printf(“Bit 4-setect Inn”);if (a&8) printf(“Bit 3-Errorn”);if (a&4) printf(“Bit 2-IRQ(NOT)n”);if (a&2) printf(“Bit 1-R

27、eservedn”);if (a&1) printf(“Bit 0-Reservedn”);这次我们从Bade+1必取字节值,该地址为状态端口。每一位都被进行AND运算,以确定该位是否被置位。二、 EPP 增强并行端口2.1 增强并行端口EPPEPP(增强并行端口)是最近一种增加的并行端口可运行的方式。它被设计成在Intel,Xircom和Zenith数据系统之间的接合点,EPP端口第一次被详细说明是在EPP1.7标准中,后来也被在IEEE 1284标准中也有说明,即常指的EPP1.9。在这两个标准中有一些不同之处,这将可能影响设备的操作。他们有一典型的传输速率为:500K2Mbytes/每秒

28、。产生握手(hand shaking),造通脉冲等信号是通过端口中的硬件来实现,而不是软件实现的。2.2 EPP硬件特性当使用EPP模式时,每一条线被分配了不同的任务,在下表4中列出了各条线的任务:表4 增强并行端口控制器引脚分配Pin引脚SPP Signal信号EPP signal 信号In/outFunction功能1造能脉冲写out此线上的信号为表示写,高表示读2-9Data 0-7Data 0-7In-out数据总线,双向10应答中断In中断线 用于握手handshaking11忙等待InEPP周期当低时开始,高时结束12Paper out/end备用BnSpareInEPP握手不使用

29、备用品13选择备用品SpareInEPP握手不使用备用品14Auto Linefeed自动线反馈数据造通out当为低时,表示数据传输15出错/故障Spare InEPP握手不使用Spare16初始化复位out复位-低有效17选择打印机地址造通out为低时,表示地址传输18-25地地GND接地“paper out”,“选择”和“出错”在EPP握手中都是无定义的,这些可被用户用于其它用途。这些线的状态可在任何时刻通过浏览SPP状态寄存器而确定。2.3 EPP握手通过使用EPP为了完成有效的(正确的)数据交换,我们必须理解EPP握手,当硬件能够完成全部工作时,在SPP中握手仅要求为你的硬件而不是软件

30、使用。为了初始一个EPP周期,你的软件完成一个与有关的EPP寄存器的I/O操作。EPP数据写周期1、 程序写入EPP数握寄存器(基地址+4)2、 写设置为低(低表示写操作)3、 数据放入数据线Data 074、 如“等待”为低,数据造通有效Data strobe is asserted if wait is low(好的写周期开始)5、 主机等待“应答”,通过“等待”为高(写周期结束)6、 数据造通无效EPP地址写周期:1、 程序写地址到EPP的地址寄存器(Base+3)2、 写设置为低(低表示写操作)3、 地址放入数据线Data 074、 如“等待”为低,地址造通有效(开始地址写周期)5、

31、主机等待“确认”,通过“等待”变为高(结束地址写周期)6、 地址造通无效注意:如果实现EPP1.7标准(Pre IEEE 1284)握手,就会在不考虑“Wait”的状态情况下,数据和地址造通脉冲被宣称有效而开始一个周期,而EPP1.9标准仅当“Wait”为低时才开始写周期。EPP1.7和EPP1.9标准都重要“Wait”为高时才能结束写周期。2.4 EPP的软件寄存器表5 EPP寄存器地址端口名读/写Base+0数据端口(SPP)写基址+1状态端口(SPP)读基址+2控制端口(SPP)写基址+3地址端口(EPP)读/写基址+4数据端口(EPP)读/写基址+5未定义-基址+6未定义-基址+7未定

32、义-上表所列为EPP寄存器内容。如同你所看到的,前3个地址正是与标准并行端口寄存器地址相同,它们的表现也是完全相同。因此如果你使用一个增强并行端口,你可以向Base+0输出数据,就象对一个标准并行端口操作方式完全一样。如你使用兼容模式连接了一打印机,那么你向使用控制和状态端口来检测丢确认端口是否忙,以及assert(坚持)& de assert(撤消)造通脉冲中。如你希望能和EPP兼容设备通信,你必须做的是:把所希望发放的全部数据放置在地址Base+4处的EPP数据寄存器中;卡将产生全部所需的握手请求。同样,如你希望发送一个地址到你的设备,你需使用地址offset+3处的EPP地址寄存器。EP

33、P地址寄存器和EPP数据寄存器都是可读/写的,可使用相同的寄存器从你的设备中读出数据。可是,当数据造通脉冲和地址造通脉冲均输出时,EPP打印机卡应该开始一个读周期。你的设备可以通过使用中断产生一个读请求。三、 扩展功能端口3.1 扩展功能端口导论扩展功能端口模式是由Hewlett Packard和Microsoft设计实现的,并且做为扩展功能端口协议和IS A接口标准。该协议使用附加硬件去产生握手信号等,类似与EPP模式,运行速度和EPP模式也非常相同。可是,该方式能在Windows环境下工作地更好,因为它能使用DMA通道去传输数据。它也使用FIFO缓冲,为了数据的发送与/或接受。ECP的另一

34、特性为实时数据压缩。它使用行长编码RLE(Run Length Encoding)可使数据压缩比达到64:1。这种做法对类似于扫描仪和打印机等设备是有益的,这类设备中的有用数据部分多为重复的长串。扩展功能端口支持通道寻址方式,这并不是打算被用于一串设备,而是不超过一个设备寻址多个设备。例如:如今市场上有许多传真机,它们都含有一个用于计算机接口的并行端口。传真机可被分开作为一台独立的设备,与扫描仪modem/Fax, printer一样,每件设备都可被独立寻址,好象其它设备不能接受满缓冲区的数据。3.2 ECP硬件特性当扩展功能打印机端口使用完全相同的D25接头作为你的SPP时,ECP给每个引脚

35、分配不同的任务,就象EPP。这意味着使用ECP接口时,有不同的握手方法。ECP是向后兼容于SPP和EPP的。当按SPP模式操作时,每寻找的操作是于SPP完全相同的方式,被标记为Stroke ,Auto Linefeed, Init Busy等。当按EPP模式操作时,各引脚的功能依据在EPP协议中描议的工作方法,有不同的握手方法。当按ECP模式操作时,下表分配了各引脚不同的标识:表6,扩展功能并行端口连接器引脚分配PinSPP信号ECP信号In/out功能1造通脉冲主机时钟out当该线上信号为低时表示在主机有有效的数据,当该引脚为de-asserted时,+ve时钟过缘将用于移动数据到设备2-9

36、Data 0-7Data 0-7In/out数据总线,双向。当该线为低时,表示在设备上有有效的数据。10AckPeriph CLKIn当该引脚为de-asserted时,+ve时钟边缘将用于移动数据到主机。在相反方向高表示数据,而低表示命令周期command cycle11Busy Periph AckIn在向前的方向上,功能为PeriphAck为低时,设备确认Reverse Request 12Paper out/endAckReverseIn13selectx-FlagIn扩展标志,当在向前的方向上,High表示DATA。14Auto LinefeedHostAckout而LOW表示com

37、mand cycle.在相反的方向上,功能为HostAck15Error/FaultPeriphRequestIn由设备设置的LOW低,表示反向数据有效。16InitializeReverse RequertoutLow表示数据在反方向17Select printer1284 ActiveoutHigh表示HOST主机为1284传输模式18-25GroundGuoundGNDGroundHostAck和PeriphAck线表示在数据线上的信号是数据还是命令。如果上述=条线上为高,那么数据被放置到数据线上(引脚2-7),如果一个命令周期发生,那么适当的线应为低。例如:如果主机发送一个命令,则Ho

38、stAck为低;如果设备/peripheral(边缘的)发送一个命令,则PeriphAck将为低。命令周期必为下面两件事情之一,或为RLE计数或者是一地址。这由数据线的位7(MSB)决定,时价于引脚9,如果位7为0,则数据的剩余部分(位06)是行长计数(a run length count),该计数用于数据压缩方案。然而,如果位7为1,则位于位06的数据表示一个通道地址,表示十进制数0127。3.3 ECP握手ECP握手不同于SPP握手。最显而易见的差别为:在任何时刻ECP能够在任何方向传输数据,但辅加信号是必需的。下面为ECP前向和反向握手。前向握手(数据由主机发送到设备/periphera

39、l)1、 数据由主机放到数据线上2、 主机通过HostAck指示一个数据周期或命令周期3、 通过宣称HostCLK为低,主机指示正确的数据4、 设备/peripheral通过periphAck发送它的正确数据的确认5、 主机设置HostCLK为高,+ve边缘用于转移数据到Peripheral的寄存器6、 设备/peripheral通过periphAck发送它的字节确认。反向(数据由设备/peripheral发送到主机)1、 主机设置Reserse Request为低,请求一个反向通道2、 设备/Peripheral通过ACKReverse上的低来确认反向通道请求3、 数据被设备/Periphe

40、ral放到数据线上4、 数据线命令周期被设备/peripheral通过periphAck设置5、 通过设备/peripheral设置periphAck为低指示有效数据6、 主机通过periphAck肆出它的正确数据的确认7、 设备/peripheral设置periphClk为高,+ve边缘用于转移数据到主机的寄存器8、 主机通过HostAck发出它的字节确认我们回头观察SPP握手,你会认识到它只需4步。1、 写字节到数据端口2、 检测以查看打印机是否忙,如果打印机“忙”,它将不接受任何数据,写向打印机的任何数据都将丢失。3、 置造通脉冲(引脚1)为低。这将通知打印机在数据线上有正确的数据(引脚

41、步2-9)4、 任设置造通脉冲为低且等待大学子微秒之后,重新置造通脉冲为高。而ECP握手需更多的步。这表明ECP将比SPP慢。然而,事实并非如此,这是因为上述步骤都是由你的I/O控制硬件来控制垢。如果这种握手是通过软件控制实现的,它的确将会比SPP慢许多。3.4 行程编码RLERun length Encoding前面已简洁提及,ECP协议包括一种称为RLE(行长编码)的简单压缩方案。它能支持最大压缩比为64:1,通过发出作为路程计数和字节副本的重复的单个字节来工作。路程计数确定随后字节被重复多少次。例如,有一个含25个A的串被发送,那么路程计数字节等于24将首先被发送,随后发送字节A。在行长

42、编码收到的peripheral,将会扩展(重复)随后的字节的次数,是由路程计数决定的。行程字节必须区别于数据路径上的其它字节,它被作为一个命令发到ECP的地址FIFO端口。发送到该寄存器的字节可为以下两种事情之一,或者是行长计数,或者是一个地址。它们由MSB的位7加以区别,如果位7置位(1),那么其余7位(位0位6)为一个通道地下。如果位7复位(0),则低7位为一个行长计数。通过使用MSB,限制通道地址和行长计数值为7bit(0127)。3.5 ECP软件寄存器下面列出了扩展功能端口的寄存器,前3相寄存器与标准并行端口寄存完全相同,可是,注意双向端口的使能位(控制端口的位5)。该位反映ECP端

43、口当前的方向,将会影响ECR寄存器位FIFO满和FIFO空,ECR寄存器将在后面进行解释。表7, ECP寄存器地址端口名称读/写Base+0数据端口(SPP)ECP地址FIFO(ECP模式)写读/写基址+1状态端口(所有模式)读/写基址+2控制端口(所有模式)读/写基址+400h数据FIFO(并行端口FIFO模式)数据FIFO(ECP)模式测试FIFO(测试模式)配置寄存器A(配置模式)读/写读/写读/写读/写基址+401h配置寄存器B(配置模式)读/写基址+402h扩展控制寄存器(使用于全部模式)读/写3.6 ECP的扩展控制寄存器(ECR)ECP端口最重要的寄存器是扩展控制寄存器(ECR)

44、,首先我们将探讨一下它的操作。该寄存器设置ECP将要运行的模式,和在其他操作中提供ECP的FIFO状态。你将会在下面看到该寄存器的内容及更多的细节。表8 ECR扩展控制寄存器Bit Function7:5选择当前操作模式000标准模式001字节010并行端口FIFO模式011ECP FIFO模式100EPP模式101反向的110FIFO测试模式111配置模式(configuration mode)4ECP中断位3DMA使能位2ECP服务位1FIFO满0FIFO空ECR的MSB的三位选择操作模式。共有7种操作模式可供选择,但并不是全部的端口都支持这些模式。EPP模式就是一个例子,它在某些端口上是

45、无效的。下面是一操作模式表:3.7 操作模式标准模式:选择该模式将导致ECP端口以标准并行端口工作不具有双向功能字节模式/PS/z模式:作为双向模式(反向)中的一个SPP并行端口FIFO模式:该模式中,任何写到数据FIFO中的数据,都将通过使用SPP握手传送到peripheral,硬件将产生握手请求,对于无ECP设备是有益的,例如打印机你已了解一些有关ECP的特性,象FIFO缓冲区,硬件握手产生,便是用已存在的SPP握手代替ECP握手。ECP FIFO模式:ECP使用的标准模式。该模式使用ECP握手,前面已描述过。EPP模式/保留:在某些芯片中,该模式将使能EPP被使用,而在另一些类型的芯片中

46、,仍做保留。保留:保留FIFO测试模式:在这种模式中,任何写入测试FIFO寄存器的数据都将被置入FIFO;任何从测试FIFO寄存器读出的数据都是从FIFO缓冲区读出。FIFO满/FIFO空状态位都将反映他们的真实值,FIFO的深度,这些事情都能在该模式中被确定。配置模式:该模式中,两个配置寄存器,cnfgA和cnfgB在它们的设计寄存器地址处是有效的。当端口被设定为标准模式时,它仅相当于一个标准并行端口(SPP)不能双向传输数据。如你需要双向传输,设置工作模式为字节模式。并行端口FIFO模式和ECP FIFO模式都是使用硬件产生需要的握手信号,在这两种方式中仅有的不同之处是:并行端口FIFO模

47、式使用SPP握手,因此可被用于你的SPP打印机,而ECP FIFO使用ECP握手。FIFO测试模式可用于测试FIFO缓冲区的容量,即正确地确信息功能。当处于此模式中时,写到TEST FIFO(基址+400h)的任何字节都被置入FIFO缓冲区;任何从测试FIFO寄存器读出的字节都是从FIFO缓冲区读出的,它可以和FIFO满:FIFO空扩展控制寄存器各位一起使用以确定FIFO缓冲区的容量,一般情况下大小为16字节。ECR的其它各位在ECP端口操作中也扮演重要角色。ECP中断位(Bit 4)使能够使用中断,而DMA使能位(Bit3)使可以使用直接存储器访问(Direct Memory Access)

48、。ECP服务位(位2)表示是否已有中断请求产生,如果有,该位置被置位。对于不同的芯片该位复位的方法不同;有些需要你人工复位,例如写0到该位,另外一些芯片是一旦寄存器数据被读取就会复位。FIFO满(bit1)和FIFO空(位0)反映了FIFO缓冲区状态。这两位是依赖于传输方向的。传输方向的设置由控制寄存器的位5实现。如果bit 0被置位(FIFO Empty),那么FIFO缓冲区是完全空的;如果bit 0被置位,那么FIFO缓冲区是满是。因而,如果bit 0或bit 1都有设置位,那么在FIFO缓冲区中仍有数据,只不过不是满的。这两位可用于FIFO测试模式中,以用来确定FIFO缓冲区的容量。3.

49、8 ECP配置寄存器A(cnfgA)3.8.1 配置寄存器A配置寄存器A是ECP端口所有的两个配置寄存器中的一个,这些配置寄存器仅当ECP端口处在配置模式时才允许被访问。(查阅扩展控制寄存器)cnfgA可基址+400h处访问到。表9 ECR配置寄存器ABit Function7 1中断为电平触发 0中断为边沿触发(脉冲)6:4 00h接受最大16bit长的字 01h接受最大8bit长的字 02h接受最大32bit长的字 03h:07h保留用于将来扩展3保留2 主机复原管道/发射机字节包括在FIFO中 0在前面发射机管道中的1字节不影响FIFO满 1在前后发射机管道中的1字节包含作为FIFO满的

50、一部分1:0 主机复原(Recovery)不发送FIFO中的剩余字节 00Complete pword 011有效字节 102有效字节 113有效字节读配置寄存器A可以查明有关ECP端口的更多情况。MSB显示接口卡是否完成电平中断或边沿触发中断,这将依靠于你的接口卡所使用的总线类型,位4到位6呈现卡内部的总线宽度,有些卡仅为8bit宽,而有些卡为32或16bit宽。为不仅你的卡上得到最大的效率,软件能够读取这些状态位以确定输出到端口的最大字大小。3LSBs用于主机复原,为了能从错误中复原,软件必须能够了解已发出多少字节,以确定是否在FIFO还有一些字节剩余,一些实现方法中可能包括位于发送寄存器

51、中的字节,这些字节做为FIFO满状态的一部分等待发送,而另外一些实现方法不是这样,位2用于确定是否为这种情况。另外一个问题是:并行端口输出仅有8bit宽,而你要使用16bit或32bit I/O指令。如果是这种情况,那么你的端口字的一部分(字为你发送到端口的)可能被发出。因而bit 0和bit 1用来表示有多少有效字节仍剩余在FIFO中,这样你能够重发这些剩余字节。3.8.2 ECP配置寄存器B(cnfgB)配置寄存器B和配置寄存器A一样,仅当ECP端口为配置模式时才有效,当ECP端口为配置模式时,cnfgB的地址为Base+401h下面就是cnfgB寄存器的组成:表10 cnfgB寄存器Bi

52、t (s)Function 7 1使用RLE压缩外发数据0不压缩数据6中断状态现示当前的IRQ引脚状态5:3选择或显示中断请求线状态000通过跳线选择中断001 IRQ 7010 IRQ9011 IRQ10100 IRQ 11101 IRQ 14110 IRQ 15111 IRQ 52:0选择线显示打印卡使用DMA通道的状态000使用跨接的8bit DMA通道001 DMA通道1010 DMA通道2011 DMA通道3100使用跨接的16bit DMA通道101 DMA通道5110 DMA通道6111 DMA通道7cnfgB能够是读/写访问的组合,某些端口可以用软件实现配置,你可以设置寄存器的

53、IRQ和DMA资源。另外一些端口可以通过BIOS或接口卡上的跳线来进行设置,但他们是只读的。CnfgB寄存器的位7用于选择是否作用RLE(行长编码)对外发的数据进行压缩。当位7被置位时,主机将在发送前压缩数据;当复位时,数据将被发送到peripheral raw(未压缩的)。位6返回IRQ引脚状态,这一特性可用于判断冲突,它不仅反映并行端口IRQ的状态,而且反映使用该中断是的其它设备的情况。位5到位3表示端口IRQ分配情况,同样位2到位0给出DMA通道分配状态,以上有一眯需提醒注意,这些地方都是可读/写的。已经消失的具有跳线的并行接口卡,仅能简单呈现作为“Jurnpered ”的资源或呈现正确的line Numbers,当然这些都是只读的。16

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!