模型机CPU设计——指令译码器(2)

组合部件:
1指令译码器:
(1)部件功能:
通过指令系统表设计一个由指令码映射到指令信号的译码器。对IR传送的机器码进行译码,产生相应的控制信号以及为下一个部件提供输入,其中指令码为8位二进制码,译码器的输出端为指令操作。
(2)接口设计:
模型机CPU设计——指令译码器(2)
输入:
a,b表示由IR传送来的数据
EN是使能信号
输出:
MOVA用来传送(R2)→ R1操作的使能信号
MOVB用来传送(R2)→(C)操作的使能信号
MOV用来传送((C))→R1操作的使能信号
ALU分别用来传送(R1)+(R2)→R1操作(R1)-(R2)→ R1操作(R1)∨(R2)→ R1操作的使能信号
NOT用来传送R1 /(R1)→ R1操作的使能信号
SHL和SHR用来传送循环左右移位操作的使能信号
JMP,JC,JZ 则用来传送PC跳转到指定address操作的使能信号
IN传送向R1写入操作的指令
OUT传送由寄存器中读出R1的操作的指令
HALT传送停机指令

(2)功能实现:
对每一种输入情况进行译码,对应每一种二进制编码,存储在一个临时变量temp里,在对temp讨论输出结果:
模型机CPU设计——指令译码器(2)
模型机CPU设计——指令译码器(2)
指令的汇编符号 指令的功能 指令的二进制编码
模型机CPU设计——指令译码器(2)
模型机CPU设计——指令译码器(2)
(4)功能仿真验证:
模型机CPU设计——指令译码器(2)
模型机CPU设计——指令译码器(2)
模型机CPU设计——指令译码器(2)
仿真结果:
输入1111 R1 R2 执行MOV M操作,此时MOVA=1
输入1111 11 R2 执行MOV R1,M的操作此时MOVB=1
输入1111 R1 11 执行MOVC的操作,此时MOVC=1
输入1001 R1 R2执行(R1)+(R2)→ R1 ALU=1
输入0110 R1 R2执行(R1)-(R2)→ R1 ALU=1
输入1011 R1 R2执行(R1)∨(R2)→ R1 ALU=1
输入0101 R1执行 /(R1)→ R1 ALU=1
输入1010 R1 00执行循环右移一位RSL=1
输入1010 R1 00执行循环右移一位RSR=1
输入0001 00 00,0001 00 01,JMP为1或JZ为1或JC为1
输入0010 R1XX 执行输入操作IN=1
输入0100 R1XX 执行输出操作OUT=1
输入01110000执行NOP操作NOP=1
输入10000000 执行停机操作HALT=1
对于其他输入,这里用了一个小的技巧,都译码为NOP表示跳转到下一条指令表示跳过这条指令,也就是译码结果为NOP=1
结论:仿真结果满足功能要求,设计正确