您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第二章IO地址译码技术要点
第二章I/O端口地址译码技术一、I/O端口1.端口(port)是电路中能被CPU直接访问的寄存器的地址。2.CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。3.一个接口可以有几个端口。如命令口、状态口和数据口,分别对应于命令寄存器、状态寄存器和数据寄存器。2.1I/O端口及其编址方式状态寄存器数据寄存器命令寄存器CPU发送传送读取30h31h32hCPU与I/O端口举例:1.统一编址从存储器空间划出一部分地址空间给I/O设备,把I/O接口中的端口当作存储器单元一样进行访问。优点:不设置专门的I/O指令,指令类型多,功能齐全。缺点:1、占用了存储器的地址空间,使存储器容量减小。2、另外指令长度比专门I/O指令要长,因而执行速度较慢。二、端口地址编址方式2.独立编址这种方式是接口中的端口地址单独编址,而不与存储空间合一起。如:IBM-PC系列、Z-80系列机主要优点:1、I/O端口地址不占用存储器空间;2、I/O指令短,执行速度快;3、I/O操作和存储器操作层次清晰,程序的可读性强。三、独立编址方式的端口访问1.I/O指令中端口地址的宽度IBM-PC系列采用I/O(input/output)指令访问端口,实现数据的I/O传送。在I/O指令中可采用单字节地址或双字节地址寻址方式。单字节地址指令其指令格式为:INAL,PORT;输入OUTPORT,AL;输出这里,PORT是一个8位的字节地址,则最多可访问256个端口。例如:INAL,60H;60H为系统板8255A的PA端口地址OUT61H,AL;61H为系统板8255A的PB端口地址双字节地址作为端口地址MOVDX,××××HINAL,DX;8位传送MOVDX,××××HOUTDX,AL;8位传送这里,××××H为16位的两字节地址。则最多可寻址216=64K个端口。例如:MOVDX,300H;300H为扩展板8255A的PA端口INAL,DXMOVDX,301H;301H为扩展板8255A的PB端口OUTDX,AL所谓对端口的访问就是CPU对端口的读/写,将端口的数据传送存储器。例如:输入时MOVDX,300H;I/O端口INAL,DX;从端口读数据到ALMOV[DI],AL;将数据从AL→存储器输出时MOVDX,301H;I/O端口MOVAL,[SI];从内存取数到ALOUTDX,AL;数据从AL→端口2.I/O端口访问3.C语言I/O语句C语言有强大的I/O操作功能,利用c语言可方便地设计操作界面,同时也可以对外设进行直接控制.I/O命令端口输出outportb(port,value)//从port端口输出字节型数据valueoutportw(port,value)//从port端口输出字型数据value端口输入:Value=inportb(port)//从port端口输入字节型数据,并存储在value变量中;Value=inportw(port)//从port端口输入字型数据,并存储在value变量中;注意:PASCAL语言,TurboC语言都有类似的I/o命令.2.2I/O端口地址分配一、I/O接口硬件分类I/O接口的硬件分成两类:1.系统板上的I/O芯片如:定时/计数器、中断控制器、DMA控制器,并行接口等。2.I/O扩展槽上的接口控制卡如:软驱卡、硬驱卡、图形卡、声卡、打印卡、串行通信卡等。表2.1系统板上接口芯片的端口地址I/O芯片名称端口地址DMA控制器1000~01FHDMA控制器20C0~0DFHDMA页面寄存器080~09FH中断控制器1020~03FH中断控制器20A0~0BFH定时器040~05FH并行接口芯片(键盘接口)060~06FHRT/CMOSRAM070~07FH协处理器0F0~0FFH表2.2扩展槽上接口控制卡的端口地址I/0接口名称端口地址游戏控制卡200~20FH并行口控制卡1370~37FH并行口控制卡2270~27FH串行口控制卡13F8~3FFH串行口控制卡22F0~2FFH原型插件板(用户可用)300~31FH同步通信卡13A0~3AFH同步通信卡2380~38FH单显MDA3B0~3BFH彩显CGA3D0~3DFH彩显EGG/VGA3C0~3CFH硬驱控制卡1F0~1FFH软驱控制卡3F0~3F7HPC网卡360~36FH二、I/O端口地址分配1.PC微机I/O地址线有16根,对应的I/O端口编址可达64K字节。2.其端口地址译码是采用非完全译码方式,即只考虑了低10位地址线一个A0~A9,而没有考虑高6位地址线A10~A15。3.I/0端口地址范围是0000H~003FFH,总共只有1024个端口。三、I/O端口地址选用的原则凡是被系统配置占用了的地址一律不能使用;未被占用的地址,用户可以使用。但申明保留的地址,不要使用。用户可使用300H--31FH地址。2.3I/O端口地址译码一、I/O地址译码电路原理1.译码电路的输入信号I/O地址译码电路不仅仅与地址信号有关,而且与控制信号有关。例如,(1)用SBHE信号控制端口奇偶地址;(2)用I/OCS16信号控制8位或16位I/O端口;(3)用AEN信号控制非DMA传送;(4)用IOR和IOW信号控制对端口的读/写等。二、I/O地址译码方法高位地址线与CPU的控制信号进行组合,经译码电路产生I/O接口芯片CS的片选。低位地址线不参加译码,直接连到I/O接口芯片,进行I/O接口芯片的片内端口寻址,即寄存器寻址。A9A8A7A6A5A4A3A274LSO4A1A0AENIORY74LS30(a)74LS3074LS321.固定式端口地址译码固定式是指接口中用到的端口地址不能更改。例1:设计I/O端口地址为2F8H的只读译码电路。分析:若要产生2F8H端口地址,则译码电路的输入地址线就应具有如表2.3所示的值。三、I/O端口地址译码电路设计表2.3译码电路输入地址线的值地址线00A9A8A7A6A5A4A3A2A1A0二进制001011111000十六进制2F8A9A8A7A6A5A4A3A274LSO4A1A0AENIORY74LS30(a)74LS3074LS32A9A8A7A6A5A4A3A274LSO4A1A0AENIOR74LS30(b)74LS30IOW读74LS32写固定式端口地址译码例2:使用74LS138设计一个系统板上接口芯片的I/O端口地址译码电路,并且让每个接口芯片内部的端口数目为32个。分析:由于系统板上的I/O端口地址分配在000~0FFH范围内,只使用低8位地址线。表2.4译码电路输入地址线的值地址线00A9A8A7A6A5A4A3A2A1A0二进制控制片选片内端口寻址十六进制0H0~7H0~1FHA5A6A7A8A9AENABC12345674LS1338G2AG2BG1Y0Y1Y2Y3Y4Y5Y6Y7DMACSINTRCST/CCSPIOCSWRTDMAPG15141312111097(8237)(8259)(8253)(8255)IOW(写DMA页面寄存器)(写NMI屏蔽寄存器)WRTNMIREG74LS32多端口地址译码电路2.可选式端口地址译码例3:设计扩展板上的I/O端口地址译码电路,要求让扩展板上每个接口芯片的内部端口数目为4个,并且,端口地址可选。例如,选择地址范围为300H~31FH.分析:①对于DIP开关,有两种状态:合(ON)和断(OFF)。②对于比较器有两点要考虑,一是比较的对象,二是比较的结果。A0A1A2A3A9AENABCGG2BG2AY0Y1Y2Y3Y4Y5Y6Y7P0~P774LS688比较器Q0~Q7.....DIP+5VIOR/IOW....P=Q74LS138译码输出AENA9J10A8A7A6A4A5A3J1274LS30U2INS8250CS2U2华中科技大学TEL:8754308687491608Fax:87542265Email:zgongye@yahoo.com
本文标题:第二章IO地址译码技术要点
链接地址:https://www.777doc.com/doc-3925210 .html