zl程序教程

您现在的位置是:首页 >  其他

当前栏目

《微机接口原理》A+学习笔记系列--概论&端口寻址

amp接口笔记学习原理 -- 系列 端口
2023-09-11 14:19:29 时间

一.I/O控制方式概述

(一).课程地位与编程层级

        《微机接口原理》是cs/ee专业的一门重要基础核心课程,该课程中涉及的计算机体系结构层次是软件层与硬件层的交界面,抽象层级高的语言是“面向对象编程”,类比固件编程就是“面向硬件编程”。从这个角度出发,不懂硬件就没办法编程设计。所以说接口编程是具象编程,没有抽象层级高的概念。

        本课程是《计算机组成原理》、《汇编语言程序设计》的进阶课,为后续理解《计算机操作系统原理》的I/O控制打下底层基础。

(二).I/O控制方式与基本概念

在《计算机组成原理》中,讨论过接口的基本定义:(不是软件接口API,是硬件接口部件)


接口是介于总线与外设之间,与外设互联的标准化逻辑部件。


此外,对标准化总线也有总线接口,在本课程中不详细讨论。

接口逻辑功能主要有:

1.完成处理器指令

2.返回外设状态

3.数模转换

4.数据交互于缓存

5.设备片选

接口的功能决定了其硬件总是存在面向处理器、面向外设两个方向的管脚

 如上图intel 8255A,其左侧管脚面向8086处理器,右侧管脚面向外设。


        在《计算机组成原理》中,讨论过几种基本I/O控制方式如下所示:其中轮询方式和中断方式主要由软件实现:

轮询方式为“应答”逻辑,处理机循环等待外设输入,直至其有效输入时,退出循环。

中断方式为“程序切换”,处理机在无中断源时,按其主程序运行,响应中断时由中断隐指令(硬件)完成程序指针的切换和保存。中断子程序由软件编写

DMA(直接存储器访问)方式可以直接将数据直接通过总线送往主存,主要由DMAC(DMA控制器)进行控制。

通道方式由协处理器完成数据交互的控制,在微型计算机一般不使用,故在本课程中不详细讨论。

I/O控制核心由软件实现轮询方式(查询)微型计算机
中断方式
核心由硬件实现DMA方式
通道方式大型计算机

二.端口寻址

端口(port):计算机接口中可以由处理机直接访问的寄存器。

按其逻辑功能分为以下几类:

1.命令端口:接口芯片的工作方式可能多种多样,其命令字由CPU写入。

2.状态端口:寄存外设状态,CPU可以读取以获取其状态。

3.数据端口:数据缓存寄存器。

其中,每个端口有其唯一地址。


(一).端口编址方式

1.统一编址

将CPU寻址空间划分一部分给端口使用,内存地址和端口地址就不存在交集了,这样设计的目的是可以像访问内存单元一样访问端口。即使用MOV指令进行数据交互。

其优势是地址不重复,不用特殊的访问端口,对大型计算机很实用。

其缺陷是压缩了CPU的寻址空间,接口为了兼容传送指令,增加了地址译码电路

2.独立编址

目前个人PC微机均采用独立编址方式:接口芯片内的端口地址,与主存分开编址,会出现地址重复,故要使用不同的指令访问端口:

MOV 20H,ALOUT 20H,AL访问的分别是主存20H单元、接口芯片20H端口。

其优势是不占用主存地址

其缺陷是要使用专用I/O指令访问端口

(二).端口访问

1.I/O指令(intel 8086)

在访问端口的指令中,最常用的是reg型外设指令:在8086下,其助记符如下

IN     Reg    , PORT

OUT PORT , Reg

      IN指令是将数据从端口输入8086的寄存器,OUT指令则恰好相反。可以发现:所谓“in”、“out”是从处理器的角度出发命名的。


2.寻址方式

a.直接寻址

在指令中直接给出端口地址,对端口进行访问。

但是由于指令位长限制,IN、OUT指令直接地址只可以访问00H----FFH,即访问地址超过八位时,不可以使用直接寻址方式

b.间接寻址

将访问地址存入DX寄存器,对端口进行访问。

由于8086处理器中DX寄存器位长16位,故其寻址空间远远大于直接寻址范围。


3.地址选用原则

端口编址不可以出现冲突,系统设置的外部资源地址不可以使用、计算机厂家申明保留的地址不可以使用。在IBM体系结构下,用户原则上可以使用300H---31FH。

4.地址译码电路

a.全译码

将完整地址送入译码器用于译码

一般用于访问只有一个端口的接口芯片时使用,若一个接口芯片内有多个端口,接口芯片自身必然有选择线,采用全译码方式硬件过于冗余。

b.部分译码

只有高位地址参与译码,产生接口芯片使能信号,低位直接送入接口芯片

部分译码是最常用的端口寻址方式


如下图所示,A2--A4译码产生8255A使能信号 ~CS。

而A1、A0送入8255A,以选择其中的端口。

c.开关式译码

在部分译码的基础上,增加地址开关来改变端口地址,这一方式不常用。