COP2000计算机组成原理实验系统 - 图文(10)

2019-08-03 12:44

助记符 ORW A LDW A LDW R? LDA R? STA R? RR A RL A RRC A RLC A CPL A LD A, #II LD A, MM ST A, MM JMP MM JC MM JZ MM 机器码1 000110xx 000111xx 001000xx 001001xx 001010xx 001011xx 001100xx 001101xx 001110xx 001111xx 010000xx 010001xx 010010xx 010011xx 010100xx 010101xx 机器码2 II MM MM 注释 累加器A“或”寄存器W值 将累加器A的值送到寄存器W中 将寄存器R?的值送到寄存器W中 将寄存器R?送到累加器A中 将累加器A的值送到寄存器R?中 累加器A右移 累加器A左移 累加器A带进位右移 累加器A带进位左移 累加器A取反,再存入累加器A中 将立即数送到累加器A中 将存储器中MM中的值送到累加器A中 将累加器A的值送到存储器MM地址中 跳转到地址MM 若进位标志置1,跳转到地址MM 若零标志位置1,跳转到地址MM 可以看出在这个指令系统中,只有访问主存LD,ST指令和转移指令有两个字节,其余指令均为单字节单时钟指令。

1.在 COP2000软件中,用菜单的[文件|调入指令系统/微程序]功能,打开 COP2000下的 “RISC.INS”,这就是 RISC指令/微指令系统。

2.在 COP2000软件中,用菜单的[文件|打开文件]功能,打开 COP2000下的“EX7.ASM”源程序。

3.按快捷图标的 F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及 uPC如何工作。

4.自动产生 ABEL组合逻辑控制器,比较非 RISC指令系统,可以看出 RISC指令系统简单很多。

第五章 组合逻辑控制器

微程序控制器由微程序给出 24位控制信号,而微程序的地址又是由指令码提供的,这就是说 24位控制信号是由指令码确定的。如:MOV A,12H及 MOV A,#34H指令的微序如下: 助记符 MOV A, #II 状态 T1 T0 T1 T0 微地址 78 79 7A 7C 7D 微程序 C77FFF D7BFF7 CBFFFF C7FFF7 CBFFFF 相关控制位 EMRD, PCOE, EMEN, MAREN EMRD, EMEN, MAROE, AEN EMRD, PCOE, IREN EMRD, PCOE, EMEN, AEN EMRD, PCOE, IREN MOV A , MM T2 我们用组合逻辑的方法来写出相应的控制表达式 IR7..IR2为指令的高六位(低两位用于选择寄存器 R0..R3) T3,T2,T1,T0为处于的周期

!EMRD = !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T2 // MOV A, MM T2周期

# !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T1 // MOV A, MM T1周期 # !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T0 // MOV A, MM T0周期 # !IR7 & IR6 & IR5 & IR4 & IR3 & IR2 & T1 // MOV A, #II T1周期 # !IR7 & IR6 & IR5 & IR4 & IR3 & IR2 & T0; // MOV A, #II T0周期

!PCOE = !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T2 // MOV A, MM T2周期

# !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T0 // MOV A, MM T0周期 # !IR7 & IR6 & IR5 & IR4 & IR3 & IR2 & T1 // MOV A, #II T1周期 # !IR7 & IR6 & IR5 & IR4 & IR3 & IR2 & T0; // MOV A, #II T0周期

!EMEN = !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T2 // MOV A, MM T2周期

# !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T1 // MOV A, MM T1周期 # !IR7 & IR6 & IR5 & IR4 & IR3 & IR2 & T2; // MOV A, #II T1周期

!MAREN = !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T2; // MOV A, MM T2周期

!MAROE = !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T1; // MOV A, MM T1周期

!AEN = # !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T1 // MOV A, MM T1周期

# !IR7 & IR6 & IR5 & IR4 & IR3 & IR2 & T1; // MOV A, #II T1周期

!IREN = !IR7 & IR6 & IR5 & IR4 & IR3 & !IR2 & T0 // MOV A, MM T0周期

# !IR7 & IR6 & IR5 & IR4 & IR3 & IR2 & T0; // MOV A, #II T0周期

上面给出的表达式仅是两条指令的表达式,而且没有化简的,不难看出 24位控制信号是指令码及周期数的函数。增加一条指令,只要增加一些或项即可,如增加 ADD A,#11H

助记符 状态 微地址 微程序 相关控制位 ADD A,#II T2 T1 T0 1C 1D 1E C7FFEF EMRD, PCOE, EMEN, WEN FFFE90 FEN, X1, X0, AEN, S2, S1, S0 CBFFFF EMRD, PCOE, IREN

EMRD 增加:

!IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T2 // ADD A, #II T2周期 !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T0 // ADD A, #II T0周期

PCOE 增加:

!IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T2 // ADD A, #II T2周期 !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T0 // ADD A, #II T0周期

EMEN 增加:

!IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T2 // ADD A, #II T2周期

AEN 增加:

!IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T1 // ADD A, #II T1周期

IREN 增加:

!IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T0 // ADD A, #II T0周期

ADD A, #II 新增加的控制信号有 WEN,FEN,X2,X1,S2,S1,S0

!WEN = !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T2 // ADD A, #II T2周期 !FEN = !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T1 // ADD A, #II T1周期 !X2 = !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T1 // ADD A, #II T1周期 !X1 = !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T1 // ADD A, #II T1周期 !S2 = !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T1 // ADD A, #II T1周期 !S1 = !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T1 // ADD A, #II T1周期 !S0 = !IR7 & !IR6 & !IR5 & IR4 & IR3 & IR2 & T1 // ADD A, #II T1周期

IR7..IR0由指令寄存器提供,ABEL表达式是:

[IR7..IR0] := [IBUS7..IBUS0]; [IR7..IR0].CE = !IREN; [IR7..IR0].AR = !RST; [IR7..IR0].CLK = CK;

COP2000每条指令最多有 4个周期(T3,T2,T1,T0),可由两位 D触发器(RT1,RT0)表示。

T3 = RT1 & RT0; T2 = RT1 & !RT0; T1 = !RT1 & RT0;

T0 = !RT1 & !RT0;

RT1,RT0构成一个带预置的减计数器,ABEL表达式是:

WHEN !RT1 & !RT0 THEN { [RT1..RT0] := [CT1..CT0]; }

ELSE { [RT1..RT0] := [RT1..RT0] - 1; } [RT1..RT0].CLK = CK; [RT1..RT0].AR = !RST;

当 RT1,RT0为 0时,表示现执行的是本指令的最后一个周期,这个周期为取指周期。在取指时将 RT1,RT0置为下一条指令的首个周期值。当 RT1,RT0不为 0时,将周期数减一。

CT1,CT0根据指令计算出,ABEL表达式是:

TRUTH_TABLE([IBUS7,IBUS6,IBUS5,IBUS4,IBUS3,IBUS2]->[CT1, CT0])

[ 0, 1, 1, 1, 1, 0 ]->[ 1, 0 ];// MOV A, MM [ 0, 1, 1, 1, 1, 1 ]->[ 0, 1 ]; // MOV A, #II

下面是 COP2000出厂时的组合逻辑控制器 ABEL表达式:

第六章 设计指令/微指令系统

COP2000计算机组成原理实验仪,可以由用户自己设计指令/微指令系统,前一章的“指令流水实验”就是利用另一套指令/微指令系统来实现指令的流水工作。这样用户可以在现有的指令系统上进行扩充,加上一些较常用的指令,也可重新设计一套完全不同的指令/微指令系统。COP2000内已经内嵌了一个智能化汇编语言编译器,可以对用户设定的汇编助记符进行汇编。

做为例题,我们建立一个有如下指令的系统:

指令助记符 LD A,#II ADD A,#II GOTO MM OUT A 指令意义描述 将立即数装入累加器A 累加器A加立即数 无条件跳转指令 累加器A输出到端口 因为硬件系统需要指令机器码的最低两位做为 R0-R3寄存器寻址用,所以指令机器码要忽略掉这两位。我们暂定这四条指令的机器码分别为 04H,08H,0CH,10H。其它指令的设计,用户可参考此例,做为练习来完成。

1.打开 COP2000组成原理实验软件,选择[文件|新建指令系统/微程序],清除原来的指令/微程序系统,观察软件下方的“指令系统”窗口,所有指令码都“未使用”。

2.选择第二行,即“机器码 1”为 0000 01XX行,在下方的“助记符”栏填入数据装载功能的指令助记符“LD”,在“操作数 1”栏选择“A”,表示第一个操作数为累加器 A。在“操作数 2”栏选择“#II”,表示第二个操作数为立即数。按“修改”按钮确认。

3.选择第三行,即“机器码 1”为 0000 10XX行,在下方的“助记符”栏填入加法功能的指令助记符“ADD”,在“操作码 1”栏选择“A”,表示第一操作数为累加器 A,在“操作数 2”栏选择“#II”,表示第二操作数为立即数。按“修改”按钮确认。

4.选择第四行,即“机器码 1”为 0000 11XX行,在下方的“助记符”栏填入无条件跳转功能的指令助记符“GOTO”,在“操作码 1”栏选择“MM”,表示跳转地址为 MM,此指令无第二操作数,无需选择“操作数 2”。按“修改”按钮确认。因为硬件设计时,跳转指令的跳转控制需要指令码的第 3位和第 2位 IR3、IR2来决定,无条件跳转的控制要求 IR3必需为 1,所以无条件跳转的机器码选择在此行,机器码为 000011XX。关于跳转控制的硬件设计和实验可参考前面章节。

5.选择第五行,即“机器码 1”为 0001 00XX行,在下方的“助记符”栏填入输出数据功能的指令助记符“OUTA”,由于此指令隐含指定了将累加器 A输出到输出商品寄存器,所以不用选择“操作码 1”和“操作数 2”,按“修改”按钮确认。


COP2000计算机组成原理实验系统 - 图文(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:温度控制直流电动机转速李

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: