计算机组成原理
实验报告
评语: | 成绩 | |
教师: 年月日 | ||
班级:
学号:
姓名:
地点:
时间:
计算机组成原理与体系结构课程设计
基本模型机设计与实现
一.实验目的
1.深入理解基本模型计算机的功能、组成知识;
2.深入学习计算机各类典型指令的执行流程;
3.学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法。
4.在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机。
5.定义五条机器指令,并编写相应的微程序,上机调试,掌握计算机整机概念。掌握微程
序的设计方法,学会编写二进制微指令代码表。
6.通过熟悉较完整的计算机的设计,全面了解并掌握微程序控制方式计算机的设计方法。
二.实验原理
1.在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在微过程控制下自动产生各部件单元控制信号,实现特定的功能。实验中,计算机数据通路的控制将由微过程控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
2.指令格式
(1)指令格式
采用寄存器直接寻址方式,其格式如下:
位 | 7654 | 32 | 10 |
功能 | OP-CODE | rs | rd |
其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:
Rs或rd | 选定的寄存器 | ||||
00 01 10 | R0 R1 R2 | ||||
助记符 | 机器指令码 | Addr地址码 | 功能说明 | ||
IN ADD addr STA addr OUT addr JMP addr | 00H 10H XX H 20H XX H 30H XX H 40H XX H | “INPUT”中的数据→R0 R0+[addr] ->R0 R0 -> [addr] [addr] -> BUS addr→PC | |||
其中IN为单字长(8位二进制),其余为双字长指令,XX H为addr对应的十六进制地址码。为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。
图6-1 数据通路框图
根据以上要求设计数据通路框图,如图5-1所示。
表6-1 24位微代码定义:
24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 151413 | 121110 | 987 | 6 | 5 | 4 | 3 | 2 | 1 |
S3 | S2 | S1 | S0 | M | Cn | WE | A9 | A8 | A | B | C | uA5 | uA4 | uA3 | uA2 | uA1 | uA0 |
表6-2 A、B、C各字段功能说明:
A字段 | B字段 | C字段 | |||||||||
15 | 14 | 13 | 选择 | 12 | 11 | 10 | 选择 | 9 | 8 | 7 | 选择 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
0 | 0 | 1 | LDRi | 0 | 0 | 1 | RS-B | 0 | 0 | 1 | P(1) |
0 | 1 | 0 | LDDR1 | 0 | 1 | 0 | 0 | 1 | 0 | ||
0 | 1 | 1 | LDDR2 | 0 | 1 | 1 | 0 | 1 | 1 | ||
1 | 0 | 0 | LDIR | 1 | 0 | 0 | 1 | 0 | 0 | P(4) | |
1 | 0 | 1 | LOAD | 1 | 0 | 1 | ALU-B | 1 | 0 | 1 | LDAR |
1 | 1 | 0 | LDAR | 1 | 1 | 0 | PC-B | 1 | 1 | 0 | LDPC |
24位微代码中各信号的功能
(1) uA5—uA0:微程序控制器的微地址输出信号,是下一条要执行的微指令的微地址。
(2) S3、S2、Sl、S0:由微程序控制器输出的ALU操作选择信号,以控制执行16种算术操作或16种逻辑操作中的某一种操作。
(3) M:微程序控制输出的ALU操作方式选择信号端。M=0执行算术操作;M=l执行逻辑操作。
(4) Cn:微程序控制器输出的进位标志信号,Cn=0表示ALU运算时最低位有进位,Cn=1则表示无进位。(5)WE:微程序控制器输出的RAM控制信号。当/CE=0时,如WE=0为存储器读;如WE=1为存储器写。(6) A9、A8——译码后产生CS0、CS1、CS2信号,分别作为SW_B、RAM、LED的选通控制信号。 (7) A字段(15、14、13)——译码后产生与总线相连接的各单元的输入选通信号(见表6-1)。
(8) B字段(12、11、10)——译码后产生与总线相连接的各单元的输出选通信号。
(9) C字段(9、8、7)——译码后产生分支判断测试信号P(1)~P(4)和LDPC信号。
系统涉及到的微程序流程见图6-2。当执行“取指令”微指令时,该微指令的判断测试字段为P(1)测试。由于“取指令”微指令是所有微程序都使用的公用微指令,因此P(1)的测试结果出现多路分支(见图6-2左图)。用指令寄存器的高4位(IR7-IR4)作为测试条件,出现5路分支,占用5个固定地址单元。
控制台操作为P(4)测试(见图6-2右图),它以控制台信号SWB、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控制存储器的一个微地址单元,随意填写。注意:微程序流程图上的微地址为8进制!
当全部微程序设计完毕后,应将每条微指令代码化,表6-2即为图6-2的微程序流程图按微指令格式转化而成的“二进制微代码表”。
表6-2二进制微代码表
微地址 | 微指令 | S3 S2 S1 S0 M CN WE A9 A8 | A | B | C | UA5—UA0 |
00 | 018110 | 000000011 | 000 | 000 | 100 | 010000 |
01 | 00ED82 | 000000001 | 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 | 919A01 | 100100011 | c++课程设计报告001 | 101 | 000 | 000001 |
07 | 00E00D | 000000001 | 110 | 000 | 000 | 001101 |
10 | 001001 | 000000000 | 001 | 000 | 000 | 000001 |
11 | 00ED83 | 000000001 | 110 | 110 | 110 | 000011 |
12 | 00ED87 | 000000001 | 110 | 110 | 110 | 000111 |
13 | 00ED8E | 000000001 | 110 | 110 | 110 | 001110 |
14 | 00ED96 | 000000011 | 110 | 110 | 110 | 010110 |
15 | 038201 | 00000011 | 000 | 001 | 000 | 000001 |
16 | 00E00F | 000000001 | 110 | 000 | 000 | 001111 |
17 | 00A015 | 000000001 | 010 | 000 | 000 | 010101 |
20 | 01ED92 | 000000011 | 110 | 110 | 110 | 010010 |
21 | 01ED94 | 000000011 | 110 | 110 | 110 | 010100 |
22 | 00A010 | 000000001 | 010 | 000 | 000 | 010000 |
23 | 008001 | 000000001 | 000 | 000 | 000 | 000001 |
24 | 062011 | 000001100 | 010 | 000 | 000 | 010001 |
25 | 070A01 | 000001110 | 000 | 101 | 000 | 000001 |
26 | 00D181 | 000000001 | 101 | 000 | 110 | 000001 |
指令寄存器(IR):指令寄存器用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。指令划分为操作码和地址码段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试“P(1)”,通过节拍脉冲T4的控制,以便识别所要求的操作。
指令译码器: 根据指令中的操作码强置微控制器单元的微地址,使下一条微指令指向相应的微程序首地址。
实验中LCD液晶显示屏可以用来显示模型机CPU中各组成单元的内容。将B100_C.sof文件下载到实验台后,按系统复位键,LCD液晶显示屏即显示CPU中各组成单元的内容。其功能说明如下:
LCD液晶显示屏功能说明
名称 | 作 用 | 名称 | 作用 |
IN | 输入单元INPUT | DR1 | 暂存器DR1 |
OUT | 输出单元OUTPUT | DR2 | 暂存器DR2 |
ALU | 算术逻辑单元 | PC | 程序计数器 |
BUS | 内部数据总线 | AR | 地址寄存器 |
R0 | 寄存器R0 | RAM | 程序/数据存储器 |
R1 | 寄存器R1 | IR | 指令寄存器 |
R2 | 寄存器R2 | MC | 微程序控制器 |
图6-3 模型计算机电路原理图
三.实验步骤
1.微程序的输入:根据表6-2所对应的二进制微代码,编辑LPM_ROM配置文件ROM_5.mif,并将其保存在与实验电路cpu5A.sof工程所在的文件夹中,与实验电路cpu5A.sof一同编译后,得到下载文件cpu5A.sof。下载配置文件cpu5A.sof下载到实验系统。实验板上的时钟clock0选择输入频率为1.5MHz。图6-3是示例原理图,详见cpu5A.sof。
2.输入模型机的程序
第一组:双数运算(SUB/ADDC/AND/OR/XOR)
RAM中的指令
地址 | 内容 | 助记符 | 说明 |
00 | 00 | IN R0 | INPUT→R0 |
01 | 10 | SUB [0CH] | R0-[0CH]→R0 |
02 | 0C | ||
03 | 20 | ADDC [0CH] | R0+[0CH]+1→R0 |
04 | 0C | ||
05 | 30 | AND [0CH] | R0[0CH]→R0 |
06 | 0C | ||
07 | 40 | OR [0CH] | R0+[0CH]→R0 |
08 | 0C | ||
09 | 50 | XOR [0CH] | R0⊕[0CH]→R0 |
0A | 0C | ||
0B | 00 | ||
0C | 11 | ||
ROM中的指令
10 SUB | 20 ADDC | 30 AND | 40 OR | 50 XOR | |||||
11 | 01ED83 | 12 | 01ED97 | 13 | 01ED9B | 14 | 01ED9F | 15 | 01EDA3 |
03 | 00E004 | 27 | 00E018 | 33 | 00E01C | 37 | 00E020 | 43 | 00E024 |
04 | 00B005 | 30 | 00B019 | 34 | 00B01D | 40 | 00B021 | 44 | 00B025 |
05 | 01A206 | 31 | 01A21A | 35 | 01A21E | 41 | 01A222 | 45 | 01A226 |
06 | 619A01 | 32 | 959A01 | 36 | B99A01 | 42 | E99A01 | 46 | 699A01 |
第二组:单数运算(NOT/INC/CLR/A+A/DEC)
ROM中的指令
10 NOT | 20 INC | 30 CLR | 40 A+A | 50 DEC | |||||
11 | 01A206 | 12 | 01A217 | 13 | 01A218 | 14 | 01A219 | 15 | 01A21A |
06 | 099A01 | 27 | 059A01 | 30 | 399A01 | 31 | C19A01 | 32 | F59A01 |
RAM中的指令
地址 | 内容 | 助记符 | 说明 |
00 | 00 | IN R0 | INPUT→R0 |
01 | 10 | NOT R0 | ^R0→R0 |
02 | 20 | INC R0 | R0+1→R0 |
03 | 30 | CLR R0 | 0→R0 |
04 | 40 | A+A R0 | 2R0→R0 |
05 | 50 | DEC R0 | R0-1→R0 |
第三组:控制逻辑(MOV/CMP/JB/INC/OUT)
RAM的指令
地址 | 内容 | 助记符 | 说明 |
L0 00 | 80 | IN R0 | INPUT→R0 |
01 | 91 | MOV R1,1 | 1→R1 |
02 | 01 | ||
03 | 92 | MOV R2,0 | 0→R2 |
04 | 00 | ||
L1 05 | A1 | CMP R0,R1 | R0-R1→R1 |
06 | B0 | JB L2 | (L2)→PC |
07 | 0D | ||
08 | C6 | ADD R1,R2 | R1+R2→R2 |
09 | D1 | INC R1 | R1+1→R1 |
0A | D1 | INC R1 | R1+1→R1 |
0B | E0 | JMP L1 | (L1)→PC |
0C | 05 | ||
L2 0D | F2 | OUT R2 | R2→OUTPUT |
0E | E0 | JMP L0 | (L0)→PC |
0F | 00 | ||
ROM的指令
MOV | CMP | JB | INC | OUT | |||||
11 | 01ED83 | 12 | 01A204 | 13 | 01ED95 | 15 | 01A416 | 17 | 010401 |
03 | 009001 | 04 | 01B405 | 25 | 0180C7 | 26 | C9BA1A | ||
05 | 618B41 | 07 | 018001 | 32 | 919B41 | ||||
27 | FC=1 00D181 | ||||||||
07 | FC=0 018001 | ||||||||
4.实验结果
第一组:R0=23,[ADDR]=11
SUB:12 ADDC:24 AND:00 OR:11 XOR:00
第二组:R0=11
NOT:EE INC:EF CLR:00 A+A:00 DEC:FF
第三组:R0=4,R1=1,R2=0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论