关于RISC实验报告

  • 格式:doc
  • 大小:1.17 MB
  • 文档页数:8

实验名称:基于RISC技术的模型计算机设计一、实验目的:1.了解精简指令系统计算机(RISC)和复杂指令系统九三级(CISC)的体系结构特点和区别。

前面组成原理部分的“复杂模型机”是基于复杂指令系统(CISC)设计的模型机,本书中所提到的复杂指令系统计算机可参照组成原理部分的“复杂模型机”来理解2.掌握RISC处理器的指令系统特征和一般设计原则二、实验设备:PC机一台,TD-CMA实验系统一套三、实验内容:1.指令系统设计本实验采用RISC思想设计的模型机选用常用的五条指令:MOV、ADD、LOAD、STORE、JMP作为指令系统,寻址方式采用寄存器查询制及直接寻址两种方式。

指令格式采用单字节及双字节两种格式:单字节指令(MOV、ADD、JMP、SUB)格式如下:7 6 5 4 3 2 1 0OP-CODE RS RD 其中,OP-CODE为操作码,RS为源寄存器、RD为目的寄存器,并规定:RS或RD 选定的寄存器00 R001 R110 R211 A双字节指令(LOAD、SA VE)格式如下:7 6 5 4 (1) 3 2 (1) 1 0 (1) 7-0(2)OP-CODE RS RD P根据上述指令个是,列出本模型机的五条机器指令的具体格式、汇编符号和指令功能:操作码指令名0 0 0 0 MOV0 0 0 1 ADD0 0 1 0 SUB0 1 0 0 JMP1 0 0 0 LOAD0 1 1 1 STA2.RISC处理器的模型计算机系统设计3.控制器设计四、实验原理图:数据通路图:指令周期流程图:PC->ARMOVADDS1运行微程序S1LOADSAVEJMPRAM->IRS1PC->AR RAM->ARRS->RD PC+1PC->ARRAM->ARRS->PC T1T2T4T1T2T3PC+1RS->B RS->RAM S1S1T3T4ALU->RDPC+1PC+1RS->RDPC+1PC+1S1五、VHDL 程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY RISC ISPORT(T1,T2,T3,T4,I7,I6,I5,I4,I3,I2,I1,I0,CLR,Q:IN STD_LOGIC;LDR0,LDR1,LDR2,R0_B,R1_B,LD,R2_B,PC_B,LDAR,IOM,RD,WR,LDIR,LDPC,LDAC,LDD R,ALU_B: OUT STD_LOGIC;S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY RISC;ARCHITECTURE ART OF RISC ISSIGNALMOV,ADD,JMP,LOAD,STA,SUB,RS_B,LDRi,F,CLK,CLK11,M1,M2,M3,M4:STD_LOGIC; BEGINM1<=Q AND T1;M2<=Q AND T2;M3<=Q AND T3;M4<=Q AND T4;MOV<=(NOT I7)AND(NOT I6)AND(NOT I5)AND(NOT I4);ADD<=(NOT I7)AND(NOT I6)AND(NOT I5)AND(I4);SUB<=(NOT I7)AND(NOT I6)AND(I5)AND(NOT I4);JMP<=(NOT I7)AND(I6)AND(NOT I5)AND(NOT I4);LOAD<=(I7)AND(NOT I6)AND(NOT I5)AND(NOT I4);STA<=(NOT I7)AND(I6)AND(I5)AND(I4);CLK11<=(LOAD OR STA)AND T4;SS0:PROCESS(ADD,SUB)BEGINIF ADD='1' THEN S<="1001";ELSE S<="1011";END IF;END PROCESS;SS1: PROCESS(CLK11,CLR)BEGINIF CLR='0' THEN F<='0';ELSIF (CLK11'EVENT AND CLK11='0') THEN F<=NOT F;END IF;END PROCESS;SS2: PROCESS(CLR,T1,T2,T3,LOAD,F,STA)BEGINIF CLR='0' THEN RD<='0';WR<='0';ELSE RD<=(T2 AND(NOT F)) OR ( T1 AND( LOAD OR STA)AND F)OR (T2 AND LOAD AND F);WR<=T3 AND STA AND F;END IF;END PROCESS;PC_B<=NOT( (T1 AND (NOT F) )OR ((LOAD OR STA)AND T4 AND (NOT F)));ALU_B<=NOT((ADD OR SUB) AND T4);RS_B<=NOT(((MOV OR ADD OR JMP OR SUB)AND T3 AND (NOT F)) OR (STA AND T3 AND F));LD<=NOT(T3 AND JMP AND (NOT F));IOM<=NOT( T2 OR (T1 AND (LOAD OR STA) AND F)OR (T3 AND STA AND F) );LDPC<=(M3 AND (NOT F))OR (M3 AND (LOAD OR STA)AND F );LDDR<=(ADD OR SUB) AND M3 AND (NOT F);LDIR<=M2 AND (NOT F);LDAR<=M1 OR ((LOAD OR STA)AND (NOT F)AND M4) OR(M1 AND(LOAD OR STA)AND F);LDRi<=((ADD OR SUB) AND M4 AND (NOT F))OR (LOAD AND M2 AND F) OR (MOV AND M3 AND (NOT F));R0_B<=RS_B OR ( I3) OR ( I2);R1_B<=RS_B OR ( I3) OR (NOT I2);R2_B<=RS_B OR (NOT I3) OR ( I2);LDAC<=LDRi AND (I1) AND (I0);LDR0<=LDRi AND (NOT I1) AND (NOT I0);LDR1<=LDRi AND (NOT I1) AND (I0);LDR2<=LDRi AND (I1) AND (NOT I0);END ARCHITECTURE ART;六、实验步骤:1.编译,编辑所设计的CPLD芯片程序,并配置引脚打开Quartus Ⅱ,选择File→New Project Wizard,输入目标路径,工程名及顶层设计实体名,区分大小写。

2、输入工程中包含的设计文件3、确定设计使用的器件,MAXII →4、选择EDA工具:综合、仿真和时序分析5、检查工程中的各项设置6、建立新文件。

File →New,选择VHDL,输入程序,保存7、File →Creat/Update →Creat Symbol Files For Current File,产生一个类型为电原理图的新文件。

8、重复6、7,产生所有模块,完成VHDL语言输入及原理图绘制。

9、分配引脚。

执行Assignments →Pins命令,启动分配引脚功能.10、编译源文件,Processing →Start Compilation11、用下载电缆将PC机和CPLD的下载电路连接起来,执行Tool→Programmer命令,在框中选择默认的JTAG下载方式,选中Program/Configure框,Add File将生成的pof文件添加进来,启动Start按钮完成下载12、打开CMA软件,编写验证程序,运行通路图,观察并记录程序执行流程及各寄存器的变化。

13、完成实验报告,内容包括:实验目的、实验设备、实验内容、实验原理图、VHDL程序、实验步骤、验证程序、实验数据及实验心得。

七、实验数据: 1. 数据流程图八、实验心得、 1.毕成:本次硬件实验让我对基于RISC 技术的模型计算机的简单实现有了直观的认识。

虽然实验已经简化了很多,但是由于理论课程的实践环节比较少,对于芯片关于指令的实现不够了解,导致实验过程中遇到了一些困难。

虽然之前有学习过数字逻辑电路和计算机组成原理,但是由于VHDL 并不在考核范围,导致这次实验拿到VHDL 并且要进行修改的时候有点不知所措。

不过经过我们细致的分析以后,成功的对VHDL 中的逻辑判断进行了修改,实现了减法指令的操作。

在进行引脚分配的时候,由于之前有过引脚修改但是没有及时在试验台上修改引脚连接点,导致我们最后的SA VE指令不能将数据写入内存。

经过我们的排查和询问老师,最终解决了问题并且完成了实验。

经过这次实验,让我了解到计算机体系结构的巨大的复杂性,也意识到如果要制造一台完整的计算机需要考虑很多很多的因素,从硬件设计到指令系统、操作系统等等部分都需要非常严密周全的考量,一个接线或者是引脚分配的错误都可能会导致整个计算机不能正常运作。

总而言之,经过这次实验让我感受到我们实践课程的匮乏,导致理论知识与实际脱节,也导致我们在具备理论知识的条件下也没有办法真正的实现我们的需求。

2.陈晨:本次实验给我带来深刻的体会,虽然只是简化的RISC模型指令的设计,依然给我带来了很大的提高。

从开始VHDL代码的编辑与引脚的设计就给我们带来了不少挑战,实践不同于理论,知识点或许能模糊,但实验步骤不容有半点差错,紧紧是基本线路与引脚的连接就花费了不少时间,事实上实验中途出现的两次问题都是来自线路的问题,而指令的设计反而比较顺利。

实验步骤还是比较按部就班,但想要读懂VHDL的代码对我来说还是有些困难,我深感计算机组成原理和计算机逻辑的知识点有不少遗忘,所幸引脚分配与指令系统的功能还是有较为深刻的印象,所以整体还算是顺利的完成了实验,实验中途出现了两个错误,一个是sub指令结果无法顺利存在寄存器上,另一个是storage指令并没有数据流将寄存器中的值写入存储,经过多次排查,最终还是确认分别是指令代码中未设置剪发,并且写出数据的引脚顺序插反了而导致错误。