什么是ISA总线?看了许多网上的帖子和微机接口的书,大概得到如下影象:
首先它是一种微机总线.微机总线一般有三种:内部总线(各芯片与CPU互连的总线),系统总线(板卡间互连,如ISA,PCI,AGP),外部总线(微机与外设相连的总线,如USB,RS232).依照ISA的定义,属于系统总线.
现有的ISA总线有两种观点.(1)来自IBM在1984年推出的IBM/AT微机采用的总线标准.所用机型为80286,386,486以及Pentium 2/3. 也称为AT总线. (2)由于IBM没有公开规格,Intel,IEEE,EISA集团开发了类似的ISA总线.
ISA有8位和16位两种规格.我主要学习了16位的ISA.它共有98个(62+36)引脚,16条数据线,24根地址线,可以直接寻址内存16M,ISA的I/O地址空间为0100H-03FFH.实际上这是对于IBM/AT机来说的,因为只使用了16位I/O中的10位,可寻址范围为000-3FFH,其中系统板使用了000-0FFH,剩余的归ISA设备使用。
在资料中的地址线定义为PCA0-PCA19(能锁存),LA17-LA23(不锁存),其中LA17-19和PCA17-19重复定义,因此ISA的地址线为24根。ISA具有7个DMA和15个中断.我所理解的ISA总线就是CPU板卡和外围ISA板卡的接口部件,相当于适配器.其工作过程为:CPU通过ISA总线操作外设,利用10位的I/O对外设寻址,从而操作外设.定义中用户可以使用的I/O地址为:100-1F0,1F9-1FF,280-2F7,300-35F.在操作之前要配置好寄存器。
例如在C语言中读写I/O:
写 OUTPORTB(OX3FB,OX80)
读 A=INPORTB(OX3FD)
现在还没有搞明白操作寄存器和操作I/O端口有什么不同?我的理解是:两者接近于等价,因为一个I/O口可能是一个或者几个寄存器。
看到一种说法:寄存器对应系统的I/O端口的物理地址,或者是几个寄存器共用一个I/O. 我想这是在X86系统下,I/O采取和存储器分别编址的情况下.
外围部件的工作过程大致为:CPU通过地址总线译码形成外设板卡的I/O片选信号,控制总线工作,启动数据传输,从而对外设进行读写操作。
在Raj Kamal的<嵌入式系统:体系结构\编程与设计>的P106提到...ISA外设的保留地址是220-24F,278-27F,2F0-2F7,3C0-3CF,3E0-3F0
I/O占用的是寄存器。
[ 本帖最后由 七戒 于 2008-4-4 13:12 编辑 ] |