计算机组成原理课程设计报告2.docx
《计算机组成原理课程设计报告2.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告2.docx(24页珍藏版)》请在冰点文库上搜索。
计算机组成原理课程设计报告2
计算机组成原理课程设计
计091-2
200925501214于洋
200925501236肖琳
设计任务:
对数据选择器(A、B)、计数器、运算器、寄存器和微程序控制器透彻了解的基础上,完成一个简单计算机的设计,使其具有简单运算功能:
取数、读数、做加法、送数等。
设计的目的:
通过一个简单计算机的设计,对计算机系统的基本组成、部件的设计、部件间的连接、微程序的编制与调试等全过程有一个较为综合、深入的认识和理解。
设计与调试步骤:
结合计算机组成原理的教学内容和课程设计平台系统,计算机的设计与调试步骤如下:
数据通路:
数据通路的设计在总体结构中是最重要的一个环节。
实验室的仿真模型机的数据通路是以总线为基础、以CPU为核心构成的。
系统简介:
机器指令存放在3#RAM中将3#RAM作为内存使用,机器指令是按由上到下顺序执行的,其执行顺序由PC(程序计数器)和MAR(地址寄存器)控制。
2#RAM和1#RAM作为控制存储器简称为控存一条微指令由十六个微命令组成高八位存放于2#RAM中,低八位存放于1#RAM中。
后继地址有三种形成方式μIR2μIR1μIR0为001时μPC+1安顺序执行微指令为010时JP无条件转移,地址由μIR15-8提供。
本简单计算机基于简化处理μIR15-8均为0它代表了均跳向为指令寄存器的00入口即取指令入口。
为011时QJP高四位安机器指令的操作码转移,第四位为0其由后继地形成逻辑实现,所有涉及的地址转移均为指令的转移。
因为机器指令是按顺序执行的。
每按一次单脉冲键执行一条微指令,一条机器指令由若干条微指令组成,一条微指令由十六个微命令组成其中因为μIR3μIR6μIR7全为零故省略掉了。
为保证机器指令是从第一条开始顺序执行的,在操作前应按一次复位键将微指令计数器μpc,机器指令计数器pc,内存地址寄存中的内容清零。
第一条微指令地址为00,微操作为RAM→IR即从内存中取出指令放到机器指令寄存器中,此时地址寄存器中的内容为00,所以在3#RAM的00地址中取出MOV1指令18,取出指令后PC+1→PC(01)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为18操作码为0001,所以转移后高四位为:
0001低四位为全零:
0000。
后继地址形成逻辑的输出00010000,因此此时置数有效微地址输出为10(十六进制)。
根据微地址10执行PC→MAR,PC中的内容经取指过程中加1操作,已变为01,所以地址寄存器中存入了01,然后PC+1→PC(PC变为02)为取下一条内存内容做好准备。
然后将内存中地址为01的数据传送至RAM→R0下一步为PC→MAR存入的为02。
下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000,所以微地址转向00,再次进行取指令。
在3#RAM的02地址中取出MOV2指令28放进机器指令寄存器,取出指令后PC+1→PC(03)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为28操作码为0010,所以转移后高四位为:
0010,低四位为全零:
0000。
后继地址形成逻辑的输出00100000,因此此时置数有效微地址输出为20(十六进制)。
根据微地址20执行PC→MARPC中的内容经取指过程中加1操作已变为03,所以地址寄存器中存入了03,然后PC+1→PC(PC变为04)为取下一条内存内容做好准备。
然后将内存中地址为03的数据传送至RAM→R1下一步为PC→MAR存入的为04。
下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000,所以微地址转向00,再次进行取指令。
在3#RAM的04地址中取出ADD指令30放进机器指令寄存器,取出指令后PC+1→PC(05)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为30操作码为0011.所以转移后高四位为0011第四位为全零0000。
后继地址形成逻辑的输出00110000,因此时置数有效微地址输出为30(十六进制)。
根据微地址30执行R0+R1=R1PC中的内容经取指过程中加1操作已变为05,所以地址寄存器中存入了05,然后PC+1→PC(PC变为06)为取下一条内存内容做好准备。
下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000所以微地址转向00,再次进行取指令。
在3#RAM的05地址中取出MOV3指令41放进机器指令寄存器,取出指令后PC+1→PC(06)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为41操作码为0100,所以转移后高四位为:
0100低四位为全零:
0000。
后继地址形成逻辑的输出01000000,因此时置数有效微地址输出为40(十六进制)。
根据微地址40执行R0→MAR(R0中的数据作为写内存地址)。
PC中的内容经取指过程中加1操作已变为06,所以地址寄存器中存入了06,然后将内存中地址为03的数据传送至R1→RAM下一步为PC→MAR存入的为06。
下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000,所以微地址转向00,再次进行取指令。
至此MOV1MOV2ADDMOV3均执行完毕完成了两个数的相加操作。
如果是07+02=09那么内存的07号地址中就存放了相加结果09。
总图:
输入输出说明:
USB0-7为内存的数据线当wr为1时可以写内存,同时加法器的输出也接到这八根线上结合输出分配可将数据送到R0、R1、pc、ir、mar中的一个或一个也不送。
AD0-7为内存的地址线。
UAD0-7为ROM2和ROM1的共用地址
μIR0-15为ROM2和ROM1的输出其具体输出什么由其地址决定。
wrrd为内存的读写控制
P1为单脉冲
Rst2为复位键,可对PC,μPC.,MAR进行复位。
UPC和P控制ROM2和ROM1读和读出
MD0-7为ROM3的输出其中的数据由此输出。
二四译码器:
二四译码器元件符号
二四译码的输出控制选择器A、B数据通路,二四译码器的作用在这里是一个多路数据开关。
三八译码器逻辑:
三八译码器元件符号
三八译码器的一组输入对应的输出中只有一个为1其余为零。
设计中用到了两个三八译码器其中一个的输入为μIR11、μIR10、μIR9,输出用到的五个分别控制R0、R1、IR、PC、MAR五个寄存器的数据开关。
因为其输出同一时刻只有一个1,这就保证了同一时刻只对一个寄存器操作,另外还有五个寄存器均不操作时的情况,例如写内存的操作。
另外一个三八译码器控制微指令地址的转移方式。
其本质上仍是一个多路数据开关。
后继地址产生逻辑:
当QJP=1时JP=0,微地址计数器置数端输入为0(置数低有效)微指令的高八位被屏蔽掉了,又因为有四个与门接地,所以输出的低四位为全零,高四位只与机器指令的高四位(操作码)有关,这样就实现了高四位按操作码转移,低四位为全零。
当JP=1时QJP=0,微地址计数器置数端输入为0(置数低有效)因为有四个与门接地且QJP=0,所以输出只与微指令的高八位(μIR15-8)有关,这样就实现了无条件转移,地址由μIR15-8提供。
当JP=0时QJP=0,微地址计数器置数端输入为1(置数低有效)此时置数端无效按一次单脉冲键微指令计数器从置数的输入开始计数器自加1顺序向下执行,直到下一次微指令跳转。
一位全加器:
一位加法器元件符
八位串行进位并行加法器
八位串行进位加法器元件符号
微指令计数器μPC
微指令计数器元件符号
微指令计数器不是真正的八位二进制计数器起到计数功能的只有六位,高两位是置数的输入。
我们使用低六位来计数就足够了,程序中微指令最多才自加4次就开始重新置数了。
这样设计只是为了简化硬件电路。
三位二进制计数器元件符号
三位二进制计数器
这是微指令计数器底层模块具有置数和端复位键,在来一次脉冲时自加一当加到111时产生进位信号。
二选一选择器
这里的二选一是将八根线看成一组(R07-R00一组、R17-R10一组),从两组中选出一组作为输出。
不带复位端的八位寄存器
带复位端的八位寄存器
微指令格式微指令字长16位即μIR15~μIR0
(1)微指令字段定义
A选择器控制:
μIR15●μIR14
00备用
01RA
10MA
11备用
B选择器控制:
μIR13●μIR12
00备用
01PB
10RB
11备用
输出分配:
μIR11●μIR10●μIR9
000备用
001CPR0
010CPR1
011CPPC
100CPIR
101CPMAR
110备用
111备用
低位进位控制:
μIR8
0C0=0
1C0=1
存储器读写控制:
μIR5●μIR4
10RD
01WR
后继地址形成方式:
μIR2●μIR1●μIR0
000备用
001μPC+1顺序执行微指令
010JP无条件转移,地址由微指令的高八位μIR15-8提供
011QJP高四位按操作码转移,地四位为0。
100YJP给定高四位第四位按源寻址方式转移。
101MJP给定高四位低四位按目的寻址方式转移。
110备用
111备用
微命令形成逻辑如下图示
确定总体结构:
1、寄存器的设置:
R0R1为通用寄存器,8位
IR为机器指令寄存器,8位
PC程序计数器,8位
MAR为内存地址寄存器
2、加法器的设置
为简化设计,采用为8位带串行进位并行加法器
3、选择器的设置
连入A选择器的数据来源是RAM的读出数据和R0寄存器的数据。
连入B选择器的数据来源是PC数据和R1寄存器的数据。
4、数据通路
信息传送路径
逻辑设计
1、加法器的逻辑设计
2、选择器的逻辑设计
3、寄存器的设计
不带复位的寄存器
结构中R0R1通用寄存器,可存放操作数或结果、中间结果,每个寄存器由8个D触发器构成。
在CPRi的作用下接受总线的数据送入寄存器,输出连入选择器机器指令寄存器其结构同通用寄存器。
带复位的寄存器
结构中MAR地址寄存器是一个带复位的寄存器,带复位是指当有复位信号时,MAR清零。
程序计数器的设计
PC加1是通过加法器实现的。
部件之间的连接
由系统图可看出,部件之间的连接是采用以CPU为中心的总线连接方式。
加法器的输出通过总线BUS连接到所有寄存器和存储器的输入端,除指令寄存器IR和地址寄存器MAR的输出端外,其他部件的输出端分别送入选择器A和选择器B。
确定控制方式
后继地址产生逻辑
为简单起见直选三种后继地址生成方式即增量方式、无条件转移方式、安操作码转移方式
当EN=1时,为程序计数器执行加1操作
当EN=0时,且JP=1时,无条件转移。
当EN=0时,且QJP=1时,按操作码转移。
微程序编写
(1)程序
MOV107#R0
MOV202#R1
ADDR0R1
MOV3R1(R0)
(2)操作码二进制代码
MOV10001
MOV20010
ADD0011
MOV30100
(3)微程序入口(十六进制代码)
取指令入口:
00H
MOV1入口:
10H
MOV2入口:
20H
ADD入口:
30H
MOV3入口:
40H
拟定指令系统
基本字长
课程设计平台中配置的存储器容量为256×8,显然基本字长只能定为8位。
指令格式
指令格式可有单字长指令和双字长指令两种,在双字长格式中,第二字节一般定义微操作数或操作数地址。
指令格式为:
指令类型
模型机有单操作数指令、双操作数指令和无操作数指令。
操作码OP共提供四位,最多可定义16条指令。
数据的传送单位为8位(一个字节)
数据的传送范围
寻址方式
由于指令较短、操作数仅为两位,为了简化硬件设计,将源操作数字段和目的操作数字段的寻址定义为不同的含义
源操作数寻址方式目的操作数寻址方式
00R000R1
01(R0)01(R0)
10I10I
11D11D
Ri表示操作数就在寄存器中
(Ri)表示操作数地址在寄存器中
I指令的第二个字节微操作数或立即寻址
源操作数使用R0寻址
目的操作数使用R1寻址
MOV100011000
00000111
MOV200101000
00000001
ADD00110000
MOV301000001
MOV1源操作数按立即寻址目的操作数为操作数就在寄存器中,因为立即寻址该指令由两个字节组成。
MOV2只有操作码与MOV1不同
ADD源操作数:
操作数就在寄存器中,目的操作数:
为操作数就在寄存器中,该指令由一个字节组成
MOV3源操作数:
操作数就在寄存器中,目的操作数:
操作数地址在寄存器中。
将以上四条机器指令在RAM3#自00号单元顺序存放并用十六进制表示如下:
0018
0107
0228
0302
0430
0541
MOV107,R0;立即数07#R0
MOV201,R1;立即数02#R1
ADDR0,R1;(R0)+(R1)R1
MOV3R1,(R0);R1(R0)(存储单元)
R0中的数据在MOV1中作为操作数,在MOV3作为RAM3的地址R1中相加后的结果就写在这个地址中。
本指令完成的是07+02=09以上四条机器指令执行完成后RAM3的07号单元存放的为09。
指令执行流程
微程序
微操作
微地址
μIR15μIR14μIR13μIR12μIR11μIR10μIR9μIR8
μIR7μIR6
μIR5μIR4
μIR3μIR2μIR1μIR0
十六进制代码
A选择
B选择
输出分配
C0
RDWR
转移方式
ROM2#
ROM1#
RAM→IR
00
10
00
100
0
00
10
0
001
88
21
PC+1→PC
01
00
01
011
1
00
00
0
001
17
01
QJP
02
IR8IR7
IR6IR5
000
0
00
00
0
011
00
03
0
PC→MAR
10
00
01
101
0
00
00
0
001
1A
01
PC+1→PC
11
00
01
011
1
00
00
0
001
17
01
RAM→R0
12
10
00
001
0
00
10
0
001
82
21
PC→MAR
13
00
01
101
0
00
00
0
001
1A
01
JP
14
00
00
000
0
00
00
0
010
00
02
PC→MAR
20
00
01
101
0
00
00
0
001
1A
01
PC+1→PC
21
00
01
011
1
00
00
0
001
17
01
RAM→R1
22
10
00
010
0
00
10
0
001
84
21
PC→MAR
23
00
01
101
0
00
00
0
001
1A
01
JP
24
00
00
000
0
00
00
0
010
00
02
R0+R1=R1
30
01
10
010
0
00
00
0
001
64
01
PC→MAR
31
00
01
101
0
00
00
0
001
1A
01
JP
32
00
00
000
0
00
00
0
010
00
02
R0→MAR
40
01
00
101
0
00
00
0
001
4A
01
R0→RAM
41
00
10
000
0
00
01
0
001
20
11
PC→MAR
42
00
01
101
0
00
00
0
001
1A
01
JP
43
00
00
000
0
00
00
0
010
00
02
心得体会:
此次课程设计过程我们发现、提出、分析和解决实际问题,锻炼了实践能力,对我们的实际工作能力有了具体的训练和考察。
在给同学讲解的过程中,深刻理解了所学知识,也培养了我们团队合作的能力,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我们充分体会到了创造过程中探索的艰难和成功时的喜悦。
虽然这个设计做的不完美,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我们终身受益。