logo资料库

计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现.doc

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
前言
第一章课程设计内容
1.1 实验要求
1.2 实验目的
第二章 实验原理及方案
2.1 实验原理
2.2 实验方案
2.2.1 指令系统
2.2.2 模型计算机硬件
2.2.3 微指令设计
2.2.3.1 微代码定义
2.2.3.2 微代码具体设计
2.2.4 控制台解释微程序
2.2.5 运行指令流程图
第三章 具体设计过程
3.1 各个主要基本部件设计
3.1.1 算术逻辑部件(ALU)
3.1.2 程序计数器(PC)
3.1.3 寄存器
3.1.4 存储器
3.2 模型机顶层框图设计
第四章 程序测试和指令调试
4.1 波形仿真
4.2 实验调试
第五章 设计总结与体会
参考文献
目录 前言............................................................................................................................... 2 第一章 课程设计内容................................................................................................. 3 1.1 实验要求...................................................................................................... 3 1.2 实验目的...................................................................................................... 3 第二章 实验原理及方案........................................................................................... 4 2.1 实验原理...................................................................................................... 4 2.2 实验方案...................................................................................................... 4 2.2.1 指令系统………………………..……………………………………5 2.2.2 模型计算机硬件................................................................................. 6 2.2.3 微指令设计......................................................................................... 6 2.2.3.1 微代码定义.................................................................................. 6 2.2.3.2 微代码具体设计.......................................................................... 7 2.2.4 控制台解释微程序............................................................................. 8 2.2.5 运行指令流程图................................................................................. 7 第三章 具体设计过程............................................................................................... 9 3.1 各个主要基本部件设计............................................................................ 8 3.1.1 算术逻辑部件(ALU).....................................................................8 3.1.2 程序计数器(PC)............................................................................9 3.1.3 寄存器............................................................................................... 10 3.1.4 存储器............................................................................................... 11 3.2 模型机顶层框图设计.............................................................................. 11 第四章 程序测试和指令调试................................................................................. 13 4.1 波形仿真.................................................................................................. 13 4.2 实验调试.................................................................................................. 13 第五章 设计总结与体会......................................................................................... 16 参考文献..................................................................................................................... 17
前言 计算机诞生以来,计算机还是主要由运算器、控制器组成 CPU,用二进制数字 表示计算机的操作指令和数据,将其存放在存储器中,通过 CPU 自动地从存储 器提取指令和数据,并按照指定的顺序完成各项任务。这也改变了又来人们的生 活。 同事随着大规模集成电路技术的开发,计算机组织设计与实现技术也在不断发 展。现在,不仅软件可编程,硬件电路也可以编程所以,在这个时候,我们更要 注重一台电子计算机的整体模型,而不是一味的强调怎样去追求这个时代的计算 机发展速度。这已经成为我们为更新计算机硬件的必备知识。 让学生通过动脑和动手解决计算机设计中的实际问题,本次课题设计便是为此应 运而生的。在这次课程设计当中,我们需要结合计算机组成原理的基本理论,利 用 EDA 技术和 FPGA 技术设计实现一个 8 位模型计算机。因此,我们需要掌握 ALU,微程序控制器,时序产生电路,数据通路,存储器,指令系统单元电路的 设计方法,并且在此基础上,进一步将单元电路组成系统,构造一台基本模型计 算机。 本报告便是通过对各关键部位进行单元和集成仿真测试后,下载到目标芯片里, 最终形成一个功能较为完善的 8 位模型计算机系统。 2
第一章 课程设计内容 1.1 实验要求 在 Quartus Ⅱ6.0 上完成 8 位模型机的设计。具体的要求如下: (1)在定义五条机器指令,并编写响应的微程序作为模型计算机的控制器; (2)使用电路框图设计模型计算机电路,并下载编程芯片为定制的简单模 型 CPU. (3)在实验系统上连接输入按键和输出液晶显示屏为输出的模型计算机系 统。 1.2 实验目的 (1)深入理解基本模型计算机的功能和组成知识; (2)深入学习计算机各类典型指令的执行流程; (3)学习微程序控制器的设计过程和相关技术,掌握 LPM_ROM 的配置方法; (4)掌握微程序的设计方法,学会编写二进制微指令代码表; (5)在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构 造一台基本模型计算机; (6)通过这次的课程设计让学生通过动脑和动手解决计算机设计中的实际 问题。综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上, 进一步将其组成系统构造一台基本的模型计算机,掌握整机概念,并设计机器指 令系统,编写程序,在所设计的模型计算机上调试运行。 3
第二章 实验原理及方案 2.1 实验原理 本实验将能在微过程控制下自动产生各部件单元控制信号,实现特定的功 能。实验中,计算机数据通路的控制将由微过程控制器来完成,CPU 从内存中 取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来 完成,即一条机器指令对应一个微程序。该模型机的总的数据通路如图 2.1.1 所 示。 图 2.1.1 模型机的数据通路 2.2 实验方案 2.2.1 指令系统 本实验采用五条机器指令。指令编码如下表: 表一 指令编码 addr 地址码 助记符 IN ADD addr STA addr OUT addr JMP addr 指令分单字节和双字节,单字节指令只有 IN 一条,其余都是双字节指令。指令各式如 功能描述 “INPUT”→R0,键盘输入数据 R0+[addr] →R0 R0→[addr] BUS→“OUTPUT”,显示输出数据 addr→PC 操作码 00H 10H 20H 30H 40H XXH XXH XXH XXH 表二和表三。 表三 双字节指令格式 6 2 4 3 表二 单字节指令格式 3 源寄存器 7 操作码 4 2 6 5 0 1 目的寄存器 7 5 操作码 1 0 5 6 7 1 操作数(内存地址码) 4 3 2 0 源和目的寄存器可以是三个工作寄存器之一,寄存器标号 R0 为 00,R1 为 01,R2 为 10。 为了在试验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了 3 个控制台操作命令,通过按键 SWB 和 SWA 组合实现(括号中是 SWB,SWA 的键值): 存储器读 KRD(00)操作,存储器 KWE(01)操作,启动程序执行 RP(11)操作。 4
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 位微代码定义 22 21 18 20 19 23 17 16 15 14 13 12 11 10 9 8 7 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 种算术逻辑操作之一种; 1 2 M,ALU 操作方式选择,等于 O 为算术操作,等于 1 时执行逻辑操作; 3 CN ,进位标志,等于 0 时,最低位有进位输入,等于 1 表示无进位; 4 WE,控制 RAM 的读写信号,0 值为读,1 值为写; 5 A9,A8,经译码产生键盘 SW_B,存储器 RAM,输出显示 LED 通路选择信号; 6 A 字段, 经译码产生各部件从总线输入选通信号,参考表五; 表五 微指令译码字段说明 A 字段 14 15 0 0 0 0 1 0 0 1 0 1 1 0 13 选择 0 1 0 1 0 1 LDRi LDR1 LDR2 LDIR LOAD B 字段 11 12 0 0 0 0 1 0 0 1 0 1 1 0 10 选择 0 1 0 1 0 1 RS_B RD_B RJ_B SFT_B ALU_B C 字段 9 0 0 0 0 1 1 8 0 0 1 1 0 0 7 选择 0 1 0 1 0 1 P(1) P(2) P(3) P(4) LDAR 5
1 1 0 1 LDAR 1 7 B 字段, 经译码产生各部件到总线输出选通信号,参考表五; 8 C 字段, 经译码产生测试转移 P1~P4,装入程序计数器 LDPC,参考表五; 9 μA5~μA0,微程序地址信号 PC_B 0 LDPC 1 0 1 2.2.3.2 微代码具体设计 综上所述,实现模型机指令的解释与执行的微程序代码。这些微代码写入 ROM 中。注 意,表六中的微地址是 8 进制表示。 表六 微代码 微地 微指令 S3 S2 S1 S0 M CN WE A9 A B C μA5~μA0 址 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 A8 0 018110 0 01ED82 0 00C048 0 00E004 0 00B005 0 01A206 919A01 1 00E00D 0 0 001001 0 01ED83 01ED87 0 01ED8E 0 0 01ED96 038201 0 0 00E00F 0 00A015 01ED92 0 0 01ED94 0 01A010 018001 0 0 062011 010A01 0 0 00D181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 000 110 100 110 011 010 001 110 001 110 110 110 110 000 110 010 110 110 010 000 010 000 101 000 110 000 000 000 001 101 000 000 110 110 110 110 001 000 000 110 110 000 000 000 101 000 100 110 001 000 000 000 000 000 000 110 110 110 110 000 000 000 110 110 000 000 000 000 110 010000 000010 001000 000100 000101 000110 000001 001101 000001 000011 000111 001110 010110 000001 001111 010101 010010 010100 010000 000001 010001 000001 000001 6
2.2.4 控制台解释微程序 为了在实验台上用键盘输入程序和数据到内存,以及通过液晶屏显示输出,设计了 3 个控制台操作命令,通过安检 SWA 和 SWB 组合实现,同时根据微代码的设计可以将控制 台设计为如下的解释微程序。控制台键盘译码微程序流程如图 2.2.4.1 所示。 图 2.2.4.1 控制台键盘译码微程序流程 2.2.5 运行指令流程图 根据每条机器指令执行的微操作顺序,微程序流程图如下图: 7
第三章 具体设计过程 3.1 各个主要基本部件设计 在设计模型机的主要的顺序是从底层开始设计,逐步向上设计,最后实现顶 层的电路图的设计。 3.1.1 算术逻辑部件(ALU) ALU 是计算机的核心部件之一,它能执行加法和减法等算术运算,也能执行“与”、“或” 等逻辑运算。ALU 的基本功能根据 74LS181 的功能用 VHDL 编辑而成的。本次设计中的运 算器功能部件可以对 8 为数据进行算术/逻辑运算,采用硬件描述语言 VHDL 设计。该元件, 共有两个数据输入端 A[7…0]、B[7…0],S[3…0]控制执行 16 种算术/逻辑运算中的一种,M 端控制操作方式的选择(算术运算和逻辑运算),CN 表示进位标志(进位和无进位)。具体 设计如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.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 STD_LOGIC; FZ : OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL 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 <= '0' & B ; PROCESS(M,CN,A9,B9,S) BEGIN CASE S IS WHEN "0000" => IF M='0' THEN F9<=A9 + CN F9<=NOT A9; END IF; WHEN "0001" => IF M='0' THEN F9<=(A9 OR B9) + CN F9<=NOT(A9 OR B9); END IF; WHEN "0010" => IF M='0' THEN F9<=(A9 OR (NOT B9))+ CN ; ELSE ; ELSE ; ELSE 8
分享到:
收藏