资源描述:
《杭电计算机组成原理寄存器堆设计实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、杭州电子科技大学计算机学院实验报告课程名称:计算机组成原理实验项目:寄存器堆设计实验指导教师实验位置:姓班级:学号:日期:2015年5月7日实验目的(1)学习和使用VerlilogHDL进行和思绪电路的设计方法(2)掌握灵活的运用VerilogHDL进行各种描述与建模的技巧和方法(3)学习寄存器堆的数据传送与读写工作原理,掌握寄存器读一的设计方法实验环境ISEDesignSuite14.6DigilentAdeptNexys3实验板实验内容(算法、程序、步骤和方法)根据实验原理设计32个32位的寄存器堆,有俩个读端口,1个写端口,既能同时读出两个寄存器的值,写入一个寄存器,设计寄存器只需要定
2、义一个reg类型的数组即可完成,利用数组下标操作,寄存器即可,同时也有Rest和CLk信号控制我们的操作的进行。8位的LED进行显示我们读出的数据的一部分!1.实验的顶层模块:moduleTest_Rgisterfile(Addr,Write_Reg,C1,C2,Clk,Reset,LED);input[4:0]Addr;input[1:0]C1;inputWrite_Reg,C2,Clk,Reset;outputreg[7:0]LED;wire[31:0]R_Data_A,R_Data_B;reg[31:0]W_Data;reg[4:0]A,B;Registerfilereg1(A,B,A
3、ddr,Write_Reg,W_Data,Clk,Reset,R_Data_A,R_Data_B);always@(AddrorWrite_RegorC1orC2orR_Data_AorR_Data_B)beginA=0;B=0;LED=0;W_Data=0;if(!Write_Reg)beginif(!C2)beginA=Addr;case(C1)2'b00:LED=R_Data_A[7:0];2'b01:LED=R_Data_A[15:8];2'b10:LED=R_Data_A[23:16];2'b11:LED=R_Data_A[31:24];endcaseendelsebeginB=A
4、ddr;case(C1)2'b00:LED=R_Data_B[7:0];2'b01:LED=R_Data_B[15:8];2'b10:LED=R_Data_B[23:16];2'b11:LED=R_Data_B[31:24];endcaseendendelsebegincase(C1)2'b00:W_Data=32'h0000_0003;2'b01:W_Data=32'h0000_0607;2'b10:W_Data=32'hFFFF_FFFF;2'b11:W_Data=32'h1111_1234;endcaseendendendmodule1.寄存器的操作模块:moduleRegisterf
5、ile(input[4:0]R_Addr_A,input[4:0]R_Addr_B,input[4:0]W_Addr,inputWrite_Reg,input[31:0]W_Data,inputClk,inputReset,output[31:0]R_Data_A,output[31:0]R_Data_B);reg[31:0]REG_Files[0:31];reg[5:0]i;initialbeginfor(i=0;i<=31;i=i+1)REG_Files[i]=0;endassignR_Data_A=REG_Files[R_Addr_A];assignR_Data_B=REG_Files
6、[R_Addr_B];always@(posedgeClkorposedgeReset)beginif(Reset)for(i=0;i<=31;i=i+1)REG_Files[i]=0;elseif(Write_Reg&&W_Addr!=0)REG_Files[W_Addr]=W_Data;endendmodule(接上)实验内容(算法、程序、步骤和方法)1.管脚配置NET"Addr[0]"LOC=M8;NET"Addr[1]"LOC=N8;NET"Addr[2]"LOC=U8;NET"Addr[3]"LOC=V8;NET"Addr[4]"LOC=T5;NET"C1[0]"LOC=T10;N
7、ET"C1[1]"LOC=T9;NET"C2"LOC=B8;NET"Clk"LOC=C9;NET"LED[0]"LOC=U16;NET"LED[1]"LOC=V16;NET"LED[2]"LOC=U15;NET"LED[3]"LOC=V15;NET"LED[4]"LOC=M11;NET"LED[5]"LOC=N11;NET"LED[6]"LOC=R11;NET"LED[7]"LOC=T11;NET"Reset