ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:109.02KB ,
资源ID:25155128      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25155128.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(杭电计组实验考试.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

杭电计组实验考试.docx

1、杭电计组实验考试实验报告2016 年 5 月 19 日 成绩: 姓名周勇学号14071225班级计科5班专业计算机科学与技术课程名称数字电路课程设计任课老师章复嘉老师指导老师章复嘉老师机位号实验序号实验名称考试实验时间5月19日实验地点1教225实验设备号一、实验程序源代码顶层架构CPU模块:module cpu(clk,reset,ALU_OP,inst,rs,rt,rd,rs_data,rt_data,rd_data,ZF,OF,Write_Reg,PC,PC_new,rd_rt_s,W_Addr,imm,W_Data,imm_s,imm_data,ALU_B,rt_imm_s,Mem_W

2、rite,M_R_Data,ALU_Data,alu_mem_s);input wire clk;input reset;output 2:0 ALU_OP; /操作符output 31:0 inst; /指令存放output 4:0 rs; /rs地址output 4:0 rt; /rt地址output 4:0 rd; /rd地址output 31:0 rs_data; /rs数据output 31:0 rt_data; /rt数据output 31:0 rd_data; /rd数据output 31:0 PC;output 31:0 PC_new;output ZF;output OF;o

3、utput Write_Reg; /是否写入output 31:0 W_Data;output rd_rt_s; /控制那个作为目的寄存器output 4:0W_Addr;/目的操作数地址output 15:0 imm; /立即数output 31:0 imm_data;/被扩展的立即数output imm_s;/是否需要扩展output rt_imm_s; /B端选择rt或者是immoutput 31:0 ALU_B; /ALU_B端口数据output Mem_Write; /是否写入数据romoutput 31:0M_R_Data;/从数据rom读出来的数据output 31:0ALU_D

4、ata;/ALU运算出来的结果,根据alu_mem_s选择由M_W_Data或者W_Data来赋值output alu_mem_s;/看上面 /读指令 ex7 pc ( .clka(clk), .douta(inst), .rst(reset), .PC(PC), .PC_new(PC_new) /解析指令 ); analysis_inst analysis_inst( .inst(inst), .ALU_OP(ALU_OP), .rs(rs), .rt(rt), .rd(rd), .Write_Reg(Write_Reg), .imm(imm), .rd_rt_s(rd_rt_s), .im

5、m_s(imm_s), .rt_imm_s(rt_imm_s), .Mem_Write(Mem_Write), .alu_mem_s(alu_mem_s) ); /读取源操作数的值: assign W_Addr = (rd_rt_s)?rt:rd; assign imm_data = (imm_s)?16imm15,imm:161b0,imm; reg1 Reg( .R_Addr_A(rs), .R_Addr_B(rt), .Clk(clk), .W_Addr(W_Addr), .W_Data(W_Data), .R_Data_A(rs_data), .R_Data_B(rt_data), .

6、Reset(reset), .Write_Reg(Write_Reg) /不写入 ); assign ALU_B=(rt_imm_s)?imm_data:rt_data; /对源操作数运算,存于目的操作数 ex3 ALU( .ALU_OP(ALU_OP), .A(rs_data), .B(ALU_B), .F(ALU_Data), .ZF(ZF), .OF(OF) );/-wire clk_temp;wire d_outn;reg d_out=0;assign clk_temp = clk d_out ;assign d_outn = d_out ;/-always(posedge clk_t

7、emp)begin d_out = d_outn ; end /数据存储器 Data_Rom Datarom ( .clka(clk_temp), / input clka .wea(Mem_Write), / input 0 : 0 wea .addra(ALU_Data5:0), / input 5 : 0 addra .dina(rt_data), / input 31 : 0 dina .douta(M_R_Data) / output 31 : 0 douta); assign W_Data = alu_mem_s?M_R_Data:ALU_Data;endmodulepc模块:mo

8、dule ex7(clka,douta,rst,PC,PC_new );input rst;input clka;output wire31:0 douta;output reg31:0 PC;output 31:0 PC_new;wire 31:0dina;reg 0:0 wea;assign PC_new=PC+4;initialbegin PC=32h00000000; wea=0;end ex77 regrom ( .clka(clka), / input clka .wea(wea), / input 0 : 0 wea .addra(PC7:2), / input 5 : 0 ad

9、dra .dina(dina), / input 31 : 0 dina .douta(douta) / output 31 : 0 douta);always(posedge rst or posedge clka)begin if(rst) PC=32h00000000; else PC=PC_new;endendmoduleanalysis_inst模块:module analysis_inst(inst,ALU_OP,rs,rt,rd,Write_Reg,imm,rd_rt_s,imm_s,rt_imm_s,Mem_Write,alu_mem_s );input 31:0 inst;o

10、utput reg 2:0 ALU_OP;output reg 4:0 rs;output reg 4:0 rt;output reg 4:0 rd;output reg Write_Reg;output reg 15:0 imm;output reg rd_rt_s;output reg imm_s;output reg rt_imm_s;output reg Mem_Write;output reg alu_mem_s;always(*)begin/-处理R型指令- if(inst31:26=6b000000) /判断是否为R型 begin rd=inst15:11; /rd rt=ins

11、t20:16; /rt rs=inst25:21; /rs alu_mem_s=0;/以alu结果输出 Mem_Write=0;/是否写入数据存储器 rd_rt_s=0;/rd作为目的存储器 rt_imm_s=0;/rt作为源操作数 Write_Reg=(inst5:0=0)?1b0:1b1; case(inst5:0) /映射对应的ALU 6b100000:ALU_OP=3B100; 6b100010:ALU_OP=3B101; 6b100100:ALU_OP=3B000; 6b100101:ALU_OP=3B001; 6b100110:ALU_OP=3B010; 6b100111:ALU_

12、OP=3B011; 6b101011:ALU_OP=3B110; 6b000100:ALU_OP=3B111; endcase end/-处理I型立即寻址指令- if(inst31:29=3b001) begin imm=inst15:0; rt=inst20:16; /rt rs=inst25:21; /rs Mem_Write=0;/是否写入数据存储器 rd_rt_s=1;/rt作为目的存储器 rt_imm_s=1;/imm作为源操作数 alu_mem_s=0;/以alu结果输出 Write_Reg=1; /判断属于那条指令 case(inst31:26) 6b001000: begin

13、imm_s=1; ALU_OP=3B100;end 6b001100: begin imm_s=0; ALU_OP=3B000;end 6b001110: begin imm_s=0; ALU_OP=3B010;end 6b001011: begin imm_s=0; ALU_OP=3B110;end endcase end/-处理I型取数/存数指令- if(inst31:30=2b10&inst28:26=3b011) begin imm=inst15:0; rt=inst20:16; /rt rs=inst25:21; /rs rd_rt_s=1;/rt作为目的存储器 rt_imm_s=1

14、;/imm作为源操作数 imm_s=1; /判断属于那条指令 /读取数据时,以mem输出的数据写入,所以alu_mem_s=1; case(inst31:26) 6b100011: begin alu_mem_s=1; Mem_Write=0;Write_Reg=1;ALU_OP=3B100;end 6b101011: begin Mem_Write=1;Write_Reg=0;ALU_OP=3B100;end endcase endendendmoduleReg模块module reg1(R_Addr_A,R_Addr_B,Clk,W_Addr,W_Data,R_Data_A,R_Data_

15、B,Reset,Write_Reg);input Clk,Reset;input wire Write_Reg;input wire4:0 R_Addr_A;input wire4:0 W_Addr;input wire4:0 R_Addr_B;input wire31:0 W_Data;reg31:0 REG_Files31:0;output wire31:0 R_Data_A;output wire31:0 R_Data_B;integer i=0;always (posedge Clk or posedge Reset) /下降沿存储begin if(Reset) /初始化 begin

16、for(i=0;i=31;i=i+1) REG_Filesi=32h00000000; end else begin if(Write_Reg) REG_FilesW_Addr=W_Data; endend assign R_Data_A=REG_FilesR_Addr_A; assign R_Data_B=REG_FilesR_Addr_B;endmoduleALU模块:module ex3(ALU_OP,A,B,F,ZF,OF);input2:0 ALU_OP;input31:0 A,B;output reg 31:0 F;output reg ZF,OF;reg C32,C31;reg

17、7:0i;always(*)begincase(ALU_OP) 3b000:F=A&B; 3b001:F=A|B; 3b010:F=AB; 3b011:F=(A|B); 3b100:beginC32,F=A+B;OF=C32A31B31F31;end 3b101:beginC32,F=A-B;OF=C32A31B31F31;end 3b110:begin if(AB) F=1; else F=0; end 3b111:F=BA; default: begin end endcase ZF=(F=32h00000000)?1:0); endendmodule二、仿真波形三、电路图四、引脚配置(约束文件)五、思考与探索实验九的16位_不解析指令的简化版。六、意见和建议1.无

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1