-
深入理解基本模型计算机的功能、组成知识;
-
深入学习计算机各类典型指令的执行流程;
-
学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法。
-
在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机。
-
定义五条机器指令,并编写相应的微程序,上机调试,掌握计算机整机概念。掌握微程序的设计方法,学会编写二进制微指令代码表。
-
通过熟悉较完整的计算机的设计,全面了解并掌握微程序控制方式计算机的设计方法。
- PC 计算机
- Quartus II 开发软件
- 计算机组成原理试验箱
本次实验预计完成设计八条指令,他们分别是
指令 | 功能 |
---|---|
IN | 从控制台读入数据 |
SUB | 两数相减 |
INC | 自增一运算 |
XOR | 异或运算 |
CLR | 清空 R0 寄存器 |
NOT | R0 寄存器取反 |
STA | 写内存 |
SHL | 左移运算 |
根据各指令所实现的功能,设计 CPU 内部的数据流操作指令,以及 ALU 运算指令,可以得到如下微程序流程图
全部微程序设计完毕之后,将每条微指令按照微指令格式代码化。转化形成二进制微代码表:
微地址 | 微指令 | 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 |
地址(二进制) | 内容(二进制) | 助记符 | 说明 |
---|---|---|---|
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 | 结果存储位置 |
实验中 LCD 液晶显示屏可以用来显示模型机 CPU 中各组成单元的内容。将修改好的 ROM和 RAM 文件添加到工程中,并随同模型CPU设计文件一同编译进 SOF 下载文件中,直接下载进入FPGA,按系统复位键,LCD液晶显示屏即显示CPU中各组成单元的内容。
-
执行程序
- 按1次系统复位键8,并置键8为高电平,使CPU允许正常工作;
- 控制开关(键4、键3)设置为SWB、SWA=1,1,处于程序执行方式
- 通过键2、键1输入运算数据,如56H,按4次单步键7,产生2个脉冲,执行2条微指令,进入到图1-4控制台的RP(11),此时的微指令地址是“23”,微指令码MC=008001;IN=56H
- 再用键7产生1个脉冲,执行1条微指令,微程序流程进入图1-4左的“运行微程序”的最上块:此时PC=00送地址寄存器AR=00,PC自动加1,PC=01,MC=00ED82,IN=56;
- 数码管3显示的是进位情况,有进位,LED3显示1,无进位LED3显示0。
- 键7产生1个脉冲,执行微指令MC=00C048(图1-4),RAM中的第一条指令码00进入BUS,再由BUS进入指令寄存器IR=00。键7再进1个脉冲,进入MC=001001,执行指令IN,送数IN -> R0=56;
- 键7产生1个脉冲,执行完IN指令后,返回到初始端,执行微指令MC=00ED82;
- 以此往复执行,直到模型机测试程序执行结束
-
EAB在系统读写
使用在系统EAB读写工具对模型CPU中的存放微程序的ROM和存放程序与数据的RAM进行观察和改写
这学期的计算机组成原理课程设计让我受益菲浅。在实验课即将结束之时,我对在这一学期的学习进行了总结,总结这一学期的收获与不足。取之长、补之短,在今后的学习和工作中有所受用。 没有接触过计算机或者对计算机不是特别了解的人可能觉得计算机特别神秘而且不知道为什么它可以实现那么复杂的功能,而就我们而言越是深入学习越是渴望了解其工作原理。很幸运这学期我们开设了计算机组成原理实验一级课程设计,之所以将计算机组成原理实验独立成一门课程,足见其重要性。也体现了现在大学教学中对大学生动手能力的重视。《计算机组成原理实验系统》这门课程是我们计算机专业一门很重要的专业课起着承上启下的作用。这学期的课程设计,通过自己的亲自操作让我对计算机的基本结构,基本组成与结构原理有了更加深入的了解,课程设计对于我们了解现代计算机的各个组成部分及其工作原理有重要作用,通过自己动手做实验使我们更加深入的了解了计算机 CPU 的实现方法。本次课程设计,从微指令的设计,到二进制微代码的翻译,八条指令设计完毕后,我对 CPU 具体功能的实现方法有了更深刻的理解。但是由于课程及实验时间的限制,我想我们学到的东西还是太少了,不过没关系,这毕竞为我们以后的学习打下了基础。 总之,这次课程设计给我提供了动手实验的机会,使我对计算机组成原理的相关知识有了更深的印象和认识。计算机组成原理是计算机专业的基础课。这门课对于使我们了解现代计算机的各个组成部分及其工作原理具有重要作用,对于我们后续课程的学习无疑也具有积极的意义。计算机专业是一个很渊博的专业,我们现在有很好的机会站在巨人的肩膀上学习,虽然通过这学期的课程设计学到了很多知识,但那只是计算机知识海洋中的一滴,我将继续努力对计算机组成原理方面进行深入的研究,了解更多计算机方面的知识,为以后打下坚实的基础。