1、专题实验资料4实验报告模板 计算机组织与结构专题实验报告学生姓名 王梦蝶 专业/班级 计算机26 学 号 2120505127 所在学院 电信学院 指导教师 姜欣宁 提交日期 2012.11.5 实验名称:寄存器组的设计与实现1.实验目的 (1)了解通用寄存器组的用途 (2)掌握通用寄存器组及他的控制结构 (3)掌握层次结构的设计方法2.实验要求 (1)分析VHDL程序代码,写出寄存器组模块的设计思路(配合用程序流程图、状态图描述);自己设计一个32bit的寄存器组模块(设寄存器个数为64)并且完成相关的读写操作。 (2)分析各种操作结果的仿真图; (3)画出寄存器组模块的结构图; (4)记录
2、设计和实现过程;包括:出现了什么问题(截图表示)及如何解决的。3.实验原理通用寄存器组是CPU的重要组成部分。从存储器取来的数据要放在通用寄存器中;从外部设备取来的数据除DMA方式外,要放在通用寄存器中。向存储器输出的数据也是从通用寄存器中取出的;向外部设备输出的数据除DMA方式外也是从通用寄存器中取出的。由于从通用寄存器组中取数据比从存储器或者外部设备取数据速度快得多,因此参加算术运算和逻辑运算的数据一般是从通用寄存器组中取出的,它向算术逻辑单元ALU提供了进行算术运算和逻辑运算所需要的2 个操作数,同时又是运算结果的暂存地。通用寄存器组内寄存器的数目与CPU 性能有关,CPU性能越高,通用
3、寄存器组内的寄存器数目越多。由于算术逻辑运算需要2个操作数,因此通用寄存器组有2个读端口,负责提供进行算术逻辑单元需要的源操作数和目的操作数。通用寄存器组有1个写端口,负责将运算结果保存到指定的寄存器内。根据通用寄存器组的功能要求,一个只有4个16位寄存器的通用寄存器组的框图如图所示。图. 4个16位寄存器组成的通用寄存器组在图所示的电路中,1)Reset:为低电平时,将4个16位寄存器R0R3复位为0。2)寄存器:它的write和sel有效,为高电平时,在时钟信号clk的上升沿将 D端的输入D15.0写入寄存器,然后送到寄存器的输出Q15.0。 3)4个寄存器的允许写信号write和外部产生
4、的目的寄存器写信号DRWr直接相连。4)选择信号sel(每个寄存器):它决定哪一个寄存器进行写操作。4个寄存器的选择信号分别和2-4译码器产生的sel00、sel01、sel10和sel11相连。只有当1个寄存器被选中(sel为高电平)时,才允许对该寄存器进行写操作。5)2-4译码器:它的输入sel1.0接DR1.0,2-4译码器对2位的输入信号 sel1.0进行2-4译码,产生4个输出sel00、sel01、sel10和sel11,分别送往4个寄存器R0、R1、R2和R3的选择端sel。6)4选1多路选择器:*多路选择器1从4个寄存器R0、R1、R2和R3的输出Q15.0选择1路送到 DR_
5、data1.0,给算术逻辑单元提供目的操作数;选择信号 sel1.0接DR1.0。*多路选择器2从4个寄存器R0、R1、R2和R3的输出Q15.0选择1路送到 SR_data1.0,给算术逻辑单元提供源操作数;选择信号 sel1.0接 SR1.0。4.设计思路与源代码 模块设计: (1)低层设计实体register_16:完成寄存器复位和读写功能。 (2)低层设计实体mux4_to_1:完成选择哪一个寄存器的值送寄存器组的输出。这是一个4选一选择器。 (3)低层设计实体decoder2_to_4:完成选择写哪一个寄存器。这是一个2-4译码器。 (4)高层设计实体regfile:负责将6个低层设
6、计实体的连接,完成寄存器组的全部功能。代码如下: 设计实体register_16 library ieee; use ieee.std_logic_1164.all; entity regiister_16 is port(reset : in std_logic;d_input : in std_logic_vector(15 downto 0) ; clk : in std_logic; write : in std_logic; sel : in std_logic; q_output : out std_logic_vector(15 downto 0) ;end register_1
7、6; architecture a of register_16 is beginprocess( reset,clk ) begin if reset = 0 thenq_output = x0000; -复位elsif (clkevent and clk = 1) then if sel = 1 and write = 1 then q_output = d_input;end if;end if;end process;end a;设计实体decoder2_to_4 library ieee; use ieee.std_logic_1164.all; entity decoder2_to
8、_4 is port ( sel : in std_logic_vector(1 downto 0) ; sel00 : out std_logic; sel01 : out std_logic; sel02 : out std_logic; sel03 : out std_logic ) ;end decoder2_to_4; architecture behavioral of decoder2_to_4 is begin sel00 = (not sel(1) and (not sel(0); sel01 = (not sel(1) and sel(0) ; sel02 = sel(1)
9、 and (not sel(0); sel03 out_put out_put iut_put out_put reset,-顶层设计实体的外部输入信号 resetd_input = data,-顶层设计实体的外部输入信号 dataclk = clk,-顶层设计实体的外部输入信号 clkwrite = wen, sel = sel00,q_output = reg00) ;-顶层设计实体的外部输入信号 wenAreg01: register_16 port map(-16 位寄存器 R1reset = reset,-顶层设计实体的外部输入信号 resetd_input = data,-顶层设计
10、实体的外部输入信号 dataclk = clk ,-顶层设计实体的外部输入信号 clkwrite = wen, sel = sel01,q_output = reg01) ;-顶层设计实体的外部输入信号 wenAreg02: reggister_16 port map (-16 位寄存器 R2reset = reset,-顶层设计实体的外部输入信号 resetd_input = data,-顶层设计实体的外部输入信号 dataclk = clk,-顶层设计实体的外部输入信号 clkwrite = wen , sel = sel02,q_output = reg02) ;-顶层设计实体的外部输入
11、信号 wenAreg03: reggister_16 port map(-16 位寄存器 R3reset = reset,-顶层设计实体的外部输入信号 resetd_input = data,-顶层设计实体的外部输入信号 dataclk = clk,-顶层设计实体的外部输入信号 clkwrite = wen, sel = sel03, q_output = reg03) ;-顶层设计实体的外部输入信号 wrendecoder: decoder2_to_4 port map(-24 译码器sel = wr_port, sel00 = sel00, sel01 = sel01, sel02 = s
12、el02, sel03 = sel03) ;-顶层设计实体的外部输入信号 rd_portmux: mux_4_to_1 port map( -4 选 1 多路器input0 = reg00, input1 = reg01, input2 = reg02, input3 = reg03,sel =rd_port,-顶层设计实体的外部输入信号 rd_portout_put =data_out-顶层设计实体的输出信号 q_out) ;end struct;5.实验步骤 (1)实验台设置成FPGA-CPU独立调试模式 REGSEL = 0、CLKSEL = 1、FDSEL = 0。使用实验台上的单脉冲, 即STEP_CLK短路子短接,短路子RUN_CLK断开。 (2)将设计在Quartus 下输入,编译后下载到TEC-CA上的FPGA中。 (3)将下列数据存入寄存器 将数据写入寄存器组,并读写检查。6.实验现象分析实验仿真结果截图如下: 7.实验小结(1)当复位信号reset=0时,将通用寄存器组中的4个寄存器清零。从波形图上可以看出A,B的输出值都为0;(2)当DRW=1时,在时钟cpR的上升沿将数据总线上的数据写入sR指定的寄存器。当DRW=0时, sR指定的寄存器的输出送往IDC指定的输出端口;(3)由IDA,IDB选择从A或B口输出。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1