计算机组成原理课内实验报告四.docx

上传人:b****5 文档编号:8311761 上传时间:2023-01-30 格式:DOCX 页数:11 大小:158.08KB
下载 相关 举报
计算机组成原理课内实验报告四.docx_第1页
第1页 / 共11页
计算机组成原理课内实验报告四.docx_第2页
第2页 / 共11页
计算机组成原理课内实验报告四.docx_第3页
第3页 / 共11页
计算机组成原理课内实验报告四.docx_第4页
第4页 / 共11页
计算机组成原理课内实验报告四.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

计算机组成原理课内实验报告四.docx

《计算机组成原理课内实验报告四.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课内实验报告四.docx(11页珍藏版)》请在冰豆网上搜索。

计算机组成原理课内实验报告四.docx

计算机组成原理课内实验报告四

计算机组成与设计课内实验四

一、实验名称

指令译码器设计与调试

二、实验目的

●理解指令译码器的作用和重要性。

●学习设计指令译码器。

三、实验内容

●实验设计目标

本实验要求根据第2章中的实验CPU中使用的指令系统设计指令译码器,本实验指令译码器的设计相对比较简单,节拍(t1、t2和t3)因素只在存储器读写时需要对存储器地址分时使用时需要考虑,这里暂不考虑节拍脉冲t,也就是说微操作控制信号只是指令操作码In和Bj的函数:

Cm=f(In,Bj)式中的In主要代表指令操作码IR[15..12],还有辅助操作码(如算术逻辑指令时的IR[2..0],我们这里要求只考虑指令操作码IR[15..12]。

Bj代表进位标志C和结果为0标志Z。

要求产生的微操作控制信号如下:

✓op_code控制ALU进行8种运算操作的3位编码。

✓c_z_j_flag为1表示需要条件转移。

✓lj_instruct为1表示本条指令是条“JMPADR”指令。

✓DRWr为1表示在t3的下降沿将本条指令的执行结果写入目的寄存器。

✓Mem_Write为1表示本条指令有存储器写操作,存储器的地址是目的寄存器的内容。

✓DW_intruct为1表示本条指令是双字指令。

✓change_z为1表示本条指令可能改变z(结果为0)标志。

✓change_c为1表示本条指令可能改变c(进位)标志。

✓sel_memdata为1表示本条指令写入目的寄存器的值来自读存储器。

●顶层设计实体的引脚要求

引脚要求的对应关系如下:

✓指令IR[15..12]对应实验台开关SD3—SD0

进位C对应实验台开关SD4

结果为0标志Z对应实验台开关SD5

✓控制信号对应如下:

op_code[2..0]指示灯R2、R1、R0

c_z_j_flag指示灯R3

lj_instruct指示灯R4

DRWr指示灯R5

Mem_Write指示灯R6

DW_intruct指示灯R7

change_z指示灯R8

change_c指示灯R9

sel_memdata指示灯R10

四、实验原理

指令译码器是计算机控制器中最重要的部分。

所谓组合逻辑控制器就是指令译码电路是由组合逻辑实现的。

组合逻辑控制器又称硬连线控制器,是早期设计计算机的一种方法。

这种控制器中的控制信号直接由各种类型的逻辑门和触发器等组合产生。

一旦控制部件构成后,除非重新设计和物理上对它重新连线,否则要想增加新的功能是不可能的。

结构上的这种缺陷使得硬连线控制器的设计和调试变得非常复杂而且代价很大。

所以,硬连线控制器曾一度被微程序控制器所取代。

但是随着新一代机器及VLSI技术的发展,这种控制器又得到了重视,如RISC机广泛使用这种控制器。

图1组合逻辑控制器的结构方框图

图1是组合逻辑控制器的结构方框图。

逻辑网络的输入信号来源有三个:

(1)指令操作码译码器的输出In;

(2)来自时序发生器的节拍电位信号Tk;(3)来自执行部件的反馈信号Bj。

逻辑网络的输出信号就是微操作控制信号,用来对执行部件进行控制。

显然,组合逻辑控制器的基本原理,可描述为:

某一微操作控制信号Cm是指令操作码译码器的输出In、时序信号(节拍电位信号Tk)和状态条件信号Bj的逻辑函数。

即Cm=f(In,Tk,Bj)

用这种方法设计控制器,需要根据每条指令的要求,让节拍电位和时序脉冲有步骤地去控制机器的各有关部分,一步一步地执行指令所规定的微操作,从而在一个指令周期内完成一条指令所规定的全部操作。

一般来说,组合逻辑控制器的设计步骤如下:

●绘制指令流程图:

为了确定指令执行过程所需的基本步骤,通常是以指令为纲,按指令类型分类,将每条指令归纳成若干微操作,然后根据操作的先后次序画出流程图。

●安排指令操作时间表:

指令流程图的进一步具体化,把每一条指令的微操作序列分配到各个机器周期的各个时序节拍信号上。

要求尽量多的安排公共操作,避免出现互斥。

●安排微命令表:

以指令流程图为依据,表示出在哪个机器周期的哪个节拍有哪些指令要求哪些微命令。

●进行微操作逻辑综合:

根据微操作时间表,将执行某一微操作的所有条件(哪条指令、哪个机器周期、哪个节拍和脉冲等)都考虑在内,加以分类组合,列出各微操作产生的逻辑表达式,并加以简化。

●实现电路:

根据上面所得逻辑表达式,用硬件电路模块来实现。

五、实验步骤

●实验台设置成FPGA-CPU独立调试模式

REGSEL=0、CLKSEL=1、FDSEL=0。

使用实验台上的单脉冲,STEP_CLK短路子短接,短路子RUN_CLK断开。

●将设计在QuartusⅡ下输入,编译后下载到TEC-CA上的FPGA中。

●拨动实验台上的开关SD5—SD0,改变IR[15..12]、进位标志C和结果为0标志Z,观察指示灯R10-R0显示的控制信号,填写表6-28和表6-29。

六、设计思路与源代码

●实验思路:

●源代码:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityinstruction_decoderis

port(IRH:

instd_logic_vector(3downto0);

c,z:

instd_logic;

op_code:

outstd_logic_vector(2downto0);

--控制ALU进行8种运算操作的3位编码

c_z_j_flag:

outstd_logic;--为1表示需要条件转移

lj_instruct:

outstd_logic;--为1表示本条指令是条"JMPADR"指令

DRWr:

bufferstd_logic;--为1时写DR寄存器

Mem_Write:

outstd_logic;--为1时进行存储器读

DW_intruct:

bufferstd_logic;--为1表示本条指令是双字指令

change_z:

outstd_logic;--为1时改变ZF标志位

change_c:

outstd_logic;--为1时改变CF标志位

sel_memdata:

outstd_logic--为1时存储器的读出数据作为写入DR的数据

);

endinstruction_decoder;

architecturebehavofinstruction_decoderis

signalzj_instruct,cj_instruct:

std_logic;

begin

sel_memdata<=IRH(3)andIRH

(2)and(notIRH

(1));

change_z<=((notIRH(3))and(notIRH

(2)))

or((notIRH(3))andIRH

(2)and(notIRH

(1)))

or((notIRH(3))andIRH

(2)andIRH

(1)and(notIRH(0)));

--00**010*0110

change_c<=(notIRH(3))and(notIRH

(2));--00**

c_z_j_flag<=(zj_instructand(notz))or(cj_instructand(notc));

DRWr_proc:

process(IRH)--将结果写入寄存器

begin

ifIRH(3)='0'then--算术逻辑指令

DRWr<='1';

elsifIRH

(2)='1'andIRH

(1)='0'then--MVRDDR,DATA;LDRDR,SR110*

DRWr<='1';

else

DRWr<='0';

endif;

endprocess;

M_instruct:

process(IRH)--存储器控制命令产生函数

begin

caseIRH(3downto0)is

when"1000"|"1100"=>--指令jmpaddr;mvrddr,data产生下控制命令结果

Mem_Write<='0';

DW_intruct<='1';

when"1110"=>--指令strsr,dr产生如下控制命令结果

Mem_Write<='1';

DW_intruct<='0';

whenothers=>

Mem_Write<='0';

DW_intruct<='0';

endcase;

endprocess;

ALUOP_CODE_PROC:

PROCESS(IRH)--ALU8种运算操作3位编码的产生

begin

ifIRH(3)='0'then

op_code<=IRH(2downto0);

else

op_code<="111";

endif;

endprocess;

Jinstruct_PROC:

process(IRH)--跳转指令

begin

caseIRH(3downto0)is

when"1000"=>--jmpadr--无条件跳转

zj_instruct<='0';

cj_instruct<='0';

lj_instruct<='1';

when"1001"=>--jncaddr--CF不为0时跳转?

zj_instruct<='0';

cj_instruct<='1';

lj_instruct<='0';

when"1010"=>--jnzaddr--ZF不为0时跳转

zj_instruct<='1';

cj_instruct<='0';

lj_instruct<='0';

whenothers=>--其他情况全为0

zj_instruct<='0';

cj_instruct<='0';

lj_instruct<='0';

endcase;

endprocess;

endbehav;

七、实验结果以及相关分析

表1.指令译码器实验(C=0且Z=0)

指令

IR[15..12]

OP[2..0]

c_z_j_flag

lj_instruct

DRWr

Mem_Write

DW_intruct

change_z

change_c

sel_memdata

ADDDR,SR

0000

000

0

0

1

0

0

1

1

0

INCDR

0001

001

0

0

1

0

0

1

1

0

SUBDR,SR

0010

010

0

0

1

0

0

1

1

0

DECDR

0011

011

0

0

1

0

0

1

1

0

ANDDR,SR

0100

100

0

0

1

0

0

1

0

0

ORDR,SR

0101

101

0

0

1

0

0

1

0

0

NOTDR

0110

110

0

0

1

0

0

1

0

0

MOVDR,SR

0111

111

0

0

1

0

0

0

0

0

JMPADR

1000

111

0

1

0

0

1

0

0

0

JNCADR

1001

111

1

0

0

0

0

0

0

0

JNZADR

1010

111

1

0

0

0

0

0

0

0

MVRDDR,DATA

1011

111

0

0

0

0

0

0

0

0

LDRDR,SR

1100

111

0

0

1

0

1

0

0

1

STRSR,DR

1101

111

0

0

1

0

0

0

0

1

对应的仿真波形图如下:

表1.指令译码器实验(C=1且Z=1)

指令

IR[15..12]

OP[2..0]

c_z_j_flag

lj_instruct

DRWr

Mem_Write

DW_intruct

change_z

change_c

sel_memdata

ADDDR,SR

0000

011

0

0

1

0

0

0

0

0

INCDR

0001

011

0

0

1

0

0

0

0

1

SUBDR,SR

0010

011

0

0

1

0

0

0

1

0

DECDR

0011

011

0

0

1

0

0

0

1

1

ANDDR,SR

0100

001

0

0

1

0

0

1

0

0

ORDR,SR

0101

001

0

0

1

0

0

1

1

0

NOTDR

0110

001

0

0

1

0

0

1

1

1

MOVDR,SR

0111

000

0

0

1

0

0

1

1

1

JMPADR

1000

000

1

0

0

1

0

1

1

1

JNCADR

1001

000

0

0

0

0

0

1

1

1

JNZADR

1010

000

0

0

0

0

0

1

1

1

MVRDDR,DATA

1011

000

0

0

0

0

0

1

1

1

LDRDR,SR

1100

100

1

0

1

0

0

1

1

1

STRSR,DR

1101

100

0

0

1

0

0

1

1

1

对应的仿真波形图如下:

八、实验小结

由于对于指令译码方面的内容理解不够透彻,所以在进行实验的时候感觉比较费力。

设计指令系统时首要考虑的是指令要满足功能上的需求。

根据需求分析,设计最基本的指令。

在实验过程中,遇到一个很大的困难在于,由于某一指令结果的产生,会影响诸多标志位的变化,这种变化相互之间相互关联。

思考不够缜密,运用不够熟练所以频频出错。

对于这个实验来说,在实验前先完成设计文档非常关键。

在文档中理清思路后,之后的实验设计就顺畅多了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1