基本模型计算机设计与实现.docx
- 文档编号:29685522
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:29
- 大小:459.26KB
基本模型计算机设计与实现.docx
《基本模型计算机设计与实现.docx》由会员分享,可在线阅读,更多相关《基本模型计算机设计与实现.docx(29页珍藏版)》请在冰豆网上搜索。
基本模型计算机设计与实现
基本模型计算机设计与实现
课程设计说明书
课程设计名称:
计算机组成原理
课程设计题目:
基本模型计算机设计与实现
学院名称:
信息工程学院
专业:
计算机科学与技术班级:
学号:
姓名:
袁东
评分:
教师:
2015年6月日
摘要
随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,现场可编程(FPGA)技术含量正以惊人的速度上升。
特别是随着VHDL等硬件描述语言综合工具功能和性能的提高,计算机中许多重要的元件,包括CPU都用硬件描述语言来设计和表达。
GW48C+计算机组成原理实验台采用模块化的系统结构,本文通过一系列基本单元实验和模型计算机综合设计,对CPU的运算功能、控制功能、总线结构、指令系统的设计和微指令的实现,最终形成一个功能较为完整的片上模型计算机系统,在进行各个单元实验和综合实验时,既可以通过系统计算机进行综合设计,Quartus-Ⅱ软件仿真、观察仿真波形,更重要的是可以在GW48CP+实验平台上,将设计的CPU电路下载到FPGA中进行硬件仿真。
观察CPU内部的各种信息:
包括数据总线、地址寄存器、程序计数器、指令译码器、指令寄存器、控制信号、内部寄存器、数据寄存器、微指令存储器LPM_ROM中的数据等,实时观察每条指令及微指令的执行情况,从而对计算机的原理、结构,从部件到系统,直到计算机整机有一个形象的、生动的、本质的认识。
关键字:
:
FPGA、模型机、微程序控制、Quartus-Ⅱ
前言
《计算机组成原理》是计算机科学技术学科的一门核心专业基础课程。
从课程的地位来说,它在先导课程和后续课程之间起着承上启下的作用。
再结合着所学的《数字逻辑》以及电路的相关知识,就基本上对现代计算机的组成结构和原理有了一定的理解,此次的课程设计便是一次将理论应用到实际的一个非常好的机会。
并且可以加深对计算机的时间和空间概念的理解, 增强对计算机硬件和计算机指令系统的更进一步了解。
美国一些知名大学计算机实验室,那里计算机方面的硬件实验,包括计算机组成原理实验早已不用那种传统接插式实验,而是全部采用EDA技术进行所有的软硬件实验!
显然,使用大规模FPGA、EDA软件工具和IEEE标准硬件描述语言构建的现代计算机组成原理实验系统取代传统的计算机组成原理实验已成为势在必行。
利用FPGA技术,在实验中能方便灵活地设计出简单完整的CPU模型机。
基于查找表硬件结构的商用FPGA是当前进行快速系统原型设计最流行的ASIC手段。
ALTERA的ACEX系列FPGA产品具有片上EAB,可以构成构成各种类型的存储器结构,利用在其内部的LPM可以实现微程序控制和管理复杂逻辑电路。
本次课程设计便是在GW48C+平台上实现的,首先用Quartus-Ⅱ软件对基本模型机的各个组成部分进行设计仿真,然后将各个部分有机的组合起来,形成一个可以完成某些操作的CPU,在软件上仿真成功之后,下载到平台上然后具体的在硬件上实现各个功能。
第1章设计内容及要求.........................................................................4
1.1设计任务...............................................................................................4
1.2设计要求...............................................................................................4
第2章系统组成及工作原理................................................................5
2.1系统组成..............................................................................................5
2.2工作原理..............................................................................................5
第三章系统设计....................................................................................10
3.1CPU顶层设计........................................................................................10
3.2取指令和指令译码................................................................................12
3.3设计微代码表........................................................................................12
3.4控制执行单元..........................................................................................14
第四章系统调试和分析........................................................................15
4.1模型机的软件执行.................................................................................15
4.2模型CPU的硬件仿真...........................................................................15
第五章总结............................................................................................18参考文献..................................................................................................19
附录..........................................................................................................20
第一章设计内容及要求
1.1设计任务
(1)定义五条机器指令,并编写响应的微程序作为模型计算机的控制器;
(2)使用电路框图设计模型计算机电路,并下载编程芯片为定制的简单模型CPU;
(3)在实验系统上连接输入按键和输出显示为输出的模型计算机系统。
1.2设计要求
(1)深入理解基本模型计算机的功能和组成知识;
(2)深入学习计算机各类典型指令的执行流程
(3)学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法;
(4)掌握微程序的设计方法,学会编写二进制微指令代码表;
(5)在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一
台基本模型计算机。
第二章系统组成及工作原理
2.1系统组成
模型机主要由算术逻辑运算单元ALU,数据暂存寄存器DR0、DR1,数据寄存器R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器RAM,指令寄存器IR,微控制器,输入单元INPUT和输出单元OUTPUT所组成。
如其功能模块框图2-1所示。
图中虚线框内部分包括运算器、控制器、程序存储器、数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA中实现。
虚线框外部分主要是输入/输出装置,包括键盘、数码管、LCD显示器等,用于向CPU输入数据,或CPU向外输出数据,以及观察CPU内部工作情况及运算结果。
图2-1模型机通路框图
2.2工作原理
本模型能在微过程控制下自动产生各部件单元控制信号,实现特定的功能。
模型中,计算机数据通路的控制将由微过程控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
(1)指令系统。
本实验采用五条机器指令。
指令编码如下表:
表2.1指令编码
助记符
操作码
addr地址码
功能描述
IN
00H
“INPUT”→R0,键盘输入数据
ADDaddr
10H
XXH
R0+[addr]→R0
STAaddr
20H
XXH
R0→[addr]
OUTaddr
30H
XXH
BUS→“OUTPUT”,显示输出数据
JMPaddr
40H
XXH
addr→PC
指令分单字节和双字节,单字节指令只有IN一条,其余都是双字节指令。
指令各式如表2.2和表2.3。
表2.2单字节指令格式
7654
32
10
操作码
源寄存器
目的寄存器
表2.3双字节指令格式
76543210
76543210
操作码
操作数(内存地址码)
源和目的寄存器可以是三个工作寄存器之一,寄存器标号R0为00,R1为01,R2为10。
为了在试验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了3个控制台操作命令,通过按键SWB和SWA组合实现(括号中是SWB,SWA的键值):
1.存储器读操作(KRD):
下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“00”时,可对RAM连续手动读入操作。
2.存储器写操作(KWE):
下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“01”时,可对RAM连续手动写操作。
3.启动程序(RP):
下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“11”时,即可转入到微地址“01”号“取指令”微指令,启动程序运行。
(2)模型计算机硬件
模型机硬件有以下部分组成:
运算器:
采用8位运算器ALU181,实现算术逻辑运算。
该电路的两个操作数输入端设置两个寄存器DR0和DR1。
程序计数器PC:
用来指示执行指令的地址,以便从内存取得指令。
地址寄存器AR:
存放并输出访问内存单元的地址。
指令寄存器IR:
锁存取得的指令,供控制电路解码分析执行。
此外,还提供了3个工作寄存器R0,R1和R2。
存放可编程程序和数据的存储器RAM也在芯片上实现(像单片机一样)。
各个功能模块通过总线连接。
控制器采用微程序设计。
整个模型机各功能部件的工作及通路连接的微操作代码如表2.4和表2.5所示。
采用字宽24位的ROM存放微程序,3个3-8译码器组成24位输出译码电路。
表2.424位微代码定义
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
操作控制信号
译码器
下址字段
表2.5微指令译码字段说明
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
LDR1
0
1
0
RD_B
0
1
0
P
(2)
0
1
1
LDR2
0
1
1
RJ_B
0
1
1
P(3)
1
0
0
LDIR
1
0
0
SFT_B
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位微代码信号的功能解释如下:
1S3-S1,ALU的操作选择信号,控制执行16种算术逻辑操作之一种;
2M,ALU操作方式选择,等于O为算术操作,等于1时执行逻辑操作;
3CN,进位标志,等于0时,最低位有进位输入,等于1表示无进位;
4WE,控制RAM的读写信号,0值为读,1值为写;
5A9,A8,经译码产生键盘SW_B,存储器RAM,输出显示LED通路选择信号;
6A字段,经译码产生各部件从总线输入选通信号,参考表2.5;
7B字段,经译码产生各部件到总线输出选通信号,参考表2.5;
8C字段,经译码产生测试转移P1~P4,装入程序计数器LDPC,参考表3-18;
9μA5~μA0,微程序地址信号
(3)微程序设计
微程序的设计是根据运行指令微程序流程图设计出来的,因此在设计微程序时,必须先画好运行指令微程序流程图,该模型机的微指令程序流程图如图2-2所示。
图2-2微程序流程图
1.IN指令
根据PC里面的地址将其存放到地址寄存器中,然后根据地址寄存器中的地址找到RAM中的对应存储单元将第一条指令的IN取出放到指令寄存器中,然后译码,经地址转移逻辑在ROM中找到对应微指令的入口地址开始执行,将SW输入的值送入R0中。
2.ADD指令
在执行上一条指令IN时PC里面的值已经加一,此时PC中的值已经是RAM中ADD指令的操作码的地址了,在将PC里面的值送到地址寄存器时,PC的值也随之加一,指向了ADD指令的地址码,根据地址码,将对应存储空间的数据放入到DR2中,将第一条指令的中输入到R0中的数据放到DR1中,两个数相加放到R0中。
3.STA指令
PC->AR:
将PC里的值放入到地址寄存器AR中,
PC+1:
计数器的值加一,指向这条指令的地址码,
PC->AR:
将PC里的值放入到地址寄存器中,
PC+1:
计数器中的值是指向下一条指令的操作码。
RAM->BUS:
将STA的地址码放到总线上,
BUS->AR:
将STA的地址码放到地址寄存器上,
R0->BUS:
将R0中的数据放到总线上,
BUS->RAM:
将BUS上的数据放到地址寄存器的对应的存储单元中。
4.OUT指令
根据PC里面的数值将OUT指令的操作码取出放入到指令寄存器,PC+1,又根据PC里的内容取出指令的地址码,根据地址码,取出对应存储单元的数据通过总线,放到DR1中,最后输出到显示屏上。
5.JMP指令
无条件转移指令JMP,以紧跟在操作码后的字节的内容作为转移地址。
将该字节的内容送给程序计数器PC,实现程序的转移:
AR←PC,PC←PC+1;以PC的内容作为取数据的地址
BUS←RAM,PC←BUS;将RAM内容送PC,实现程序转移
将每一条指令的微操作编辑在一起,就得到全部指令的微程序流程图,如图2-2所示。
第三章系统设计
3.1CPU顶层设计
根据图2-1将各个部件设计出来,然后进行仿真,仿真成功之后,将各个部件通过总线连接起来,完成顶层的设计。
算术逻辑单元ALU是ALU181,其运算功能与74LS181类似,但用VHDL语言编写,是一个8位的运算器。
,其代码如下
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALU181IS
PORT(
S:
INSTD_LOGIC_VECTOR(3DOWNTO0);
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
F:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
COUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
M:
INSTD_LOGIC;
CN:
INSTD_LOGIC;
CO:
OUTSTD_LOGIC;
FZ:
OUTSTD_LOGIC);
ENDALU181;
ARCHITECTUREbehavOFALU181IS
SIGNALA9:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALB9:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALF9:
STD_LOGIC_VECTOR(8DOWNTO0);
BEGIN
A9<='0'&A;B9<='0'&B;
PROCESS(M,CN,A9,B9,S)
BEGIN
CASESIS
WHEN"0000"=>IFM='0'THENF9<=A9+CN;ELSEF9<=NOTA9;ENDIF;
WHEN"0001"=>IFM='0'THENF9<=(A9ORB9)+CN;ELSEF9<=NOT(A9ORB9);ENDIF;
WHEN"0010"=>IFM='0'THENF9<=(A9OR(NOTB9))+CN;ELSEF9<=(NOTA9)ANDB9;ENDIF;
WHEN"0011"=>IFM='0'THENF9<="000000000"-CN;ELSEF9<="000000000";ENDIF;
WHEN"0100"=>IFM='0'THENF9<=A9+(A9ANDNOTB9)+CN;ELSEF9<=NOT(A9ANDB9);ENDIF;
WHEN"0101"=>IFM='0'THENF9<=(A9ORB9)+(A9ANDNOTB9)+CN;ELSEF9<=NOTB9;ENDIF;
WHEN"0110"=>IFM='0'THENF9<=A9-B9-CN;ELSEF9<=A9XORB9;ENDIF;
WHEN"0111"=>IFM='0'THENF9<=(A9AND(NOTB9))-CN;ELSEF9<=A9AND(NOTB9);ENDIF;
WHEN"1000"=>IFM='0'THENF9<=A9+(A9ANDB9)+CN;ELSEF9<=(NOTA9)ORB9;ENDIF;
WHEN"1001"=>IFM='0'THENF9<=A9+B9+CN;ELSEF9<=NOT(A9XORB9);ENDIF;
WHEN"1010"=>IFM='0'THENF9<=(A9OR(NOTB9))+(A9ANDB9)+CN;ELSEF9<=B9;ENDIF;
WHEN"1011"=>IFM='0'THENF9<=(A9ANDB9)-CN;ELSEF9<=A9ANDB9;ENDIF;
WHEN"1100"=>IFM='0'THENF9<=A9+A9+CN;ELSEF9<="000000001";ENDIF;
WHEN"1101"=>IFM='0'THENF9<=(A9ORB9)+A9+CN;ELSEF9<=A9OR(NOTB9);ENDIF;
WHEN"1110"=>IFM='0'THENF9<=(A9OR(NOTB9))+A9+CN;ELSEF9<=A9ORB9;ENDIF;
WHEN"1111"=>IFM='0'THENF9<=A9-CN;ELSEF9<=A9;ENDIF;
WHENOTHERS=>F9<="000000000";
ENDCASE;
IF(A9=B9)THEN
FZ<='0';
ELSEFZ<='1';
ENDIF;
ENDPROCESS;
F<=F9(7DOWNTO0);CO<=F9(8);
COUT<="0000"WHENF9(8)='0'ELSE"0001";
ENDbehav;
ALU的两个8位数据输入端的数据暂存器DR1和DR2,则用LPM模块数据锁存器lpm_latch构成,为ALU提供运算数据。
程序存储器和数据存储器
程序存储器和数据存储器共用一个存储器RAM。
用lpm_ram_dq模块来实现。
数据线为8位,地址线也为8位。
存储器的数据输入端直接与内部总线相连,数据输出端通过三态缓冲器与内部总线相连,地址总线h和地址寄存器AR连接。
采用锁存器结构,调用lpm_latch实现。
程序计数器PC
用了LPM可预置计数器实现。
RST为复位端,高电平PC清零,低电平计数器工作,CLK为计数时钟。
LOAD为数据预置加载控制端,LOAD为低电平时,计数器正常计数;LOAD端为高电平时,向计数器加载数据。
数据输入端d[7..0]直接与内部总线连接,数据输出端q[7..0]通过三态缓冲器与内部总线相连。
指令寄存器IR和输出锁存器
也都采用lpm_latch模块。
微指令译码器decoder_A、decoder_B、decoder_C内部都采用3-8译码器结构。
其作用是对24位微指令中的A、B、C字段进行指令译码。
A字段译码后输出的信号主要用于控制向寄存器或锁存器输入数据;B字段译码后输出的信号主要用于控制运算器、寄存器或锁存器,并通过三态门向内部数据总线输出数据;C字段译码后输出的信号主要用于指令分支判断。
时序控制电路用于产生程序运行时所需的时钟节拍。
3.2取指令和指令译码
1.取指令阶段
(1)将程序计数器(PC)中的内容通过总线送至存储器地址寄存器(AR),
(2)PC的内容递增,为取下一条指令做好准备。
(3)由控制单元(CU)经控制总线(CB)向存储器发读命令。
(4)根据地址寄存器中的地址将对应存储空间的指令取出通过总线放到指令寄存器中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 模型 计算机 设计 实现