1、计算机组成原理实验报告姓名: 学号: 专业: 计算机科学与技术 班级: 指导老师: 实验日期: 实验地点: 实验题目: CPU 指令译码器 一、 实验目的(1)理解指令译码器的作用和重要性。(2)学习设计指令译码器。二、实验原理指令译码器是计算机控制器中最重要的部分。所谓组合逻辑控制器就是指指令译码电路是由组合逻辑实现的。组合逻辑控制器又称硬连线控制器,是设计计算机的一种方法。这种控制器中的控制信号直接由各种类型的逻辑门和触发器等构成。这样,一旦控制部件构成后,除非重新设计和物理上对它重新连线,否则要想增加新的功能是不可能的。结构上这种缺陷使得硬连线控制器的设计和调试变得非常复杂而且代价很大。
2、所以,硬连线控制器曾一度被微程序控制器所取代。但是随着新一代及其及 VLSI 技术的发展,这种控制器又得到了广泛重视,如 RISC 机广泛使用这种控制器。图(1)是组合逻辑控制器的结构方框图。逻辑网络的输入信号来源有 3 个:指令操作码译码器的输出 In; 来自时序发生器的节拍典韦信号 Tk;来自执行部件的反馈信号 Bj。逻辑网络的输出信号就是微操作控制信号,用来对执行部件进行控制。组合逻辑控制器的基本原理可描述为:某一微操作控制信号 Cm 是指令操作码译码器的输出 In、时序信号(节拍电位信号 Tk)和状态条件信号 Bj 的逻辑函数。即 Cm=f(In,Tk,Bj)用这种方法设计控制器,需要
3、根据每条指令的要求,让节拍电位和时序脉冲有步骤地去控制机器的各有关部分,一步一步地执行指令所规定的微操作,从而在一个指令周期内完成一条指令所规定的全部操作。一般来说,组合逻辑控制器的设计步骤如下。(1)绘制指令流程图为了确定指令执行过程所需的基本步骤,通常是以指令为线索,按指令类型分类,将每条指令归纳成若干微操作,然后根据操作的先后次序画出流程图。(2)安排指令操作时间表指令流程图的进一步具体化,把每一条指令的微操作序列分配带各个机器周期的各个时序节拍信号上。要求尽量多的安排公共操作,罢免出现互斥。(3)安排为命令表以微命令为依据,表示在哪个机器周期的哪个节拍有哪些指令要求这些微命令。(4)进
4、行微操作逻辑综合根据微操作时间表,将执行某一位操作的所有条件(哪条指令、哪个机器周期、哪个节拍和脉冲等)都考虑在内,加以分类组合,列出各微操作产生的逻辑表达式,并加以简化。(5)实现电路根据上面所得逻辑表达式,用逻辑门电路的组合或大规模集成电路来实现。三、实验步骤(1)将试验台设置成 FPGA-CPU 独立调试模式,REGSEL=0、CLKSEL=1、FDSEL=0。使用试验台上的单脉冲,即 STEP_CLK 短路子短接,短路子 RUN_CLK 断开。(2)将设计在 QuartusII 下输入,变异后下载到 TEC-CA 上的 FPGA 中。(3)拨动试验台上的开关 SD5SD0,改变 IR1
5、512、进位标志 C 和结果为 0 标志 Z,观察指示灯R10R0 显示的控制信号,并填写表(1) 、表(2) 。(4)实验代码(带下划线部分为新加指令的代码):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity instruction_decoder isport (IRH: in std_logic_vector(3 downto 0);c,z: in std_logic;op_code: out std_logic_vect
6、or(2 downto 0);c_z_j_flag: out std_logic;lj_instruct: out std_logic;DRWr: buffer std_logic; Mem_Write: out std_logic;DW_intruct: buffer std_logic;change_z: out std_logic;change_c: out std_logic;sel_memdata: out std_logic );end instruction_decoder;architecture behav of instruction_decoder issignal zj
7、_instruct, cj_instruct: std_logic;beginsel_memdata -jmp addr;mvrd dr,dataMem_Write - str sr,drMem_Write Mem_Write -jmp adrzj_instruct -jnc addrzj_instruct -jnz addrzj_instruct zj_instruct zj_instruct zj_instruct = 0;cj_instruct = 0;lj_instruct = 0;end case;end process;end behav;四、实验分析实验结果(表格最后两行为新加入
8、的指令 ):表(1)指令译码器实验(C=0 且 Z=0)指令 IR1512 OP20 c_z_j_flag Lj_instruct DRWr Mem_Write DW_intruct Change_z Change_c Sel_memdataADD DR,SR 0000 000 0 0 1 0 0 1 1 0INC DR 0001 001 0 0 1 0 0 1 1 0SUB DR,SR 0010 010 0 0 1 0 0 1 1 0DEC DR 0011 011 0 0 1 0 0 1 1 0AND 0100 100 0 0 1 0 0 1 0 0DR,SROR DR,SR 0101 10
9、1 0 0 1 0 0 1 0 0NOT DR 0110 110 0 0 1 0 0 1 0 0MOV DR,SR 0111 111 0 0 1 0 0 0 0 0JMP ADR 1000 111 0 1 0 0 1 0 0 0JNC ADR 1001 111 1 0 0 0 0 0 0 0JNZ DR,DATA1010 111 1 0 0 0 0 0 0 0MVRD DR,DATA1100 111 0 0 1 0 1 0 0 1LDR DR,SR 1101 111 0 0 1 0 0 0 0 1STR SR,DR 1110 111 0 0 0 1 0 0 0 0PUSH SR 1011 11
10、1 1 0 0 0 0 0 0 0POP DR 1111 111 1 1 0 0 0 0 0 0表(2)指令译码器实验(C=0 且 Z=1 或者 C=1 且 Z=0 或者 C=1 且 Z=1)指令 IR1512 OP20 c_z_j_flag Lj_instruct DRWr Mem_Write DW_intruct Change_z Change_c Sel_memdataADD DR,SR 0000 000 0 0 1 0 0 1 1 0INC DR 0001 001 0 0 1 0 0 1 1 0SUB DR,SR 0010 010 0 0 1 0 0 1 1 0DEC DR 0011
11、011 0 0 1 0 0 1 1 0AND DR,SR 0100 100 0 0 1 0 0 1 0 0OR DR,SR 0101 101 0 0 1 0 0 1 0 0NOT DR 0110 110 0 0 1 0 0 1 0 0MOV 0111 111 0 0 1 0 0 0 0 0DR,SRJMP ADR 1000 111 0 1 0 0 1 0 0 0JNC ADR 1001 111 0 0 0 0 0 0 0 0JNZ DR,DATA1010 111 1 0 0 0 0 0 0 0MVRD DR,DATA1100 111 0 0 1 0 1 0 0 1LDR DR,SR 1101
12、111 0 0 1 0 0 0 0 1STR SR,DR 1110 111 0 0 0 1 0 0 0 0PUSH SR 1011 111 1 0 0 0 0 0 0 0POP DR 1111 111 1 1 0 0 0 0 0 0实验分析:指令中的操作码表示要执行的操作的性质,即执行什么操作,或做什么。指令译码器的工作就是在计算机执行一条指定的指令时,首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后控制计算机其他各部件协同完成指令表达的功能。此实验通过设定各种微操作的指令及控制信号,模拟指令译码器,实现了各种微操作。实验感想:这次的实验涵盖了前边的一些实验,综合性较强,各种微操作的控制信号很多,微操作也很多。虽然计算机组成原理的理论课学过这方面的内容,但刚开始做的时候还是很混乱,无头绪,不知从何下手,只好硬着头皮慢慢读代码、看书。最后,还算是搞懂了实验,实际操作其实挺简单,就是理解代码难了点。