简单计算机系统基本模块设计实验报告

上传人:豆浆 文档编号:31928655 上传时间:2018-02-09 格式:DOCX 页数:19 大小:232.91KB
返回 下载 相关 举报
简单计算机系统基本模块设计实验报告_第1页
第1页 / 共19页
简单计算机系统基本模块设计实验报告_第2页
第2页 / 共19页
简单计算机系统基本模块设计实验报告_第3页
第3页 / 共19页
简单计算机系统基本模块设计实验报告_第4页
第4页 / 共19页
简单计算机系统基本模块设计实验报告_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《简单计算机系统基本模块设计实验报告》由会员分享,可在线阅读,更多相关《简单计算机系统基本模块设计实验报告(19页珍藏版)》请在金锄头文库上搜索。

1、简单计算机系统基本模块设计实验报告一 实验目的1. 掌握简单计算机系统的指令系统 2. 掌握简单计算机基本模块设计的方法 3. 巩固EDA 电路仿真和调试方法 4. 掌握执行R型、I型、J型指令的数据通道 5. 掌握ALU 运算单元模块的设计方法 6. 掌握简单控制单元模块的设计方法 二 设计思路简单的计算机系统的基本组成如下图 1 所示。整个系统由寄存器组、 ALU、控制单元、ROM、RAM、输入设备、输出设备以及输入/ 输出设备接口组成,各部分通过总线连接起来,总线内部包括地址、数据、和控制等信号。图 1计算机系统从输入设备(如键盘)输入参加运算的操作数及加、减等运算符,并通过输入设备接口

2、将这些操作数和运算符存放在寄存器或存储系统中,然后通过执行存放在存储系统中的程序,实现运算,并将运算的结果通过输出设备(如数码管)显示出来。整个过程的实现是通过存储在 ROM 中的程序来进行控制的。整个系统的设计思路是根据计算机系统的组成,分别设计出相应的模块,最终在将各个模块连接起来,组成整个系统。三 模块说明1 寄存器组模块根据指令的特点,在 R 型指令中有两个操作数来自寄存器组,作为算术逻辑单元ALU 的输入,另一个操作数是 ALU 的输出,需要写回寄存器组。所以寄存器模块需要两个读通道,1 个写通道,至少需要 3 个寄存器。本次实验设计的寄存器组中共含有4 个寄存器,因此,需要读写通道

3、各需要两位输入,用 N1,N2,ND 分别输入读通道1,读通道 2,写通道的寄存器号,信号为“00” “01” “10” “11”分别对应寄存器 R0, R1,R2,R3。为了能够控制寄存器的读写,需要设置一个写允许信号,当该信号为 1 时,在 CLK 的上升沿将输入数据 DI 写入 ND 对应的寄存器,为 0 时禁止对寄存器进行写操作,只能进行读操作,将 N1 对应的寄存器中的内容从 Q1 输出,将 N2 对应的寄存器的内容从 Q2 输出。寄存器组模块由 1 个 2-4 译码器,2 个 8 位 4 选 1 数据选择器和 4 个寄存器组成,这三个基本单位可以由 QuartusII 的 Mega

4、 Wizard 生成。data1.0 eq0eq1eq2eq3trans2_4inst4 data0x7.0data1x7.0data2x7.0data3x7.0sel1.0result7.0sel4_1inst3 aclrclockdata7.0enableq7.0reginst1其中寄存器(reg)还有一个异步清零端和一个使能端,将写通道的输入 ND 作为 2-4译码器的输入信号, 译出的 4 个信号分别与输入 REG_WE 相与作为 reg 的 enable 信号,N1 ,N2 信号分别作为两个数据选择器的 sel 信号,4 个寄存器的输出作为数据选择器的数据输入,两个数据选择器的输出分

5、别为 Q1,Q2。按照上述逻辑构成的寄存器组电路如下:封装后如下图所示:N11.0N21.0ND1.0DI7.0REG_WECLKRESETQ17.0Q27.0reg4_8inst寄存器组模块信号说明: 输入信号: N11.0:读通道 1的寄存器号 N21.0:读通道 2的寄存器号 ND1.0:写通道的寄存器号 DI7.0:写通道的输入数据 CLK:时钟脉冲信号,上升沿有效 REG_WE:写允许,为 1时,在CLK上升沿,将数据DI写入ND 指定的寄存器; 为“0”时,禁止对寄存器阵列进行写操作。 RST: 异步复位信号,清空所有寄存器的内容 输出信号: Q17.0:输出 N11.0指定寄存器

6、的内容 Q27.0:输出 N21.0指定寄存器的内容仿真结果:仿真完成的操作是先向 R0 写入数据 18 后读出,然后再向 R2 写入数据 8 后读出,最后执行了一个清零操作2 RAM 数据存储系统模块RAM 数据存储系统容量为 256X8,即有 256 个存储单元,地址编码顺序为0x000xFF,每个单元可以存放 8 位二进制信息,利用 QuartusII 生成相应的模块如下:data7.0wrenaddress7.0clockaclrq7.0lpm_ram_256_8instRAM模块信号说明如下: 输入信号: address7.0:需要进行读/写操作RAM 单元的地址 data7.0:待

7、写入RAM 中的数据 wren:写允许信号,为1 时写;为 0 则读 clock:时钟脉冲信号,上升沿将数据写入或读出 aclr: 异步复位信号,对q7.0进行清0 输出信号: q7.0:输出 address 7.0指定的RAM 单元的内容仿真结果如下:波形完成的操作是先向地址1写入14,然后读出地址1里的数,又向地址6写入数据8,然后读出地址6里的数据,最后执行了一个清零操作。3 I/O 端口及其映射模块I/O 端口是输入/输出接口电路中用来存放输入输出设备的数据缓冲器。计算机系统通过读写 I/O 端口的数据,实现与外部设备的数据传送。为了实现 I/O 的双向读写,需要设计基本的三态门单元。

8、指令系统中没有直接对 I/O 端口的操作指令,为了实现用指令对 I/O 的控制,需要设计一个映射模块,将指令系统中对 RAM 存储单元0x000x07 的读写转换成为对 I/O 对应地址的读写。还需要一个数据选择器将 8 个 I/O端口的输入选择输出。三态门由 QuartusII 生成,如下图所示:888lpm_bustri0inst368 位 8 选 1 数据选择器也由 QuartusII 生成,如下图所示:data0x7.0data1x7.0data2x7.0data3x7.0data4x7.0data5x7.0data6x7.0data7x7.0sel2.0result7.0sel_8_

9、1inst33映射模块用 VHDL 语言写成,代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ORM isPORT ( address : IN STD_LOGIC_VECTOR(7 DOWNTO 0);we : IN STD_LOGIC;sel : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);I : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ORM;ARCHIT

10、ECTURE behave OF ORM ISBEGINPROCESS (address ,we)BEGINIF we=1 THENCASE address ISWHEN 00000000= I I I I I I I I NULL;END CASE;ELSE NULL;END IF;END PROCESS;END behave;信号说明:输入:Address7.0:指令中的地址We:写控制信号,为高电平时将地址译成对应端口的写有效控制信号O7.0:对应于 8 个 I/O 端口的写控制信号sel2.0:取 Address 的低 3 位作为数据选择器的选择信号三个部分之间的连接规则:将映射模块给

11、出的写控制信号分别作为 8 个三态门的写控制信号,读信号作为 8个三态门的读控制信号,sel 作为数据选择器的选择信号。根据以上逻辑连接的 I/O 模块原理图如下:封装后电路图如下:Din7.0addr7.0REWEDout7.0IO07.0IO17.0IO27.0IO37.0IO47.0IO57.0IO67.0IO77.0IO_PORTinst1I/O端口及其映射模块信号说明: 输入信号: addr7.0:地址输入信号 Din7.0:写入I/O端口中的数据信号 RE: 读控制信号, 高电平有效 WE: 写控制信号,高电平有效 输出信号 Dout7.0:读 I/O 端口时输出的数据信号 io_

12、read: I/O 端口读控制信号,高电平有效,读 0x000x07 存储单元时有效 io_write:I/O 端口写控制信号,高电平有效,写 0x000x07 存储单元时有效 输入/输出信号 IO07.0:双向 I/O 端口 0 的数据信号 IO17.0:双向 I/O 端口 1 的数据信号 IO27.0:双向 I/O 端口 2 的数据信号 IO37.0:双向 I/O 端口 3 的数据信号 IO47.0:双向 I/O 端口 4 的数据信号 IO57.0:双向 I/O 端口 5 的数据信号 IO67.0:双向 I/O 端口 6 的数据信号 IO77.0:双向 I/O 端口 7 的数据信号仿真结果

13、如下:仿真波形截图如下,第一幅图可以看出在向 3号 I/O写入 6,然后又从 3号 I/O读出 2,第二幅图是结果4 ROM 程序存储模块ROM 程序存储系统容量为 25616,共有 256 个存储单元,地址为 0x000xFF, 每个单元可存放 16 位二进制信息。由 QuartusII生成如下模块:address7.0clock q15.0lpm_rom_256_16inst2输入信号: address7.0:ROM单元的地址 clock:时钟脉冲信号,在时钟的上升沿,将选中的ROM单元内容输出 输出信号: q15.0:输出 address 7.0指定的 ROM 单元的内容5 8 位算术逻

14、辑运算器 ALU 模块8 位计算器能完成的运算有 7 种:” 与”、 ”或” 、 ” 比较”、 ”不带进位加”、 ”不带借位减” 、 ”带进位加”、 ”带借位减”,运算关系如下表所示CS3.0 运算001 与010 或011 不带进位加100 不带进位减101 带进位加110 带进位减111 比较根据以上运算关系,编写 VHDL 语言代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALU ISPORT( CS : I

15、N STD_LOGIC_VECTOR(2 DOWNTO 0);data_a,data_b : IN STD_LOGIC_VECTOR(7 DOWNTO 0);carry_in : IN STD_LOGIC;S : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);zero,carry_out,overflow : OUT STD_LOGIC);END ALU;ARCHITECTURE behave OF ALU ISBEGINPROCESS(CS,data_a,data_b,carry_in)VARIABLE temp_a,temp_b,plus_temp,temp_carry : STD_LOGIC_VECTOR(8 DOWNTO 0);VARIABLE S_temp,temp,temp1 : STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE t : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINCASE CS ISWHEN 001=S_temp:=data_a AND data_b;SS_temp:=data

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号