模型机课程设计

  • 格式:doc
  • 大小:447.00 KB
  • 文档页数:35

下载文档原格式

  / 35
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

哈尔滨理工大学

软件学院

课程设计报告

课程片上计算机系统

题目 CPU模型机设计

班级集成12-1班

专业集成电路设计与集成系统学生张铭

学号 1214020130

指导教师崔林海

2014年07 月02日

索引:

1.课程设计的目的及要求 (3)

2.处理器的设计思想和设计内容 (3)

3.设计处理器的结构和实现方法 (3)

4.模型机的指令系统 (4)

5.处理器的状态跳转操作过程 (4)

6. CPU的VHDL代码 (7)

7. 模型机在Quartus II环境下的应用 (32)

8. 仿真波形 (33)

9. 课程设计的总结 (35)

一.课程设计的目的及要求:

1.目的:了解Quartus II软件的应用,学习Quartus II环境下设计CPU的基本过程;掌握CPU设计代码的含义以及CPU的工作原理;了解CPU与内存RAM 间的连接数据的传输过程;学习在Quartus II环境下建立模型机的具体过程。融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。学习设计和调试计算机的基本步骤和方法,提高使用软件仿真工具和集成电路的基本技能。培养科学研究的独立工作能力,取得工程设计与组装调试的实践和经验。

2.要求:以《计算机组成与设计》书中123页的简化模型为基础,更改其指令系统,形成设计者的CPU,在Quartus II环境下与主存连接,调试程序,观察指令的执行是否达到设计构想。

二.处理器的设计思想和设计内容:

处理器的字长为16b;包括四种指令格式,格式1、格式2、格式3的指令字长度为8b,格式4的指令字长度为16b;处理器内部的状态机包括6个状态。

关于CPU:

操作码5位,一共设计20条指令,主要包括空操作指令、中断指令、加法指令、减法指令、三种逻辑运算指令、循环移位操作指令,数据传输指令,转移类指令,特权指令,取反,取绝对值等等。

关于RAM:

地址线设置成16bits,主存空间为64words。

书中原CPU的主要修改:

(1)模型机CPU指令集中的逻辑左移与逻辑右移改成逻辑循环右移与逻辑循环左移。

(2)模型机CPU指令集中的or改成not。

(3)模型机CPU指令的执行流程及状态跳转。

三.设计处理器的结构和实现方法:

(指令格式)

格式1:寄存器寻址方式

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

内存(2的12次方)

四.模型机的指令系统

五.处理器的状态跳转操作过程:

(二)、简单指令执行状态描述

读内存指令:

(1)St_0:取指令执行以下操作;

1)M_address←(MAR) 把指令地址送到地址总线

2)令Write-Read←’0’向内存发出读命令(取指令)

3)IR(15..0)←M_data_in(15..0)将读出的指令加载于IR(15..0)

4)PC=PC+1 至此指令已经全部取出,存在于IR(15..0),为取下一条指令准

备地址

(2)St_1:NULL 直接跳转到下一状态

(3)St_2:MAR←IR(11..0)将数据地址加载于MAR

(4)St_3:

1)M_address←(MAR)把数据地址送到地址总线

2)令Write-Read←’0’向内存发出读命令(取数据)

3)MAR←PC 把下一条指令地址加载于MAR

(5)St_4:

1)R0←M_data_in 将来自内存的数据加载于R0,本指令执行完毕

2)M_address←(MAR) 把下一条指令地址送到地址总线

3)令Write-Read←’0’向内存发出读命令(取下一条指令)

4)下一状态跳转到St_0

无条件转移指令

(1)St_0:取指令执行以下操作;

1)M_address←(MAR) 把指令地址送到地址总线

2)令Write-Read←’0’向内存发出读命令(取指令)

3)IR(15..0)←M_data_in(15..0)将读出的指令加载于IR(15..0)

4)PC=PC+1 (此语句无用,因为程序计数器后续重新复制达到无条件转移目的)

(2)St_1:NULL 直接跳转到下一状态

(3)St_2:

1)MAR←IR(11..0) 将转移目标地址加载于MAR

2)PC←IR(11..0) 将转移目标地址加载于PC

(4)St_3:

1) M_address←(MAR) 把下一条指令地址送到地址总线

2)令Write-Read←’0’向内存发出读命令(取下一条指令)

3)下一状态跳转到St_0

六.CPU的VHDL代码:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

PACKAGE namespack IS

CONSTANT idle : std_logic_vector(4 DOWNTO 0) :="00000";

CONSTANT load : std_logic_vector(4 DOWNTO 0) :="00001";

CONSTANT move : std_logic_vector(4 DOWNTO 0) :="00010";

CONSTANT addP : std_logic_vector(4 DOWNTO 0) :="00011";

CONSTANT subp : std_logic_vector(4 DOWNTO 0) :="00100";

CONSTANT andp : std_logic_vector(4 DOWNTO 0) :="00101";

CONSTANT orp : std_logic_vector(4 DOWNTO 0) :="00110";

CONSTANT xorp : std_logic_vector(4 DOWNTO 0) :="00111";

CONSTANT shrp : std_logic_vector(4 DOWNTO 0) :="01000";

CONSTANT shlp : std_logic_vector(4 DOWNTO 0) :="01001";

CONSTANT swap : std_logic_vector(4 DOWNTO 0) :="01010";

CONSTANT jmp : std_logic_vector(4 DOWNTO 0) :="01011";

CONSTANT jz : std_logic_vector(4 DOWNTO 0) :="01100";

CONSTANT read : std_logic_vector(4 DOWNTO 0) :="01101";

CONSTANT write : std_logic_vector(4 DOWNTO 0) :="01110";

CONSTANT stop : std_logic_vector(4 DOWNTO 0) :="01111";

CONSTANT comp : std_logic_vector(4 DOWNTO 0) :="10000";

CONSTANT notp : std_logic_vector(4 DOWNTO 0) :="10001";