当前位置:首页 >> 信息与通信 >>

杭电计组实验4-寄存器堆设计实验


杭州电子科技大学计算机学院

实验报告
实验项目: 课程名称:计算机组成原理与系统结构设计 姓名: 学号: 同组姓名: 实验位置(机号) : 实验日期: 指导教师: 学号:

实验 内容 (算 法、 程 序、 步骤 和方 法)

一、实验目的 (1)学会使用 Verilog HDL 进行时序电路的设计方法。 (

2)掌握灵活应用 Verilog HDL 进行各种描述与建模的技巧和方法。 (3)学习寄存器堆的数据传送与读/写工作原理,掌握寄存器堆得设计方法。 二、实验仪器 ISE 工具软件 三、步骤、方法 (1)启动 Xilinx ISE 软件,选择 File->New Project,输入工程名 shiyan2,默认选择后,点 击 Next 按钮,确认工程信息后点击 Finish 按钮,创建一个完整的工程。 (2)在工程管理区的任意位置右击,选择 New Source 命令。弹出 New Source Wizard 对 话框,选择 Verilog Module,并输入 Verilog 文件名,点击 Next 按钮进入下一步,点击 Finish 完成创建。 (3)编辑程序源代码,然后编译,综合;选择 Synthesize--XST 项中的 Check Syntax 右击 选择 Run 命令,并查看 RTL 视图;如果编译出错,则需要修改程序代码,直至正确。 (4)在工程管理区将 View 类型设置成 Simulation,在任意位置右击,选择 New Source 命 令,选择 Verilog Test Fixture 选项。点击 Next,点击 Finish,完成。编写激励代码,观察仿 真波形,如果验证逻辑有误,则修改代码,重新编译,仿真,直至正确。 (5)由于实验四并未链接实验板,所以后面的链接实验板的步骤此处没有。 一,操作过程 实验过程和描述: module shiyan4(R_Addr_A,R_Addr_B,Clk,W_Addr,W_Data,R_Data_A,R_Data_B,Reset,Write_reg); input Clk,Reset; input wire Write_reg; input wire[4:0]R_Addr_A; input wire[4:0]W_Addr; input wire[4:0]R_Addr_B; input wire[32:0]W_Data; reg [31:0]REG_Files[31:0]; output wire[0:31]R_Data_A; output wire[0:31]R_Data_B; integer i=0; always@(posedge Clk or posedge Reset)

操作 过程 及结 果

begin if(Reset) begin for(i=0;i<=31;i=i+1) REG_Files[i]<=32'b0; end else begin if(Write_reg) REG_Files[W_Addr]<=W_Data; end end assign R_Data_A=REG_Files[R_Addr_A]; assign R_Data_B=REG_Files[R_Addr_B]; endmodule 仿真代码 module shiyan4_test; // Inputs reg [4:0] R_Addr_A; reg [4:0] R_Addr_B; reg Clk; reg [4:0] W_Addr; reg [32:0] W_Data; reg Reset; reg Write_reg; // Outputs wire [0:31] R_Data_A; wire [0:31] R_Data_B; // Instantiate the Unit Under Test (UUT) shiyan4 uut ( .R_Addr_A(R_Addr_A), .R_Addr_B(R_Addr_B), .Clk(Clk), .W_Addr(W_Addr), .W_Data(W_Data), .R_Data_A(R_Data_A), .R_Data_B(R_Data_B), .Reset(Reset), .Write_reg(Write_reg) );

initial begin // Initialize Inputs R_Addr_A = 0; R_Addr_B = 0; Clk = 0; W_Addr = 0; W_Data = 0; Reset = 0; Write_reg = 0; // Wait 100 ns for global reset to finish #100; // Add stimulus here #100; Clk = 1; Reset = 0; R_Addr_A = 0; R_Addr_B = 0; W_Addr = 5'b00001; Write_reg = 1; W_Data = 32'h1111_1111; #100; Clk = 0; Reset = 0; R_Addr_A = 0; R_Addr_B = 0; W_Addr = 5'b00001; Write_reg = 1; W_Data = 32'h1111_1111; #100; Clk = 1; Reset = 0; R_Addr_A = 0; R_Addr_B = 0; W_Addr = 5'b00010; Write_reg = 1; W_Data = 32'h2222_2222; #100; Clk = 0; Reset = 0;

R_Addr_A = 5'b00001; R_Addr_B = 5'b00010; W_Addr = 0; Write_reg = 0; W_Data = 0; #100; Clk = 0; Reset = 1; R_Addr_A = 5'b00001; R_Addr_B = 5'b00010; W_Addr = 0; Write_reg = 0; W_Data = 0; end endmodule

RTL 图

二、结果

思考题: (1)根据 8 个寄存器执行读、写操作,实验结果符合预期 (2)always@(posedge Clk or posedge Reset) begin if(Reset) begin for(i=0;i<=31;i=i+1) REG_Files[i]<=32'b0; end

else begin if(Write_reg) begin if(W_Addr>3’b000) REG_Files[W_Addr]<=W_Data; end end end assign R_Data_A=REG_Files[R_Addr_A]; assign R_Data_B=REG_Files[R_Addr_B]; (3)读操作没有使能或者时钟信号控制,是组合逻辑电路,只要给出寄存器地址,即可 独处寄存器中的数据 。 所有写入操作的输入信号(包括写寄存器地址 W_Addr、写入数据 W_Data、写控制信号 Write_Reg)必须在时钟边沿来临时已经有效。 在这个寄存器堆设计实验中, 这个实验理解起来稍微有点困难, 起初已经写好了代码, 进行了仿真,出现了波形。但是后来老师要求读操作和写操作输出不同的数据,在不同的 单元。 于是我就把仿真代码改了一下,将 W_Data,W_Addr 等数据做了修改。这个实验也就成 功了。通过做这个寄存器堆设计实验,我对寄存器堆得读操作和写操作有了一个认识和理 解。也对 ISE 这个软件的运用更加熟练了,对寄存器堆这个概念也有了更深层次的理解, 增长了我的知识,强化了我的实践能力以及思考能力。这次实验收获很大。 实验步骤写的时候,最好自己按照所做步骤写,二人不要一模一样。 成绩: 指导教师签名: 指导 教师 评议

实验 体会


相关文章:
杭电计算机组成原理寄存器堆设计实验 4
杭电计算机组成原理寄存器堆设计实验 4_计算机硬件及网络_IT/计算机_专业资料。...实验仿真波形: 数据 记录 和计 算 结论 (结果) 按照实验的要求,一步步的进行...
杭电计组实验四
杭电计组实验四_电子/电路_工程科技_专业资料。杭电计算机组成原理实验4 ...《计算机组成原理课程设计》 机位号 寄存器堆 实验设备号 一、实验程序源代码 ...
杭电计组实验5-存储器设计实验
杭电计组实验5-存储器设计实验_计算机硬件及网络_IT/计算机_专业资料。杭电计组...双端口存储器具有两个彼此独立的读写口,每个读写口都有一套自己的地址寄存器和...
杭电计组实验8-实现R型指令的CPU设计实验
杭电计组实验8-实现R型指令的CPU设计实验_计算机硬件及网络_IT/计算机_专业资料...模块中,调用了实验三的 ALU 模块, 实验四寄存器堆模块,实验七的取指令模块...
杭电计组实验四
杭电计组实验四_电子/电路_工程科技_专业资料。实验报告 2016 年 4 月 11 周勇 日 学号 14071225 课程名称 章复嘉老师 班级 成绩:计科 5 班 姓名 专业 任...
杭电计组实验九
杭电计组实验九_表格类模板_表格/模板_实用文档。实验报告 2016 年 5 月 11...[31:0] W_Data; output rd_rt_s; //控制那个作为目的寄存器 output [4:...
计组实验报告4
计组实验报告4 隐藏>> 《计算机组成原理》实验名称 实验报告 运算器实验、通用寄存器实验、移位寄存器实验 实验一 运算器实验 一、实验目的 1.掌握简单运算器的数据...
杭电计组实验考试
杭电计组实验考试_表格类模板_表格/模板_实用文档。实验报告 2016 姓名 专业 ...[31:0] W_Data; output rd_rt_s; //控制那个作为目的寄存器 output [4:...
杭电 计组实验五(章老师不插板实验报告)
杭电 计组实验五(章老师不插板实验报告)_工学_高等教育_教育专区。实验报告 ...课程设计》 机位号 寄存器堆设计实验 一教 225 实验设备号 指导老师 实验名称...
杭电计组实验五六七
杭电计组实验五六七_计算机硬件及网络_IT/计算机_专业资料。实验报告 2016 姓名 专业 任课老师 实验序号 实验时间 年 4 月 21 周勇 日 学号 14071225 课程...
更多相关标签:
寄存器堆设计实验 | 杭电实验报告 | 杭电物理实验示范中心 | 杭电计组实验2 | 杭电计组实验四 | 杭电模电实验思考题 | 杭电数据库实验 | 杭电计网实验报告 |