简单计算机系统课程设计计算机组成实验C
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)