杭州电子科技大学计算机学院实验报告课程名称:计算机组成原理实验项目:多功能ALU设计实验指导教师:实验位置:姓名:班级:学号:日期:2015年4月29日实验目的(1)学习多功能ALU的工作原理,掌握运算器的设计方法。(2)掌握运用VerilogHDL进行行为描述与建模的技巧和方法。实验环境XilinxISEDesignSuite13.4实验内容(算法、程序、步骤和方法)(1)创建工程,编写ALU模块代码。(2)编写对A、B数据进行选择的模块代码。(3)编写选择输出数据模块代码。(4)设置顶层文件,并将三个模块代码导入。(5)设置输入信号,进行软件仿真并记录仿真波形。(6)生成BIT文件并下载入FPGA中,进行硬件测试。(7)记录测试结果。(接上)实验内容(算法、程序、步骤和方法)(1)ALU模块代码,利用三八译码器,将我们将要操作的对象,进行分别的处理。moduleALU_TOP(A,B,F,ZF,OF,ALU_OP);input[31:0]A,B;input[2:0]ALU_OP;outputZF,OF;output[31:0]F;reg[31:0]F;regZF,OF;reg[5:0]i;regC;reg[32:0]CF;always@(ALU_OPorAorB)begincase(ALU_OP)3'b000:beginCF=A&B;end3'b001:beginCF=A|B;end3'b010:beginCF=A^B;end3'b011:beginCF=A~^B;end3'b100:beginCF=A+B;end3'b101:beginCF=A-B;end3'b110:beginCF=(AB);end3'b111:beginCF=BA;endendcaseF[31:0]=CF[31:0];C=CF[32];ZF=0;for(i=0;i32;i=i+1)ZF=ZF|F[i];ZF=~ZF;OF=A[31]^B[31]^F[31]^C;endendmodule(2)输入数据选择模块代码,根据实验指导书上的对于32位数据的处理方式。moduleChoice(AB_SW,A,B);input[2:0]AB_SW;output[31:0]A,B;reg[31:0]A,B;wire[2:0]AB_SW;always@(*)begincase(AB_SW)3'b000:beginA=32'h0000_0000;B=32'h0000_0000;end3'b001:beginA=32'h0000_0003;B=32'h0000_0607;end3'b010:beginA=32'h8000_0000;B=32'h8000_0000;end3'b011:beginA=32'h7FFF_FFFF;B=32'h7FFF_FFFF;end3'b100:beginA=32'hFFFF_FFFF;B=32'hFFFF_FFFF;end3'b101:beginA=32'h8000_0000;B=32'hFFFF_FFFF;end3'b110:beginA=32'hFFFF_FFFF;B=32'h8000_0000;end3'b111:beginA=32'h1234_5678;B=32'h3333_2222;enddefault:beginA=32'h9ABC_DEF0;B=32'h1111_2222;endendcaseendendmodule(3)输出数据选择模块代码,根据实验指导书上的对于32位数据的处理方式。moduleCLED(F_LED_SW,LED,F,ZF,OF);input[31:0]F;inputZF,OF;input[2:0]F_LED_SW;output[7:0]LED;reg[7:0]LED;wire[31:0]F;wire[2:0]F_LED_SW;wireZF,OF;always@(*)begincase(F_LED_SW)3'b000:LED=F[7:0];3'b001:LED=F[15:8];3'b010:LED=F[23:16];3'b011:LED=F[31:24];default:beginLED[7]=ZF;LED[0]=OF;LED[6:1]=6'b0;endendcaseendendmodule(4)顶层设计模块代码:moduleALU(AB_SW,ALU_OP,F_LED_SW,LED);input[2:0]AB_SW,ALU_OP,F_LED_SW;output[7:0]LED;wire[2:0]AB_SW,ALU_OP,F_LED_SW;wire[31:0]A,B,F;wireZF,OF;wire[7:0]LED;ChoiceC1(AB_SW,A,B);ALU_TOPA1(A,B,F,ZF,OF,ALU_OP);CLEDC2(F_LED_SW,LED,F,ZF,OF);endmodule数据记录和计算仿真波形:结论(结果)实验的结果满足要求,在板子上正确的体现。数值比较大,我们利用了计算机上的自带的程序员高级计算器验证了我们的实验的正确性。试验心得与小结本实验,根据实验报告解决处理32位数据输入的办法,输出的办法,我们可以很好的利用板子的自身的按钮,展开我们的实验,并且需要很好的调用我们编写的各个模块的,在板子上展现出了处理后的正确的结果。面对环境问题的时候我们可以想象出不同的解决的方案,可以代替现有的条件的不足,也是一个比较好的解决的思路。指导教师评议成绩评定:指导教师签名: