Bootstrap

《微型计算机原理与接口技术》复习笔记(三)

使用教材为
《微型计算机原理与接口技术》(慕课版)
孙丽娟、李爱群、陈燕俐、周宁宁、邓玉龙编著

微机原理复习笔记一
微机原理复习笔记二
微机原理复习笔记四

1. 存储器的扩展

总片数 = 总容量 /(容量/片)
芯片容量=2的地址线位数次方 乘以 数据线位数

2. 总线的基本概念与分类

定义

总线是构成计算机系统的互连机构,是多个系统功能部件之间进行数据传送的公共通道

分类

按所传输信号的性质分为3类

地址总线:传输、交换地址信息

数据总线:传输、交换数据信息

控制总线:决定各种模块的不同接口和功能特点

3.总线控制信号

总线周期定义信号(输出)
CPU通过总线与存储器、I/O交换一个数据所需要的时间称为总线周期
M/ I O ‾ \overline{IO} IO:=1,表明该总线周期,CPU与存储器交换信息
     =0,表明该总线周期,CPU与I/O接口交换信息
W/ R ‾ \overline{R} R:  =1,表明该总线周期,CPU进行写操作
     =0,表明该总线周期,CPU进行读操作
D/ C ‾ \overline{C} C:  =1,表明该总线周期,传输的是数据
      =0,表明该总线周期,传输的是指令代码
这三个信号的组合,决定当前总线周期所完成的操作

M/ I O ‾ \overline{IO} IOD/ C ‾ \overline{C} CW/ R ‾ \overline{R} R操作
000中断
001中止/专用周期
010I/O读
011I/O写
100微代码读
101保留
110存储器读
111存储器写

4.输入输出系统

接口电路功能

  • 数据缓冲功能
  • 联络功能
  • 寻址功能
  • 数据转换功能
  • 中断管理功能

端口定义及分类

  • 能与CPU交换信息的寄存器称为I/O端口寄存器,简称端口
  • 分为数据端口、状态端口、控制端口
  • 8086 CPU最多能管理64K个端口,PC机中最多能管理1024个端口

端口编址方式

统一编址的特点:
(1)CPU对外设的操作可使用存储器操作指令,不需要专门的输入/输出指令
(2)端口地址占用内存空间,使内存容量减少
(3)执行存储器指令往往要比那些为独立的I/O而专门设计的指令慢
独立编址的特点:
(1)对于I/O端口,CPU须有专门的I/O指令去访问
(2)端口地址不占用内存空间

  • PC系列机中,I/O端口采用独立编址方式

输入输出指令

I/O端口与CPU(AL,AX)的信息交换
输入:IN       输出:OUT

直接寻址

端口地址为一字节(8b)
eg:

IN AL,PORT//PORT端口内容输入AL
IN AX,PORT//PORT端口和PORT+1端口内容输入AX
IN EAX,PORT//PORT~PORT+3端口内容输入AX
OUT PORT,AL//AL内容输出到PORT端口
DX间址寻址

端口地址为2字节,必须存放在DX寄存器中

  • DX寄存器中存放的是端口地址信息,因此CPU执行OUT DX,AL指令时,DX寄存器的值输出到地址总线上

eg:

IN AL,DX//DX指向的端口中读1字节到AL
OUT DX,AL//将AL内容输出到DX指向的端口

微机系统与I/O之间的传送方式

  1. 无条件传送:外设准备好的情况下,CPU可直接用指令完成与接口的数据传送
  2. 查询方式:数据传送前,需确认外设已准备好
  3. 中断控制方式
  4. 直接存储器存取方式(DMA方式)
  • DMA方式不需要CPU参与
  • 采用查询方式进行I/O数据传送的优点是相对简单
  • 简单外设可以用无条件传送(如发光二极管)

5.可编程定时/计数器8254

基本结构

8254内部集成了3个16位的计数器, 每个计数器有6种工作方式,计数初值可设定为二进制或BCD码,最高工作频率10MHz,有读出命令

  • 每个计数器对外有3个引脚
    GATE:门控信号输出端
    CLK:计数脉冲输入端
    OUT:输出信号端

  • 使用地址线A1、A0选择8254芯片中的寄存器,其他高位地址线译码产生 C S ‾ \overline{CS} CS片选信号
    C S ‾ \overline{CS} CS = 0的前提下
    A1A0 = 00,选中0#计数器
    A1A0 = 01,选中1#计数器
    A1A0 = 10,选中2#计数器
    A1A0 = 11,选中控制字寄存器

工作方式

计数初值 N = fCLK/fOUT

方式2:分频器

  • 输出波形为周期脉冲
  • 写入控制字后,OUT输出为高电平,写入计数初值后,若GATE为高电平,计数器开始减1计数,当计数值减到1时,OUT输出低电平,经过一个CLK周期,又变为高电平,计数初值自动重装,计数器开始重新计数
  • 若减1过程中,GATE变低,则暂停计数,遇到GATE上升沿,恢复初值,开始减1 计数
  • 计数过程中,写入新的计数初值,不会影响计数过程,只有当计数器减到1后,计数器才装入新的计数初值

方式3:方波发生器
计数初值为

  • 偶数:每来一个CLK脉冲,计数值减2,当减为0时改变极性,初值自动重装,继续计数
    输出为1:1的方波
    正负脉冲宽度均为N/2个CLK周期
  • 奇数:实际装入的初值和自动重装的初值,均为编程时写入的初值减1
    输出正脉冲期间,每一个TCLK使计数值减2,当减为-2时,输出端变为低电平,初值自动重装,继续计数
    宽度 = TCLK(N+1)/2
    输出负脉冲期间,每一个TCLK使计数值减2,当减为0时,输出端变为高电平,初值自动重装,继续计数
    宽度 = TCLK(N-1)/2

三个计数器的作用

  • 0#计数器:每隔55ms通过中断系统提出一次日时钟中断请求
  • 1#计数器(用户禁止使用):每隔15us向DRAM刷新控制器提出一次“动态存储刷新请求”
  • 2#计数器:为音响系统提供900Hz方波

初始化编程

  • 数制选择:计数初值为二进制,初值范围为0000H ~ FFFFH,其中0000H表示65526;计数初值为二进制,初值范围为0000H ~9999H,其中0000H表示10000

eg:设8254端口地址为40H~43H,要求2号计数器工作在方式1,按BCD码计数,计数初值为十进制数4000,试写出初始化程序

解:2号计数器的端口地址为42H,控制器端口地址为43H
  2号计数器,则D7D6 = 10
  按BCD码计数,所以计数初值为4000H,则D5D4 = 10,D0 = 1
  工作在方式1,则D3D2D1 = 001

MOV AL,10100011H
OUT 43H,AL//写控制字
MOV AL,4000H
OUT 42H,AL//写初值
;