还剩7页未读,继续阅读
文本内容:
数学与计算机学院计算机组成原理实验报告年级*****级学号**********姓名*****成绩专业网络工程实验地点主楼指导教师何欣枫528实验项目指令译码器实验日期CPU2012-12-5
一、实验目的1理解指令译码器的作用和重要性2学习设计指令译码器
二、实验原理指令译码器是计算机控制器中最重要的部分所谓组合逻辑控制器就是指指令译码电路是由组合逻辑实现的组合逻辑控制器又称硬连线控制器,是设计计算机的一种方法这种控制器中的控制信号直接由各种类型的逻辑门和触发器等构成这样,一旦控制部件构成后,除非重新设计和物理上对它重新连线,否则要想增加新的功能是不可能的结构上这种缺陷使得硬连线控制器的设计和调试变得非常复杂而且代价很大所以,硬连线控制器曾一度被微程序控制器所取代但是随着新一代及其及VLSI技术的发展,这种控制器又得到了广泛重视,如RISC机广泛使用这种控制器图6-42是组合逻辑控制器的方框图逻辑网络的输入信号来源有3个
①指令操作码译码器的输出I
②来自时序发生器的节拍电位信号T
③来自执行部件的n;反馈信号及逻辑网络的输出信号就是微操作控制信号,用来对执行部件进行控制计数启停---------------模计复位1数器k时钟1指操令作译码码器地址码译码器C1C2…CmI/k图组合逻辑控制器的结构方框图组合逻辑控制器的基本原理可描述位:某一微操作控制信号聂是指令操作码译6-42执行II部件码器的输出1八时序信号(节拍电位信号Tk)和状态条件信号Bj的逻辑函数即的反C=f(in,Tk,Bj)…组合逻辑I2馈信m网络号用这种方法设计控制器,需要根据每条指令的要求,让节拍电位和时序脉冲有In步骤地去控制机器的各有关部分,一步一步地执行指令所规定的微操作,从而在一个指令周期内完成一条指令所规定的全部操作一般来说,组合逻辑控制器的设计步骤如下
(1)绘制指令流程图为了确定指令执行过程所需的基本步骤,通常是以指令为线索,按指令类型分类,将每条指令归纳成基于微操作,然后根据操作的先后顺序画出流程图
(2)安排指令操作时间表指令流程图的进一步具体化,把每一条指令的微操作序列具体分配到各个机器周期的各个时序节拍的信号上要求尽量多的安排公共操作,避免出现互斥
(3)安排为命令表依微命令为依据,表示在哪个机器周期的哪个节拍有哪些指令要求这些微命令
(4)进行微操作逻辑综合根据微操作时间表,将执行某一微操作的所有条件(哪条指令、哪个机器周期、哪个节拍脉冲等)都考虑在内,加以分类组合,列出各微操作产生的逻辑表达式,并加以简化
(5)实现电路根据上面所得逻辑表达式,用逻辑门实现电路的组合或大规模集成电路来实现
三、实验要求
1、实验设计目标本实验要求根据第2章中的实验CPU中使用的指令系统设计指令译码器本实验治理那个译码器的设计相对比较简单,节拍(
3、t
2、和t3)因素只在存储器读写时需要对存储器地址分时使用时考虑,这里暂不考虑节拍脉冲t,也就是说微操作控制信号只是指令操作码L和Bj的函数C=f(In,Bj)m时钟的L主要代表指令操作码IR
115..12],还有辅助操作码(如算术逻辑指令的IR
12..0],这里要求只考虑指令操作码Bj代表进位标志C和结果为0标志Zop_code控制ALU进行8种运算操作的3位编码c_z_j_flag为1表示需要条件转移1j_instruct为1表示本条指令是“JMP ADR”指令DRWr为1表示在t3的下降沿将本条指令的执行结果写入目的寄存器中Mem Write为1表示本条指令有存储器写操作,存储器的地址是目的寄存器中的内容DWinstruct为1表示本条指令是双子指令change_z为1表示本条指令可能改变Z(结果为0)标志change_c sei为1表示本条指令可能改变C(进位)标志memdata为1表示本条指令写入目的寄存器的值来自读寄存器要求产生的微操作控制信号如下:
2、顶层设计实体的引脚要求引脚要求的对应关系如下:指令对应试验台开关1IR[15・・12]SD3〜SDo进位C对应试验台开关SD,.结果为0标志Z对应试验台开关SD5Oop_code指示灯R
2、RI、ROc_z_j_flag指示灯R31jinstruct指示灯R4DRWr指示灯RsMemWrite指示灯R6DW_instruct指示灯R7change_z changec指示灯R8
四、sel_memdata指示灯R9实验步骤指示灯R10控制信号对应如下:21将试验台设置成FPGA-CPU独立调试模式,REGSELR、CLKSEL=K FDSEL=0使用o试验台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开2将设计在QuartusII下输入,变异后下载到TEC-CA上的FPGA中3拨动试验台上的开关SDs SDo,改变IR[
15..12]、进位标志C和结果为0标〜志Z,观察指示灯R/R显示的控制信号,并填写表6-28
五、实验结果程序及分析
1、编写的VHDL代码及解释如下library ieee;use ieee.std_logic_
1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity decoderisport IRH:in std_logic_vector3downto0;c:in std_logic;z:in std_logic;op_code:out std_logic_vector2downto0;c_z j_flag:out stdlogic;1j_instruct:out std_logic;Mem Write:out std_logic;DW intruct:buffer std_logic;changez:out stdlogic;change_c:out std_logic;sel_memdata:out std_logicDRWr:buffer stdlogic;end decoder;--以上是实体的定义部分architecture behavof decoderissignal zj_instruct,cj_instruct:std_logic;beginsel_memdata=IRH3and IRII2and not IRH1;change_z=not IRH3and notIRH2or notIRH3and IRH2and not1RH1or notIRH3and IRH2and IRH1and notIRH0;change_c=notIRH3and notIRH2;c_z_j_flag=zj_instruct andnot zor cj_instruct andnot c;DRWr_proc:process IRHbeginifIRH3=O then一算术逻辑指令DRWr=,f;elsif IRH2=1and IRHl=O then—MVRD DR,DATA;LDR DR,SR DRWr〈二’1;elseDRWr〈二O;end if;end process;Minstruct:processIRHbegincase IRH3downto0iswhen“1000〃“1100〃=一jmp addr;mvrd dr,dataMem_Write〈二O;DWintruct〈二’1;when〃1110〃=--str sr,drMemWrite=1;DW_intruct=O;when=—Mem Write〈二’1;DW_intruct=,T;when others=Mem Write=O;DW_intruct=O;end case;end process;ALUOP_CODE_PROC:PROCESSIRHbeginif IRH3=’O thenop_code=IRH2downto0;elseop_code=〃111〃;end if;end process;JinstructPROC:processIRHbegincase IRH3downto0iswhen〃1000〃=--jmp adrzj instruct=O;cj_instruct=O;1j_instruct=J T;when〃1OO1〃=一jnc addrzj_instruct〈二O;cjinstruct〈二’1;1j_instruct=O;when〃1010〃=--jnz addrzj_instruct=1;cj_instruct=O;1jinstruct〈二O;when〃1011”二zj_instruct=,1;cj_instruct=,F;1j_instruct=,O;when〃1111〃二〉zj_instruct=,O;cj_instruct=,O;1j_instruct=,O;when others=zj_instruct=O;cj_instruct〈=O;1j_instruct=O;end case;end process;end behav;、实验结果如表所示26-28表指令译码器实验(且)6-28C=0Z=0指令IR[
15..12Ijjnstr DRWrMem_DWJn Changchang sel_meOP[
2..0]uct Writestruct e_z e_c mdata]ag000000000100110ADDDR,SRINC000100100100110DR001001000100110SUBDR,SRDEC0011Oil00100110DR010010000100100ANDDR,SROR DR,SR010110100100100NOT011011000100100DR011111100100000MOVDR,SRJMPADR100011101001000JNC ADR100111110000000JNZADR101011110000000110011100101001MVRDDR,DATA110111100100001LDRDR,SR111011100010000STR且SR,DRC=0Z=1JNC ADR100111110000000且JNZADR101011100000000C=1Z=0JNC ADR100111100000000且JNZADR101011110000000C=0Z=0JNC ADR100111100000000JNZADR101011100000000由上表可知,和只影响与标志位有关的指令的结果其中指令和C ZJNC ADRJNZ有条件转移,所以当和的取值变化时,会影响实验结果对于其他指令,和ADR C Z C的取值发生变化时结果不变对于指令,其功能是:如果则Z JNCADRC=0,PC-ADR;如果则当时,表示需要条件转移;当时,转向下一C=l,PC-PC+1C=0c_zj_flag=l,C=1条指令,」_对于指令其功能是如果则如果则c_z flag=JNZ ADR,Z=0,PC-ADR;Z=l,当时,表示需要条件转移;当时,转向下一条指令,PC=PC+1Z=0c_zj_flag=l,Z=1c_zj_flag=0o对于其他指令,不论和取何值,实验结果不变指令CZADD DR,SR”“INC DR”结果一致,因为它们都是算术运算,都可能影响进位标志和结果“SUBDE,SR”“DECDR”C为标志只是它们的控制运算的编码不同指令0Z,OP[
2..0]除表示运算编码不同外,其他结果相同,因为它们都是ADDDR,SR”“ORDR,SR”“ORDR”逻辑运算,不影响进位标志只影响结果为标志指令功能是C,Z MOVDR,SR,DR-SR,不影响标志位,但需要把执行结果写入目的寄存器,故指令功能DRWr=l JMPADR,是是双字节指令,并且需要写入存储器,故指令PC-ADR,lj_instruct=l,DW_instruct=l功能是是双字节指令,并且写入目的寄存器的值MVRD DR,DATA”,DR-DATA,PC=PC+2,来自读寄存器,故指令功能DW_instruct=1,DRWr=l,sel_memdate=1o LDRDR,SR”,是写入寄存器的值来自读寄存器,故,指令DR-[SR],PC=PC+1,DRWr=l,sel_memdate=loSTR SR,DR”,功能是[DR]-SR,PC=PC+1,有存储器写操作,故Mem_Write=1。