十六位运算器ALU实验报告.docx

上传人:罗晋 文档编号:6357254 上传时间:2020-11-01 格式:DOCX 页数:19 大小:249.78KB
返回 下载 相关 举报
十六位运算器ALU实验报告.docx_第1页
第1页 / 共19页
十六位运算器ALU实验报告.docx_第2页
第2页 / 共19页
十六位运算器ALU实验报告.docx_第3页
第3页 / 共19页
十六位运算器ALU实验报告.docx_第4页
第4页 / 共19页
十六位运算器ALU实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《十六位运算器ALU实验报告.docx》由会员分享,可在线阅读,更多相关《十六位运算器ALU实验报告.docx(19页珍藏版)》请在三一文库上搜索。

1、学生实验报告实验名称 用Verilog HDL语句实现16位运算器的功能实验日期 2013年10月19学号 2012551212姓名 李超班级 12计算机科学与技术一班1、 实验目的与要求1、了解运算器的组成结构;2、掌握算术逻辑运算器的工作原理;3、掌握简单运算器的数据传送通道4、掌握用Verilog HDL实现16位简单运算器的设计二、实验原理74LS181的逻辑功能表图中,S0到S3是四个控制端,用于选择进行何种运算。M用于控制ALU进行算术运算还是逻辑运算。 当M=0时,M对进位信号没有任何影响,Fi值与操作数Ai,Bi以及地位向本位进位Cn+1有关,所以M=0时进行算术运算。操作数用

2、补码表示,“加”只算术加,运算时考虑进位;“+”指逻辑加,不考虑进位;减法运算时,减法取反码运算后用加法器实现,结果输出为A减B减1在最末位产生一个强迫进位(加1),以得到A减B的结果。 当M=1时,封锁了各位的进位输出Cn+i=0,因此各位的运算结果Fi仅与操作数Ai,Bi有关,此时进行逻辑运算。3、 实验内容与步骤 1.根据书85面的逻辑功能表编写Verilog HDL语句,编译,仿真等步骤。实验代码SN74181:module sn74181(A,B,S,Cn,M,F,C);parameter bit_width=4;output bit_width-1:0F;output C;inpu

3、t bit_width-1:0A,B,S;input Cn,M;reg C;reg Y=0;reg bit_width-1:0F;reg t;initial C=0;always(S)begin case(S)4b0000:beginif(M) t,F=1b0,A;elsebeginif(Cn) t,F=1b0,A;else t,F=1b0,A|1;endend4b0001:beginif(M) t,F=(1b0,A|1b0,B);elsebeginif(Cn) t,F=1b0,A|1b0,B;else t,F=1b0,A|1b0,B+1;endend4b0010:beginif(M) t,F

4、=1b0,A&1b0,B;elsebeginif(Cn) t,F=1b0,A|(1b0,B);else t,F=(1b0,A|(1b0,B)+1;endend4b0011:beginif(M) t,F=0;elsebeginif(Cn) t,F=t,F-1;else t,F=0;endend4b0100 :beginif(M) t,F=(1b0,A&1b0,B);elsebeginif(Cn) t,F=1b0,A+(1b0,A&(1b0,B);else t,F=1b0,A+(1b0,A&(1b0,B)+1;endend4b0101 :beginif(M) t,F=1b0,B;elsebegin

5、if (Cn) t,F=(1b0,A&(1b0,B)+(1b0,A|1b0,B);else t,F=(1b0,A&(1b0,B)+(1b0,A|1b0,B)+1;endend4b0110 :beginif(M) t,F=1b0,A1b0,B;elsebeginif(Cn) t,F=1b0,A-1b0,B-1;else t,F=1b0,A-1b0,B;endend4b0111 :beginif(M) t,F=1b0,A&(1b0,B);elsebeginif(Cn) t,F=1b0,A&(1b0,B)-1;else t,F=1b0,A&(1b0,B);endend4b1000 :beginif(

6、M) t,F=1b0,A|1b0,B;elsebeginif(Cn) t,F=1b0,A+(1b0,A&1b0,B);else t,F=1b0,A+(1b0,A&1b0,B)+1;endend4b1001 :beginif(M) t,F=1b0,(AB);elsebeginif(Cn) t,F=1b0,A+1b0,B+1;else t,F=1b0,A+1b0,B;endend4b1010 :beginif(M) t,F=1b0,B;elsebeginif(Cn) t,F=(1b0,A&1b0,B)+(1b0,A|(1b0,B);else t,F=(1b0,A&1b0,B)+(1b0,A|(1b

7、0,B)+1;endend4b1011 :beginif(M) t,F=1b0,A&1b0,B;elsebeginif(Cn) t,F=1b0,A&1b0,B-1;else t,F=1b0,A&1b0,B;endend4b1100 :beginif(M) t,F=1;elsebeginif(Cn) t,F=1b0,A+1b0,A;else t,F=1b0,A+1b0,A+1;endend4b1101:beginif(M) t,F=1b0,A|(1b0,B);elsebeginif(Cn) t,F=1b0,A+(1b0,A|1b0,B);else t,F=1b0,A+(1b0,A|1b0,B)+

8、1;endend4b1110 :beginif(M) t,F=1b0,A|1b0,B;elsebeginif(Cn) t,F=1b0,A+(1b0,A|(1b0,B);else t,F=1b0,A+(1b0,A|(1b0,B)+1;endend4b1111 :beginif(M) t,F=1b0,A;elsebeginif(Cn) t,F=1b0,A-1;else t,F=1b0,A;endendendcaseC=t;endEndmoduleSHIFT:module shift(A,choose,result); parameter bit_width=16; input bit_width-

9、1:0A; input1:0 choose; output bit_width-1:0 result; reg bit_width-1:0result; always(A or choose) begin case(choose) 2b01: begin result=A1; end endcase endEndmoduleALU 16:module alu_16(r,overflow,z,result,c,n,p,x); parameter width=16; input width-1:0 r; input 1:0x; output width-1:0 result; output ove

10、rflow,z,c,p,n; reg width-1:0 a,b; reg 3:0s; reg 1:0sh; reg cn,m,ov; wire co1,co2,co3; wire width-1:0co,re1,re2;always (x or r) begincase(x)2b11: begin a=r; end 2b10: begin b=r; end 2b00: begin s=r3:0;sh=r5:4;m=r8;cn=r12; end endcase endsn74181 u_sn74181_1(.A(a3:0),.B(b3:0),.S(s),.M(m),.Cn(cn),.C(co1

11、),.F(re13:0);sn74181 u_sn74181_2(.A(a7:4),.B(b7:4),.S(s),.M(m),.Cn(co1),.C(co2),.F(re17:4);sn74181 u_sn74181_3(.A(a11:8),.B(b11:8),.S(s),.M(m),.Cn(co2),.C(co3),.F(re111:8);sn74181 u_sn74181_4(.A(a15:12),.B(b15:12),.S(s),.M(m),.Cn(co3),.C(overflow),.F(re115:12);shift u_shift(.A(a),.choose(sh),.result

12、(re215:0);assign result=(sh?re2:re1);assign z=|result;assign n=result15;Endmodule仿真波形图按照模式一电路图结构图设置对应的引脚参数。确认无误后,配置文件下载引脚锁定4 实验验证与测试选择移位操作,当输入四个5时,输出为四个A,结果正确,当x为11时输入四个1,x为10时输入四个1,将s设为9,Cn设为0时,则执行加法,输出应为四个2,将是设为6,Cn设为1时,执行减法输出应为四个零。五实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等) 在本次实验当中首先出现的问题是不知如何锁定引脚,后来在同学的帮助下看懂了电路结构图,然后按照老师给的引脚对照表进行引脚锁定。 接着又发现有部分功能无法实现,在老师的提醒下,才发现然来是没有取反,以及没有打上括号,导致在优先级出现问题。 可能是软件的问题,是的A和B的取反功能无法实现,所以后来才会用ta和tb代替A和B的反。 至此,试验才算完成,在本次试验中,学习到了很多的知识,知道了按照哪种流程完成计算机组成原理实验,以及学会简单的使用Verilog HDL语句。做实验是一个需要很多耐性和细心的过程,切记不可急躁,有不懂的地方可以向老师和同学请教,有志者事竟成。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1