1 / 29
文档名称:

ARM桶形移位器.doc

格式:doc   大小:3,240KB   页数:29页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ARM桶形移位器.doc

上传人:changjinlai 2019/10/18 文件大小:3.16 MB

下载得到文件列表

ARM桶形移位器.doc

文档介绍

文档介绍:《计算机组成原理实验》实验报告第5次实验:桶形移位器实验姓名:学号:**********级计算机科学与技术系03班邮箱:@时间:2012年10月18日实验目的:1、学****掌握桶形移位器的工作原理。2、掌握桶形移位器的设计方法。实验设备:1、装有QuartusII的计算机一台。2、AlteraDE2-70开发板或AlteraDE2-115开发板一块。三,实验原理图:Mips8位桶形移位器方框图:Mips8位桶形移位器组逻辑图:ARM32位桶形移位器方框图:ARM32位桶形移位器逻辑图:四,实验任务:1、用VerilogHDL语言或VHDL语言来编写,实现MIPS32位CPU中的桶形移位器。并在QuartusII上实现模拟仿真。2、用VerilogHDL语言或VHDL语言来编写,在AlteraDE2-70开发板或AlteraDE2-115开发板上实现一个8位的桶形移位器()。不MIPS32位CPU中的桶形移位器原理相同,使其能够正常工作。3、用VerilogHDL语言或VHDL语言来编写,实现ARM32位CPU中的桶形移位器。并在QuartusII上实现模拟仿真。五实验步骤做Mips8位桶形移位器:代码设计思想:Mips桶形移位器共有四种移位方式:逻辑左移,逻辑右移,算术右移,循环右移。其中,逻辑左移和逻辑右移比较简单,先进行移位,在给空位填0就行。算术右移和逻辑右移有所差别。算术右移时,先进行右移,再在高位填上符号位。如果符号位为0,则可以和逻辑右移合并在一起,如果符号位为1,则只需先移位,再在高位填1就行。输入实验代码:moduleshifter_111220120(in,op,out,amount);input[7:0]in;input[1:0]op;input[2:0]amount;outputreg[7:0]out;always@(oporinoramount)case(op) 0:begin case(amount) 3'b000:out<=in; 3'b001:out<={in[6:0],1'b0}; 3'b010:out<={in[5:0],2'b0}; 3'b011:out<={in[4:0],3'b0}; 3'b100:out<={in[3:0],4'b0}; 3'b101:out<={in[2:0],5'b0}; 3'b110:out<={in[1:0],6'b0}; 3'b111:out<={in[0],7'b0}; endcase end 1:begin case(amount) 3'b000:out<=in; 3'b001:out<={1'b0,in[7:1]}; 3'b010:out<={2'b0,in[7:2]}; 3'b011:out<={3'b0,in[7:3]}; 3'b100:out<={4'b0,in[7:4]}; 3'b101:out<={5'b0,in[7:5]}; 3'b110:out<={6'b0,in[7:6]}; 3'b111:out<={7'b0,in[7]}; endcase end 2:begin if(in[7]==0) begin case(amount) 3'b000:out<=in; 3'b001:out<={1'b0,in[7:1]}; 3'b010:out<={2'b0,in[7:2]}; 3'b011:out<={3'b0,in[7:3]}; 3'b100:out<={4'b0,in[7:4]}; 3'b101:out<={5'b0,in[7:5]}; 3'b110:out<={6'b0,in[7:6]}; 3'b111:out<={7'b0,in[7]}; endcase end else begin case(amount) 3'b000:out<=in; 3'b001:out<={1'b1,in[7:1]}; 3'b010:out<={2'b10,in[7:2]}; 3'b011:out<={3'b100,in[7:3]}; 3'b100:out<={4'b1000,in[7:4]}; 3'b101:out<={5'b10000,in[7:5]}; 3'b110:out<={6'b100000,in[7:6]}; 3'b111:out<={7'b1000000,in[7]}; endcase end end 3:begin case(amount) 3'b000:out<=in; 3'b001:out<={in[0],in[7:1]}; 3'b010:out<={in[1:0],in[7:2]}; 3'b011:out<={in[2:0],in[7:3]}; 3'b100:out<={in[3:0],in[7:4]}; 3'b101: