Skip to content

Latest commit

 

History

History
executable file
·
133 lines (98 loc) · 9.29 KB

File metadata and controls

executable file
·
133 lines (98 loc) · 9.29 KB

一、实验目的

  1. 深入理解基本模型计算机的功能、组成知识;

  2. 深入学习计算机各类典型指令的执行流程;

  3. 学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法。

  4. 在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机。

  5. 定义五条机器指令,并编写相应的微程序,上机调试,掌握计算机整机概念。掌握微程序的设计方法,学会编写二进制微指令代码表。

  6. 通过熟悉较完整的计算机的设计,全面了解并掌握微程序控制方式计算机的设计方法。

二、实验环境

  • PC 计算机
  • Quartus II 开发软件
  • 计算机组成原理试验箱

三、实验原理

四、实验步骤

1. 指令功能设计

本次实验预计完成设计八条指令,他们分别是

指令 功能
IN 从控制台读入数据
SUB 两数相减
INC 自增一运算
XOR 异或运算
CLR 清空 R0 寄存器
NOT R0 寄存器取反
STA 写内存
SHL 左移运算

2. 指令微程序设计

根据各指令所实现的功能,设计 CPU 内部的数据流操作指令,以及 ALU 运算指令,可以得到如下微程序流程图

3. 二进制微代码设计

全部微程序设计完毕之后,将每条微指令按照微指令格式代码化。转化形成二进制微代码表:

微地址 微指令 S3 S2 S1 S0 M CN WE A9 A8 A B C UA5—UA0
00 018110 000000011 000 000 100 010000
01 01ED82 000000011 110 110 110 000010
02 00C048 000000001 100 000 001 001000
03 00E004 000000001 110 000 000 000100
04 00B005 000000001 011 000 000 000101
05 01A206 000000011 010 001 000 000110
06 619A01 011000011 001 101 000 000001
07 059A01 000001011 001 101 000 000001
10 001001 000000000 001 000 000 000001
11 01ED83 000000011 110 110 110 000011
12 01A207 000000011 010 001 000 000111
13 01ED95 000000011 110 110 110 010101
14 01A21A 000000011 010 001 000 011010
15 01A21B 000000011 010 001 000 011011
16 01ED9C 000000011 110 110 110 011100
17 01A21E 000000011 010 001 000 011110
20 01ED92 000000011 110 110 110 010010
21 01ED94 000000011 110 110 110 010100
22 01A010 000000011 010 000 000 010000
23 018001 000000011 000 000 000 000001
24 062011 000001100 010 000 000 010001
25 00E017 000000001 110 000 000 010111
26 00D181 000000001 101 000 110 000001
27 00B018 000000001 011 000 000 011000
30 01A219 000000011 010 010 000 011001
31 699A01 011010011 001 101 000 000001
32 01B21B 000000011 011 001 000 011011
33 099A01 000010011 001 101 000 000001
34 00E01D 000000001 110 000 000 011101
35 038201 000000111 000 001 000 000001
36 C19A01 110000011 001 101 000 000001

4. 编写模型机测试程序

地址(二进制) 内容(二进制) 助记符 说明
0000 0000 0000 0000 IN “INPUT DEVICE—〉R0
0000 0001 0111 0000 SHL R0 = R0+R0
0000 0010 0000 1010
0000 0011 0001 0000 SUB [0BH] R0 = R0 - [0BH]
0000 0100 0000 1011
0000 0101 0010 0000 INC R0 = R0+1
0000 0110 0011 0000 XOR [0CH] R0 = RO xor [0CH]
0000 0111 0000 1100
0000 1000 0100 0000 CLR R0 = 0
0000 1001 0101 0000 NOT R0 = !R0
0000 1010 0110 0000 STA [0D] [0D] = R0
0000 1011 0000 1101
0000 1100 1101 0101 被减数
0000 1101 1010 1100 异或操作数
0000 1110 0000 0000 结果存储位置

5. 实验台调试

实验中 LCD 液晶显示屏可以用来显示模型机 CPU 中各组成单元的内容。将修改好的 ROM和 RAM 文件添加到工程中,并随同模型CPU设计文件一同编译进 SOF 下载文件中,直接下载进入FPGA,按系统复位键,LCD液晶显示屏即显示CPU中各组成单元的内容。

  • 执行程序

    1. 按1次系统复位键8,并置键8为高电平,使CPU允许正常工作;
    2. 控制开关(键4、键3)设置为SWB、SWA=1,1,处于程序执行方式
    3. 通过键2、键1输入运算数据,如56H,按4次单步键7,产生2个脉冲,执行2条微指令,进入到图1-4控制台的RP(11),此时的微指令地址是“23”,微指令码MC=008001;IN=56H
    4. 再用键7产生1个脉冲,执行1条微指令,微程序流程进入图1-4左的“运行微程序”的最上块:此时PC=00送地址寄存器AR=00,PC自动加1,PC=01,MC=00ED82,IN=56;
    5. 数码管3显示的是进位情况,有进位,LED3显示1,无进位LED3显示0。
    6. 键7产生1个脉冲,执行微指令MC=00C048(图1-4),RAM中的第一条指令码00进入BUS,再由BUS进入指令寄存器IR=00。键7再进1个脉冲,进入MC=001001,执行指令IN,送数IN -> R0=56;
    7. 键7产生1个脉冲,执行完IN指令后,返回到初始端,执行微指令MC=00ED82;
    8. 以此往复执行,直到模型机测试程序执行结束
  • EAB在系统读写

    使用在系统EAB读写工具对模型CPU中的存放微程序的ROM和存放程序与数据的RAM进行观察和改写

五、实验结果

六、实验心得

这学期的计算机组成原理课程设计让我受益菲浅。在实验课即将结束之时,我对在这一学期的学习进行了总结,总结这一学期的收获与不足。取之长、补之短,在今后的学习和工作中有所受用。 没有接触过计算机或者对计算机不是特别了解的人可能觉得计算机特别神秘而且不知道为什么它可以实现那么复杂的功能,而就我们而言越是深入学习越是渴望了解其工作原理。很幸运这学期我们开设了计算机组成原理实验一级课程设计,之所以将计算机组成原理实验独立成一门课程,足见其重要性。也体现了现在大学教学中对大学生动手能力的重视。《计算机组成原理实验系统》这门课程是我们计算机专业一门很重要的专业课起着承上启下的作用。这学期的课程设计,通过自己的亲自操作让我对计算机的基本结构,基本组成与结构原理有了更加深入的了解,课程设计对于我们了解现代计算机的各个组成部分及其工作原理有重要作用,通过自己动手做实验使我们更加深入的了解了计算机 CPU 的实现方法。本次课程设计,从微指令的设计,到二进制微代码的翻译,八条指令设计完毕后,我对 CPU 具体功能的实现方法有了更深刻的理解。但是由于课程及实验时间的限制,我想我们学到的东西还是太少了,不过没关系,这毕竞为我们以后的学习打下了基础。 总之,这次课程设计给我提供了动手实验的机会,使我对计算机组成原理的相关知识有了更深的印象和认识。计算机组成原理是计算机专业的基础课。这门课对于使我们了解现代计算机的各个组成部分及其工作原理具有重要作用,对于我们后续课程的学习无疑也具有积极的意义。计算机专业是一个很渊博的专业,我们现在有很好的机会站在巨人的肩膀上学习,虽然通过这学期的课程设计学到了很多知识,但那只是计算机知识海洋中的一滴,我将继续努力对计算机组成原理方面进行深入的研究,了解更多计算机方面的知识,为以后打下坚实的基础。