计算机组成原理课程设计报告16位模型机的设计.docx
《计算机组成原理课程设计报告16位模型机的设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告16位模型机的设计.docx(44页珍藏版)》请在冰豆网上搜索。
![计算机组成原理课程设计报告16位模型机的设计.docx](https://file1.bdocx.com/fileroot1/2022-10/26/f70fefad-b14c-4ead-981b-77b8b5f7f159/f70fefad-b14c-4ead-981b-77b8b5f7f1591.gif)
计算机组成原理课程设计报告16位模型机的设计
石家庄经济学院
华信学院
计算机组成原理课程设计报告
计算数据块中所有数据的累加和并存储到内存单元中
题目16位模型机的设计
姓名
学号4114170801
班号一班
指导老师
成绩
2014年1月
目录
一、引言
1.1设计目的
为掌握并巩固本学期所学习的计算机组成原理知识,设计本次试验。
运用整合所学的相关知识,一步步设计构造一台基本的模型计算机,明确计算机的控制原理与控制过程,巩固和灵活应用所学的理论知识,掌握计算机组成的一般设计方法,提高学生设计能力和实践操作技能,为从事计算机研制与设计打下基础。
1.2设计任务
本机功能:
计算数据块中所有数据的累加和并存储到内存单元中。
汇编代码如下:
START:
MOVSI,OFFSETSRC1;源操作数地址送SI
MOVDI,OFFSETDXT;目的操作数地址送DI
MOVBX,OFFSETSRC2;结束地址送BX
MOVBL0;设置BL中初值为0
NEXT:
MOVAL,[SI];取数
ADDBL,AL;数据相加
MOV[DI],AL;存数
CMPSI,BX;
JESTART;如果SI=BX,则转向START
INCSI;修改源地址
JMPNEXT;转向NEXT
二、详细设计及实现
2.1拟定指令系统
分析:
1)依据汇编语言程序得出部件间的数据流的方向为
●立即数→寄存器
●寄存器↔内存内存操作数采用寄存器间址寻址方式
●源与目的寄存器内容比较,如果源等于目的转移,转向地址在指令中提供
●寄存器加1指令
●无条件转移指令,转向地址在指令中提供。
2)指令类型(指令中的立即数为一个字即16位)
●立即数→寄存器
需要在指令中指出寄存器及立即数
如:
LOADIR0,10H,此指令为双字指令
●内存操作数→寄存器
需要在指令中指出间址寄存器及目的寄存器
如:
LOADR3,[R1];指令为单字指令
●寄存器→内存
需要指令中指出源寄存器及间址寄存器
如:
STORE[R2],R7;指令为单字指令
●寄存器内容比较产生转移的指令
需要指令中指出源、目的寄存器以及转向的地址
如:
BRANCHEQI0000H;指令为单字指令
●寄存器加1指令
指令中指出寄存器
如:
INCR1,指令为单字指令
●无条件转移指令
指令中提供转向地址
如:
BRANCHI0008H;指令为单字指令
2.2指令格式
1)单字指令格式
单指令但操作数:
INCBRANCHI
单指令双操作数:
movloadstoreLOADI
2)双字指令格式
双字三操作数:
BRANCHEQIBRANCHGTI
操作码
指令
功能
00001
LOAD
将寄存器间址的存储单元内容装载到寄存器
00010
STORE
将寄存器的数据存入到寄存器间址的存储单元
00011
MOV
将源寄存器内容传送到目的寄存器
00100
LOADI
将立即数装入到寄存器
00101
BRANCHI
无条件转移到由立即数指定的地址
00110
BRANCHEQI
如果源寄存器内容等于目的寄存器的内容,则转移到由立即数指定的地址
00111
INC
寄存器内容加1指令
01000
ADD
数据相加
2.3寻址方式
寻址方式
含义
立即数寻址
指令格式中源操作数为立即数
寄存器间址寻址方式
寄存器中操作数的地址
直接寻址
主存中为操作数
依据以上设计的指令系统,将主存中数据累加并存储到内存单元中的程序如下:
地址
机器码
指令
功能说明
0000H
0001H
2001H
0010H
LOADIR1,0010H
源操作数地址送R1
0002H
0003H
2002H
0030H
LOADIR2,0030H
目的操作数地址送R2
0004H
0005H
2006H
0016H
LOADIR6,0016H
结束地址送R6
0006H
0007H
2007H
0000H
LOADR7,0
R7内放入0初始化最小值
0008H
080BH
LOADR3,[R1]
取数
0009H
401FH
ADDR7,R3
相加
000AH
103AH
STORE[R2],R7
存数
000BH
000CH
300EH
0000H
BRANCHEQI0000H
如果R6内容等于R1的内容,则转向0000H
000DH
3031H
INCR1
修改源地址
000EH
000FH
2800H
0008H
BRANCHI0008H
无条件转移到由立即数指定的地址
存储器初始化文件memdata.mif的内容:
三、16位CPU的模型
图1是采用单总线结构的16位CPU结构图,包含了基本的功能模块,由寄存器阵列构成的8个16位寄存器Reg0----Reg7;工作寄存器OpReg;算术逻辑运算部件ALU;移位器Shifter;输出寄存器OutReg;比较器Comp;指令寄存器InstrReg;程序计数器ProgCnt;地址寄存器AddrReg。
所有功能模块共用16位的三态数据总线进行信息的传送。
控制器模块由状态机实现,控制器依据指令、数据通路通过控制线向各功能模块发出控制命令。
由寄存器阵列构成的8个16位寄存器Reg0----Reg7的优点是节省资源、使用方便。
它们共用一个三态开关,由控制器选择与数据总线的连接。
工作寄存器OpReg可为ALU、比较器Comp提供一个操作数,而ALU、比较器的另一操作数直接来自数据总线。
将ALU、移位器Shifter、输出寄存器OutReg串接起来,由控制器统一控制来共同完成一些复杂的操作,由输出寄存器OutReg存储结果,输出寄存器OutReg向总线的输出端含有三态开关。
比较器Comp由控制器直接控制,比较的结果进入控制器。
地址寄存器AddrReg提供要访问的主存单元的地址,本设计中将程序和数据放在同一存储器中。
程序计数器ProgCnt,不具备清零和+1的功能,存放CPU要执行的下一条指令的地址。
指令寄存器InstrReg存放CPU正在执行的指令。
工作寄存器OpReg,输出寄存器OutReg,指令寄存器InstrReg,程序计数器ProgCnt,地址寄存器AddrReg,均为最基本的寄存器。
为了验证CPU的功能,增加存储器,存储器中存入完成数据块传送所需的程序和数据。
系统中所有向数据总线输出数据的模块,其输出口必须使用三态控制器。
模型机的实际电路如图2所示:
图2顶层实体模拟图
3.1各功能部件的VHDL设计
程序包:
说明数据类型、运算器的功能、移位寄存器的操作、比较器的比较类型和用于CPU控制的状态类型。
运算器的设计
功能:
Sel输入
操作
说明
0000
C=A
通过PASS
0001
C=AANDB
与
0010
C=AORB
或
0011
C=NOTA
非
0100
C=AXORB
异或
0101
C=A+B
加法
0110
C=A-B
减法
0111
C=A+1
加1
1000
C=A-1
减1
1001
C=0
清零
说明:
a[15..0]来自于总线,b[15..0]来自于工作寄存器OpReg,c[15..0]输出送至移位器。
sel[3..0]来自于控制器发出的控制信号aluSel[3..0],选择ALU的操作。
运算器功能仿真波形图如图3所示:
仿真结果说明:
当sel为0000时,进行直传的操作。
通过pass,则c=a,为1000。
当sel为0001时,进行与的操作。
a=1000,b=1234,与之后c为1000。
当sel为0010时,进行或的操作。
a=1000,b=1234,c为1234。
当sel为0011时,进行非的操作。
a=1000,a为EFFF。
当sel为0100时,进行异或的操作。
axorb,c为0234。
当sel为0101时,进行加法的操作。
a=1000,c为2234。
当sel为0110时,进行减法的操作。
a=1000,c为FDCC。
当sel为0111时,进行加1的操作。
a=1000,c为1001。
当sel为1000时,进行减1的操作。
a=1000,c为0FFF。
当sel为1001时,进行清0操作,全部置0.
当sel为1010时,为类型其他,全部输出0.
比较器的设计
功能:
t_comp
比较类型
操作说明
000
Eq(等于)
若a=b,compout=1
001
Neq(不等于)
若a<>b,compout=1
010
Gt(大于)
若a>b,compout=1
011
gte(大于等于)
若a>=b,compout=1
100
It(小于)
若a
101
Ite(小于等于)
若a<=b,compout=1
其他
compout=0
比较器功能仿真波形图如图4所示:
图4比较器功能仿真波形图
仿真结果说明:
sel为000时,进行比较是否相等的操作,1000不等于1234,compout=0
sel为001时,进行比较是否不等于的操作,1000不等于1234,compout=1
sel为010时,进行比较是否大于的操作,1000<1234,compout=0
sel为011时,进行比较是否大于等于的操作,1000<1234,compout=0
sel为100时,进行比较是否小于的操作,1000<1234,compout=1
sel为101时,进行比较是否小于等于的操作,1000<1234,compout=1
sel为其他时,compout输出0.
移位器的设计
功能:
t_shift
移位类型
000
直通
001
无符号数左移
010
无符号数右移
011
循环左移
100
循环右移
其他
输出0
移位器的功能仿真波形图如图5所示:
图5移位器的功能仿真波形图
仿真结果说明:
当sel为000时,进行直传的操作,a和y相同
当sel为001时,进行无符号数左移的操作,1234变为2468
当sel为010时,进行无符号数右移的操作,1234变为091A
当sel为011时,进行循环左移的操作,1234变为2468
当sel为100时,进行循环右移的操作,1234变为091A
当sel为其他时,输出0
基本寄存器
A
CLK
Qn+1
0
0
1
1
X
0
Qn
功能:
功能说明:
在CPU中基本寄存器的角色是工作寄存器OpReg,输出寄存器OutReg,指令寄存器InstrReg,程序计数器ProgCnt,地址寄存器AddrReg。
基本寄存器功能仿真波形图如图6所示:
图6基本寄存器功能仿真波形图
仿真结果说明:
0ns到5ns,还没有遇到clk的上升沿,所以q端的输出是0000
5ns到20ns时,clk的上升沿到来,q端