基本模型机设计与实现.docx
- 文档编号:5701147
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:18
- 大小:482.33KB
基本模型机设计与实现.docx
《基本模型机设计与实现.docx》由会员分享,可在线阅读,更多相关《基本模型机设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。
基本模型机设计与实现
计算机组成原理与体系结构课程设计
基本模型机设计与实现
二.实验原理
本实验采用五条机器指令:
IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下(最高4位二进制数为操作码):
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
ADDaddr
STAaddr
OUTaddr
JMPaddr
00H
10HXXH
20HXXH
30HXXH
40HXXH
“INPUT”中的数据→R0
R0+[addr]->R0
R0->[addr]
[addr]->BUS
addr→PC
其中IN为单字长(8位二进制),其余为双字长指令,XXH为addr对应的十六进制地址码。
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。
图6-1数据通路框图
1,存储器读操作(KRD):
下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“00”时,可对RAM连续手动读入操作。
2,存储器写操作(KWE):
下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“01”时,可对RAM连续手动写操作。
3、启动程序(RP):
下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“11”时,即可转入到微地址“01”号“取指令”微指令,启动程序运行。
SWB
SWA
控制台指令
0
0
1
0
1
1
读内存(KRD)
写内存(KWE)
启动程序(RP)
根据以上要求设计数据通路框图,如图5-1所示。
表6-124位微代码定义:
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-2A、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二进制微代码表
微地址
微指令
S3S2S1S0MCNWEA9A8
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
指令寄存器(IR):
指令寄存器用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。
指令划分为操作码和地址码段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试“P
(1)”,通过节拍脉冲T4的控制,以便识别所要求的操作。
指令译码器:
根据指令中的操作码强置微控制器单元的微地址,使下一条微指令指向相应的微程序首地址。
实验中LCD液晶显示屏可以用来显示模型机CPU中各组成单元的内容。
将B100_C.sof文件下载到实验台后,按系统复位键,LCD液晶显示屏即显示CPU中各组成单元的内容。
其功能说明如下:
LCD液晶显示屏功能说明
图6-4LCD液晶显示屏
名称
作用
名称
作用
IN
输入单元INPUT
DR1
暂存器DR1
OUT
输出单元OUTPUT
DR2
暂存器DR2
ALU
算术逻辑单元
PC
程序计数器
BUS
内部数据总线
AR
地址寄存器
R0
寄存器R0
RAM
程序/数据存储器
R1
寄存器R1
IR
指令寄存器
R2
寄存器R2
MC
微程序控制器
图6-3模型计算机电路原理图
实验程序1:
说明:
1、指令IN为单字节指令,指令码:
00,其功能是将输入口IN的数据送到寄存器R0;
2、指令ADD[0AH]为双字节指令,指令码:
100A,其功能是将R0中的数据加上RAM地址0AH中的数据(34H);
3、指令STA[0BH]为双字节指令,指令码:
200B,其功能是将R0中的数据送到RAM的0BH地址单元中;
4、指令OUT[0BH]为双字节指令,指令码:
300B,其功能是将RAM的0BH地址单元中的数据送到OUT输出口上;
5、指令JMP[12H]为双字节指令,指令码:
4012,其功能是将其操作码下一地址单元(08H)的数据作为转跳地址。
三.实验步骤
1.微程序的输入:
根据表6-2所对应的二进制微代码,编辑LPM_ROM配置文件ROM_11.mif(参考demoD_cpu5文件夹中的同名文件),并将其保存在与实验电路b100_c.bdf工程所在的文件夹中,与实验电路b100_c.bdf一同编译后,得到下载文件b100_c.sof。
下载配置文件bus_c.sof下载到实验系统。
实验板上的时钟clock0选择输入频率为1.5MHz。
图6-3是示例原理图,详见b100_c.bdf。
2.输入模型机的程序(示例工程文件是b100_c.bdf)
(一)手动写入
(1)使用控制台KWE和KRD微程序将机器指令程序(“实验程序1”:
按地址输入指令代码,如地址00、01、02、03、04…分别对应指令码00、10、0A、20、0B…)装入模型机CPU的程序RAM(LPM_RAM_DQ)中,并进行检查。
根据图6-2控制台微程序流程图,在微指令的控制下,依次输入机器指令代码:
1以下将数据35、C4依次装入00、01地址为例:
选择实验模式NO.0,输入数据显示于数码2、1上;
2将控制开关SWB、SWA(键4、键3)设置为:
0、1;模型机的复位控制信号RST(键8)=1;
③机器指令代码的数据输入由键2、键1输入,先键入35,再按两次键7,即0->1->0,产生一个写入正脉冲,这时观察右上液晶屏上的输入端口IN=35;PC=00(当前将要输入的地址);MC=018110微指令。
再按两次键7(地址寄存器加1),根据图5-2控制台微程序流程图,进入到KWE(01)分支,进入并执行了微地址“21”中的操作,这时控制此操作的微指令码MC=01ED94,PC自动加1,PC=1。
④按键7,再产生一个脉冲,进入并执行了微地址“24”中的操作;观察液晶,数据35进入总线BUS=35,35进入RAM=35,此时微指令码MC=062011,此时将机器指令代码数据写入了LPM_RAM中;
⑤此后每当出现MC=062011时,即可利用键2,键1输入待写入RAM的数据,此时如C4,连续按键7,再产生2个脉冲,即将C4写入RAM,PC加1,微指令码变成MC=062011;
⑥重复③—⑤的步骤,将“实验程序1”的全部机器指令代码输入RAM。
图6-2微程序流程图(注,图中的DR1应改为DR0,DR2应改为DR1)
(2)以下是检查RAM中的内容。
当全部机器指令代码输入模型机后,在微指令的控制下,依次检查LPM_RAM中已输入的机器指令代码。
步骤如下:
1按复位键8=0,使模型机中的PC复位;
2将控制开关SWB、SWA(键4、键3)设置为:
0、0;
3复位信号RST(键8)=1;
4按键7,每两个2次单步运行(产生2个正脉冲),可读出LPM_RAM中以写入的数据;根据图6-1的CPU部件和信息流程,对于读出的每一数据,仔细观察液晶上显示的MIC、PC、AR、IN、BUS、RAM、DR0、DR1的数据变化。
重复以上步骤,依次检查LPM_RAM中已输入的机器指令代码。
(二)自动配置LPM_RAM
如果程序量大,手动输入效率太低,可以在计算机上编译好代码文件,并随同模型CPU设计文件一同编译进SOF下载文件中,直接下载进入FPGA。
(1)在QuartusII环境下,打开工程文件b100_c.bdf,修改b100_C.bdf中LPM_RAM_DQ的参数,将初始化文件LPM_FILE设置为:
“./5_ram.mif”;打开“5_ram.mif”(在示例中已有此文件),根据“实验程序1”,在5_ram.mif中输入全部机器指令代码(示例中已经输入)。
(2)将工程文件重新编译后,下载到实验台中,即完成LPM_RAM的配置。
(3)根据以上的方法,复位信号RST(键8)=1;将控制开关SWB、SWA(键4、键3)设置为:
0、0,按键7,每两个2次单步运行(产生2个正脉冲),检验配置进入FPGA中的程序代码。
(三)执行程序
(1)按1次系统复位键8,并置键8为高电平,使CPU允许正常工作;
(2)控制开关(键4、键3)设置为SWB、SWA=1,1,处于程序执行方式,观察图6-1控制台:
RP(11);
(3)通过键2、键1输入运算数据,如56H,按4次单步键7,产生2个脉冲,执行2条微指令,进入到图6-1控制台的RP(11),此时的微指令地址是“23”,微指令码MC=008001;IN=56H
(4)再用键7产生1个脉冲,执行1条微指令,微程序流程进入图6-2左的“运行微程序”的最上块:
此时PC=00送地址寄存器AR=00,PC自动加1,PC=01,MC=00ED82,IN=56;
注意,1、实验箱上数码管7、6显示的是下一节拍将要执行的微指令的微地址码;
2、数码管3显示的是进位情况,有进位,LED3显示1,无进位LED3显示0。
(5)键7产生1个脉冲,执行微指令MC=00C048(图6-2),RAM中的第一条指令码00进入BUS,再由BUS进入指令寄存器IR=00。
键7再进1个脉冲,进入MC=001001,执行指令IN,送数INR0=56;
(6)键7产生1个脉冲,执行完IN指令后,返回到初始端,执行微指令MC=00ED82;
(7)键7产生2个脉冲后,执行微指令MC=00ED83,即执行ADD指令的第1步:
PC送AR=02,PC+1=03,这时RAM中在02地址的0AH进入BUS=0A;
(8)键7产生1个脉冲,执行微指令MC=00E004,即执行ADD指令的第2步:
BUS数据送AR=0A,由实验程序1可知,0A是ADD指令的加数的间接地址,而在地址0A中放有34H,最后完成的加法是34+56;
(9)键7产生1个脉冲,MC=00B005,执行ADD的第3步:
将RAM中0A地址的数据34送BUS,再送DR1=34H。
注意,此时指令寄存器IR中仍放有ADD的操作码10H,PC=03指向下一条指令STA;
(10)键7产生1个脉冲,MC=01A206,执行ADD的第4步(微地址是05),R0送DR0=56;
(11)键7产生1个脉冲,MC=919A01,执行ADD的最后一步,DR0+DR1=8AH,通过总线BUS(=8A),送R0=8AH。
键7再产生1个脉冲,返回到初始端,执行微指令MC=00ED82;
(12)键7产生2个脉冲,MC=00ED87,执行STA指令;键7再两2个脉冲后,和8A被写入RAM,地址单元是0B。
键7一个脉冲后,返回到初始端,执行微指令MC=00ED82;
(13)键7产生2个脉冲,MC=00ED8E,执行OUT指令;此时OUT的功能是将RAM中指定地址的数据送到输出口“OUT”处(见图6-2和液晶屏)。
此时PC=7,AR=6;
(14)键7产生1个脉冲,MC=00E00F,首先BUS中地址0BH被锁进AR,于是RAM中对应地址0BH的数据8AH被送入BUS。
键7再产生1个脉冲,MC=00A015,BUS中的数据8AH被锁进DR0;
(15)键7产生1个脉冲,MC=070A01,进入OUT指令的最后一步;8AH从DR0送入OUT口;
(16)键7产生1个脉冲,返回到初始端,执行微指令MC=00ED82;
(17)键7产生2个脉冲,MC=00ED96,指令寄存器IR=40操作码,开始执行JMP指令,此时PC=9,AR=8,故RAM中此地址的12H进入BUS=12H。
注意PC!
BUS的数据12H将进入PC成为下一条指令的执行地址;
(18)键7产生1个脉冲,MC=00D181,RAM=12,BUS=12,AR=08H,PC=12,IR=40开始执行JMP指令。
(19)键7产生1个脉冲,返回到初始端,执行微指令MC=00ED82;RAM=00(下一条指令码)。
结束!
(四)EAB在系统读写
使用在系统EAB读写工具对模型CPU中的存放微程序的ROM和存放程序与数据的RAM进行观察和改写(图6-3)。
(五)用嵌入式逻辑分析仪了解CPU运行情况
可以利用实验系统上的液晶屏上的数据显示和嵌入式逻辑分析仪同时了解CPU的每一单步运行情况(图6-4)。
注意,图6-4的嵌入式逻辑分析仪设置情况:
采用时钟使用CPU的工作时钟(CLK1=1.5MHz),采样深度64位,触发位置:
Pre..,触发信号用单步控制信号:
STEP;触发方式:
上升沿。
左侧的观察信号,data[1]是ALU;data[2]是RAM;P[10]是AR;P[12]是IR;
CPU运行的逻辑分析仪波形数据如图6-5所示。
图6-3用在系统EAB读写工具对FPGA中的ROM和RAM进行观察和改写
图6-4嵌入式逻辑分析仪设置情况
六、实验要求
1.实验之前应认真准备,写出实验步骤和具体设计内容;2.实验前应掌握所有控制信号的作用;
3.掌握在QuartusII环境下,采用图形编辑方法的设计技术;4.掌握在微程序控制下机器指令的写入、读出、和程序执行方法;5.掌握LPM_RAM的配置方法,实现对机器指令输入;6.掌握微程序的设计方法,学会编写二进制微指令代码表。
7.掌握对LPM_ROM的配置方法,实现微指令代码表的输入。
7、通过液晶屏,观察各相关寄存器、ALU、DR1、PC、IR、AR、BUS等内容的变化情况,根据表6-2微程序控制流程,单步跟踪微程序的执行情况。
通过INPUT(键2、键1)输入运算数据,跟踪程序的执行情况,并详细记录每条微指令执行后,相关单元输出数据的变化情况,依次执行机器指令,从而验证所设计的正确性。
在完成基本验证实验后,根据这5条指令,自行设计程序、输入和调试,记录实验数据。
图6-5嵌入式逻辑分析仪采样波形数据
七.实验报告
1.实验的原理,实验步骤和具体实验结果;2.实验中遇到的主要问题和分析解决问题的思路;
3.通过实验,自己的学习经验和切身体会,以及对教学实验的意见和建议。
八.思考题实验题
1.若要修改算术逻辑单元ALU的功能,应如何用VHDL语言来实现?
如何编程、如何用计算机进行功能仿真、时序仿真?
如何通过GW48实验系统进行硬件功能验证?
通过具体实验来回答。
2.用VHDL语言设计程序计数器单元PC。
3.用VHDL语言设计地址寄存器单元AR。
4.用VHDL语言设计指令译码器单元IR。
5.将整个模型CPU都用用VHDL进行表达。
6.除了已有的IN、ADD、STA、OUT、JMP指令外,再设计减法指令SUB、带进位加ADDC、逻辑与AND、逻辑或OR和异或XOR共10条指令,编写相应微程序流程图,写出微程序代码表和相应的mif文件,并配置进LPM_ROM中;编写由宏程序代码组成的3个程序,并用此CPU完成相应的程序功能。
7.适当修改ALU181.VHD,使之对不同操作产生的进位都能保留(锁存)。
实验操作说明:
下载B100_C.SOF;选模式0,按一次复位键;8位数据in[7..0]由键2、键1输入(此值显示于键对应的数码管上);SWB,SWA由键4,键3控制工作模式:
模式00—>KRD(读出);模式01—>KWR(写入);模式11—>RP(程序执行)。
RST1—>模型CPU复位,键8控制,低电平有效。
工作时应置高电平。
STEP—>键7控制,单步执行键;Clock0—选择1.5MHz,是CPU工作时钟。
通过LCD液晶显示屏观察“基本模型机CPU”中各基本工作单元的内容。
8.将图6-6结合硬件实验详细说明此CPU对“实验程序1”的执行过程和图中各信号的含义及不同节拍下变化的原因和结果,如d0_[7..0]、PC、AR、DR1、DR2、R0、CO、T4..T1、uA、bus[7..0]等等。
图6-6模型CPU执行“实验程序1”的仿真波形图(注。
其中的DR1,DR2分别表示液晶屏上的DR0/DR1)
九.图6-1中各信号的功能说明
(1)uA5—uA0微程序控制器的微地址输出信号。
(2)IR7一IR5指令寄存器IR7、IR6、IR5输出信号,输入至微程序控制器作为修改微地址的控制信号。
(3)CLK1——时钟信号源,输入频率为6~12MHz。
(4)T1~T4——时序信号发生器提供的四个标准输出信号,可以采用单拍或连续两种方式输出。
(5)s3、s2、sl、s0、——由微程序控制器输出的ALU操作选择信号,以控制执行16种算术操作或16种逻辑操作中的某一种操作。
(6)M—微程序控制输出的ALU操作方式选择信号端。
M=0执行算术操作;M=l执行逻辑操作。
(7)
—微程序控制器的输出的进位标志信号,
=0表示ALU运算时最低位有进位
=1,则表示无进位。
(8)SWE—微程序控制器的微地址修改信号。
(9)SRD—微程序控制器的微地址修改信号。
(10)RST1—清“0”信号输入端。
(11)LDAR——微程序控制器的输入信号,将程序计数器的内容打入到存储器地址寄存器AR中,产生访问RAM的地址。
(12)/CE——微程序控制器输出的RAM选片信号,/CE=0时,LPM_RAM单元被选中。
(13)WE——微程序控制器输出的RA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 模型 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)