430 likes | 591 Views
微控制器和基本模型机 实现实验. 微程序控制器的一般组成和工作原理. 1 、 基本组成 组成的结构框图如图所示 。. 微程序控制器. uIR. uMAR. 主要由 3 部分组成: ① 控制存储器 CM 是微程序控制器的核心。用来存放实现全部指令系统所对应 的微程序。它的容量根据指令系统的大小而定,其字长由控 制命令的多少、微指令的编码格式及地址字段的宽度而定。 一般采用 TTL 型 ROM (或 EPROM ) 实现。 ② 微指令寄存器 uIR
E N D
微控制器和基本模型机 实现实验
微程序控制器的一般组成和工作原理 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; 微地址发生器 微代码发生器 微代码和指令译码器 硬件系统框图如下:
◆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个命令。
微指令和微程序 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 未选通部件
(2)字段编码的微命令 将余下9位分成3段分别称为A字段、B字段、C字段,每字段包含3 位,分别产生6个相斥性微命令。 A字段命令 LDRi:寄存器R0-R3的数据锁存信号 LDDR1:数据寄存器DR1的锁存信号 LDDR2:数据寄存器DR2的锁存信号 LDIR:指令寄存器IR的锁存信号 LOAD:程序计数器PC的锁存信号 LDAR:地址寄存器AR的锁存信号
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的打入脉冲
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条)
(2)加法指令 ◆加法指令微操作:PC AR,PC+1 PC ; ( RAM(AR)) BUS AR ( RAM(AR)) BUS DR2 R0 DR1 DR1 + DR2 BUS R0 ◆加法指令微程序流程图
◆ 加法指令微命令 ● 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 ◆ 加法指令微程序(5条)
(3) 外设输入指令 ◆ 外设输入指令微操作: SW R0 ◆ 外设输入指令微命令: SW R0 : SW CE =0 ; LDRIK=1 ◆ 外设输入指令微程序(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条)
(5) 输出外设指令微操作和微程序 (6) 无条件转移指令微操作和微程序 5、基本指令的微程序流程图
读写微指令的控制程序的微程序流程图 6、微程序的微代码表
5条机器指令的机器码(二进制代码) 1、助记符指令 外设输入指令: IN 二进制加法指令: ADD [ADDR] 存数指令: STA [ADDR] 输出到外设指令: OUT [ADDR] 无条件转移指令: JMP ADDR 2、机器码指令 ◆IN 指令为单字节指令,该字节为指令操作码; IN 指令的机器码为:0000 0000(00H) ◆ADD [ADDR]指令为双字节指令,一字节为指令操作码,一字节 为地址码;寻址方式为存储器间接寻址。 ADD [ADDR] 指令的机器码为:0001 0000XXXX XXXX (10 XXH)
例: 实现R0和RAM中 20H单元的内容相加的加法指令应为: ADD [20H] (10 20 H) ◆STA [ADDR]指令为双字节指令,一字节为指令操作码,一字 节为地址码;寻址方式为存储器间接寻址。 STA [ADDR] 指令的机器码为:0010 0000XXXX XXXX (20 XXH)
例: 实现将R0内容传送到RAM中 0AH单元的存数指令应为: STA [ 0AH] (20 0AH) ◆OUT [ADDR] 指令为双字节指令,一字节为指令操作码,一字 节为地址码;寻址方式为存储器间接寻址。 OUT [ADDR] 指令的机器码为:0011 0000XXXX XXXX (30 XXH)
例: 实现将RAM中 0AH单元的内容输出到外设LED显示器的外设输 出指令应为: OUT [ 0AH] (30 0AH)
◆JMP ADDR 指令为双字节指令,一字节为指令操作码,一字 节为地址码;寻址方式为存储器直接寻址。 JMP ADDR 指令的机器码为:0100 0000XXXX 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 01H20 H 02H 10 H 03H30 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 采用单步调试方式可以观察到执行每条微指令的数据流向和结果