ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:157.42KB ,
资源ID:11820845      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11820845.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简单计算机系统课程设计计算机组成实验C.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、简单计算机系统课程设计计算机组成实验C简单计算机系统课程设计计算机组成实验C计算机组成实验 C课程设计适用专业: 电子信息类专业专 业: * 班 级: * 学 号: * 姓 名: * 指导教师: * 实验学期: - 第1学期西南交通大学信息科学与技术学院简化计算机系统的设计一. 实验目的:经过学习简单的指令系统及其各指令的操作流程,用 VHDL 语言实现简单的处理器模块,并经过调用存储器模块,将处理器模块和存储器模块连接形成简化的计算机系统。二. 实验内容1. 用 VHDL 语言实现简单的处理器模块。2. 调用存储器模块设计 25616 的存储器模块。3. 将简单的处理器模块和存储器模块连接形

2、成简单的计算机系统。4. 将指令序列存入存储器,然后分析指令执行流程。三. 预习要求:1、学习简单指令集。2、学习各指令的操作流程。四. 实验报告1. BLOCK 图图1 原理图内存文件:图2 内存文件.Mif2.程序设计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_logi

3、c_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; CONSTAN

4、T 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)

5、:=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;

6、 -时钟信号 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

7、_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 status IF IR(15 DOWNTO 12) = Stop THEN status

8、 = 1; ELSE status CASE IR(15 DOWNTO 12) IS WHEN Read|Write|Jmp|Jz|Swap = status status IF IR(15 DOWNTO 12)= Swap THEN status = 0; ELSE status status CASE IR(15 DOWNTO 12) IS WHEN Read|Write = status status status = 0; END CASE; ELSE NULL; END IF; END PROCESS status_change; seq: PROCESS(reset,clock)

9、VARIABLE PC:std_logic_vector(11 DOWNTO 0); -程序计数器 VARIABLE R0,R1,R2,R3: std_logic_vector(7 DOWNTO 0); -通用寄存器 VARIABLE A: std_logic_vector(7 DOWNTO 0); -临时寄存器 VARIABLE temp: std_logic_vector(8 DOWNTO 0); -临时变量 BEGIN IF(reset=0) THEN - 清零 IR 0); PC := (OTHERS=0); R0 := (OTHERS=0); R1 := (OTHERS=0); R2

10、 := (OTHERS=0); R3 := (OTHERS=0); A := (OTHERS=0); MAR 0); MDR 0); ELSIF(clockevent AND clock=1) THEN overflow -状态0 IR -状态1 IF (IR(15 DOWNTO 12) /= stop) THEN MAR R0:= 0000 & IR(11 DOWNTO 8); 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

11、OTHERS = A:= R3; END CASE; WHEN Move|addx|subp|andp|orp|xorp|Swap= CASE IR(9 DOWNTO 8) IS - Ry to A WHEN 00= A:=R0; WHEN 01= A:=R1; WHEN 10= A:=R2; WHEN OTHERS= A:=R3; END CASE; WHEN OTHERS = NULL; END CASE; WHEN 2= -状态2 CASE IR(15 DOWNTO 12) IS WHEN addx = - Rx:= Rx + A; CASE IR(11 DOWNTO 10) IS WH

12、EN 00= temp := (R0(7) & R0(7 DOWNTO 0) + (A(7) & A(7 DOWNTO 0); R0:=temp(7 DOWNTO 0); overflow temp :=(R1(7) & R1(7 DOWNTO 0) + (A(7) & A(7 DOWNTO 0); R1:=temp(7 DOWNTO 0); overflow temp :=(R2(7) & R2(7 DOWNTO 0) + (A(7) & A(7 DOWNTO 0); R2:=temp(7 DOWNTO 0); overflow temp :=(R3(7) & R3(7 DOWNTO 0)

13、+ (A(7) & A(7 DOWNTO 0); R3:=temp(7 DOWNTO 0); overflow - Rx:= Rx - A; CASE IR(11 DOWNTO 10) IS WHEN 00= temp :=(R0(7) & R0(7 DOWNTO 0) + NOT(A(7) & A(7 DOWNTO 0) + 1; R0:=temp(7 DOWNTO 0); overflow temp :=(R1(7) & R1(7 DOWNTO 0) + NOT(A(7) & A(7 DOWNTO 0) + 1; R1:=temp(7 DOWNTO 0); overflow temp :=

14、(R2(7) & R2(7 DOWNTO 0) + NOT(A(7) & A(7 DOWNTO 0) + 1; R2:=temp(7 DOWNTO 0); overflow temp :=(R3(7) & R3(7 DOWNTO 0) + NOT(A(7) & A(7 DOWNTO 0) + 1; R3:=temp(7 DOWNTO 0); overflow CASE IR(11 DOWNTO 10) IS WHEN 00= R0:= A; WHEN 01= R1:= A; WHEN 10= R2:= A; WHEN OTHERS= R3:= A; END CASE; WHEN shrp =

15、CASE IR(11 DOWNTO 10) IS WHEN 00= R0:= 0 & A( 7 DOWNTO 1 ); WHEN 01= R1:= 0 & A( 7 DOWNTO 1 ); WHEN 10= R2:= 0 & A( 7 DOWNTO 1 ); WHEN OTHERS= R3:= 0 & A( 7 DOWNTO 1 ); END CASE; WHEN shlp = CASE IR(11 DOWNTO 10) IS WHEN 00= R0:= A( 6 DOWNTO 0 ) & 0; WHEN 01= R1:= A( 6 DOWNTO 0 ) & 0; WHEN 10= R2:=

16、A( 6 DOWNTO 0 ) & 0; WHEN OTHERS= R3:= A( 6 DOWNTO 0 ) & 0; END CASE; WHEN andp = -Rx:= Rx AND A; CASE IR(11 DOWNTO 10) IS WHEN 00= R0:=R0 AND A; WHEN 01= R1:=R1 AND A; WHEN 10= R2:=R2 AND A; WHEN OTHERS= R3:=R3 AND A; END CASE; WHEN orp = -Rx:= Rx OR A; CASE IR(11 DOWNTO 10) IS WHEN 00= R0:=R0 OR A

17、; WHEN 01= R1:=R1 OR A; WHEN 10= R2:=R2 OR A; WHEN OTHERS= R3:=R3 OR A; END CASE; WHEN xorp = -Rx:= Rx XOR A; CASE IR(11 DOWNTO 10) IS WHEN 00= R0:=R0 XOR A; WHEN 01= R1:=R1 XOR A; WHEN 10= R2:=R2 XOR A; WHEN OTHERS= R3:=R3 XOR A; END CASE; WHEN Swap = -Swap: Rx to Ry; CASE IR(11 DOWNTO 8) IS WHEN 0

18、100= R0:=R1; WHEN 1000= R0:=R2; WHEN 1100= R0:=R3; WHEN 0001= R1:=R0; WHEN 1001= R1:=R2; WHEN 1101= R1:=R3; WHEN 0010= R2:=R0; WHEN 0110= R2:=R1; WHEN 1110= R2:=R3; WHEN 0111= R3:=R1; WHEN 1011= R3:=R2; WHEN 0011= R3:=R0; WHEN OTHERS= NULL; END CASE; WHEN OTHERS = NULL; END CASE; WHEN 3= -状态3 CASE I

19、R(15 DOWNTO 12) IS WHEN Swap= - Swap: A to Rx CASE IR(11 DOWNTO 10) IS WHEN 00= R0:=A; WHEN 01= R1:=A; WHEN 10= R2:=A; WHEN OTHERS= R3:=A; END CASE; WHEN jmp|Jz|Read|Write = IR(7 DOWNTO 0) NULL; END CASE; WHEN 4= -状态4 CASE IR(15 DOWNTO 12) IS WHEN jmp = - 无条件转移指令 PC := IR(11 DOWNTO 0); MAR - 条件转移指令

20、IF(R0=00000000) then PC := IR(11 DOWNTO 0); MAR = IR(11 DOWNTO 0); else MAR MAR MAR = IR(11 DOWNTO 0); MDR NULL; END CASE; WHEN 5 = -状态5 MAR -状态6 CASE IR(15 DOWNTO 12) IS WHEN Read = R0 := M_data_in; WHEN OTHERS= NULL; END CASE; END CASE; END IF; END process seq; comb: PROCESS (reset, status) BEGIN

21、IF (reset = 1 AND status = 5 AND IR(15 DOWNTO 12)= Write ) THEN Write_Read = 1; ELSE Write_Read = 0; END IF; END PROCESS comb; M_address = MAR; M_data_out = MDR;END RTL;3.仿真波形图图3 波形图1图4 波形图2解释如下: 图5 指令含义4.实验感想经过本实验我学到很多有用知识,不但提高了我的系统设计和软件编程的能力,还让我对计算机组成原理实验课程有了更一步的掌握和认识。在本课程设计中,除了对CPU内部运算器,控制器以及存储器之间的联系与分工合作的了解之外,在建立波形图时,由于受平日建图的影响,忘记添加CPU内部寄存器组,另外在添加寄存器信号后,还要将相同的划成一个GROUP,在这之前的练习中,我是没有接触过的。这次练习掌握的一些新知识,相信在未来对我会有巨大帮助。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1