计组实验课程设计

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

《计算机组成实验C》

课程设计

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

专业:计算机科学与技术

班级:计科四班

学号:2 0 1 2 2 3 7 8

姓名:王云龙

指导教师:陈红梅

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

西南交通大学

信息科学与技术学院

简化计算机系统的设计

一.实验目的

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

二. 实验内容

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

2. 调用存储器模块设计64×8的存储器模块。

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

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

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

四. 实验报告

1. BLOCK图

2.内存文件

内存文件中的数据:

3. 程序设计

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 cpu 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 cpu;

------------------------cpuRTL级行为描述--------------------------------

ARCHITECTURE RTL of cpu 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 4; --状态寄存器

SIGNAL PC:std_logic_vector(11 DOWNTO 0); --程序计数器

SIGNAL R0,R1,R2,R3: std_logic_vector(7 DOWNTO 0); --通用寄存器

SIGNAL A: std_logic_vector(7 DOWNTO 0); --累加寄存器

BEGIN

status_change: PROCESS(reset, clock, status )

BEGIN

IF reset = '0' THEN

status <= 0 ;

A <= (OTHERS=>'0');

MAR <= (OTHERS=>'0');

ELSIF clock'EVENT AND clock = '0' THEN

CASE status IS

WHEN 0 =>

IF IR(15 DOWNTO 12)/=Stop THEN

MAR <=pc;

END IF;

CASE IR(15 DOWNTO 12) IS

WHEN shlp|shrp =>

CASE IR(11 DOWNTO 10) IS-- Rx to A

WHEN"00"=> A<= R0;

WHEN"01"=> A<= R1;

WHEN"10"=> A<= R2;

WHEN OTHERS => A<= R3;

END CASE;

WHEN Load|Move|addx|subp|andp|orp|xorp|Swap => CASE IR(9 DOWNTO 8) IS-- Ry to A

WHEN"00"=> A<=R0;

WHEN"01"=> A<=R1;

相关文档
最新文档