cpu实验报告.docx
《cpu实验报告.docx》由会员分享,可在线阅读,更多相关《cpu实验报告.docx(34页珍藏版)》请在冰豆网上搜索。
cpu实验报告
武汉大学计算机学院
课程实验(设计)报告
题目:
CPU设计
专业(班):
2008级信息安全三班
项目组成员:
组长:
许洋学号:
*****
组员:
王滢学号:
*****
殷丽学号:
*****
刘博文学号:
*****
课程名称:
计算机组成原理课程设计
*******
2010-5-17
1引言
1.1实验目的
设计出一个8位的能完成一条加法指的CPU,其中含有运算器,通用寄存器,数据寄存器,地址寄存器,RAM,ROM和时序发生器。
国内外研究现状
CPU内部结构大概可以分为控制单元、运算单元、存储单元三个主要部分。
运算器是计算机对数据进行加工处理的中心,它主要由算术逻辑部件(ALU)、寄存器组和状态寄存器组成。
ALU主要完成对二进制信息的定点算术运算、逻辑运算和各种移位操作。
通用寄存器组是用来保存参加运算的操作数和运算的中间结果。
状态寄存器在不同的机器中有不同的规定,程序中,状态位通常作为转移指令的判断条件。
控制器是计算机的控制中心,它决定了计算机运行过程的自动化。
它不仅要保证程序的正确执行,而且要能够处理异常事件。
控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑等几个部分。
指令控制逻辑要完成取指令、分析指令和执行指令的操作。
时序控制逻辑要为每条指令按时间顺序提供应有的控制信号。
一般时钟脉冲就是最基本的时序信号,是整个机器的时间基准,称为机器的主频。
执行一条指令所需要的时间叫做一个指令周期,不同指令的周期有可能不同。
一般为便于控制,根据指令的操作性质和控制性质不同,会把指令周期划分为几个不同的阶段,每个阶段就是一个CPU周期。
早期CPU同内存在速度上的差异不大,所以CPU周期通常和存储器存取周期相同,后来,随着CPU的发展现在速度上已经比存储器快很多了,于是常常将CPU周期定义为存储器存取周期的几分之一。
总线逻辑是为多个功能部件服务的信息通路的控制电路。
就CPU而言一般分为内部总线和CPU对外联系的外部总线,外部总线有时候又叫做系统总线、前端总线等。
中断是指计算机由于异常事件,或者一些随机发生需要马上处理的事件,引起CPU暂时停止现在程序的执行,转向另一服务程序去处理这一事件,处理完毕再返回原程序的过程。
由机器内部产生的中断,我们把它叫做陷阱(内部中断),由外部设备引起的中断叫外部中断。
当前世界上大多数计算机的中央处理器由下述两种方法实现:
(1)采用半导体公司(工厂)生产的微处理器构成通用的或专用的计算机系统以及工作站等。
当前微处理器芯片已从16位,32位发展到64位结构。
(2)一些计算机公司采用自行设计的制造的CPU芯片来构成大、中、小型计算机的CPU。
随着VLSI的出现和发展,芯片集成度显著提高,价格不断下降,从而提高了计算机的性能价格比,使得过去在大、中型计算机中才采用的硬件技术(例如流水线技术、并行处理技术、高速缓冲存储器(cache)和虚拟存储器等),下移到小型和微型计算机系统中来,银耳市大、中、小、微型计算机的分界面不断发生变化,界限随时代而趋向消失。
计算机进行信息处理的过程分为两个步骤:
首先将一部分数据和程序输入到计算主存储存器中,然后从“程序入口”开始执行该程序,得到所需要的结果后,结束运行。
“程序运行”指的是该程序开始执行的第一条指令的地址,控制器的作用是协调并控制计算机的各个部件执行该程序的指令序列。
1.2实验环境
PC机
QuartusⅡ
1.3主要成果
1.实现了一个8位双总线简单模型机。
2.可以执行加法运算,在设定的仿真参数下,能得到正确的运行结果。
2实验方法
2.1总体说明
本次试验设计的CPU为8位双总线简单模型机,如图1所示。
其主要组成部分有:
时序控制信号形成部件、通用寄存器GR、运算器ALU、地址寄存器AR、数据寄存器DR、指令寄存器IR、程序计数器PC。
另外,还有存放微指令的存储器ROM,和存放指令的存储器RAM。
图1为CPU成品封装图。
图1CPU(封装图)
CPU的输入\输出信号说明如表1所示。
表1CPU输入\输出信号的说明
引脚名称
说明
输入端
EN
使能端(低电平有效)
CLK
时钟信号
CHUSHISHUJU[7..0]
输入GR的运算数据
GR_A[1..0]
选择A口通用寄存器
GR_B[1..0]
选择B口通用寄存器
GR_WR
读写控制信号
GR_A_RN
A口使能端
GR_B_EN
B口使能端
输出端
OUT[7..0]
计算结果
M[1..4]
时钟控制信号
T[1..8]
时钟控制信号
CPU原理图如图2所示(图2与原图不完全相同,原图中有设计中加入的检测信号等端口,但主要功能及输出端一样),图中各个部件的主要功能如下。
(1)控制器:
包括有MIP2_4_8时钟发生器:
产生有节拍的时钟脉冲,供CPU中各个元件工作;程序计数器PC:
初始化CPU,并在执行一条微指令后加一;指令寄存器IR:
存放当前正在执行的指令;微指令寄存器uIR:
存放正在执行的微指令;AR和DR:
分别存放地址和数据。
(2)存储器:
ROM中存放微指令,RAM中存放指令(设想是把数据也存放在RAM中,但没有实现,最后在采用在GR端直接输入的方式)。
(3)运算器ALU:
进行数据的运算。
微指令编码根据《计算机组成原理与结构(第4版)》第183页表确定,此处不再赘述。
2.2各部分说明
2.2.1时序控制信号形成部件
2.2.1.1总体说明
当机器启动后,在CLK时钟作用下,根据当前正在执行的指令的需要,产生相应的时序控制信号,并根据被控功能部件的反馈信号调整时序控制信号。
图3是时序控制信号形成部件。
图3控制信号形成部件
2.2.1.2具体部件说明
1、MTP1_4部件
该部件的核心部分为74379芯片,74379芯片是一个双边输出公共使能四D锁存器,
该部件原理图如图4所示。
图4MTP1_4部件原理图
2、MIP_BDEF部件
该部件核心芯片为74273芯片,74273芯片为带公共时钟复位八D触发器,其功能表如下:
表474273功能表
输入
输出
CLR
CLK
D
Q
0
X
X
X
1
↑
1
1
1
↑
0
0
1
0
X
Q0
该部件原理图如图5所示:
图5MTP_BDEF部件原理图
3、MTP2_4_8原理图
该部件核心部分即为上述的MTP1_4部件和MTP_BDEF部件,其原理图如图6所示:
图6MIP2_4_8芯片原理图
将该原理图封装后即为实验所需要的时序控制信号形成部件。
2.2.1.3测试报告
该部件测试后的波形图如图7所示:
图7时序控制部件波形图
2.2.2指令寄存器IR
指令寄存器IR,用以存放当前正在执行的指令,一边在指令执行过程中,控制完成一条指令的全部功能。
图8即指令寄存器。
图8控制寄存器(封装图)
实验所用指令寄存器是由两片74194封装而来,74194是一种常用的4位双向寄存器,其功能表如下:
表574194功能表
输入
输出
CLRNCP
S1S0
SRSISRSI
DCBA
QdQcQbQa
0d
dd
dd
dddd
0000
10
dd
dd
dddd
QdQcQbQa
1↑
11
dd
x3x2x1x0
x3x2x1x0
1↑
01
1d
dddd
1QdQcQb
1↑
01
0d
dddd
0QdQcQb
1↑
10
d1
dddd
QcQbQa1
1↑
10
d0
dddd
QcQbQa0
1d
00
dd
dddd
QdQcQbQa
IR原理图如图9所示:
图9指令寄存器原理图
测试后波形图如图10所示:
图10指令寄存器测试波形图
2.2.3程序计数器PC
2.2.3.1总体说明
程序计数器即指令地址寄存器。
在某些计算机中用来存放当前正在执行的指令地址;而在另一些计算机中则用来存放即将要执行的下一条指令地址;而在有指令预取功能的计算机中,一般还要增加一个程序计数器用来存放下一条要取出的指令地址。
程序计数器用以指出下条指令在主存中的存放地址,CPU根据PC的内容去主存取得指令。
因程序中指令是顺序执行的,所以PC有自增功能。
该部件最终的封装图如图11所示:
图11PC原理图(封装图)
该部件的功能如下:
1、当CLR为高电平时,计数器清零。
2、当CLR为低电平时,给CP一个时钟信号(上升沿有效)后,计数器加一。
程序计数器的核心部件是74193芯片,74193即集成计数器。
2.2.3.274193芯片说明
1、74193管脚排列图及逻辑符号分别如图(a)、(b)所示。
2、74193芯片引脚功能
表674193芯片引脚说明
引脚名称
功能
输入端
CLR
#LD
DCBA
CPU↑
CPD↑
清除
预置控制
预置初始值
累加计数脉冲(正脉冲)
累减计数脉冲(正脉冲)
输出端
QDQCQBQA
#QCC
#QCB
计数值
进位输出(负脉冲)
借位输出(负脉冲)
3、74193芯片功能表
表774193功能表
输入
输出
CLR
#LD
DCBA
CPUCPD
QDQCQBQA
1
0
0
0
d
0
1
1
dddd
X3X2X1X0
dddd
dddd
dd
dd
↑1
1↑
0000
X3X2X1X0
累加计数
累减计数
表中,CLR为高电平,计数器清“0”;#LD为低电平,计数器预置D、C、B、A输入值;计数脉冲由CPU端输入时,累加计数;计数脉冲由CPD端输入时,累减计数。
2.2.3.3PC部件原理图
程序计数器原理图如图12所示:
图12PC原理图
该原理图封装后即得到所要的PC图
2.2.3.4测试报告
该部件测试后的波形图如图13所示
图13PC测试波形图
2.2.4只读存储器ROM
只读存储器ROM用来存放微指令,芯片如图14所示。
图14ROM(封装图)
ROM输入\输出信号如下表所示:
表8ROM输入\输出信号的说明
引脚名称
说明
输入端
address[7..0]
地址输入
Inclock
读入脉冲(上升沿有效)
Outclock
输出脉冲(上升沿有效)
输出端
q[31..0]
存储器内容
其各属性选择如下所示:
1、确定输出宽度为32位,容量为16(即地址为8位),控制信号为双时钟信号。
图15创建ROM
(1)
图16创建ROM
(2)
2、选择ROM存储文件。
图17创建ROM(3)
图18创建ROM(4)
存储器内容文件为,用来存放ROM的数据,如下图所示:
图19ROM内容文件
2.2.5控制寄存器uIR
控制存储器用于控制和确定处理器的操作模式以及当前执行任务的特性,如图20所示。
图20uIR(封装图)
控制寄存器的输入\输出信号如下表所示:
表9uIR输入\输出信号的说明
引脚名称
说明
输入端
A[31..0]
并行数据输入
CLK
工作脉冲
输出端
PC_AB等等
寄存器状态
控制寄存器为32位,由8片74194封装而来,其原理图如图21所示。
图21uIR原理图
uIR测试波形图因为微指令较多较长,在图22中不便表述,在此略去。
2.2.6随机存储器RAM
随机存储器用来存放指令,芯片如图23所示:
图23RAM(封装图)
RAM输入\输出信号如下表所示:
表10RAM输入\输出信号的说明
引脚名称
说明
输入
data[7..0]
写入数据
Wren
读写信号(1写0读)
address[7..0]
读写地址
Inclock
读入脉冲(上升沿有效)
Outclock
输出脉冲(上升沿有效)
输出
q[7..0]
存储器内容
其各属性选择如下所示:
1、确定输出宽度为24位,容量为256(即地址为8位),控制信号为双时钟信号。
图24创建RAM
(1)
图25创建RAM
(2)
2、选择RAM存储文件。
图26创建RAM(3)
图27创建RAM(4)
存储器内容文件为,用来存放ROM的数据,如下图所示:
图28RAM内容文件
2.2.7通用寄存器GR
2.2.7.1总体说明
通用寄存器组由8个寄存器构成,并通过A口与B口地址选择被读的寄存器,B口地址还用于指定写入寄存器。
该部件最终的封装图如图29所示:
图29通用寄存器GR(封装图)
在该实验中,设置了一个双通道寄存器,分别设为A口和B口。
每个通道均设有8个寄存器。
该部件实现功能:
1、当A_en为高电平时,表示寄存器A口工作,A[1..0]表示所选中的寄存器,将选中的寄存器的内容通过Aout输出。
2、当B_en为高电平时,表示寄存器B口工作,B[1..0]表示所选中的寄存器,将选中的寄存器的内容通过Bout输出。
3、当要往寄存器写数据时,B口工作,BG1设为高电平,B[1..0]选择寄存器,将输入的数据D[7..0]写到指定寄存器中。
2.2.7.2具体部件说明
1、A74373
该部件的核心芯片为LATCH(锁存器)。
实现数据的锁存。
其原理图如图30所示:
图30A74373部件
2、TRI8
该部件是由八个三态门组成的,其功能与TRI81部件一致。
3、74138芯片说明
该芯片是一个3-8线(3输入8输出)译码器。
图(a)、(b)所示分别是74138型3-8线译码器的管脚排列图和逻辑符号。
74138的真值表如下所示:
表1174138真值表
输入
S2SN1+SN0A2A1A0
输出
YN0YN1YN2YN3YN4YN5YN6YN7
10000
10001
10010
10011
10100
10101
10110
10111
0dddd
d1ddd
01111111
10111111
11011111
11101111
11110111
11111011
11111101
11111110
11111111
11111111
4、GR的总体原理图如图31所示:
图31
该原理图封装后即得到所要的GR图
2.2.7.3测试报告
该部件的测试波形图如图32所示。
图32测试波形图
2.2.8三选一
多路选择器又称数据选择器或多路开关,它是一种多路输入、单路输出的组合逻辑电路,其逻辑功能是从多路输入中选中一路送至输出端,输出对输入的选择受选择控制变量控制。
图33是实验所用3路选择器。
图33MUX31(封装图)
3路选择器MUX21的功能表如下表所示。
表123路MUX31的功能表
选择输入
数据输入
输出
SELlSEL2
A[7...0]B[7..0]C[7..0]
Y[7..0]
00
Add
A
01
dBd
B
10
ddC
C
11
ddC
C
3路选择器MUX21的原理图如图34所示。
图343路MUX31的原理图
由图可见3路MUX31由8片4路MUX74153组合而来。
图(a)、(b)是型号为74153的双4路选择器的管脚排列图和逻辑符号。
该芯片中有两个4路选择器。
其中,D0~D3为数据输入端;A1、A0为选择控制端;Y为输出端;G为使能端。
4路数据选择器74153的功能表如下表所示。
表1374153的功能表
选择控制输入
数据输入
输出
A1A0
D0D1D2D3
Y
00
D0ddd
D0
01
dD1dd
D1
10
ddD2d
D2
11
dddD3
D3
3路MUX31的测试波形图如图35:
图353路MUX31的波形图
2.2.9二选一
多路选择器又称数据选择器或多路开关,它是一种多路输入、单路输出的组合逻辑电路,其逻辑功能是从多路输入中选中一路送至输出端,输出对输入的选择受选择控制变量控制。
图36是实验所用2路选择器。
图36MUX21(封装图)
2路选择器MUX21的原理图如图37所示。
图373路选择器MUX21的原理图
由图可见2路MUX21由8片2路MUX74158组合而来,74158的功能表如表所示。
表142路MUX31的功能表
使能输入
选择输入
数据输入
输出
GN
SEL
AB
Y
1
d
dd
0
0
0
Ad
A
0
1
dB
B
2路MUX21测试波形图如图38所示。
图382路MUX21波形图
2.2.10运算器ALU
2.2.10.1总体说明
计算机中执行各种算术和逻辑运算操作的部件。
运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。
计算机运行时,运算器的操作和操作种类由控制器决定。
运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中。
实验中设计了一个8位ALU,可以执行加、减、与、或四种运算。
其封装图图39所示:
图39ALU(封装图)
该ALU运算部件的功能表如下
表15ALU功能表
输入
输出
s1s0
A[7..0]B[7..0]
F[7..0]COUT
00
01
10
11
输入数据输入数据
A+B进位
A-B借位
A∩B0
A∪B0
原理图如下图40:
图40
2.2.10.2ALU测试波形图
图41ALU测试波形图
2.2.11数据寄存器DR
数据寄存器是CPU中不可少的元件,用来暂存各种数据,只要不写入其他数据,已写入的数据不会变化。
其芯片如图42所示。
图42数据寄存器(封装图)
数据寄存器输入\输出信号如下表所示:
表18DR输入\输出信号的说明
引脚名称
说明
输入端
A[7..0]
并行数据输入
CLK
工作脉冲
WR
读写控制信号
输出端
Q[7..0]
寄存器的状态
实验所用数据寄存器也是由两片74194封装而来,74194功能表如2.2.2中表5所示。
DR原理图如图49所示:
图43数据寄存器原理图
2.2.12地址寄存器AR
地址寄存器用来保存当前CPU所访问的内存单元的地址。
由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。
图44地址寄存器(封装图)
数据寄存器输入\输出信号如下表所示:
表19DR输入\输出信号的说明
引脚名称
说明
输入端
A[7..0]
并行数据输入
CLK
工作脉冲
WR
读写控制信号
输出端
Q[7..0]
寄存器的状态
实验所用指令寄存器是由两片74194封装而来,74194功能表如2.2.2中表3所示。
AR原理图如下:
图45地址寄存器原理图
测试后波形图如图45所示:
2.2.13八位三态门TRI81
该部件是由8个三态门封装而成的,其封装图如下
图46TRI81封装图
当CH为高电平时,Y才将A中的数据输出。
其原理图如下
图47TRI81原理图
2.3测试报告
2.3.1微码设计
这个实验中,我们用设计出来的CPU实现一条加法指令。
这条加法指令将存储器里相应址里的数取出来,和一个立即数进行加法运算后送到通用寄存器里。
由此得到实现该加法指令所需的4条微码如下:
1、000000000000010000011100
2、000000000000010000011100
3、100010001000100000000000
2.3.2测试
进行测试前,先给RET高电平,将PC和uPC清零。
给RET高电平的同时,EN也为高电平,即还不发出控制信号。
给P时钟信号。
测试的过程中,为了更好地检测各个部件是否正常工作,添加了以下几个输出:
1、将三个IR输出的数据分别输出到IR_A_out[7..0]、IR_B_out[7..0]、IR_B_out[7..0]中。
2、将地址总线AB中要送到RAM的地址信息输出到ADD_out[7..0]中。
3、将RAM中要送到数据总线DB中的数据输出到RAM_out[7..0]中。
4、将从ALU送到GR的数据输出到output[7..0]中,这个数据也就是运算的结果。
5、将MUX31部件选出的要送到ALU的数据输出到ALU_A_OUT[7..0]中。
6、将MUX21部件选出的要送到ALU的数据输出到ALU_B_OUT[7..0]中。
7、将运算器ALU的结果输出到ALU_OUT[7..0]中。
8、将地址寄存器AR要送出的数据输出到AR[7..0]中。
9、要进行计算的数据(即初始数据)直接送到GR。
添加了这些输出后,CPU的原理图如下图48:
添加了测试输出后,测试波形如下
图49添加了测试输出后CPU的测试波形
2.4测试程序
为该加法指令设计的测试程序为
ADD
2.5测试结果
实现了将输入的数据相加的指令,指定的寄存器R1中。
3总结
3.1实验总结
本次的CPU设计实验,巩固了微程序控制计算机的基本工作原理和指令的执行过程,包括微指令的编码方式、微程序控制器、时序信号及工作脉冲的形成等基本理论知识,又在此基础上将各方面的理论知识汇总、整理、归纳成清晰的设计思路,最后在整个小组的共同协商和努力下,完成了最终的CPU设计。
同时,本次实验大大加深了我们对CPU执行