免在DMA周期中,由DMA控制器对这些以非DMA方式传送的I/O端口执行DMA方式的传送。同理可设计出能执行读/写操作的2E8H端口地址的译码电路,如图2.(b)所示。
若接口电路中需使用多个端口地址,则采用译码器译码比较方便。译码器的型号很多,如3-8译码器74LSl38;4-16译码器74LSl54;双2-4译码器74LSl39、74LSl55等。
例2:使用74LSl38设计一个系统板上接口芯片的I/O端口地址译码电路,并已让每个接口芯片内部的端口数目为32个。
分析:由于系统板上的I/O端口地址分配在000~0FFH范围内,故只使用低8位地址线,这意味着A9和A8两位应赋0值。为了让每个被选中的芯片内部拥有32个端口,只要留出5根低位地址线不参加译码,其余的高位地址线作为74LS138的输人线,参加译码,或作为74LS138的控制线与AEN一起,控制74LSl38的译码是否有效。由上述分析,可以得到译码电路输入地址线的值,如表2.4所示。
对于译码器74LSl38的分析有两点:一是它的控制信号线G1、G2A和G2B。只有当满足控制信号线G1=l,G2A=G2B=0时,74LS138才能进行译码。二是译码的逻辑关系,即输人(C,B,A)与输出(Y0~Y7)的对应关系。74LS138输人/输出的逻辑关系,如表2.5所示。
从表 2.5可知,若满足控制条件,即 G1接高电平,G2A和
G2B接低电平,则由输人端 C、B人的编码来决定输出:CBA二000,则Y0=0,其他输出端为高电平;CBA=001,Y1=0,其他输出端为高电平;?;CBA二 111,Y7=0,其他输出端为高电平。由此可分别产生 8个译码输出信号(低电平)。若控制条件不满足,则输出全“l”,不产生译码输出信号,即译码无效。 设计:采用74LSl38译码器,可设计PC机系统板上的端口地址译码电路,如图2.2所示。图中地址线的高5位参加译码,其中Y05~Y7经译码器,分别产生DMACS(8237)、INTPCS(8259)、T/CCS(8253)、PPLCS(8255A)的片选信号,而地址线的低5位Y0~ Y4作芯片内部寄存器的访问地址。从74LSl38译码器的真值表可知,8237A的端口地址范围是000-01FH,8259A的端口地址范围是020-03FH等等,正好和前面表2.l所列出的端口地址分配表一致。 [2]可选式端口地址译码
如果用户要求接口卡的端口地址能适应不同的地址分配场合,或为系统以后扩充留有余地,则采用开关式端口地址译码。这种译码方式可以通过开关使接口卡的I/O端口地址根据要求加以改变而无需改动线路,其电路可由地址开关、译码器、比较器或异或门几种元器件组成。
例3:设计扩展板上的I/O端口地址译码电路,要求让扩展板上每个接口芯片的内部端口数目为4个,并且,端口地址可选。例如,选择地址范围为300H-31 FH。
分析:先讨论构成可选式端口地址译码电路的地址开关、比较器和译码器3个元器件的工作原理,然后根据题目要求进行电路设计。 对于DIP开关,有两种状态:合(ON)和断(OFF)。所以,要对这两种状态进行设定,我们设置 DIP开关状态为:ON=0,OFF=l。
对于比较器有两点要考虑,一是比较的对象,二是比较的结果。我们采用74LS54位比较器.把它的A组4根线与地址线连接,B组4根线与DIP开关相连,这样就把比较器A组与B组的比较,转换成了地址线的值与DIP开关状态的比较。74LS85比较器比较的结果有3种:A>B,A<B,A=B。我们采用A=B的结果,并令当A=B时,比较器输出高电平。这意味看,当4位地址线的值与4个DIP开关的状态相等时,。比较器输出高电平,否则,输出低电平。 我们又把比较器的 A=B输出线连到译码器 74LS138的控制线G1上,因此,只有当 4 位(A6~A9)地址线的值与4个(S0~S3)DIP开关的状态逐位相等时,才能使74LSl38的控制线G1=1,才能译码,否则,译码器不能工作。所以,如果改变DIP开关的状态,则迫使地址线的值发生改变,才能使两者相等,从而达到利用DIP开关来改变地址的目的。
设计:根据上述分析可设计扩展板上I/O 端口地址译码电路,如图2.3所示。从图中可以看到,高位地址线中,A9A8 A7A6的值由DIP开关的S3S2S1S0状态决定。由于S3和S2断开S1和S0合上,故使A9=A8=l,A7=A6=0,A5连在74LSl38的G2A上,故
A5=0。A4A3 A2三根地址线作为74LSl38的输人线,经译码后可产生8个低有效的选择信号.作为扩展板上的接口芯片选择。最后剩下2根低位地址线A1和A0未参加译码,作接口芯片的寄存器选择,以实现每个接口芯片内部拥有4个端口。 例4:采用异或门设计I/O 端口地址译码电路。
分析与设计:如果用异或门代替比较器,则可得到图2.4所示的可选式译码电路,它由3片异或门74LSl36,9位DIP开关和译码器74LS138组成。74LSl36芯片内部有4个异或门,其内部逻辑如图2.5所示。在译码电路图2.4中,每个异或门的两个输入端,一个接地址线或控制线,另一个接地址开关。并且将所有异或门的输出端连在一起,再接到74LS138的控制端G1上。要使控制信端G1为“l”,则必须使每个异或门的输出端都为“l"。 这意味着每个异或门的两个输入信号必须相异,例如图2.4中的AEN接在74LS136的4端,而74LS136的5端接高电平,所以4 羰必须为低电平,也就是说AEN应为低电平,即非DMA周期,译码才有效。同理可知分别连在74LS136的1和2端上的IOR和IOW两个控制信号只能在分开单独读或单独写时,译码才有可能,同时读写或同时都不读写时封锁译码器74LS138,使译码无效。其余各项异或为“1”的条件,由系统地址总统送来的地址码与DIP开关状态来决定,当地址码和DIP开关状态相异时,结果为“l”。若改变DIP的开关状态,也就改变了地址。按图2.4中所设的开关状态,该译码电路输入地址的值,如表2.6所示。其地址范围是7
10H-717H。 习题
1. 何谓端口?
2. I/O接口的寻址方式有哪几种?各有何特点? 3. I/O接口译码方法的一般原则是什么?