1. 设计任务
  1. 指令:12号、30号、41号、46号58号指令设计;
  2. 模型机硬件:寄存器组R0-R3设计与实现;
  3. 数字电路:奇偶发生器74LS180设计与实现;
  1. 设计总要求

总线结构:单总线,数据总线位数8位、地址总线8位;

存储器:内存容量64K*8bit l

控制器:用硬联线控制器实现26位微操作控制信号 l

运算器:单累加器,实现加、减等8种操作 l

外设:n

输入:用开关输入二进制量n

输出:7段数码管和LED显示 l

指令系统规模:64条指令,7种类型,5种寻址方式

三、设计报告的内容

  1. 设计题目与设计任务
  1. 指令系统设计

表1:指令系统设计

编号

指令

机器码1

机器码 2

注            释

12

ADDC  A,  #II

001010

I I

将立即数II加入累加器A中带进位

30

MOV  A,  @R?

011101

将间址存储器的值送到累加器A中

41

JC      MM

101000

MM

当进位标志R_CY=1时,跳转到MM地址

46

CMP   A,  R?

101101

比较A与R?是否相等,即A-R,置标志位Z

58

CPL    A

111001

寄存器A 取反,再放入累加器A中

  1. 模型机硬件设计:寄存器组R0-R3

图1:寄存器组原理图

  1. 奇偶发生器74LS180:9位奇偶产生器/校验器

74ls180有8个数据位(A~H)及一个奇偶位(ODD,EVEN)。通过级联可拓展字长。

引出端符号:

A~H:数据输入端

EVEN:偶控制输入端

FEV:偶输出端

FOD:奇输出端

ODD:奇控制输入端    

  1. 前言(绪论)(设计的目的、意义等)
  1. 设计的目的主要是回顾课本和实际设计的训练,指令的设计是对计算机组成原理实验课的复习和应用。
  2. 用VHDL硬件描述语言实践设计寄存器组R0-R3,可以培养学生的动手实践能力,增强对计算机硬件组成与连线的认识,了解片选寄存器和寄存器的具体构造。
  3. 对奇偶产生器74LS180的设计可以同样帮助学生理解计算机芯片组成,提高电路设计能力。
  1. 设计主体(各部分设计内容、分析、结论等)

系统设计

  1. 模型机逻辑框图

图2:模型机逻辑框图

  1. 芯片引脚图

图3:芯片引脚图

  1. CPU逻辑结构框图

图4:CPU逻辑结构框图

  1. 指令系统设计

表2:指令系统设计

编号

指令

指令类型

寻址方式

12

ADDC  A,  #II

算术运算指令

立即数寻址

30

MOV  A,  @R?

数据传送指令

寄存器间接寻址

41

JC      MM

程序跳转控制类指令

存储器直接寻址

46

CMP   A,  R?

逻辑运算指令

寄存器直接寻址

58

CPL    A

逻辑运算指令

累加器寻址

  1. 微操作控制信号

1. XRD :外部设备读信号,当给出了外设的地址后,输出此信 号,从指定外设读数据。

2. EMWR:程序存储器EM写信号。

3. EMRD:程序存储器EM读信号。

4. PCOE:将程序计数器PC的值送到地址总线ABUS上(MAR)。

5. EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR 和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据 送到DBUS。

6. IREN:将程序存储器EM读出的数据打入指令寄存器IR。

7. EINT:中断返回时清除中断响应和中断请求标志,便于下次 中断。

8. ELP: PC打入允许,与指令寄存器的IR3、IR2位结合,控制 程序跳转。

9. FSTC:进位置1,CY=1

10.FCLC:进位置0,CY=0

11. MAREN:将数据总线DBUS上的地址打入地址寄存器MAR。

12. MAROE:将地址寄存器MAR的值送到地址总线ABUS上。

13. OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT 里。

14. STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。

15. RRD: 读寄存器组R0-R3,寄存器R?的选择由指令的最低 两位决定。

16. RWR: 写寄存器组R0-R3,寄存器R?的选择由指令的最低 两位决定。

17. CN: 决定运算器是否带进位移位,CN=1带进位,CN=0不 带进位。

18. FEN: 将标志位存入ALU内部的标志寄存器。

19. WEN: 将数据总线DBUS的值打入工作寄存器W中。

20. AEN:将数据总线DBUS的值打入累加器A中。

21-23:    X2~ X0 : X2、X1、X0三位组合来译码选择将数据送到 DBUS上的寄存器。

24-26:    S2~ S0 : S2、S1、S0三位组合决定ALU做何种运算

  1. 指令执行流程

表3:指令执行流程

编号

助记符

功能

机器码

周期总数CT

节拍数

微操作

控制信号

涉及的硬件

1

_FATCH_

取指令

000000XX

010

T0

PC→MAR

PCOE MAREN

PC, MAR , EM, W , IR

T1

EM→W

EMEN EMRD WEN

T2

W→IR

PC + 1→PC

IREN

12

ADDC  A,  #II

将立即数II加入累加器A中带进位

001010

I I

101

T3

PC→MAR

PCOE MAREN

PC, MAR, EM, W, A,ALU, F

T4

EM→DBUS→W PC+1→PC

EMRD EMEN WEN

T5

A,W→ALU→F ALU→A

FEN AEN

30

MOV  A,  @R?

将间址存储器的值送到累加器A中

011101

101

T3

R?→MAR

PCOE MAREN

PC, MAR, EM, W, DBUS, R

T4

EM→DBUS→W PC+1→PC

EMRD EMEN WEN

T5

W→DBUS→A

S()

41

JC      MM

当进位标志R_CY=1时,跳转到MM地址

101000MM

110

R_CY=1

PC→MAR

PCOE

MAREN

PC,MAR,EM,,DBUS, W,ST

T3

T4

EM→PC

PC+1→PC

EMEN

EMRD

ELP

R_CY=0

PC+1→PC

T3

46

CMP  A,  R?

比较A与R?是否相等,即A-R,置标志位Z

101101

011

T3

R?→W

RRD,WEN

PC, MAR, EM, W,

T4

A→W

S2S1S0(001),

FEN(R_ZF)

58

CPL    A

寄存器A 取反,再放入累加器A中

111001XX

011

T3

Not A->A

AEN,S=100

A,

ALU

图5:指令流程图

(5)组合逻辑控制器设计

EMRD=M0*T1+M1*INS37*T5+M1*(INS8+INS37)*T4POCE=M0*T2+M1*(INS37*T6+INS8*T5)EMEN=M0*T1+M1*(INS37*T5+INS8*T4)IREN=M0*T0MAREN=M0*T2+M1*INS37*T6+M1*(INS8+INS37)*T5RRD=M1*INS9*T4WEN=M0*T1+M1*(INS8+INS9+INS37)*T4+M1*INS37*T3AEN=M0*T1+M1*T3X=M1*T3*(INS8+INS9+INS58)*(100)S=M1*T3*(IINS8*(000)+INS9*(100)+INS58*(110)

其他信号逻辑表达式恒为假。

(6)微程序控制器设计

微指令格式分为 3 个字段:

微命令字段:26 位,对应 26 个微信号(采用直接控制法)。

操作控制字段:1 位,用于控制下址的形成。

下址字段:8 位,对应 256 个微指令。

微命令字段(26位)

P0

A7A6A5A4A3A2A1A0

系统实现

  1. 模型机实现
  1. 逻辑电路的图形符号表示、功能

图6:单个寄存器(原理图)

图7:设计后实现效果图

图8:寄存器组R0-R3电路图(原理图)

图9:实现的效果图

功能是传输(输入输出)以及暂存。工作原理是通过片选选择一个寄存器,00/01/10/11分别对应四个寄存器。

  1. 指令所涉及的微操作控制信号

D为数据输入(d_input[7:0])

R为数据输出(DR_data[7:0]、SR_data[7:0])

CLK为时序控制,有统一的时钟信号

EN为读写控制端(DRWr)

RST为复位端(reset),清零

Sel为片选信号

  1. 系统实现

模型机硬件:寄存器组R0-R3设计与实现

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity regfile isPort (   DR: in std_logic_vector(1 downto 0);SR: in std_logic_vector(1 downto 0);   reset:   in std_logic;DRWr:    in std_logic;                           clk: in std_logic;d_input: in  std_logic_vector(7 downto 0);DR_data: out std_logic_vector(7 downto 0);        SR_data:   out std_logic_vector(7 downto 0)   );end regfile;architecture struct of regfile is-- components-- 8 bit Register for register filecomponent regport (clr: in std_logic;D: in std_logic_vector(7 downto 0);clock: in std_logic;write:  in std_logic;sel: in std_logic;Q: out std_logic_vector(7 downto 0));end component;-- 2 to 4 Decodercomponent  decoder_2_to_4port(sel: in  std_logic_vector(1 downto 0);sel00: out std_logic;sel01: out std_logic;sel02: out std_logic;sel03: out std_logic);end component;-- 4 to 1 line multiplexercomponent mux_4_to_1port (input0,input1,input2,input3:  in std_logic_vector(7 downto 0);sel:  in std_logic_vector(1 downto 0);out_put: out std_logic_vector(7 downto 0));end component;signal reg00, reg01, reg02, reg03:std_logic_vector(7 downto 0);signal sel00 ,sel01 ,sel02 ,sel03: std_logic;beginAreg00: reg port map(clr =>  reset,D => d_input ,clock => clk ,write => DRWr ,sel => sel00 ,Q =>  reg00);Areg01: reg port map(clr =>  reset,D => d_input ,clock => clk ,write => DRWr ,sel => sel01 ,Q =>  reg01);Areg02: reg port map(clr =>  reset,D =>  d_input ,clock => clk ,write => DRWr ,sel => sel02 ,Q =>  reg02);Areg03: reg port map(clr =>  reset,D => d_input ,clock => clk ,write => DRWr ,sel => sel03 ,Q =>  reg03);-- decoderdes_decoder: decoder_2_to_4 port map(sel => DR,sel00 => sel00 ,sel01 => sel01 ,sel02 => sel02 ,sel03 => sel03);mux1: mux_4_to_1 PORT MAP(Input0 => reg00 ,Input1 => reg01 ,Input2 => reg02 ,Input3 => reg03 ,sel => DR ,out_put => DR_data);mux2: mux_4_to_1 PORT MAP(input0 => reg00 ,input1 => reg01 ,input2 => reg02 ,input3 => reg03 ,sel => SR ,out_put => SR_data);end struct;测试激励文件:library ieee;use ieee.std_logic_1164.all;entity reg isport(clr: in std_logic;D:   in std_logic_vector(7 downto 0);clock: in std_logic;write: in std_logic;sel: in std_logic;Q:   out std_logic_vector(7 downto 0));end reg;architecture behav of reg isbeginprocess(clr,clock)beginif clr = '0' thenQ <= x"00";elsif (clock'event and clock = '1') thenif sel = '1' and write = '1' thenQ <= D;end if;end if;end process;end behav;
  1. 逻辑电路设计

图10:图形符号表示

实现的功能是:取反

Verilog HDL描述:`timescale 1ns / 1ns
module Even_Odd ( d ,even ,odd );input [0:8] d ;
wire [0:8] d ;output even ;
wire even ;
output odd ;
wire odd ;wire [0:3]e;
wire [0:1]f;
wire h;not
xodd (odd, even);xor
x0 (e[0], d[0], d[1]),
x1 (e[1], d[2], d[3]),
x2 (e[2], d[4], d[5]),
x3 (e[3], d[6], d[7]),xf0 (f[0], e[0], e[1]),
xf1 (f[1], e[2], e[3]),xh0 (h, f[0], f[1]),
xeven (even, h, d[8]);endmodule测试文件:`timescale 1ns / 1nsmodule Even_Odd_tb;//Internal signals declarations:reg [0:8]d;wire even,odd;// Unit Under Test port mapEven_Odd UUT (.d(d),.even(even),.odd(odd));initialbegin:TESTreg [0:8] pal;beginfor (pal = 0; pal< 256; pal = pal +1)begin#10;d = pal;endendendendmodule

【系统测试】

(一)、模型机测试

  1. 功能仿真

图11:仿真波形图

  1. RTL级逻辑电路

图12:RTL级逻辑电路

结论:显然上面的波形图是错误的,应该实现的效果是

图13:理论效果图

由于RST为1,虽然D端输入数据为:1111100010101011,输出端仍为0(从波形可以看出来),EN为0,表示写数据。而下面的RTL级电路图实现了片选操作。

(二)硬件测试

1、功能仿真

图15:Zoom fit

图16:Zoom in

图17:Zoom out

2、RTL级逻辑电路

图18:RTL级逻辑电路

结论:根据波形图,显然实现了取反功能,对rtl电路图分析,是通过异或门取反的,原理是A异或1都为A取反的结果。

计算机组成原理课程设计相关推荐

  1. 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...

    计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...

  2. 计算机组成与原理如何书写DEC微指令,计算机组成原理课程设计16位机微程序控制器指令系统设计与实现.doc...

    计算机组成原理课程设计16位机微程序控制器指令系统设计与实现 一.设计题目 16位机微程序控制器指令系统的设计与实现 二.设计目的 通过看懂教学计算机组合逻辑控制器中已经设计好并正常运行的几条基本指令 ...

  3. 2016计算机课程设计,2016年计算机组成原理课程设计-硬布线控制器的设计.doc

    2016年计算机组成原理课程设计-硬布线控制器的设计 编 号: 学 号: 课 程 设 计 教 学 院计算机学院课程名称计算机组成原理课程设计题 目硬布线控制器的设计专 业计算机科学与技术班 级二班姓 ...

  4. 计算机组成原理课设总线,计算机组成原理课程设计(全).doc

    文档介绍: 计算机组成原理课程设计(全)成绩评定表学生姓名刘建成班级学号1103050115专业计算机科学与技术课程设计题目多寄存器减法\右移位\输入输出等指令实验计算机设计评语组长签字:成绩日期20 ...

  5. 计算机组成原理课程设计a,计算机组成原理课程设计报告.doc

    计算机组成原理课程设计报告.doc (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机组成原理课程设计报告实验项目:1.设计一 ...

  6. 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc

    计算机组成原理课程设计报告重庆大学 计算机组成原理课程设计报告 题目:微程序设计 专业:计算机科学与技术 班级: 指导老师: 目录 一.摘要 二.设计要求 三.微程序控制器原理 四.总体设计 五.测试 ...

  7. 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...

    <计算机组成原理课程设计--山东理工大学计算机学院>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计--山东理工大学计算机学院(14页珍藏版)>请在人人文库网上搜索. ...

  8. 计算机组成原理4位ALU运算器设计,计算机组成原理课程设计-alu设计和4位锁存器设计.doc...

    计算机与通信工程学院 计算机组成原理课程设计 专业名称班级学号学生姓名指导教师设计时间207.12.23~2018.1.3 课程设计任务书 专业:: 学生姓名(签名): 设计题目: 设计实验条件 20 ...

  9. 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告

    西南交通大学计算机组成原理课程设计报告 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 <计算机组成实验 C>课程设计适 ...

  10. 计算机组成原理 陈泽,计算机组成原理 课程设计计算机组成原理 课程设计.doc...

    计算机组成原理课程设计报告 姓 名: 班 级: 学 号: 指导老师: 二〇一一年 12月21 日目 录 TOC \o "1-3" \h \z \u HYPERLINK \l &qu ...

最新文章

  1. Windbg设置条件断点
  2. 眨眼检测 疲劳检测,分享代码
  3. python 二维list取列
  4. 二叉树重建(c++)
  5. JS版数据结构第三篇(链表)
  6. Android studio编译出现Failed to finalize session : INSTALL_FAILED_INVALID_APK
  7. java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用
  8. openssh 虚拟机linux_Alpine Linux虚拟机安装过程
  9. SpringBoot实战(七):替代if的优雅方案,提高程序扩展性
  10. iOS开发--UIKit控件之UISearchBar(搜索栏)
  11. ActiveMQ之Topic
  12. cygwin+hadoop+eclipse (三) 运行wordcount实例
  13. 5、最长回文子串(python)
  14. C语言—随机种子的设定
  15. js 判断3D空间中 三点共线
  16. 数字图像处理——隐形眼镜缺陷检测算法
  17. 支付宝之小鸡拍球游戏(C++)
  18. 初级——如何进行Android单元测试
  19. STM32采集正弦幅值
  20. 你有没有过那种明知是对的但却没能去做的事?

热门文章

  1. linux ping mtu值,ping 包长度及 MTU
  2. 3D数学 学习笔记(4) 几何图元
  3. optisystem中器件的学习(5-Receivers Library/Tools Library/Optiwave/ external Software Library/Free Space )
  4. 微博java版_新浪微博JAVA通用版
  5. csdn资源下载不了问题解决 360浏览器下载不了csdn资源问题解决
  6. 设计师学python还是processing_人人都能学会的processing创意编程能实现什么?
  7. 测试用例设计方法——正交表详解
  8. java私塾跟我学系列_java 私塾作业
  9. ANSYS18.2安装教程
  10. php宠物管理系统的开题报告,基于JSP的宠物医院开发与设计(开题报告)