首页 百科知识 地址译码方法

地址译码方法

时间:2024-10-17 百科知识 版权反馈
【摘要】:端口地址的译码方法有多种,通常可根据地址和控制信号任意组合构成不同的译码电路来产生同一个端口地址。固定式端口地址译码由于端口地址不能改变,使I/O接口卡应用不方便,这种译码方法目前已经很少采用,一般采用可变I/O端口地址译码。开关式I/O地址译码方式一般需要事先设置接口卡的端口地址,然后再插入到计算机系统中,这给接口卡的使用带来不便。

5.1.6 I/O地址译码方法

CPU为了对I/O端口进行读/写操作,就需要选定与之交换信息的端口地址,如何通过CPU发出的地址编码来识别和确认这个端口,也就是地址译码。端口地址的译码方法有多种,通常可根据地址和控制信号任意组合构成不同的译码电路来产生同一个端口地址。从译码的形式可分为固定译码和可选择译码,译码电路所采用的器件可分为门电路译码和译码器译码,目前很多系统采用GAL或PAL器件进行译码。

1.固定式端口地址译码

固定式译码指接口卡的端口地址不需要改变,直接使用与非门等逻辑芯片进行I/O地址的译码,目前使用这种译码方式的接口卡已经很少了。在固定式译码方式中,若仅需一个端口地址,采用门电路可方便地构成译码电路,如图5.5(a)可译出278H端口地址。若需要译出连续的几个端口地址,可用高位地址线通过门电路进行译码,如图5.5(b)可译出2E2H的I/O端口地址。

img353

图5.5 固定式端口地址译码

在如图5.5所示译码电路中,img354信号通常作为可编程芯片(如8253、8255等)的img355片选信号,因此一般是低电平有效。如图5.5(a)特性分析如下:

(1)端口地址

I/O端口地址由A9-A0确定,图5.5(a)中,当A9-A0=1001111000时,Y——=0,因此图5.5(a)译码电路的端口地址为278H。在I/O中,许多时候需要一个I/O地址区间,这时可采用高位地址译码,如图5.6所示译码器的输出地址为278H~27FH。

(2)传输控制选择

图5.5(a)中通过AEN对端口地址译码进行控制,当AEN=0(不是DMA操作)时端口译码才有效,在DMA操作时(AEN=1)译码无效,避免了在DMA周期对这些I/O端口设备的访问。

(3)输入/输出控制

在图5.5(a)中,img356参与了译码电路的译码控制,因此该译码器仅能作为输入,即当CPU执行IN指令时才可能选择该译码器,若执行OUT指令时img357,不会选择该译码器。如果需输入/输出时均选择该译码器,可将img358信号用img359来代替,如图5.6所示。

固定式端口地址译码也可使用译码器芯片来译出多个端口地址,译码器芯片较多,如3-8线译码器74LS138、4-16线译码器74LS154、双2-4线译码器74LS139和74LS155等。采用74LS138译码器,可从它输入的3个代码(A,B,C)中译出8个输出img360,并只有G1=1,img361时才允许对A、B、C进行译码,当CBA=000对应译码输出img362CBA=001对应译码输出img363……

img364

图5.6 高位I/O端口地址译码

如图5.7所示为PC机系统板上的各外围芯片译码电路,地址A9~A5参加译码,分别产生DMAC(8237)、PIC(8259)、T/C(8253)、PPI(8255)的片选信号,而地址A4~A0作为芯片内部寄存器的访问地址,所以8237的地址范围为000H~01FH,8259的地址范围为020H~03FH等。

固定式端口地址译码由于端口地址不能改变,使I/O接口卡应用不方便(可能与其他接口卡I/O端口地址冲突或与系统的I/O资源冲突),这种译码方法目前已经很少采用,一般采用可变I/O端口地址译码。

img365

图5.7 PC机系统板外围芯片的地址译码

2.可选择端口地址译码

如果用户要求接口卡的端口地址能适应不同的I/O地址分配,以适应计算机系统各板卡的地址要求,往往采用可选端口地址译码。这种译码方式不需要改变接口卡的线路,通过卡上的开关、跳线器等就可改变卡的I/O端口地址。如图5.8所示为采用数字比较器74LS688构成的开关式地址译码电路,当输入端P7~P0的地址与设置端Q7~Q0的开关状态一致时,比较器的P=Q端输出为低,因此通过接口卡上的DIP开关即可改变其I/O的端口地址。

img366

图5.8 开关式译码

采用数字比较器74LS688进行可选择端口译码的优点是I/O端口地址的变化范围比较大,并且可以有规律地变化,如图5.8所示的译码器的地址可在000H~007H、008H~00FH……3F8H~3FFH变化,可适应各种计算机对外设的I/O地址要求。

通常,I/O端口地址的选择范围并不需要具有很大的变化范围,一般可采用跳线器来选择其I/O端口地址,在早期的接口卡上大部分采用这种方法。如图5.9所示译码器,当跳线器J连上时其I/O端口地址为378H~37FH,断开时为278H~27FH。

img367

图5.9 采用跳线器改变I/O端口地址

图5.10为IBM PC机的异步通信卡的I/O地址译码电路,当跳线器开关置于J12,其I/O的端口地址为3F8H~3FFH;跳线器开关置于J10,则I/O端口地址为2F8H~2FFH。

img368

图5.10 PC机异步通信卡译码部分

在当前的工业控制板卡设计中,I/O端口地址通常不需要变化范围很大,只要能改变几个地址就能满足应用的要求,因此通过跳线器选择I/O端口地址是最常用的方法,该方法实现简单、可靠、成本非常低廉。

3.程序选择端口地址译码

开关式I/O地址译码方式一般需要事先设置接口卡的端口地址,然后再插入到计算机系统中,这给接口卡的使用带来不便。目前大部分通用接口卡(如网卡、声卡等)使用程序设置其I/O端口地址。程序设置I/O端口地址可用PAL或GAL器件作为I/O地址数据存储器(也可用ROM、EPROM等),当选择不同存储单元时可输出相应的地址信号,同一个单元也可存储不同的I/O地址信息。如图5.11所示为利用ROM数据构成的地址译码器的原理图,当ROM中存储的信息不同时,产生的译码输出也不同,可实现随机地址的译码,这是目前最流行的译码方式。

如图5.11所示的EPROM容量为4bit×256,若A9~A2所指示单元存储数据为06H,则74LS138译码器输出地址为Y6=0,若配合A1A0的地址译码可得到所需的地址范围。

img369

图5.11 PC机ROM地址译码

I/O地址译码是设计分析接口电路的基础,读者可认真思考各种译码方式的特点,选择适合自己的译码方式。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈