微控制器和基本模型机 实现实验
description
Transcript of 微控制器和基本模型机 实现实验
计 算 机 组 成 设 计
微控制器和基本模型机实现实验
计 算 机 组 成 设 计
微程序控制器的一般组成和工作原理
1 、 基本组成 组成的结构框图如图所示。
微程序控制器
uIR uMAR
计 算 机 组 成 设 计
主要由 3 部分组成: ① 控制存储器 CM 是微程序控制器的核心。用来存放实现全部指令系统所对应 的微程序。它的容量根据指令系统的大小而定,其字长由控 制命令的多少、微指令的编码格式及地址字段的宽度而定。 一般采用 TTL 型 ROM (或 EPROM )实现。 ② 微指令寄存器 uIR 也称控制数据寄存器,用来存放从 CM 中取出的一条微指令的 信息。它的位数同微指令字长相等。 ③ 微地址形成部件 用来产生初始微地址和后继微地址,以保证微指令的连续执 行。包括微地址寄存器 uMAR ,存放部件送来的微地址。
计 算 机 组 成 设 计
2 、工作过程 工作过程是在微程序控制器的控制下计算机执行机器指令的过 程。 可描述为: ① 执行取指令公共操作 公共操作通常由一个取指微程序完成,可能仅由一二条微指 令组成。 取指微指令的入口微地址→ uMAR → M(uMAR) → uIR
→ 有关微指令,控制其它部件实现取指操作→ 机器指令 存入 IR
一般取指微程序的入口地址为 CM 的 0 单元 ② 由机器指令中 OP Code 通过微地址形成部件产生该机器指 令所对应的微程序的入口地址→ uMAR
③ 从 CM 中逐条对应微指令并执行 ④ 完成了一条机器指令的一个微程序后,又回到取指微程序 的入口地址,继续第①步
计 算 机 组 成 设 计
DVCC 实验系统中微程序控制器的硬件电路
可分成 4 个组成部分:
控制存储器 CM ;
微地址发生器
微代码发生器
微代码和指令译码器
硬件系统框图如下:
计 算 机 组 成 设 计
计 算 机 组 成 设 计
1 、控制存储器 CM ;
计 算 机 组 成 设 计
◆ 3 片 2816 芯片 ( U17-U19 )
◆ 24 位微指令
◆ 手动方式、自动方式写入微指令
◆ 2816 地址线 A0-A5 的连接:
U13 ( 74LS374 )的输出端
U1 (单片机)输出口
U12 ( 74LS245 )的输出端
计 算 机 组 成 设 计
计 算 机 组 成 设 计
◆ 2816 数据线 D0-D7 的连接 数据线为输入时,连接:① U20 、 U21 、 U22 ( 74LS245 ) ② U2 、 U3 、 U4 ( 74LS245 )
计 算 机 组 成 设 计
数据线为输出时,连接:① U2 、 U3 、 U4 ( 74LS245 ) ② U23 、 U24 、 U27 ( 74LS273 、 74LS175 )
计 算 机 组 成 设 计
2 、微地址发生器 3 种方式产生微地址:
① 手动方式 由 6 个开关和 74LS374 锁存微地址;
② 自动方式 由单片机 P2.0-P2.5 输出微地址;
③ 强制方式 在手动或自动执行程序指令时判断条件确定后继
地址采用 。
由 U14 、 U15 、 U16 ( 74LS74 )
和 U1274LS245 )产生微地址,电路图如下:
计 算 机 组 成 设 计
计 算 机 组 成 设 计
计 算 机 组 成 设 计
3 、微代码产生器 2 种方式产生微代码 ( 1 )手动方式 24 个开关 MK1- MK24 和 3 片 74LS245 组合产生 24 位微指令代码输入 2816 ; ( 2 )自动方式 由单片机 P0.0-P0.7 输出微指令代码经 3 片 74LS245 送入 2816 ;
计 算 机 组 成 设 计
4 、微代码和指令译码器 ( 1 )微指令的控制字段位的译码 U17 、 U18 ( 2 片 2816 )的输出 16 位锁存于 U23 、 U24 ( 74LS273 ); U19 的输出 2 位锁存于 U27 ( 74LS175 )。
计 算 机 组 成 设 计
U23 、 U24 ( 74LS273 )的输出 M 9- M 24 中的 M13-M15 经 GAL16V8 译码得 A 字段 6 个命令; M10-M12 经 74LS138 译码得 B字段 6 个命令; M9 和 U27 输出 M7 、 M8 经 74LS138 译码得 C 字段 6 个命令。
计 算 机 组 成 设 计
( 2 ) 指令操作码和判断条件字和译码
计 算 机 组 成 设 计
计 算 机 组 成 设 计
微指令和微程序1 、微指令格式
2 、采用直接控制法和字段编码法结合方法设计水平型和 断定方式微指令 ( 1 )直接控制的微命令 算术逻辑运算控制微命令: S0 、 S1 、 S2 、 S3 、 M 、 CN 读写控制命令: WE WE=1 写 ; WE=0 读 地址译码控制命令: B1 、 B0 B1 、 B0 的不同组合产生不同控制信号选中不同部件: 0 0 开关的选通信号 0 1 RAM ( 6264 )芯片的选通信号 1 0 8 段 LED 显示器的选通信号 1 1 未选通部件
计 算 机 组 成 设 计
D24
D23
D22
D21
D20
D19
D18
D17
D16
S3 S2 S1 S0 M CN WE B1 B0
( 2 )字段编码的微命令 将余下 9 位分成 3 段分别称为 A 字段、 B 字段、 C 字段,每字段包含 3 位,分别产生 6 个相斥性微命令。 A 字段命令
LDRi :寄存器 R0-R3 的数据锁存信号
LDDR1 :数据寄存器 DR1 的锁存信号
LDDR2 :数据寄存器 DR2 的锁存信号
LDIR :指令寄存器 IR 的锁存信号 LOAD :程序计数器 PC 的锁存信号 LDAR :地址寄存器 AR 的锁存信号
D15
D14
D13
选择
0 0 0
0 0 1 LDRi 0 1 0 LDDR1
0 1 1 LDDR2
1 0 0 LDIR
1 0 1 LOAD
1 1 0 LDAR
计 算 机 组 成 设 计
B 字段命令
RSB :源寄存器( R0-R3 )的选通信号 RDB :目标寄存器( R0-R3 )的选通信号 RIB : 变址寄存器( R0-R3 )的选通信号 299B :移位寄存器输出允许信号;判零电路 标志位 ALUB : ALU 结果输出允许信号 PCB :程序计数器 PC 输出允许信号
C 字段命令
P(1) :P(2) : 条件判断
P(3) : 根据指令 I4-I7 、开关 SWA 、 P(4) : SWC 产生下条微指令地址
AR : 判零电路、进位控制位LDPC :程序计数器 PC 的打入脉冲
D12
D11
D10
选择
0 0 0
0 0 1 RSB
0 1 0 RDB
0 1 1 RIB
1 0 0 299B
1 0 1 ALUB
1 1 0 PCB
D9 D8 D7 选择0 0 0
0 0 1 P(1)
0 1 0 P(2)
0 1 1 P(3)
1 0 0 P(4)
1 0 1 AR
1 1 0 LDPC
计 算 机 组 成 设 计
24 2322
21 20 1918
17 1615 14
1312 11
109 8 7 6 5 4 3 2 1
S3
S2
S1
S0 M C
NWE
B1
B0
A B CUA5
UA4
UA3
UA2
UA1
UA0
微指令格式设计为:
计 算 机 组 成 设 计
3 、 5 条基本机器指令及其功能 外设输入指令 IN : 开关 KD0-KD7 值 R0
二进制加法指令 ADD [ADDR] : R0+ ( ADDR ) R0
存数指令 STA [ADDR] : R0 ( ADDR ) 输出到外设指令 OUT [ADDR] : ( ADDR ) LED 显示器 无条件转移指令 JMP ADDR : ( ADDR ) PC
4 、机器指令的微程序 (1) 取指令操作 ( 取指令操作码 )
◆ 取指微操作: PC AR , PC+1 PC ; ( RAM ( AR )) BUS IR
◆ 取指微程序流程图
计 算 机 组 成 设 计
● PC AR : LDAR =1 , LDPC=1 ( LOAD=1 ), PCB=0 PC+1 PC :● ( RAM ( AR )) BUS IR : LDIR=1 , RAM CE=0
P ( 1 ) =0
◆ 取指微命令
◆ 取指令微程序( 2 条)
微地址 S3 S2 S1 S0 M CN WE B1 B0 A B C UA5…UA0
0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0
0 2 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0
计 算 机 组 成 设 计
(2) 加法指令 ◆ 加法指令微操作: PC AR , PC+1 PC ; ( RAM ( AR )) BUS AR
( RAM ( AR )) BUS DR2
R0 DR1
DR1 + DR2 BUS R0
◆ 加法指令微程序流程图
计 算 机 组 成 设 计
◆ 加法指令微程序( 5 条)
微地址 S3 S2 S1 S0 M CN WE B1 B0 A B C UA5…UA0
0 9 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1
0 3 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0
0 4 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1
0 5 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0
0 6 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1
● PC AR : LDAR =1 , LDPC=1 ( LOAD=1 ), PCB=0 PC+1 PC :● ( RAM ( AR )) BUS AR : LDAR=1 , RAM CE =0● ( RAM ( AR )) BUS DR2 : LDDR2=1 , RAM CE=0● R0 DR1 : LDDR1=1 , RSB=0● DR1 + DR2 BUS R0 : LDR0K=1 , ALUB=0
◆ 加法指令微命令
计 算 机 组 成 设 计
(3) 外设输入指令 ◆ 外设输入指令微操作: SW R0
◆ 外设输入指令微命令 :
SW R0 : SW CE =0 ; LDRIK=1
◆ 外设输入指令微程序( 1 条)
微地址 S3 S2 S1 S0 M CN WE B1 B0 A B C UA5…UA0
0 8 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
计 算 机 组 成 设 计
(4) 存数指令微操作和微程序
◆ 存数指令微操作: PC AR , PC+1 PC ; ( RAM ( AR )) BUS AR
R0 ( RAM ( AR )) ◆ 存数指令微命令 : ● PC AR : LDAR =1 , LDPC=1 ( LOAD=1 ), PCB=0 PC+1 PC : ● ( RAM ( AR )) BUS AR : LDAR=1 , RAM CE =0
● R0 ( RAM ( AR )) : RAM CE =0, RSB=0
◆ 存数指令微程序( 3 条)
微地址 S3 S2 S1 S0 M CN WE B1 B0 A B C UA5…UA0
0 A 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 1 1
0 7 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1
0 D 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
计 算 机 组 成 设 计
(5) 输出外设指令微操作和微程序 (6) 无条件转移指令微操作和微程序
5 、基本指令的微程序流程图
计 算 机 组 成 设 计
读写微指令的控制程序的微程序流程图
6 、微程序的微代码表
计 算 机 组 成 设 计
微地址 S3 S2 S1 S0 M CN WE B1 B0 A B C UA5…UA0
0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0
0 2 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0
0 3 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0
0 4 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1
0 5 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0
0 6 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1
0 7 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1
0 8 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
0 9 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1
0 A 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 1 1
0 B 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0
0 C 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0
0 D 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
0 E 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1
0 F 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1
1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0
1 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 0
1 2 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1
1 3 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 4 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0
1 5 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1
1 6 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1
1 7 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0
1 8 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1
计 算 机 组 成 设 计
5 条机器指令的机器码 ( 二进制代码 )
1 、助记符指令 外设输入指令 : IN
二进制加法指令 : ADD [ADDR]
存数指令 : STA [ADDR]
输出到外设指令 : OUT [ADDR]
无条件转移指令 : JMP ADDR
2 、机器码指令 ◆ IN 指令为单字节指令,该字节为指令操作码; IN 指令的机器码为: 0000 0000 ( 00H )
◆ ADD [ADDR] 指令为双字节指令,一字节为指令操作码,一字节 为地址码;寻址方式为存储器间接寻址。 ADD [ADDR] 指令的机器码为: 0001 0000 XXXX XXXX
( 10 XXH )
计 算 机 组 成 设 计
例 : 实现 R0 和 RAM 中 20H 单元的内容相加的加法指令应为: ADD [20H] ( 10 20 H )
◆ STA [ADDR] 指令为双字节指令,一字节为指令操作码,一字 节为地址码;寻址方式为存储器间接寻址。 STA [ADDR] 指令的机器码为: 0010 0000 XXXX XXXX
( 20 XXH )
计 算 机 组 成 设 计
例 : 实现将 R0 内容传送到 RAM 中 0AH 单元的存数指令应为: STA [ 0AH] ( 20 0AH )
◆ OUT [ADDR] 指令为双字节指令,一字节为指令操作码,一字 节为地址码;寻址方式为存储器间接寻址。 OUT [ADDR] 指令的机器码为: 0011 0000 XXXX XXXX
( 30 XXH )
计 算 机 组 成 设 计
例 : 实现将 RAM 中 0AH 单元的内容输出到外设 LED 显示器的外设输 出指令应为: OUT [ 0AH] ( 30 0AH )
计 算 机 组 成 设 计
◆ JMP ADDR 指令为双字节指令,一字节为指令操作码,一字 节为地址码;寻址方式为存储器直接寻址。 JMP ADDR 指令的机器码为: 0100 0000 XXXX XXXX ( 40 XXH )例 : 实现转移执行地址为 0AH 单元的指令的转移指令应为: JMP 0AH ( 40 0AH )
计 算 机 组 成 设 计
采用基本机器指令的编程 ◆ 采用 5 条机器指令助记符指令编写实现特定功能简单程序段;
◆ 助记符指令程序段转换成机器码程序;
例 : 编写一段程序实现将开关输入的一个 8 位数据存放于 RAM 的10H 单元内,同时在 LED 显示器上显示。
助记符指令 机器码指令
IN 00 H
STA [10H] 20 10H
OUT [10H] 30 10H
JMP 00H 40 00H
◆ 指令的地址分配:一般 CPU复位后 PC 为 0 ,表示 CPU 执行起始地址为 00H 单元的指令。
计 算 机 组 成 设 计
以上机器码指令程序可安排为:
RAM 单元地址 机器码 00H 00 H 01H 20 H 02H 10 H 03H 30 H 04H 10 H 05H 40 H 06H 00 H
计 算 机 组 成 设 计
设计任务 1
采用 5 条机器指令,编写一段程序实现将从外部开关输入的被加数与存放于某个存储单元的加数相加之和存放于另一个存储单元的功能。
设计任务 2
采用 5 条机器指令,编写一段程序实现将以 30H 为起始地址的5 个单元分别存放数据 01H 、 02H 、 03H 、 04H 、 05H 的功能。
设计任务 3
设计减法指令取代加法指令构成基本模型机的 5 条机器指令。采用这 5 条机器指令,编写一段程序实现将从外部开关输入的被减数与存放于某个存储单元的减数相减之差存放于另一个存储单元的功能。
计 算 机 组 成 设 计
微程序的读、写、和机器指令程序运行的操作
1 、 DVCC 系统箱上的操作 ● 写微程序 ① 设置 “编程开关”、 “运行控制”、 “运行方式”开关状态; ② 用模拟开关 UA0~ UA5 设置 6 位微地址,用 模拟开关 MK1~ MK24 设置 24 位微代码; ③ 按动“启动运行”开关,启动时序电路,将微代码写入到 2816
的相应地址单元中; ● 读微程序 ① 设置 “编程开关”、“运行控制”、“运行方式”开关状态; ② 用模拟开关 UA0~ UA5 设置 6 位微地址; ③ 按动“启动运行”开关,启动时序电路,观察显示灯 LMD1~ LMD24 的状态,读出微代码;
计 算 机 组 成 设 计
2 、 PC 机上的操作 运行 DVCC 组成原理实验集成调试软件,系统提供菜单和多个显 示窗口,在屏幕上点击相应菜单或图标可以输入、修改微指令代 码和机器指令代码,也可以单步、连续运行指令,可以观察数据 的动态流向、寄存器和存储器单元的数据的显示。
例:加法指令 ( ADD[0AH] )的微程序执行的动态过程及其数据流向。 在主存 RAM 地址为 00H处 开始存放 指令 ADD[ 0AH] 和 JMP 00H 指令的机器码 。在操作界面的 RAM 中输入 00 10 ( ADD[ 0AH] ) 01 0A
02 40 ( JMP 00H ) 03 00
采用单步调试方式可以观察到执行每条微指令的数据流向和结果