嵌入式系统课程设计
《8位CISC计算机设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
》
信息科学与工程学院
2012/5/2
8位CPU设计报告
一、实验目的
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
0 0H
1 0H XX H
2 0H XX H
3 0H XX H
4 0H XX H
“INPUT”中的数据→R0
R0+[addr] ->R0
R0 -> [addr]
[addr] -> BUS
addr →PC
其中IN为单字长(8位二进制),其余为双字长指令,XX H 为addr对应的十六进制地址码。
数据通路框图
表6-1 24位微代码定义:
24
23
22
21
20
19
18
17
16
15 14 13
12 11 10
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
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
3、微程序设计
一个具有五条指令IN、ADD、STA、OUT和JMP 的微程序流程图。其中方框代表
基本的微操作,菱形框为分支判断框。
三、实验仿真
1、8位CPU原理总图
2、输入指令IN的执行过程
为了执行输入指令,CPU 要做两件事情。首先,由INPUT
输入装置的数据开关SW输入数据送到数据总线上;其次,
通过数据总线将输入的数据写入寄存器R0 中。
BUS←SW ; R0←BUS
由于输入到数据总线上的数据就是要写入寄存器的数据,
因此可以将这两个操作合并成一个操作: R0←SW
波形如下
如图步骤:
(1)、PC内容00H=>AR;
(2)、PC加一;
(3)、AR指向内存00H.,取出此单元中内容,送到BUS;
(4)、00H单元内容送到IR;
(5)、IR中内容送ID进行译码;
(6)、译码结果送各控制器
(7)、识别操作码,为输入指令,BUS=>R0;结束IN指令;
3、加法指令ADD的执行
1、存储单元的地址是存放在紧跟在操作码后的字节中的,因此,首先要以该字节的内容为地址,即将该单元内容送地址寄存器AR;然后,从AR 所指向的RAM 存储单元取出操作数送给DR2。由于在取指令操作码时,PC 已经自动加1,指向下一字节,该地址就是存放操作数的存储单元的地址。
通过执行以下三个步骤,可以从存储器中取出操作数送到DR2:
AR←PC,PC←PC+1 ;以AR的内容作为取操作数的地址
BUS←RAM,AR←BUS ;AR指向存放操作数的RAM单元
BUS←RAM,DR2←BUS ;RAM中的数据通过BUS送DR2将R0 中的数据送DR1:DR1←R0 在ALU 中进行加法运算,运算结果送R0:
R0←(DR1)+(DR2);运行结果R0=56+34=8A;
仿真波形(M从018110~919A01)
执行步骤:
(1)、前几步为IN输入指令,这里跳过
(2)、PC中地址码部分【02H】=》AR;
(3)、从内存02H中读出操作数0AH;装入AR;
(4)、从内存0AH中读出操作数34H,送到DR1;
(5)、从R0中读出操作数,经过数据总线DB到DR0;
(6)、DR0与DR1在ALU中相加,结果送到R0;
3、存储STA指令
向存储器RAM 写数据操作STA,以紧跟在操作码后的字节作为存放操作数地址,将R0 中的数据存入该地址单元。首先将紧跟在操作码后的字节的内容送给地址寄存器AR:
AR←PC,PC←PC+1 ;以PC的内容作为存数据的地址
BUS←RAM,AR←BUS ;AR指向存放操作数的RAM单元
BUS←R0,RAM←BUS
运行结果:RAM【0BH】=8AH;
波形仿真
步骤:(1)PC值存入AR,作为数据地址;PC加一
(2)取出AR地址所指的数据[20H],送到BUS再送到指令寄存器I;
(3)取PC【04H】作为地址,送到AR,取对应的数据存到RAM=>BUS=>AR
(4) R0的值【8AH】=》BUS=>RAM[0BH],
4、输出OUT指令
AR←PC,PC←PC+1 ;以PC的内容作为存数据的地址
BUS←RAM,AR←BUS ;AR指向存放操作数的RAM单元
BUS←RAM,DR1←BUS
OUT←DR1
运行结果:LED=8AH
5.转移指令JMP
AR←PC,PC←PC+1 ;以PC的内容作为取数据的地址
BUS←RAM,PC←BUS ;将RAM内容送PC,实现程序转移
运行结果:PC=01,实现跳转。
波形如下:
6、如下为执行一个周期循环的全部波形