计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现Word下载.doc
《计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现Word下载.doc》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现Word下载.doc(17页珍藏版)》请在冰点文库上搜索。
(3)学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法;
(4)掌握微程序的设计方法,学会编写二进制微指令代码表;
(5)在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机;
(6)通过这次的课程设计让学生通过动脑和动手解决计算机设计中的实际问题。
综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本的模型计算机,掌握整机概念,并设计机器指令系统,编写程序,在所设计的模型计算机上调试运行。
第二章实验原理及方案
2.1实验原理
本实验将能在微过程控制下自动产生各部件单元控制信号,实现特定的功能。
实验中,计算机数据通路的控制将由微过程控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
该模型机的总的数据通路如图2.1.1所示。
图2.1.1模型机的数据通路
2.2实验方案
2.2.1指令系统
本实验采用五条机器指令。
指令编码如下表:
表一指令编码
助记符
操作码
addr地址码
功能描述
IN
00H
“INPUT”→R0,键盘输入数据
ADDaddr
10H
XXH
R0+[addr]→R0
STAaddr
20H
R0→[addr]
OUTaddr
30H
BUS→“OUTPUT”,显示输出数据
JMPaddr
40H
addr→PC
指令分单字节和双字节,单字节指令只有IN一条,其余都是双字节指令。
指令各式如表二和表三。
表二单字节指令格式
7654
32
10
源寄存器
目的寄存器
表三双字节指令格式
76543210
操作数(内存地址码)
源和目的寄存器可以是三个工作寄存器之一,寄存器标号R0为00,R1为01,R2为10。
为了在试验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了3个控制台操作命令,通过按键SWB和SWA组合实现(括号中是SWB,SWA的键值):
存储器读KRD(00)操作,存储器KWE(01)操作,启动程序执行RP(11)操作。
2.2.2模型计算机硬件
在本此设计的模型机硬件主要有以下部分组成:
运算器:
采用8位运算器ALU181,实现算术逻辑运算。
该电路的两个操作数输入端设置两个寄存器DR0和DR1。
程序计数器PC:
用来指示执行指令的地址,以便从内存取得指令。
地址寄存器AR:
存放并输出访问内存单元的地址。
指令寄存器IR:
锁存取得的指令,供控制电路解码分析执行。
此外,还提供了3个工作寄存器R0,R1和R2。
存放可编程程序和数据的存储器RAM也在芯片上实现(像单片机一样)。
各个功能模块通过总线连接。
控制器采用微程序设计。
整个模型机各功能部件的工作及通路连接的微操作代码如表3.11和表3.12所示。
采用字宽24位的ROM存放微程序,3个3-8译码器组成24位输出译码电路。
2.2.3微指令设计
2.2.3.1微代码定义
由于在本次设计的模型机中只设计五条指令,以及它们所实现的任务,可以将每条微指令用24位的微代码来表示,如表四所示
表四 24位微代码定义
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
操作控制信号
译码器
下址字段
如表四所示的24位微代码信号的功能解释如下:
①S3-S0,ALU的操作选择信号,控制执行16种算术逻辑操作之一种;
②M,ALU操作方式选择,等于O为算术操作,等于1时执行逻辑操作;
③CN,进位标志,等于0时,最低位有进位输入,等于1表示无进位;
④WE,控制RAM的读写信号,0值为读,1值为写;
⑤A9,A8,经译码产生键盘SW_B,存储器RAM,输出显示LED通路选择信号;
⑥A字段,经译码产生各部件从总线输入选通信号,参考表五;
表五微指令译码字段说明
15
14
13
选择
12
11
10
9
8
7
LDRi
RS_B
P
(1)
LDR1
RD_B
P
(2)
LDR2
RJ_B
P(3)
LDIR
SFT_B
P(4)
LOAD
ALU_B
LDAR
PC_B
LDPC
⑦B字段,经译码产生各部件到总线输出选通信号,参考表五;
⑧C字段,经译码产生测试转移P1~P4,装入程序计数器LDPC,参考表五;
⑨μA5~μA0,微程序地址信号
2.2.3.2微代码具体设计
综上所述,实现模型机指令的解释与执行的微程序代码。
这些微代码写入ROM中。
注意,表六中的微地址是8进制表示。
表六 微代码
微地址
微指令
S3S2S1S0MCNWEA9A8
A
B
C
μA5~μA0
00
000000011
000
100
01
01ED82
110
02
00C048
000000001
001
03
00E004
04
00B005
011
05
01A206
010
06
919A01
100100011
101
07
00E00D
000000000
01ED83
01ED87
01ED8E
01ED96
00E00F
00A015
01ED92
01ED94
01A010
000001100
25
010A01
000000010
26
00D181
2.2.4控制台解释微程序
为了在实验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了3个控制台操作命令,通过安检SWA和SWB组合实现,同时根据微代码的设计可以将控制台设计为如下的解释微程序。
控制台键盘译码微程序流程如图2.2.4.1所示。
图2.2.4.1控制台键盘译码微程序流程
2.2.5运行指令流程图
根据每条机器指令执行的微操作顺序,微程序流程图如下图:
第三章具体设计过程
3.1各个主要基本部件设计
在设计模型机的主要的顺序是从底层开始设计,逐步向上设计,最后实现顶层的电路图的设计。
3.1.1算术逻辑部件(ALU)
ALU是计算机的核心部件之一,它能执行加法和减法等算术运算,也能执行“与”、“或”等逻辑运算。
ALU的基本功能根据74LS181的功能用VHDL编辑而成的。
本次设计中的运算器功能部件可以对8为数据进行算术/逻辑运算,采用硬件描述语言VHDL设计。
该元件,共有两个数据输入端A[7…0]、B[7…0],S[3…0]控制执行16种算术/逻辑运算中的一种,M端控制操作方式的选择(算术运算和逻辑运算),CN表示进位标志(进位和无进位)。
具体设计如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALU181IS
PORT(
S:
INSTD_LOGIC_VECTOR(3DOWNTO0);
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
B:
F:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
COUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
M:
INSTD_LOGIC;
CN:
CO:
OUTSTD_LOGIC;
FZ:
OUTSTD_LOGIC);
ENDALU181;
ARCHITECTUREbehavOFALU181IS
SIGNALA9:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALB9:
SIGNALF9:
BEGIN
A9<
='
0'
&
A;
B9<
B;
PROCESS(M,CN,A9,B9,S)
BEGIN
CASESIS
WHEN"
0000"
=>
IFM='
THENF9<
=A9+CN;
ELSEF9<
=NOTA9;
ENDIF;
WHEN"
0001"
=(A9ORB9)+CN;
=NOT(A9ORB9);
0010"
=(A9OR(NOTB9))+CN;
=(NOTA9)ANDB9;
0011"
="
"
-CN;
="
;
0100"
=A9+(A9ANDNOTB9)+CN;
=NOT(A9ANDB9);
0101"
=(A9ORB9)+(A9ANDNOTB9)+CN;
=NOTB9;
0110"
=A9-B9-CN;
=A9XORB9;
0111"
=(A9AND(NOTB9))-CN;
=A9AND(NOTB9);
1000"
=A9+(A9ANDB9)+CN;
=(NOTA9)ORB9;
1001"
=A9+B9+CN;
=NOT(A9XORB9);
1010"
=(A9OR(NOTB9))+(A9ANDB9)+CN;
=B9;
1011"
=(A9ANDB9)-CN;
=A9ANDB9;
1100"
=A9+A9+CN;
1101"
=(A9ORB9)+A9+CN;
=A9OR(NOTB9);
1110"
=(A9OR(NOTB9))+A9+CN;
=A9ORB9;
1111"
=A9-CN;
=A9;
WHENOTHERS=>
F9<
;
ENDCASE;
IF(A9=B9)THEN
FZ<
ELSEFZ<
1'
ENDIF;
ENDPROCESS;
F<
=F9(7DOWNTO0);
CO<
=F9(8);
COUT<
WHENF9(8)='
ELSE"
ENDbehav;
3.1.2程序计数器(PC)
程序计数器采用LPM库中的元件lpm_counter来完成的,计数器的数据宽度为8位。
程序计数器(PC)是为能够进行主机系统设计实验,控制程序的自动运行而设计的部件。
改程序计数器可以提供8为的程序地址,具有自增1和接收转移地址的功能。
图3.1.2.1程序计数器元件图
图3.1.2.2程序计数器功能部件详细设计图
3.1.3寄存器
在该模型机中用到的寄存器主要有数据缓冲寄存器、地址寄存器、工作寄存器和指令寄存器。
数据缓冲寄存器是用来存放CPU主存读取的一个指令字或一个数据字,它是采用锁存器结构来实现的。
他们都是可以直接从LPM库中调用的。
图3.1.3.1数据缓冲寄存器逻辑结构图3.1.3.2指令寄存器逻辑结构
图3.1.3.3工作寄存器元件图
图3.1.3.4工作寄存器逻辑结构
3.1.4存储器
用于存储微程序的LPM_ROM用初始化存储器编辑窗口LPM_ROM配置文件.mif的,其中rom5.mif的数据是微指令码,如图3.1.4.1.
图3.1.4.1rom5.mif中的数据
图3.1.4.2存储器
3.2模型机顶层框图设计
通过各个小的部件的设计,最后将各个部件如数据通路一样的将部件连接起来,完成如图的顶层框图。
图3.2.18位CPU的顶层电路图
第四章程序测试和指令调试
4.1波形仿真
电路的设计与仿真在QuartusⅡ6.0的环境下完成的,硬件测试平台为杭州康芯电子有限公司“SOPC/EDA组成原理实验开发系统”上完成的。
其中编写的rom5.mif保存在预实验电路cpu5.bdf工程所在的文件夹中,与实验电路cpu5.bdf一同编译后得到下载文件cpu5.sof,设计波形激励文件进行波形的仿真,结果如图4.1.1.
图4.1.1波形仿真图
4.2实验调试
下载编程和试验台联机测试
下载编程芯片方法在前面实验已经介绍,下面主要讲述测试。
在GW48实验系统上选用电路模式NO.0。
实验台资源应用说明如下:
l液晶屏LCD显示程序运行监测信息如图3.39,功能说明如表七。
l数码管LED,数码管2,1显示手工输入数据的值。
表七LCD液晶显示功能说明
名称
作用
INPUT输入单元
OUT
OUTPUT输出单元
ALU
算术逻辑单元
R0
寄存器R0
R1
寄存器R1
R2
寄存器R2
DR1
暂存器DR1
DR2
暂存器DR2
BUS
内部数据总线
PC
程序计数器
AR
地址寄存器
RAM
程序/数据存储器
IR
指令积存器
μA
微程序地址
MC
微指令代码
l键盘,按键8,7,4,3分别表示模型机复位RST,模拟节拍SETP,控制台控制信号SWB,SWA。
是乒乓开关,按一次为高电平,对应的发光管点亮,再按一次即变为低平,对应发光管灭,再按又变高。
l按键2,1为数据录入键,16进制输入,每按一次加一,显示在数码管上。
1)手动输入实验程序
实验程序用来检查模型机的指令执行情况,包含了指令系统全部5条指令,用机器指令代码编程,参考实验程序如表八:
表八机器指令试验程序
存储器地址
内容
说明
01H
ADD[0AH]
[R0]+[0AH]→R0
02H
0AH
03H
STA[0BH]
[R0]→[0BH]
04H
0BH
05H
OUT[OBH]
[0BH]“OUTPUT”,显示输出数据
06H
[09H]→PC,以[08H]内容为转移地址
07H
JMP[08H]
08H
09H
34H
DB34H
被加数
求和结果
输入程序的方法如下:
① 通过按键4,3,置SWB,SWA为01,并按复位按键8.令模型机工作在控制台写存储器状态,执行KWE微程序;
② 通过按