《计算机组成原理课程设计基于EDA和FPGA技术的8位模型计算机的设计与实现.doc》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计基于EDA和FPGA技术的8位模型计算机的设计与实现.doc(17页珍藏版)》请在三一办公上搜索。
1、目录前言2第一章 课程设计内容21.1 实验要求21.2 实验目的2第二章 实验原理及方案22.1 实验原理22.2 实验方案22.2.1 指令系统.52.2.2 模型计算机硬件62.2.3 微指令设计62.2.3.1 微代码定义62.2.3.2 微代码具体设计72.2.4 控制台解释微程序82.2.5 运行指令流程图2第三章 具体设计过程93.1 各个主要基本部件设计23.1.1 算术逻辑部件(ALU)23.1.2 程序计数器(PC)23.1.3 寄存器23.1.4 存储器23.2 模型机顶层框图设计2第四章 程序测试和指令调试24.1 波形仿真24.2 实验调试2第五章 设计总结与体会2参
2、考文献2前言计算机诞生以来,计算机还是主要由运算器、控制器组成CPU,用二进制数字表示计算机的操作指令和数据,将其存放在存储器中,通过CPU自动地从存储器提取指令和数据,并按照指定的顺序完成各项任务。这也改变了又来人们的生活。同事随着大规模集成电路技术的开发,计算机组织设计与实现技术也在不断发展。现在,不仅软件可编程,硬件电路也可以编程所以,在这个时候,我们更要注重一台电子计算机的整体模型,而不是一味的强调怎样去追求这个时代的计算机发展速度。这已经成为我们为更新计算机硬件的必备知识。让学生通过动脑和动手解决计算机设计中的实际问题,本次课题设计便是为此应运而生的。在这次课程设计当中,我们需要结合
3、计算机组成原理的基本理论,利用EDA技术和FPGA技术设计实现一个8位模型计算机。因此,我们需要掌握ALU,微程序控制器,时序产生电路,数据通路,存储器,指令系统单元电路的设计方法,并且在此基础上,进一步将单元电路组成系统,构造一台基本模型计算机。本报告便是通过对各关键部位进行单元和集成仿真测试后,下载到目标芯片里,最终形成一个功能较为完善的8位模型计算机系统。第一章 课程设计内容1.1 实验要求在Quartus 6.0上完成8位模型机的设计。具体的要求如下:(1)在定义五条机器指令,并编写响应的微程序作为模型计算机的控制器;(2)使用电路框图设计模型计算机电路,并下载编程芯片为定制的简单模型
4、CPU. (3)在实验系统上连接输入按键和输出液晶显示屏为输出的模型计算机系统。1.2 实验目的(1)深入理解基本模型计算机的功能和组成知识;(2)深入学习计算机各类典型指令的执行流程;(3)学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法;(4)掌握微程序的设计方法,学会编写二进制微指令代码表; (5)在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机;(6)通过这次的课程设计让学生通过动脑和动手解决计算机设计中的实际问题。综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本的模型计算机,掌握整机概念,
5、并设计机器指令系统,编写程序,在所设计的模型计算机上调试运行。第二章 实验原理及方案2.1 实验原理本实验将能在微过程控制下自动产生各部件单元控制信号,实现特定的功能。实验中,计算机数据通路的控制将由微过程控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。该模型机的总的数据通路如图2.1.1所示。图2.1.1 模型机的数据通路2.2 实验方案2.2.1 指令系统本实验采用五条机器指令。指令编码如下表:表一 指令编码助记符操作码addr地址码功能描述IN00H“INPUT”R0,键盘输入数据ADD addr10H
6、XXHR0+addr R0STA addr20HXXHR0addrOUT addr30HXXHBUS“OUTPUT”,显示输出数据JMP addr40HXXHaddrPC指令分单字节和双字节,单字节指令只有IN一条,其余都是双字节指令。指令各式如表二和表三。表二 单字节指令格式7 6 5 43 21 0操作码源寄存器目的寄存器表三 双字节指令格式7 6 5 4 3 2 1 07 6 5 4 3 2 1 0操作码操作数(内存地址码)源和目的寄存器可以是三个工作寄存器之一,寄存器标号R0为00,R1为01,R2为10。为了在试验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了3个控制
7、台操作命令,通过按键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也在芯片上实现(像
8、单片机一样)。各个功能模块通过总线连接。控制器采用微程序设计。整个模型机各功能部件的工作及通路连接的微操作代码如表3.11和表3.12所示。采用字宽24位的ROM存放微程序,3个3-8译码器组成24位输出译码电路。2.2.3 微指令设计 2.2.3.1 微代码定义由于在本次设计的模型机中只设计五条指令,以及它们所实现的任务,可以将每条微指令用24位的微代码来表示,如表四所示表四 24位微代码定义24232221201918171615 14 1312 11 109 8 7654321S3S2S1S0MCnWEA9A8A字段B字段C字段uA5uA4uA3uA2uA1uA0操作控制信号译码器下址字
9、段 如表四所示的24位微代码信号的功能解释如下: S3-S0,ALU的操作选择信号,控制执行16种算术逻辑操作之一种; M,ALU操作方式选择,等于O为算术操作,等于1时执行逻辑操作; CN ,进位标志,等于0时,最低位有进位输入,等于1表示无进位; WE,控制RAM的读写信号,0值为读,1值为写; A9,A8,经译码产生键盘SW_B,存储器RAM,输出显示LED通路选择信号; A字段, 经译码产生各部件从总线输入选通信号,参考表五;表五 微指令译码字段说明A字段B字段C字段151413选择121110选择987选择000000000001LDRi001RS_B001P(1)010LDR101
10、0RD_B010P(2)011LDR2011RJ_B011P(3)100LDIR100SFT_B100P(4)101LOAD101ALU_B101LDAR110LDAR110PC_B110LDPC B字段, 经译码产生各部件到总线输出选通信号,参考表五; C字段, 经译码产生测试转移P1P4,装入程序计数器LDPC,参考表五; A5A0,微程序地址信号 2.2.3.2 微代码具体设计综上所述,实现模型机指令的解释与执行的微程序代码。这些微代码写入ROM 中。注意,表六中的微地址是8进制表示。表六微代码微地址微指令S3 S2 S1 S0 M CN WE A9 A8 ABCA5A000018110
11、0 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 11100000000001000400B0050 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 1110
12、000000001101100010010 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 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 11100000000011111700A015
13、0 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 1010000000010000230180010 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 1101
14、0001100000012.2.4 控制台解释微程序为了在实验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了3个控制台操作命令,通过安检SWA和SWB组合实现,同时根据微代码的设计可以将控制台设计为如下的解释微程序。控制台键盘译码微程序流程如图2.2.4.1所示。图2.2.4.1 控制台键盘译码微程序流程2.2.5 运行指令流程图根据每条机器指令执行的微操作顺序,微程序流程图如下图:第三章 具体设计过程 3.1 各个主要基本部件设计在设计模型机的主要的顺序是从底层开始设计,逐步向上设计,最后实现顶层的电路图的设计。3.1.1 算术逻辑部件(ALU)ALU是计算机的核心部件之一,
15、它能执行加法和减法等算术运算,也能执行“与”、“或”等逻辑运算。ALU的基本功能根据74LS181的功能用VHDL编辑而成的。本次设计中的运算器功能部件可以对8为数据进行算术/逻辑运算,采用硬件描述语言 VHDL设计。该元件,共有两个数据输入端A70、B70,S30控制执行16种算术/逻辑运算中的一种,M端控制操作方式的选择(算术运算和逻辑运算),CN表示进位标志(进位和无进位)。具体设计如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALU181 IS PORT ( S :
16、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 STD_LOGIC; FZ : OUT STD_LOGIC );END ALU181;ARCHITECTURE behav OF AL
17、U181 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 THEN F9=(A9 OR (NOT B9)+ CN ; ELSE F9 IF M=0 THEN F9= 000000000 - C
18、N ; 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 ; ELSE F9 IF M=0 THEN F9=A9 + B9 + CN ; ELSE F9 IF M=0 THEN F9=(A9
19、 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 ; ELSE F9 F9= 000000000 ; END CASE; IF (A9=B9) THEN FZ = 0 ; ELSE
20、FZ = 1; END IF; END PROCESS; F= F9(7 DOWNTO 0) ; CO = F9(8) ;COUT 读取指令-翻译指令-执行指令。这一过程即是冯诺依曼计算机思想的精髓,也是当代计算机的基本工作原理和工作过程。了解这一原理,掌握这一原理,是学习计算机硬件的基本要求。在两周的时间里,我们组分工明确,并且查阅了十篇左右的相关论文和书籍。在充分了解模型计算机的原理的基础上,基本实现了模型计算机的结构。在设计过程中,也出现了很多的问题,主要的设计工作在于微程序控制器的设计上,需利用地址转移逻辑来实现指令的跳转,从而使其能执行完所有的指令。通过这次实践,充分认识到知识的综合
21、运用的重要性,而且任何一个不严谨的地方都有可能导致错误,同时这次实践使自己对计算机的工作原理有了一个系统的认识,也为以后专业课的学习打下了基础。由于对计算机的总体结构仅限于在书本上的知识,并没有那么的熟悉,在之前也没有重点去研究书本上的知识,所以一开始很是茫然。还有主要集中在对计算机原理的掌握不够,不能够将计算机的原理图和模型很好地联系在一起。因而,在I/O接口的设计过程中,多次出现问题,多次调解也没有得到结果,最后在指导老师的帮助下,才借用老师的DSP(DISPLY)实现多部分的连接。在今后的学习中,应该多注意微机原理的学习以及接口技术的研究,致力于在微型计算机的接口应用方面做出突破。参考文献1 白中英计算机组成原理 科学出版社 2008年2 吴军、胡景春计算机组成结构实验教学指导 南昌航空大学出版 2007年3 王静、刘莹 基于FPGA的高可靠接口模块设计 北京大学出版社 2009年4 罗克露、单立平、刘辉 计算机组成原理 电子工业出版社 2004年5 张兴忠、阎宏印、吴淑红 数字逻辑与数字系统 科学出版社 2004年