??????? 什么是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口可能是一個或者幾個寄存器。