武汉大学计算机学院课程实验(设计)报告题 目: CPU设计 专业(班): 2008级信息安全三班 项目组成员:组长:许洋 学号:2008302530074 组员:王滢 学号:2008302530071 殷丽 学号:2008302530070 刘博文 学号:2008302530080 课程名称: 计算机组成原理课程设计 任课教师: 蔡朝辉 2010-5-17目 录1 引言 31.1 实验目的 31.2 国内外研究现状 31.3 实验环境 41.4 主要成果 42 实验方法 42.1 总体说明 42.2 各部分说明 72.2.1 时序控制信号形成部件 72.2.2 指令寄存器IR 102.2.3 程序计数器PC 122.2.4 只读存储器ROM 152.2.5 控制寄存器CR 182.2.6 随机存储器RAM 202.2.7 通用寄存器GR 232.2.8 三选一 282.2.9 二选一 312.2.10 运算器ALU 322.2.11 数据寄存器DR 382.2.12 地址寄存器AR 392.2.13 八位三态门TRI81 412.3 测试报告 422.3.1 微码设计 422.3.2 测试 432.4 测试程序 452.5 测试结果 453 总结 463.1 实验总结 463.2 取得的收获 463.3 意见与建议 474 参考文献 485 组员分工 481 引言1.1 实验目的设计出一个8位的能完成一条加法指的CPU,其中含有运算器,通用寄存器,数据寄存器,地址寄存器,RAM,ROM和时序发生器。
1.2国内外研究现状CPU内部结构大概可以分为控制单元、运算单元、存储单元三个主要部分 运算器是计算机对数据进行加工处理的中心,它主要由算术逻辑部件(ALU)、寄存器组和状态寄存器组成ALU主要完成对二进制信息的定点算术运算、逻辑运算和各种移位操作通用寄存器组是用来保存参加运算的操作数和运算的中间结果状态寄存器在不同的机器中有不同的规定,程序中,状态位通常作为转移指令的判断条件 控制器是计算机的控制中心,它决定了计算机运行过程的自动化它不仅要保证程序的正确执行,而且要能够处理异常事件控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑等几个部分 指令控制逻辑要完成取指令、分析指令和执行指令的操作时序控制逻辑要为每条指令按时间顺序提供应有的控制信号一般时钟脉冲就是最基本的时序信号,是整个机器的时间基准,称为机器的主频执行一条指令所需要的时间叫做一个指令周期,不同指令的周期有可能不同一般为便于控制,根据指令的操作性质和控制性质不同,会把指令周期划分为几个不同的阶段,每个阶段就是一个CPU周期早期CPU同内存在速度上的差异不大,所以CPU周期通常和存储器存取周期相同,后来,随着CPU的发展现在速度上已经比存储器快很多了,于是常常将CPU周期定义为存储器存取周期的几分之一。
总线逻辑是为多个功能部件服务的信息通路的控制电路就CPU而言一般分为内部总线和CPU对外联系的外部总线,外部总线有时候又叫做系统总线、前端总线等 中断是指计算机由于异常事件,或者一些随机发生需要马上处理的事件,引起CPU暂时停止现在程序的执行,转向另一服务程序去处理这一事件,处理完毕再返回原程序的过程由机器内部产生的中断,我们把它叫做陷阱(内部中断),由外部设备引起的中断叫外部中断当前世界上大多数计算机的中央处理器由下述两种方法实现:(1)采用半导体公司(工厂)生产的微处理器构成通用的或专用的计算机系统以及工作站等当前微处理器芯片已从16位,32位发展到64位结构2)一些计算机公司采用自行设计的制造的CPU芯片来构成大、中、小型计算机的CPU随着VLSI的出现和发展,芯片集成度显著提高,价格不断下降,从而提高了计算机的性能价格比,使得过去在大、中型计算机中才采用的硬件技术(例如流水线技术、并行处理技术、高速缓冲存储器(cache)和虚拟存储器等),下移到小型和微型计算机系统中来,银耳市大、中、小、微型计算机的分界面不断发生变化,界限随时代而趋向消失 计算机进行信息处理的过程分为两个步骤:首先将一部分数据和程序输入到计算主存储存器中,然后从“程序入口”开始执行该程序,得到所需要的结果后,结束运行。
程序运行”指的是该程序开始执行的第一条指令的地址,控制器的作用是协调并控制计算机的各个部件执行该程序的指令序列1.2 实验环境PC机Quartus Ⅱ5.11.3 主要成果1.实现了一个8位双总线简单模型机2.可以执行加法运算,在设定的仿真参数下,能得到正确的运行结果2 实验方法2.1 总体说明本次试验设计的CPU为8位双总线简单模型机,如图1所示其主要组成部分有:时序控制信号形成部件、通用寄存器GR、运算器ALU、地址寄存器AR、数据寄存器DR、指令寄存器IR、程序计数器PC另外,还有存放微指令的存储器ROM,和存放指令的存储器RAM 图 1为CPU成品封装图图 1 CPU(封装图)CPU的输入\输出信号说明如表 1所示表 1 CPU输入\输出信号的说明引脚名称说明输入端EN使能端(低电平有效)CLK时钟信号CHUSHISHUJU[7..0]输入GR的运算数据GR_A[1..0]选择A口通用寄存器GR_B[1..0]选择B口通用寄存器GR_WR读写控制信号GR_A_RNA口使能端GR_B_ENB口使能端输出端OUT[7..0]计算结果M[1..4]时钟控制信号T[1..8]时钟控制信号CPU原理图如Error! Reference source not found.所示(图2与原图不完全相同,原图中有设计中加入的检测信号等端口,但主要功能及输出端一样),图中各个部件的主要功能如下。
1)控制器:包括有MIP2_4_8时钟发生器:产生有节拍的时钟脉冲,供CPU中各个元件工作;程序计数器PC:初始化CPU,并在执行一条微指令后加一;指令寄存器IR:存放当前正在执行的指令;微指令寄存器uIR:存放正在执行的微指令;AR和DR:分别存放地址和数据2)存储器:ROM中存放微指令,RAM中存放指令(设想是把数据也存放在RAM中,但没有实现,最后在采用在GR端直接输入的方式)3)运算器ALU:进行数据的运算60微指令编码根据《计算机组成原理与结构(第4版)》第183页表6.1确定,此处不再赘述2.2 各部分说明2.2.1 时序控制信号形成部件2.2.1.1 总体说明当机器启动后,在CLK时钟作用下,根据当前正在执行的指令的需要,产生相应的时序控制信号,并根据被控功能部件的反馈信号调整时序控制信号图 2是时序控制信号形成部件图 2 控制信号形成部件2.2.1.2 具体部件说明1、MTP1_4部件该部件的核心部分为74379芯片,74379芯片是一个双边输出公共使能四D锁存器, 该部件原理图如图 3所示图 3 MTP1_4部件原理图2、MIP_BDEF部件该部件核心芯片为74273芯片,74273芯片为带公共时钟复位八D触发器,其功能表如下:表 2 74273功能表输入输出CLRCLKDQ0XXX1↑111↑0010XQ0该部件原理图如图 4所示:图 4 MTP_BDEF部件原理图3、MTP2_4_8原理图该部件核心部分即为上述的MTP1_4部件和MTP_BDEF部件,其原理图如图 5所示:图 5 MIP2_4_8芯片原理图将该原理图封装后即为实验所需要的时序控制信号形成部件。
2.2.1.3 测试报告该部件测试后的波形图如图 6所示:图 6 时序控制部件波形图2.2.2 指令寄存器IR指令寄存器IR,用以存放当前正在执行的指令,一边在指令执行过程中,控制完成一条指令的全部功能图 7即指令寄存器图 7 控制寄存器(封装图)实验所用指令寄存器是由两片74194封装而来,74194是一种常用的4位双向寄存器,其功能表如下:表 3 74194功能表输入输出CLRN CPS1 S0SRSI SRSID C B AQd Qc Qb Qa0 dd dd dd d d d0 0 0 01 0d dd dd d d dQd Qc Qb Qa1 ↑1 1d dx3 x2 x1 x0x3 x2 x1 x01 ↑0 11 dd d d d1 Qd Qc Qb1 ↑0 10 dd d d d0 Qd Qc Qb1 ↑1 0d 1d d d dQc Qb Qa 11 ↑1 0d 0d d d dQc Qb Qa 01 d0 0d dd d d dQd Qc Qb QaIR原理图如图 8所示:图 8 指令寄存器原理图测试后波形图如图 9所示:图 9 指令寄存器测试波形图2.2.3 程序计数器PC2.2.3.1 总体说明程序计数器即指令地址寄存器。
在某些计算机中用来存放当前正在执行的指令地址;而在另一些计算机中则用来存放即将要执行的下一条指令地址;而在有指令预取功能的计算机中,一般还要增加一个程序计数器用来存放下一条要取出的指令地址程序计数器用以指出下条指令在主存中的存放地址,CPU根据PC的内容去主存取得指令因程序中指令是顺序执行的,所以PC有自增功能该部件最终的封装图如图 10所示:图 10 PC原理图(封装图)该部件的功能如下:1、 当CLR为高电平时,计数器清零2、 当CLR为低电平时,给CP一个时钟信号(上升沿有效)后,计数器加一程序计数器的核心部件是74193芯片,74193即集成计数器2.2.3.2 74193芯片说明1、74193管脚排列图及逻辑符号分别如图(a)、(b)所示2、74193芯片引脚功能表 4 74193芯片引脚说明引脚名称功能输入端CLR#LDD C B ACPU↑CPD↑清除预置控制预置初始值累加计数脉冲(正脉冲)累减计数脉冲(正脉冲)输出端QD QC QB QA#QCC#QCB计数值进位输出(负脉冲)借位输出(负脉冲)3、74193芯片功能表表 5 74193功能表输入输出CLR#LDD C B ACPU CPDQD QC QB QA1000d011d d d dX3 X2 X1 X0d d d dd d d dd dd d↑ 11 ↑0 0 0 0X3 X2 X1 X0累 加 计 数累 减 计 数表中,CLR为高电平,计数器清“0”;#LD为低电平,计数器预置D、C、B、A输入值;计数脉冲由CPU 端输入时,累加计数;计数脉冲由CPD端输入时,累减计数。
2.2.3.3 PC部件原理图程序计数器原理图如图 11所示:图 11 PC原理图该原理图封装后即得到所要的PC图2.2.3.4 测试报告该部件测试后的波形图如图 12所示图 12 PC测试波形图2.2.4 只读存储器ROM只读存储器ROM用来存放微指令,芯片如图 13所示图 13 ROM(封装图)ROM输入\输出信号如下表所示:表 6 ROM输入\输出信号的说明引脚名称说明输入端address[7..0]地址输入Inclock读入脉冲(上升沿有效)Outclock输出脉冲(上升沿有效)输出端q[31..0]存储器内容其各属性选择如下所示:1、确定输出宽度为32位,容量为16(即地址为8位),控制信号为双时钟信号图 14 创建ROM(1)图 15 创建ROM(2)2、选择ROM存储文件图 16 创建ROM(3)图 17 创建ROM(4)存储器内容文件为rom_a.mif,用来存放ROM的数据,如下图所示:图 18 ROM内容文件2.2.5 控制寄存器uIR 控制存储器用于控制和确定处理器的操作模式以及当前执行任务的特性,如图 19所示图 19 uIR(封装图)控制寄存器的输入\输出信号如下表所示:表 7 uIR输入\输出信号的说明引脚名称说明输入端A[31..0]并行数据输入CLK工作脉冲输出端PC_AB等等寄存器状态控制寄存器为32位,由8片74194封装而来,其原理图如图 20所示。
图 20 uIR原理图uIR测试波形图因为微指令较多较长,在图22中不便表述,在此略去2.2.6 随机存储器RAM随机存储器用来存放指令,芯片如图 21所示:图 21 RAM(封装图)RAM输入\输出信号如下表所示:表 8 RAM输入\输出信号的说明引脚名称说明输入data[7..0]写入数据Wren读写信号(1写0读)address[7..0]读写地址Inclock读入脉冲(上升沿有效)Outclock输出脉冲(上升沿有效)输出q[7..0]存储器内容其各属性选择如下所示:1、确定输出宽度为24位,容量为256(即地址为8位),控制信号为双时钟信号图 22 创建RAM(1)图 23 创建RAM(2)2、选择RAM存储文件图 24 创建RAM(3)图 25 创建RAM(4)存储器内容文件为ram0.mif,用来存放ROM的数据,如下图所示:图 26 RAM内容文件2.2.7 通用寄存器GR2.2.7.1 总体说明通用寄存器组由8个寄存器构成,并通过A口与B口地址选择被读的寄存器,B口地址还用于指定写入寄存器该部件最终的封装图如图 27所示:图 27 通用寄存器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(锁存器)实现数据的锁存其原理图如图 28所示:图 28 A74373部件2、TRI8该部件是由八个三态门组成的,其功能与TRI81部件一致3、74138芯片说明该芯片是一个3-8线(3输入8输出)译码器图(a)、(b)所示分别是74138型3-8线译码器的管脚排列图和逻辑符号74138的真值表如下所示:表 9 74138真值表输 入S2 SN1+SN0 A2 A1 A0输 出YN0 YN1 YN2 YN3 YN4 YN5 YN6 YN71 0 0 0 01 0 0 0 11 0 0 1 01 0 0 1 11 0 1 0 01 0 1 0 11 0 1 1 01 0 1 1 10 d d d dd 1 d d d 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 14、GR的总体原理图如Error! Reference source not found.所示:图31该原理图封装后即得到所要的GR图2.2.7.3 测试报告该部件的测试波形图如图 29所示。
图 29 测试波形图2.2.8 三选一 多路选择器又称数据选择器或多路开关,它是一种多路输入、单路输出的组合逻辑电路,其逻辑功能是从多路输入中选中一路送至输出端,输出对输入的选择受选择控制变量控制图 30是实验所用3路选择器图 30 MUX31(封装图)3路选择器MUX21的功能表如下表所示表 10 3路MUX31的功能表选择输入数据输入输出SELl SEL2A[7...0] B[7..0] C[7..0]Y[7..0]0 0A d dA0 1d B dB1 0d d CC1 1d d CC3路选择器MUX21的原理图如图 31所示图 31 3路MUX31的原理图由图可见3路MUX31由8片4路MUX74153组合而来图(a)、(b)是型号为74153的双4路选择器的管脚排列图和逻辑符号该芯片中有两个4路选择器其中,D0~D3为数据输入端;A1、A0为选择控制端;Y为输出端;G为使能端。
4路数据选择器74153的功能表如下表所示表 11 74153的功能表选择控制输入数据输入输出A1 A0D0 D1 D2 D3Y0 0D0 d d dD00 1d D1 d dD11 0d d D2 dD21 1 d d d D3D33路MUX31的测试波形图如图 32:图 32 3路MUX31的波形图2.2.9 二选一多路选择器又称数据选择器或多路开关,它是一种多路输入、单路输出的组合逻辑电路,其逻辑功能是从多路输入中选中一路送至输出端,输出对输入的选择受选择控制变量控制图 33是实验所用2路选择器图 33 MUX21(封装图)2路选择器MUX21的原理图如图 34所示图 34 3路选择器MUX21的原理图由图可见2路MUX21由8片2路MUX74158组合而来,74158的功能表如表所示表 12 2路MUX31的功能表使能输入选择输入数据输入输出GNSELA BY1dd d000A dA01d BB2路MUX21测试波形图如图 35所示。
图 35 2路MUX21波形图2.2.10 运算器ALU2.2.10.1 总体说明计算机中执行各种算术和逻辑运算操作的部件运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦 称算术逻辑部件(ALU)计算机运行时,运算器的操作和操作种类由控制器决定运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中实验中设计了一个8位ALU,可以执行加、减、与、或四种运算其封装图图 36所示:图 36 ALU(封装图)该ALU运算部件的功能表如下表 13 ALU功能表输入输出s1 s0A[7..0] B[7..0]F[7..0] COUT0 00 11 01 1输入数据 输入数据A+B 进位A-B 借位A∩B 0A∪B 0原理图如下图40:图402.2.10.2 ALU测试波形图图 37 ALU测试波形图2.2.11 数据寄存器DR数据寄存器是CPU中不可少的元件,用来暂存各种数据,只要不写入其他数据,已写入的数据不会变化。
其芯片如图 382所示图 38 数据寄存器(封装图)数据寄存器输入\输出信号如下表所示:表 14 DR输入\输出信号的说明引脚名称说明输入端A[7..0]并行数据输入CLK工作脉冲WR读写控制信号输出端Q[7..0]寄存器的状态实验所用数据寄存器也是由两片74194封装而来,74194功能表如2.2.2中表 3所示 DR原理图如图 所示:图 43 数据寄存器原理图2.2.12 地址寄存器AR 地址寄存器用来保存当前CPU所访问的内存单元的地址由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止图 44 地址寄存器(封装图)数据寄存器输入\输出信号如下表所示:表 15 DR输入\输出信号的说明引脚名称说明输入端A[7..0]并行数据输入CLK工作脉冲WR读写控制信号输出端Q[7..0]寄存器的状态实验所用指令寄存器是由两片74194封装而来,74194功能表如2.2.2中表3所示AR原理图如下:图 45 地址寄存器原理图测试后波形图如Error! Reference source not found.所示:2.2.13 八位三态门TRI81该部件是由8个三态门封装而成的,其封装图如下图 46 TRI81封装图当CH为高电平时,Y才将A中的数据输出。
其原理图如下图 47 TRI81原理图2.3 测试报告2.3.1 微码设计这个实验中,我们用设计出来的CPU实现一条加法指令这条加法指令将存储器里相应址里的数取出来,和一个立即数进行加法运算后送到通用寄存器里由此得到实现该加法指令所需的4条微码如下:1、 0000 00000 0000 1000 00 111002、 0000 00000 0000 1000 00 111003、 1000 10001 0001 0000 00 000002.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执行指令的整个工作流程的认识和理解,这是平时的理论学习远远不能及的在其中我们遇到了很多的困难,特别是时序信号和工作脉冲如何控制各部件的工作上面犯了许多错误。
但是在这次实验中,小组成员积极商量,共同讨论解决方案,也正是小组内部和小组之间的相互学习和沟通促使了我们实验的圆满成功最终,由于能力的有限,此次实验我们只实现了比较简单的几个指令因为对CPU掌握还不熟悉,有很多欠缺的地方所以,对此的学习不能随着《计算机组成与结构》这门课和实验的结束而终止3.2 取得的收获通过那一个星期的实验,加上课下的努力奋战,我们终于完成了实验目标在此过程中,我们从最初的完全不知从哪下手到现在做出了完整的东西,我学到了很多从刚拿到实验任务时的迷茫毫无头绪,到刚接触Quartus II,学会用最基本的门电路实现各种简单的功能时的新奇,再到综合运用各种器件设计实现通用寄存器、控制信号发生器等比较复杂的功能时的成就感,期间我们付出了很多的努力在实验前,我们对Quartus几乎一无所知,通过老师的教导和自己的摸索,很快我们就能熟练操作使用Quartus设计器件每天我们都早早地去实验室,一呆就是一整天,每次我们都带上课本,一面复习学过的知识一面应用到设计中在设计微指令时,我们按照课本上的CPU简图一条一条的写指令,对于这个实验要完成的目标也有了透彻的了解紧接着,一点一点地,我们设计了一个又一个功能块,将它们接到总的设计图上。
当然,其中少不了挫折,也少不了弯路还好大家不气馁,抱着一定能做出来的认真态度,团结协作,最终交出了满意的答卷在实验的过程中,我们得到了许多老师的帮助和指导,他们耐心地解答我们的疑问,以使我们更好地完成实验,要真诚地感谢他们由于缺乏经验,我们在实验中暴露出许多不足第一,对实验困难估计不足,计划不完备,由于时间比较紧迫,又恰逢本学期学业负担较重及经验的不足,使我们在动实验出现问题时束手无策,并最终对原实验计划进行了改动第二,动手操作能力差,造成实验的人为差错引起不必要的误差和损失第三,由于对基础知识的掌握不够甚至缺少某一方面的专业知识,使我们对有些实验现象无法解释实验结束了,但实验中我们的经历却是我们的财富,也许会对我们以后的工作有积极的影响感谢学校给我们这样难得的机会,也感谢老师们对我们的帮助和指导3.3 意见与建议意见:只有一个星期的实验时间比较仓促建议:提供更为丰富资料,实例4 参考文献1. 《数字逻辑》第三版,欧阳星明主编,华中科技大学出版社a) 《计算机组成与结构》第4版,王爱英主编,清华大学出版社5 组员分工许洋:总体结构框图的设计,控制器部分的设计王滢:存储器的设计,控制器部分的设计,报告的书写。
殷丽:运算器的设计,报告的书写刘博文:控制器部分的设计,报告的书写。