资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
简单计算机系统基本模块设计实验报告一 实验目的1. 掌握简单计算机系统的指令系统 2. 掌握简单计算机基本模块设计的方法 3. 巩固EDA 电路仿真和调试方法 4. 掌握执行R型、I型、J型指令的数据通道 5. 掌握ALU 运算单元模块的设计方法 6. 掌握简单控制单元模块的设计方法 二 设计思路简单的计算机系统的基本组成如下图 1 所示。整个系统由寄存器组、 ALU、控制单元、ROM、RAM、输入设备、输出设备以及输入/ 输出设备接口组成,各部分通过总线连接起来,总线内部包括地址、数据、和控制等信号。图 1计算机系统从输入设备(如键盘)输入参加运算的操作数及加、减等运算符,并通过输入设备接口将这些操作数和运算符存放在寄存器或存储系统中,然后通过执行存放在存储系统中的程序,实现运算,并将运算的结果通过输出设备(如数码管)显示出来。整个过程的实现是通过存储在 ROM 中的程序来进行控制的。整个系统的设计思路是根据计算机系统的组成,分别设计出相应的模块,最终在将各个模块连接起来,组成整个系统。三 模块说明1 寄存器组模块根据指令的特点,在 R 型指令中有两个操作数来自寄存器组,作为算术逻辑单元ALU 的输入,另一个操作数是 ALU 的输出,需要写回寄存器组。所以寄存器模块需要两个读通道,1 个写通道,至少需要 3 个寄存器。本次实验设计的寄存器组中共含有4 个寄存器,因此,需要读写通道各需要两位输入,用 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 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 个寄存器的输出作为数据选择器的数据输入,两个数据选择器的输出分别为 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指定寄存器的内容 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:待写入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 的双向读写,需要设计基本的三态门单元。指令系统中没有直接对 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_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;ARCHITECTURE 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 位作为数据选择器的选择信号三个部分之间的连接规则:将映射模块给出的写控制信号分别作为 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_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 的数据信号仿真结果如下:仿真波形截图如下,第一幅图可以看出在向 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 位算术逻辑运算器 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 : IN 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
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号