计算机组成原理课程设计.docx
- 文档编号:10184249
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:15
- 大小:2.42MB
计算机组成原理课程设计.docx
《计算机组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
计算机组成原理课程设计
计算机组成原理
实习报告
姓名
学号200
班级信0801-2
指导教师
实习日期2011年4月2日
一、实习目的
1.融会贯通计算机组成原理课程和计算机系统结构课程的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,特别是对硬布线控制器的认识。
2.学习运用ISP技术进行设计和调试的基本步骤和方法,熟悉集成开发软件中设计、模拟调试工具的使用,体会ISP技术相对于传统开发技术的优点。
3.培养科学研究的独立工作能力,取得工程设计和组装调试的实验经验。
二、实验要求
1.在微程序控制器实验的基础上,设计一台微程序控制的指令级标量模型计算机。
2.根据设计的图纸,在通用实验台上进行vhdl语言实现。
二、实验设备及原理
实验设备:
TEC-4计算机组成原理实验系统一台。
PC机QuartusII软件工具
实验原理:
1.在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在硬布线控制下自动产生各部件单元控制信号,实现特定的功能。
2.实验选择了MIPS体系结构中比较典型的指令,使用QuartusII软件工具,通过原理图以及VHDL语言设计CPU的逻辑电路来实现这些指令。
另外还用MIPS汇编语言编写了用于CPU测试的简单程序,对所设计的CPU逻辑电路进行功能仿真模拟,以验证CPU逻辑电路的正确性
图1单周期CPU逻辑电路图
3.在FPGA中利用嵌入式阵列块EAB可以构成数据存储器,lpm_ram_dq的结构如图2。
数据从ram_dp0的左边D[31..0]输入,从右边Q[31..0]输出,R/W——为读/写控制信号端。
数据的写入:
当输入数据和地址准备好以后,在inclock和outclock是地址锁存时钟,当信号上升沿到来时,地址被锁存,数据写入存储单元。
数据的读出:
从A[4..0]输入存储单元地址,在CLK信号上升沿到来时,该单元数据从Q[31..0]输出。
R/W——读/写控制端,低电平时进行读操作,高电平时进行写操作;
CLK——读/写时钟脉冲;DATA[31..0]——RAM_dq0的32位数据输入端;
A[4..0]——RAM的读出和写入地址;Q[31..0]——RAM_dq0的32位数据输出端。
图2lpm_ram_dq的结构
三、实验步骤
1.设计数据寄存器的步骤:
a.按照图3所示代码用初始化存储器编辑窗口编辑lpm_ram_dq0配置文件(文件名.mif),并将文件名设为sc_datamem.mif。
如图4所示
图3数据寄存器的代码
图4lpm_ram_dq0配置文件
b.根据实验原理,得出数据寄存器的原理图,如图5示:
图5数据寄存器原理图
数据寄存器的VHDL设计语言如下:
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITYsc_datamemIS
port
(
WE:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
MEMCLK:
INSTD_LOGIC;
A:
INSTD_LOGIC_VECTOR(31downto0);
D1:
INSTD_LOGIC_VECTOR(31downto0);
DO:
OUTSTD_LOGIC_VECTOR(31downto0)
);
ENDsc_datamem;
ARCHITECTUREbdf_typeOFsc_datamemIS
componentlpm_ram_dq0
PORT(wren:
INSTD_LOGIC;
inclock:
INSTD_LOGIC;
outclock:
INSTD_LOGIC;
address:
INSTD_LOGIC_VECTOR(4downto0);
data:
INSTD_LOGIC_VECTOR(31downto0);
q:
OUTSTD_LOGIC_VECTOR(31downto0)
);
endcomponent;
signalSYNTHESIZED_WIRE_0:
STD_LOGIC;
signalSYNTHESIZED_WIRE_1:
STD_LOGIC;
BEGIN
b2v_inst:
lpm_ram_dq0
PORTMAP(wren=>SYNTHESIZED_WIRE_0,
inclock=>MEMCLK,
outclock=>MEMCLK,
address=>A(6downto2),
data=>D1,
q=>DO);
SYNTHESIZED_WIRE_0<=SYNTHESIZED_WIRE_1ANDWE;
SYNTHESIZED_WIRE_1<=NOT(CLK);
END;
c.编译原理图文件,成功后封装成元器件,如图6所示:
d.编辑波形,并进行功能仿真,其仿真结果如图7所示;
2.设计单周期CPU的步骤:
a.根据原理,得到CPU的设计原理图,如图8所示:
用VHDL语言设计如下:
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITYsc_compIS
port
(
CLOCK:
INSTD_LOGIC;
MEMCLK:
INSTD_LOGIC;
INSTCLOCK:
INSTD_LOGIC;
RESETN:
INSTD_LOGIC;
ALUOUT:
OUTSTD_LOGIC_VECTOR(31downto0);
INSTR:
OUTSTD_LOGIC_VECTOR(31downto0);
MEMOUT:
OUTSTD_LOGIC_VECTOR(31downto0);
PC:
OUTSTD_LOGIC_VECTOR(31downto0)
);
ENDsc_comp;
ARCHITECTUREbdf_typeOFsc_compIS
componentsc_cpu
PORT(CLOCK:
INSTD_LOGIC;
RESETN:
INSTD_LOGIC;
INSTR:
INSTD_LOGIC_VECTOR(31downto0);
MEM:
INSTD_LOGIC_VECTOR(31downto0);
WMEM:
OUTSTD_LOGIC;
ALU:
OUTSTD_LOGIC_VECTOR(31downto0);
DATA:
OUTSTD_LOGIC_VECTOR(31downto0);
PC:
OUTSTD_LOGIC_VECTOR(31downto0)
);
endcomponent;
componentsc_instmem
PORT(CLK:
INSTD_LOGIC;
A:
INSTD_LOGIC_VECTOR(31downto0);
DO:
OUTSTD_LOGIC_VECTOR(31downto0)
);
endcomponent;
componentsc_datamem
PORT(WE:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
MEMCLK:
INSTD_LOGIC;
A:
INSTD_LOGIC_VECTOR(31downto0);
D1:
INSTD_LOGIC_VECTOR(31downto0);
DO:
OUTSTD_LOGIC_VECTOR(31downto0)
);
endcomponent;
signalALUOUT_ALTERA_SYNTHESIZED:
STD_LOGIC_VECTOR(31downto0);
signalSYNTHESIZED_WIRE_0:
STD_LOGIC_VECTOR(31downto0);
signalSYNTHESIZED_WIRE_1:
STD_LOGIC_VECTOR(31downto0);
signalSYNTHESIZED_WIRE_2:
STD_LOGIC_VECTOR(31downto0);
signalSYNTHESIZED_WIRE_3:
STD_LOGIC;
signalSYNTHESIZED_WIRE_4:
STD_LOGIC_VECTOR(31downto0);
BEGIN
INSTR<=SYNTHESIZED_WIRE_0;
MEMOUT<=SYNTHESIZED_WIRE_1;
PC<=SYNTHESIZED_WIRE_2;
b2v_inst:
sc_cpu
PORTMAP(CLOCK=>CLOCK,
RESETN=>RESETN,
INSTR=>SYNTHESIZED_WIRE_0,
MEM=>SYNTHESIZED_WIRE_1,
WMEM=>SYNTHESIZED_WIRE_3,
ALU=>ALUOUT_ALTERA_SYNTHESIZED,
DATA=>SYNTHESIZED_WIRE_4,
PC=>SYNTHESIZED_WIRE_2);
b2v_inst1:
sc_instmem
PORTMAP(CLK=>INSTCLOCK,
A=>SYNTHESIZED_WIRE_2,
DO=>SYNTHESIZED_WIRE_0);
b2v_inst3:
sc_datamem
PORTMAP(WE=>SYNTHESIZED_WIRE_3,
CLK=>CLOCK,
MEMCLK=>MEMCLK,
A=>ALUOUT_ALTERA_SYNTHESIZED,
D1=>SYNTHESIZED_WIRE_4,
DO=>SYNTHESIZED_WIRE_1);
ALUOUT<=ALUOUT_ALTERA_SYNTHESIZED;
END;
b.编译原理图,成功后封装成元器件,如图9所示:
c.进行功能仿真,仿真波形图如图10所示:
运算结果如下所示:
该CPU还可以运行以下乘法程序,其代码、仿真结果与及运算结果如下所示:
根据代码得出配置文件sc_instmem_multi.mif,如下图所示:
根据代码得出配置文件sc_datamem_multi.mif,如下图所示:
仿真结果如下:
运行结果如下:
四、实验结论
1.通过实验的综合训练,培养了我们的分析问题和解决问题的能力,使我们掌握整机概念,同时进行计算机系统部件的EDA设计,即借助于EDA工具软件QuartusII完成系统部件逻辑设计,以帮助我们系统的掌握计算机组成原理这门课程的主要内容,为以后进一步学习计算机体系结构打下一个良好的基础。
通过学习,我们可以深入理解基本模型计算机的功能、组成知识,深入学习计算机各类典型指令的执行流程,学习硬布线控制器的设计过程和相关技术,掌握LPM_ROM的配置方法,在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机;定义20条MIPS指令集的典型指令,并编写相应的汇编程序,能在模型机上调试,掌握计算机整机概念;通过熟悉较完整的计算机的设计,全面了解并掌握硬布线控制方式计算机的设计方法,真正理解利用软件进行硬件设计的方法和技巧。
2.在计算机组成原理课程设计基本运算模型机,同时引入EDA计算机辅助设计技术是一个非常有益的尝试。
它使以往望而生畏的计算机组成原理课变得轻松和有吸引力,节约了资金,缩短了设计的时间周期;给我们提供了极大的创造空间,激发和培养了我们的创新思维能力;使我们设计的作品质量和难度系数都得到了提高。
3.通过QuartusII软件在计算机上进行计算机系统部件设计,我们可以采用不同的设计方案,选用软件库中的一般器件或者自行设计的专用器件,而这些器件实验室往往又无法提供,通过计算机仿真的课程设计结果使我们学会从不同角度思考同一个问题,提出不同的解决方案,从而提高我们思考实际问题的能力。
利用计算机组成原理课程实验中的各个部件单元实验,结合EDA技术,运用原理图或VHDL语言设计完整的单周期中央处理器CPU,再构建计算机整机,能运行所给的汇编程序,在存储器对应单元中看到相应结果。
4.在利用原理图设计单周期中央处理器CPU时,根据老师所给的课程设计指导书,通过分工合作,我们顺利的完成的CPU的三大主要部件:
控制器,数据寄存器,指令寄存器,同时也利用VHDL语言进行了设计。
在进行仿真时无法得到正确的结果,通过一步步的检查,最后发现是数据寄存器封装是数据和地址的顺序颠倒所致,经改正后在进行仿真得到正确的结果。
在课程设计过程中,我充分认识到分工合作的重要性,只有小组间互相配合好,才能达到事半功倍的效果。
五、参考文献
《计算机组成原理》高等教育出版社唐朔飞著
《计算机硬件实验指南》石家庄铁道大学刘永军等著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 课程设计