使用教材为
《微型计算机原理与接口技术》(慕课版)
孙丽娟、李爱群、陈燕俐、周宁宁、邓玉龙编著
微机原理复习笔记三
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} IO | D/ C ‾ \overline{C} C | W/ R ‾ \overline{R} R | 操作 |
---|---|---|---|
0 | 0 | 0 | 中断 |
0 | 0 | 1 | 中止/专用周期 |
0 | 1 | 0 | I/O读 |
0 | 1 | 1 | I/O写 |
1 | 0 | 0 | 微代码读 |
1 | 0 | 1 | 保留 |
1 | 1 | 0 | 存储器读 |
1 | 1 | 1 | 存储器写 |
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之间的传送方式
- 无条件传送:外设准备好的情况下,CPU可直接用指令完成与接口的数据传送
- 查询方式:数据传送前,需确认外设已准备好
- 中断控制方式
- 直接存储器存取方式(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//写初值