《基本模型计算机设计与实现-毕业论文.doc》由会员分享,可在线阅读,更多相关《基本模型计算机设计与实现-毕业论文.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 计算机组成原理课程设计 课程设计说明书 课程设计名称: 计算机组成原理 课程设计题目: 基本模型计算机设计与实现 学 院 名 称: 信息工程学院 专业: 计算机科学与技术 班级: 学号: 姓名: 袁东 评分: 教师: 20 15 年 6 月 日1 摘要 随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,现场可编程(FPGA)技术含量正以惊人的速度上升。特别是随着VHDL 等硬件描述语言综合工具功能和性能的提高,计算机中许多重要的元件,包括CPU 都用硬件描述语言来设计和表达。GW48 C+计算机组成原理实验台采用模块化
2、的系统结构,本文通过一系列基本单元实验和模型计算机综合设计,对CPU 的运算功能、控制功能、总线结构、指令系统的设计和微指令的实现,最终形成一个功能较为完整的片上模型计算机系统, 在进行各个单元实验和综合实验时,既可以通过系统计算机进行综合设计,Quartus-软件仿真、观察仿真波形,更重要的是可以在GW48 CP+实验平台上,将设计的CPU 电路下载到FPGA 中进行硬件仿真。观察CPU 内部的各种信息:包括数据总线、地址寄存器、程序计数器、指令译码器、指令寄存器、控制信号、内部寄存器、数据寄存器、微指令存储器LPM_ROM中的数据等,实时观察每条指令及微指令的执行情况,从而对计算机的原理、
3、结构,从部件到系统,直到计算机整机有一个形象的、生动的、本质的认识。关键字:FPGA、模型机、微程序控制、Quartus- 前言计算机组成原理是计算机科学技术学科的一门核心专业基础课程。从课程的地位来说,它在先导课程和后续课程之间起着承上启下的作用。再结合着所学的数字逻辑以及电路的相关知识,就基本上对现代计算机的组成结构和原理有了一定的理解,此次的课程设计便是一次将理论应用到实际的一个非常好的机会。并且可以加深对计算机的时间和空间概念的理解,增强对计算机硬件和计算机指令系统的更进一步了解。 美国一些知名大学计算机实验室,那里计算机方面的硬件实验,包括计算机组成原理实验早已不用那种传统接插式实验
4、,而是全部采用EDA 技术进行所有的软硬件实验!显然,使用大规模 FPGA、EDA 软件工具和IEEE 标准硬件描述语言构建的现代计算机组成原理实验系统取代传统的计算机组成原理实验已成为势在必行。利用 FPGA 技术,在实验中能方便灵活地设计出简单完整的模型机。基于查找表硬件结构的商用FPGA 是当前进行快速系统原型设计最流行的ASIC 手段。ALTERA 的ACEX 系列FPGA 产品具有片上EAB,可以构成构成各种类型的存储器结构,利用在其内部的LPM 可以实现微程序控制和管理复杂逻辑电路。本次课程设计便是在GW48 C+平台上实现的 ,首先用Quartus- 软件对基本模型机的各个组成部
5、分进行设计仿真,然后将各个部分有机的组合起来,形成一个可以完成某些操作的CPU,在软件上仿真成功之后,下载到平台上然后具体的在硬件上实现各个功能。 目录第一章 设计内容及要求.4 1.1 设计任务.4 1.2 设计要求.4第二章 系统组成及工作原理.5 2.1 系统组成.5 2.2 工作原理.5第三章 系统设计.10 3.1 CPU顶层设计.10 3.2 取指令和指令译码.12 3.3 设计微代码表.12 3.4控制执行单元.14第四章 系统调试和分析.15 4.1 模型机的软件执行.15 4.2 模型CPU的硬件仿真.15第五章 总结.18 参考文献.19附录.20 第一章 设计内容及要求1
6、.1 设计任务 (1) 定义五条机器指令,并编写响应的微程序作为模型计算机的控制器; (2) 使用电路框图设计模型计算机电路,并下载编程芯片为定制的简单模型 CPU;(3) 在实验系统上连接输入按键和输出显示为输出的模型计算机系统。 1.2 设计要求 (1) 深入理解基本模型计算机的功能和组成知识; (2)深入学习计算机各类典型指令的执行流程 (3)学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法; (4)掌握微程序的设计方法,学会编写二进制微指令代码表; (5)在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一 台基本模型计算机。 第二章 系统组成及工作原理2
7、.1系统组成 模型机主要由算术逻辑运算单元ALU, 数据暂存寄存器DR0、DR1, 数据寄存器R0 R2, 程序计数器PC, 地址寄存器AR, 程序/数据存储器RAM, 指令寄存器IR, 微控制器,输入单元INPUT和输出单元OUTPUT 所组成。如其功能模块框图2-1 所示。图中虚线框内部分包括运算器、控制器、程序存储器、数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA 中实现。虚线框外部分主要是输入/输出装置,包括键盘、数码管、LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及观察CPU 内部工作情况及运算结果。 图2-1模型机通路框图 2.2工作原理本模型
8、能在微过程控制下自动产生各部件单元控制信号,实现特定的功能。模型中,计算机数据通路的控制将由微过程控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。(1) 指令系统。本实验采用五条机器指令。指令编码如下表: 表2.1 指令编码助记符操作码addr地址码功能描述IN00H“INPUT”R0,键盘输入数据ADD addr10HXXHR0+addr R0STA addr20HXXHR0addrOUT addr30HXXHBUS“OUTPUT”,显示输出数据JMP addr40HXXHaddrPC指令分单字节和双字节
9、,单字节指令只有IN一条,其余都是双字节指令。指令各式如表2.2和表2.3。表2.2 单字节指令格式7 6 5 43 21 0操作码源寄存器目的寄存器 表2.3 双字节指令格式7 6 5 4 3 2 1 07 6 5 4 3 2 1 0操作码操作数(内存地址码)源和目的寄存器可以是三个工作寄存器之一,寄存器标号R0为00,R1为01,R2为10。为了在试验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了3个控制台操作命令,通过按键SWB 和SWA组合实现(括号中是SWB,SWA的键值): 1.存储器读操作(KRD):下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“
10、0 0”时,可对RAM连续手动读入操作。2.存储器写操作(KWE):下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“0 1”时,可对RAM连续手动写操作。3.启动程序(RP):下载实验程序后按总清除按键(CLR)后,控制台SWA、SWB为“1 1”时,即可转入到微地址“01”号“取指令”微指令,启动程序运行。(2)模型计算机硬件模型机硬件有以下部分组成:运算器:采用8位运算器ALU181,实现算术逻辑运算。该电路的两个操作数输入端设置两个寄存器DR0和DR1。程序计数器PC:用来指示执行指令的地址,以便从内存取得指令。地址寄存器AR:存放并输出访问内存单元的地址。指令寄存器IR
11、:锁存取得的指令,供控制电路解码分析执行。此外,还提供了3个工作寄存器R0,R1和R2。存放可编程程序和数据的存储器RAM也在芯片上实现(像单片机一样)。各个功能模块通过总线连接。控制器采用微程序设计。整个模型机各功能部件的工作及通路连接的微操作代码如表2.4和表2.5所示。采用字宽24位的ROM存放微程序,3个3-8译码器组成24位输出译码电路。表2.4 24位微代码定义24232221201918171615 14 1312 11 109 8 7654321S3S2S1S0MCnWEA9A8A字段B字段C字段uA5uA4uA3uA2uA1uA0操作控制信号译码器下址字段表2.5微指令译码字
12、段说明A字段B字段C字段151413选择121110选择987选择000000000001LDRi001RS_B001P(1)010LDR1010RD_B010P(2)011LDR2011RJ_B011P(3)100LDIR100SFT_B100P(4)101LOAD101ALU_B101LDAR110LDAR110PC_B110LDPC24位微代码信号的功能解释如下: S3-S1,ALU的操作选择信号,控制执行16种算术逻辑操作之一种; M,ALU操作方式选择,等于O为算术操作,等于1时执行逻辑操作; CN ,进位标志,等于0时,最低位有进位输入,等于1表示无进位; WE,控制RAM的读写信
13、号,0值为读,1值为写; A9,A8,经译码产生键盘SW_B,存储器RAM,输出显示LED通路选择信号; A字段, 经译码产生各部件从总线输入选通信号,参考表2.5; B字段, 经译码产生各部件到总线输出选通信号,参考表2.5; C字段, 经译码产生测试转移P1P4,装入程序计数器LDPC,参考表3-18; A5A0,微程序地址信号(3) 微程序设计 微程序的设计是根据运行指令微程序流程图设计出来的,因此在设计微程序时,必须先画好运行指令微程序流程图,该模型机的微指令程序流程图如图2-2所示。 图2-2微程序流程图 1. IN 指令 根据PC里面的地址将其存放到地址寄存器中,然后根据地址寄存器
14、中的地址找到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:计数器的值加一,指向这条指令的
15、地址码, 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,以紧跟在操作码后的字节的内容作为转移地址
16、。将该字节的内容送给程序计数器PC,实现程序的转移:ARPC,PCPC+1 ;以PC 的内容作为取数据的地址BUSRAM,PCBUS ;将RAM 内容送PC,实现程序转移将每一条指令的微操作编辑在一起,就得到全部指令的微程序流程图,如图2-2所示。 第三章 系统设计3.1 CPU 顶层设计 根据图2-1将各个部件设计出来,然后进行仿真,仿真成功之后,将各个部件通过总线连接起来,完成顶层的设计。 算术逻辑单元ALU 是ALU181,其运算功能与74LS181 类似,但用VHDL 语言编写,是一个8 位的运算器。,其代码如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.
17、ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO : OUT ST
18、D_LOGIC; FZ : OUT STD_LOGIC );END ALU181;ARCHITECTURE behav OF ALU181 ISSIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN A9 = 0 & A ; B9 IF M=0 THEN F9=A9 + CN ; ELSE F9 IF M=0 THEN F9=(A9 OR B9) + CN ; ELSE F9 IF M=0 TH
19、EN F9=(A9 OR (NOT B9)+ CN ; ELSE F9 IF M=0 THEN F9= 000000000 - CN ; ELSE F9 IF M=0 THEN F9=A9+(A9 AND NOT B9)+ CN ; ELSE F9 IF M=0 THEN F9=(A9 OR B9)+(A9 AND NOT B9)+CN ; ELSE F9 IF M=0 THEN F9=A9 -B9 - CN ; ELSE F9 IF M=0 THEN F9=(A9 AND (NOT B9) - CN ; ELSE F9 IF M=0 THEN F9=A9 + (A9 AND B9)+CN ;
20、 ELSE F9 IF M=0 THEN F9=A9 + B9 + CN ; ELSE F9 IF M=0 THEN F9=(A9 OR (NOT B9)+(A9 AND B9)+CN ; ELSE F9 IF M=0 THEN F9=(A9 AND B9)- CN ; ELSE F9 IF M=0 THEN F9=A9 + A9 + CN ; ELSE F9 IF M=0 THEN F9=(A9 OR B9) + A9 + CN ; ELSE F9 IF M=0 THEN F9=(A9 OR(NOT B9) +A9 + CN ; ELSE F9 IF M=0 THEN F9=A9 -CN ;
21、 ELSE F9 F9= 000000000 ; END CASE; IF (A9=B9) THEN FZ = 0 ; ELSE FZ = 1; END IF; END PROCESS; F= F9(7 DOWNTO 0) ; CO = F9(8) ;COUT = 0000 WHEN F9(8) = 0 ELSE 0001 ;END behav;ALU 的两个8 位数据输入端的数据暂存器DR1 和DR2,则用LPM 模块数据锁存器lpm_latch 构成,为ALU 提供运算数据。程序存储器和数据存储器 程序存储器和数据存储器共用一个存储器RAM。用lpm_ram_dq 模块来实现。数据线为8
22、位,地址线也为8 位。存储器的数据输入端直接与内部总线相连,数据输出端通过三态缓冲器与内部总线相连,地址总线h和地址寄存器AR连接。采用锁存器结构,调用lpm_latch 实现。程序计数器PC 用了LPM 可预置计数器实现。RST为复位端,高电平PC 清零,低电平计数器工作,CLK 为计数时钟。LOAD为数据预置加载控制端,LOAD 为低电平时,计数器正常计数;LOAD 端为高电平时,向计数器加载数据。数据输入端d7.0直接与内部总线连接,数据输出端q7.0 通过三态缓冲器与内部总线相连。指令寄存器IR 和输出锁存器也都采用lpm_latch 模块。微指令译码器decoder_A、decode
23、r_B、decoder_C 内部都采用3-8 译码器结构。其作用是对24 位微指令中的A、B、C 字段进行指令译码。A 字段译码后输出的信号主要用于控制向寄存器或锁存器输入数据;B 字段译码后输出的信号主要用于控制运算器、寄存器或锁存器,并通过三态门向内部数据总线输出数据;C 字段译码后输出的信号主要用于指令分支判断。时序控制电路 用于产生程序运行时所需的时钟节拍。 3.2 取指令和指令译码1. 取指令阶段 (1)将程序计数器(PC)中的内容通过总线送至存储器地址寄存器(AR),(2)PC 的内容递增,为取下一条指令做好准备。(3)由控制单元(CU)经控制总线(CB)向存储器发读命令。(4)根
24、据地址寄存器中的地址将对应存储空间的指令取出通过总线放到指令寄存器中。2. 分析取数阶段(5)指令寄存器(IR)中的内容送指令译码器(ID)进行指令译码。(6)指令译码器(ID)的内容送操作控制器。(7)操作控制器产生执行指令的微控制。3. 执行阶段执行指令阶段完成指令规定的各种操作。执行阶段完成任务的时间称为执行周期。计算机的基本操作过程就是取指令、取操作数、执行指令,然后再取下一条指令如此周而复始,直至遇到停机指令或外来的干预为止。3.3 设计微代码表微指令代码的设计方法是,首先设计微代码空表,然后逐项确定其中的内容。步骤如下:(1)填写微地址。从00 开始,按顺序依次填写表中的第一列微地
25、址。(2)确定下地址uA5uA0。根据微指令流程图中设定的微地址,将每一条微指令的下一条微指令的微地址填入该微指令的uA5uA0 栏内。(3)确定操作控制信号。根据表2.4和表2.5 中规定的24 位微代码的定义,确定每一条微指令的操作控制信号字段和A、B、C 译码字段,将控制信号的编码填入表中对应栏内。(4)确定微指令码。将已确定的24 位微代码转换成十六进制形式,写入表中第二列微指令栏内,并将其标注在微程序流程图每一个微操作框的右上角。这样就得到了如图3-1 所示完整的微程序流程图和表3.1 所示的微代码表。根据微代码表,将微指令码写成存储器初始化文件(.mif),并将其放在LPM_ROM
26、中后,就能在该CPU 的指令系统范围内设计各种应用程序。例如,此CPU 设定的指令系统共由五条指令组成,那么应用程序可以由这五条指令中的任何几条指令组成。 图3-1 运行指令微程序流程图 表3.1 微代码表微地址微指令S3 S2 S1 S0 M CN WE A9 A8 ABCA5A0000181100 0 0 0 0 0 0 1 10000001000100000101ED820 0 0 0 0 0 0 1 11101101100000100200C0480 0 0 0 0 0 0 0 11000000010010000300E0040 0 0 0 0 0 0 0 11100000000001
27、000400B0050 0 0 0 0 0 0 0 10110000000001010501A2060 0 0 0 0 0 0 1 101000100000011006919A011 0 0 1 0 0 0 1 10011010000000010700E00D0 0 0 0 0 0 0 0 1110000000001101100010010 0 0 0 0 0 0 0 00010000000000011101ED830 0 0 0 0 0 0 1 11101101100000111201ED870 0 0 0 0 0 0 1 11101101100001111301ED8E0 0 0 0 0
28、0 0 1 11101101100011101401ED960 0 0 0 0 0 0 1 1110110110010110150382010 0 0 0 0 0 0 1 10000010000000011600E00F0 0 0 0 0 0 0 0 11100000000011111700A0150 0 0 0 0 0 0 0 10100000000101012001ED920 0 0 0 0 0 0 1 11101101100100102101ED940 0 0 0 0 0 0 1 11101101100101002201A0100 0 0 0 0 0 0 1 10100000000100
29、00230180010 0 0 0 0 0 0 1 1000000000000001240620110 0 0 0 0 1 1 0 001000000001000125010A010 0 0 0 0 0 0 1 00001010000000012600D1810 0 0 0 0 0 0 0 11010001100000013.4控制执行单元如图3-2所示,微程序控制器主要由控制存储器ROM、微指令寄存器uIR 和微指令地址形成部件uAR 三部分组成。控制存储器用于存放指令系统所对应的全部微程序微指令寄存器IR 用来存放从控制存储器读出的一条微指令的信息微指令地址形成部件又称微指令地址发生器,用
30、来形成将要执行的下一条微指令的地址,简称微地址。 图3-2 控制器 第四章 系统调试和分析4.1 模型机的软件执行 表4.1 机器指令试验程序存储器地址内容助记符说明00H00HIN“INPUT”R0,键盘输入数据01H10HADD0AHR0+0AHR002H0AH03H20HSTA0BHR00BH04H0BH05H30HOUTOBH0BH“OUTPUT”,显示输出数据06H0BH09HPC,以08H内容为转移地址07H40H JMP08H08H00H 09H00H 0AH34HDB 34H被加数0BHXXH求和结果表4.1 中的第一条指令IN 是一条输入指令。它需要两个CPU 周期,其中取指
31、令阶段需要一个CPU 周期,执行指令阶段需要一个CPU 周期。(1)取指令阶段CPU 的动作如下: 指令程序计数器PC 的内容00H 装入地址寄存器AR。 PC 的内容加1,变成01H,为取下一条指令做好准备。 地址寄存器AR 指向内存00H 单元,取出此单元中的内容“00H”,传送到数据总线。 00H 单元的内容00H 传送到寄存器IR。 IR 中的内容送到指令译码器ID 进行译码。 译码结果送操作控制器(时序发生器)。 操作控制器识别出是一个输入指令,于是输出控制命令。取指令阶段结束。(2)执行指令阶段CPU 的动作如下: 操作控制器送出控制信号给输入单元,打开输入三态门,输入数据送到数据
32、总线。 将输入的数据送数据寄存器R0。至此,IN 指令执行完毕。4.2 模型CPU 的硬件仿真在在硬件上进行测试时,首先要进行波形仿真,在仿真的过程中可以发现存在的问题,及时的进行解决,这样可以减少在实际的硬件测试时的麻烦。给各个输入的信号适合的激励波形,然后开始启动仿真。仿真波形如下: 图 4-1仿真波形 (1) 按 1 次系统复位键 8,并置键 8 为高电平,使 CPU 允许正常工作; (2)控制开关(键4、键3)设置为SWB、SWA=1,1,处于程序执行方式, 控制台:RP (11) ; (3)通过键2、键1 输入运算数据,如56H, (4)然后每按键7两次产生一个STEP单步脉冲,跟踪机器指令和微指令程序的执行。执行轨迹如表所示。 表4.2机器指令试验程序执行情况 STEPMCPCIRuA0101811000230201800100010301ED820102第一次取指 PC_B、LDAR、LDPC(pc+1)、取指令的操作码0400C048010010LDIR将指令送入指令寄存器05001001010001键3,键4的值被输入R00601ED82020002第二次取指 PC_B、LDAR、LDPC(pc+1)0700C048021011LDIR