I/O接口的地址分配

3.I/O接口的地址分配

由前面介绍可知,为使I/O端口能被CPU所访问,必须给每个I/O端口分配相应的端口地址。由于不同的微机系统对I/O端口地址的分配并不完全相同,因此对于接口设计者来说,确切搞清系统中I/O接口地址的分配情况十分重要。需掌握哪些地址已被系统所占用(即已分配给了系统的某些设备接口),哪些地址是空闲的,可以为用户使用。通常,凡未被古用的地址,用户都可以使用。但要考虑系统今后的发展或扩充,对端口地址的占用要留有余地,以免发生I/O端口地址的冲突。

从图6.3和图6.4所示可以看出,尽管在理论上8088系统为用户提供了多达64K个端口地址,但在实际应用中往往集中使用A9~A0地址总线所表示的从0000H~03FFH范围内的1024个端口地址。

例如,BM-PC/XT使用10位地址(A9一A0)作为I/O端口地址,即可用端口为1024

个。其中,低端512个(0000一01FH)供系统板接口电路所使用,如图63所示:高端512个(0200一03FFH)供扩充插槽所使用,如图64所示。显然,当10位地址中的最高位A=0时,表示是低端地址,即为系统板上的接口电路所用:当A=1时,表示是高端地址,即为扩充插槽中的接口卡所用。所以,用户在设计新增加的I/O设备接口卡时,一定要使接口地址译码电路中的A9=1。

由于不同的微机系统,其端口地址分配可能不同,因此为了弄清具体的分配情况,可查阅机器的硬件手册或有关技术说明等资料。另外,使用某些测试工具软件检测时,也可显示出系统中一些常用/O端口的地址,如并行打印端口(LPT1),异步串行通信端口(COM1、COM2)的端口地址等。

4.I/O端口的地址译码

当执行I/O指令时,只能对选中的端口地址进行读写操作。具有惟一端口地址的I/O接口,如何知道CPU选中了自己,要和自己进行数据交换呢?这就是端口地址识别问题,或称为端口地址译码。当对送来的地址码进行译码,得出的就是自己的端口地址时,该接口电路便按设计的逻辑动作,完成预定的功能。因此任何一个接口电路卡的设计,都必须有端口地址译码部分。端口地址译码的方法有多种,可以灵活地进行设计使用。

端口地址译码电路的原理与存储器地址译码相同,在具体的表现形式上有些差异。输入端的信号也是由两部分组成:一是地址总线的相关位(A9~A0):二是控制总线的相关控制信号(IOR、IOW)。

豫ICP备19006514号 网站地图 免责声明:如果侵犯了你的权益,请发邮件至:419017772@qq.com,我们会及时删除侵权内容,谢谢合作!
error: Content is protected !!