简单计算机系统课程设计计算机组成实验C

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

《计算机组成实验 C》

课程设计

适用专业:电子信息类专业

专业: ****

班级: ********

学号: ********

姓名: ***

指导教师: ***

实验学期: 2014-2015第1学期

西南交通大学

信息科学与技术学院

简化计算机系统的设计

一. 实验目的:通过学习简单的指令系统及其各指令的操作流程,用 VHDL 语言实现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简化的计算机系统。

二. 实验内容

1. 用 VHDL 语言实现简单的处理器模块。

2. 调用存储器模块设计256×16 的存储器模块。

3. 将简单的处理器模块和存储器模块连接形成简单的计算机系统。

4. 将指令序列存入存储器,然后分析指令执行流程。

三. 预习要求:1、学习简单指令集。2、学习各指令的操作流程。

四. 实验报告

1. BLOCK 图

图1 原理图

内存文件:

图2 内存文件.Mif

2.程序设计

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

PACKAGE mypack 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 addx : std_logic_vector(3 DOWNTO 0) :="0011";

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

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

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

CONSTANT xorp : 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 0) :="1010";

CONSTANT jmp : std_logic_vector(3 DOWNTO 0) :="1011";

CONSTANT jz : std_logic_vector(3 DOWNTO 0) :="1100";

CONSTANT read : std_logic_vector(3 DOWNTO 0) :="1101";

CONSTANT write : std_logic_vector(3 DOWNTO 0) :="1110";

CONSTANT stop : std_logic_vector(3 DOWNTO 0) :="1111";

END mypack;

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.ALL;

USE WORK.mypack.ALL;

------------------------cpu实体声明--------------------------------- ENTITY cpu2 IS

PORT(

reset : IN std_logic; --清零信号低有效 clock : IN std_logic; --时钟信号

Write_Read: OUT std_logic; --读写信号,'1'为写 M_address: OUT std_logic_vector(11 DOWNTO 0); --地址线

M_data_in: IN std_logic_vector(7 DOWNTO 0); --数据输入线

M_data_out: OUT std_logic_vector(7 DOWNTO 0); --数据输出线 overflow: OUT std_logic); --溢出标志

END cpu2;

------------------------cpuRTL级行为描述-------------------------------- ARCHITECTURE RTL of cpu2 IS

SIGNAL IR: std_logic_vector(15 DOWNTO 0); --指令寄存器

SIGNAL MDR: std_logic_vector(7 DOWNTO 0); --数据寄存器

SIGNAL MAR: std_logic_vector(11 DOWNTO 0); --地址寄存器

SIGNAL status: integer RANGE 0 TO 6; --状态寄存器

BEGIN

status_change: PROCESS(reset, clock, status ) BEGIN

IF reset = '0' THEN status <= 0 ;

ELSIF clock'EVENT AND clock = '0' THEN

CASE status IS

WHEN 0 =>

status <= 1;

WHEN 1 =>

IF IR(15 DOWNTO 12) = Stop THEN

status <= 1;

ELSE

status <= 2;

END IF;

WHEN 2 =>

CASE IR(15 DOWNTO 12) IS

WHEN Read|Write|Jmp|Jz|Swap =>

status <= 3;

WHEN OTHERS =>

status <= 0;

END CASE;

WHEN 3 =>

IF IR(15 DOWNTO 12)= Swap THEN

status <= 0;

ELSE

status <= 4;

END IF;

WHEN 4 =>

status <= 5;

WHEN 5 =>

CASE IR(15 DOWNTO 12) IS

WHEN Read|Write =>

status <= 6;

WHEN OTHERS =>

status <= 0;

END CASE;

WHEN OTHERS =>

status <= 0;

END CASE;

ELSE

NULL;

END IF;

END PROCESS status_change;

seq: PROCESS(reset,clock)

相关文档
最新文档