杭电计组实验-寄存器堆设计实验_第1页
杭电计组实验-寄存器堆设计实验_第2页
杭电计组实验-寄存器堆设计实验_第3页
杭电计组实验-寄存器堆设计实验_第4页
杭电计组实验-寄存器堆设计实验_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、杭电计组实验 - 寄存器堆设计实验作者:日期:实验报告2018 年5 月12 日成绩:姓名阳光男学号班级专业计算机科学与技术课程名称计算机组成原理与系统结构试验任课老师张翔老师指导老师张翔老师机位号默认实验序号4 实验名称实验四 寄存器堆设计实验时间2018/5/12 实验地点1 教 211 实验设备号个人电脑、 nexys3 开发板一、实验程序源代码1.寄存器堆模块代码:module register_); input 4:0r_addr_a; input 4:0r_addr_b; input 4:0w_addr; input write_reg; input 31:0w_data; inp

2、ut clk; input reset; output 31:0r_data_a; output 31:0r_data_b; reg 31:0reg_files0:31; reg 5:0i; initial/ 仿真过程中的初始化begin for(i=0;i=31;i=i+1) reg_filesi=0; end assign r_data_a=reg_filesr_addr_a; assign r_data_b=reg_filesr_addr_b; always(posedge clk or posedge reset) begin if(reset) for(i=0;i=31;i=i+1)

3、 reg_filesi=0; else if(write_reg&w_addr!=0) reg_filesw_addr=w_data; end endmodule 2.顶层电路模块代码:module top_register_); input 4:0addr; input 1:0c1;/c1 选择 32 位数据输出哪八位字节input write_reg,c2,clk,reset;/c2 选择读 a/b 端口的数据output reg 7:0led; wire 31:0r_data_a,r_data_b; reg 31:0w_data; reg4:0 a,b; register_(a,

4、b,addr,write_reg,w_data,clk,reset,r_data_a,r_data_b); always(addr or write_reg or c1 or c2 or r_data_a or r_data_b) begin a=0; b=0; led=0; w_data=0; if(!write_reg)/ 读操作 write_reg=0 begin if(!c2) begin a=addr; case(c1) 2b00:led=r_data_a7:0; 2b01:led=r_data_a15:8; 2b10:led=r_data_a23:16; 2b11:led=r_da

5、ta_a31:24; endcase end else begin b=addr; case(c1) 2b00:led=r_data_b7:0; 2b01:led=r_data_b15:8; 2b10:led=r_data_b23:16; 2b11:led=r_data_b31:24; endcase end end else/写操作begin case(c1) 2b00:w_data=32h0000_0003; 2b01:w_data=32h0000_0607; 2b10:w_data=32hffff_ffff; 2b11:w_data=32h1111_1234; endcase end e

6、nd endmodule 3.测试代码module test; / inputs reg 4:0 r_addr_a; reg 4:0 r_addr_b; reg 4:0 w_addr; reg write_reg; reg 31:0 w_data; reg clk; reg reset; / outputs wire 31:0 r_data_a; wire 31:0 r_data_b; / instantiate the unit under test (uut) register_ ( .r_addr_a(r_addr_a), .r_addr_b(r_addr_b), .w_addr(w_a

7、ddr), .write_reg(write_reg), .w_data(w_data), .clk(clk), .reset(reset), .r_data_a(r_data_a), .r_data_b(r_data_b) ); initial begin / initialize inputs r_addr_a = 0; r_addr_b = 0; w_addr = 0; write_reg = 0; w_data = 0; clk = 0; reset = 0; / wait 100 ns for global reset to finish #100; / add stimulus h

8、ere #100; r_addr_a = 0; r_addr_b = 0; w_addr = 5b00001; write_reg = 1; w_data = 32h1111_1111; clk = 1; reset = 0; #100; r_addr_a = 0; r_addr_b = 0; w_addr = 5b00001; write_reg = 1; w_data = 32h1111_1111; clk = 0; reset = 0; #100; r_addr_a = 0; r_addr_b = 0; w_addr = 5b00010; write_reg = 1; w_data =

9、32h2222_2222; clk = 1; reset = 0; #100; r_addr_a = 5b00001; r_addr_b = 5b00010; w_addr = 0; write_reg = 0; w_data = 0; clk = 0; reset = 0; #100; r_addr_a = 5b00001; r_addr_b = 5b00010; w_addr = 0; write_reg = 0; w_data = 0; clk = 0; reset = 1; end endmodule二、仿真波形三、电路图顶层电路模块顶层电路内部结构:四、引脚配置(约束文件)net c

10、lk loc = c9; net reset loc = d9; net write_reg loc = t5; net c2 loc = c4; # planahead generated physical constraints net led7 loc = t11; net led6 loc = r11; net led4 loc = m11; net led3 loc = v15; net led1 loc = v16; net led0 loc = u16; net led2 loc = u15; net led5 loc = n11; net addr0 loc = t10; net addr2 loc = v9; net addr3 loc = m8; net addr4 loc = n8; net c10 loc = u8; net c11 loc = v8; net addr1 loc = t9; 五、思考与探索(1)实验四实验结果记录表寄存器地址写入数据读出数据$1 32h0000_0003 32h0000_0003 $2 32h0000_0607 32h0000_0607 $3 32

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论