CPU课程设计报告

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

课程设计报告

课程片上计算机系统

题目 cpu的设计

班级 4班

专业集成

学生学号 1314020406

指导教师

2015 年7月9 日

索引:

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

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

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

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

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

6. CPU的VHDL代码 (7)

7. Quartus II环境下的应用步骤 (14)

8. 仿真波形 (15)

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

课程设计的目的及要求

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:

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

关于RAM:

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

书中原CPU的主要修改:

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

(2)模型机CPU指令集中的add实现减法,sub实现加法。

(3)模型机CPU指令集中的Jmp,Jz改为skp,not指令。

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

二.计处理器的结构和实现方法

(指令格式)

格式1:寄存器寻址方式

模型机的指令系统

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

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

读内存指令:

(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(3 DOWNTO 0) :="0000";

CONSTANT load : std_logic_vector(3 DOWNTO 0) :="0001";

CONSTANT move : std_logic_vector(3 DOWNTO 0) :="0010";

CONSTANT addP : std_logic_vector(3 DOWNTO 0) :="0011";

CONSTANT andp : std_logic_vector(3 DOWNTO 0) :="0100";

CONSTANT nandp : std_logic_vector(3 DOWNTO 0) :="0101";

CONSTANT orp : std_logic_vector(3 DOWNTO 0) :="0110";

CONSTANT xnorp : std_logic_vector(3 DOWNTO 0) :="0111";

CONSTANT shrp : std_logic_vector(3 DOWNTO 0) :="1000";

CONSTANT shlp : std_logic_vector(3 DOWNTO 0) :="1001";

CONSTANT swap : std_logic_vector(3 DOWNTO

相关文档
最新文档