首页 实验八 全加器设计

实验八 全加器设计

举报
开通vip

实验八 全加器设计2015~2016秋冬浙江大学计算机学院实验教学中心8逻辑与计算机设计基础实验简易计算器设计(运算器设计)一、全加器的设计分析22010-11-14全加器的设计分析掌握一位全加器的工作原理和逻辑功能掌握串行进位加法器的工作原理和进位延迟掌握超前进位的工作原理掌握减法器的实现原理了解加法器在CPU中的地位掌握FPGA开发平台进行简单的I/O数据交互32010-11-14全加器的设计分析实验设备1台1套装有ISE的计算机系统SpartanIII实验板实验材料无42010-11-14全加器的设计分析1.实现16位加减器的...

实验八 全加器设计
2015~2016秋冬浙江大学计算机学院实验教学中心8逻辑与计算机 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 基础实验简易计算器设计(运算器设计)一、全加器的设计 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 22010-11-14全加器的设计分析掌握一位全加器的工作原理和逻辑功能掌握串行进位加法器的工作原理和进位延迟掌握超前进位的工作原理掌握减法器的实现原理了解加法器在CPU中的地位掌握FPGA开发平台进行简单的I/O数据交互32010-11-14全加器的设计分析实验设备1台1套装有ISE的计算机系统SpartanIII实验板实验材料无42010-11-14全加器的设计分析1.实现16位加减器的调试仿真2.16位计算器设计AiBiCiSiCi+1000000011001010011011001010101110011111152010-11-14全加器的设计分析1.一位全加器iiii三个输入位:数据位Ai和Bi,低位进位输入Ci二个输出位:全加和Si,进位输出Ci+1SiABiCiCi1ABiBCiCiA62010-11-14全加器的设计分析or(co,c1,c2,c3);endmodule•根据一位全加器的输入输出关系,得到电路图moduleadder_1bit(a,b,ci,s,co);//portdeclarationand(c1,a,b),(c2,b,ci),(c3,a,ci);xor(s1,a,b),(s,s1,ci);72010-11-14全加器的设计分析•多位全加器可由一位全加器将进位串接构成•高位进位生成速度慢,位数越多时间越长82010-11-14全加器的设计分析moduleadder_8bits(A,B,Ci,S,Co);//portandvariabledeclarationS[1],S[2],S[3],S[4],S[5],S[6],S[7],S[8],Ctemp[1]),Ctemp[2]),Ctemp[3]),Ctemp[4]),Ctemp[5]),Ctemp[6]),Ctemp[7]),Co);adder_1bitA1_1(A[1],B[1],Ci,A1_2(A[2],B[2],Ctemp[1],A1_3(A[3],B[3],Ctemp[2],A1_4(A[4],B[4],Ctemp[3],A1_5(A[5],B[5],Ctemp[4],A1_6(A[6],B[6],Ctemp[5],A1_7(A[7],B[7],Ctemp[6],A1_8(A[8],B[8],Ctemp[7],endmodulemoduleadder_32bits(A,B,Ci,S,Co);//portandvariabledeclarationS[8:1],S[16:9],S[24:17],S[32:25],Ctemp[1]),Ctemp[2]),Ctemp[3]),Co);adder_8bitsA8_1(A[8:1],B[8:1],Ci,A8_2(A[16:9],B[16:9],Ctemp[1],A8_3(A[24:17],B[24:17],Ctemp[2],A8_4(A[32:25],B[32:25],Ctemp[3],endmodule92010-11-14全加器的设计分析•用负数补码加法实现,减数当作负数求补码•共用加法器•用“异或”门控制求反,最低进位位加一Ctr为0时,S[7:0]A[7:0]B[7:0]Ctr为1时,S[7:0]A[7:0]B[7:0]A[7:0]B[7:0]1102010-11-14全加器的设计分析moduleadd_sub_8bits(A,B,Ctr,S,Co);inputwire[8:1]A,B;inputwireCtr;outputwire[8:1]S;outputwireCo;wire[8:1]Bo;wire[7:1]Ctemp;assignBo={8{Ctr}}^B;adder_1bitA1_1(A[1],Bo[1],Ctr,A1_2(A[2],Bo[2],Ctemp[1],A1_3(A[3],Bo[3],Ctemp[2],A1_4(A[4],Bo[4],Ctemp[3],A1_5(A[5],Bo[5],Ctemp[4],A1_6(A[6],Bo[6],Ctemp[5],A1_7(A[7],Bo[7],Ctemp[6],A1_8(A[8],Bo[8],Ctemp[7],S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[8],Ctemp[1]),Ctemp[2]),Ctemp[3]),Ctemp[4]),Ctemp[5]),Ctemp[6]),Ctemp[7]),Co);endmoduleCtr=0,做加法Ctr=1,做减法,同时C0=1112010-11-14全加器的设计分析•超前进位加法器用当前输入直接产生进位输出•对于给定的第i位全加器,其进位有如下规律:–当Ai=Bi=1时,无论是否有进位输入,都有进位产生,即Ci+1=1•定义进位生成函数:Gi=Ai∧Bi–当半加器和为1,且进位Ci=1时,进位被传递至输出,即Ci+1=1•定义进位传递函数:Pi=Ai⊕Bi•输出进位通过二个门(与门、或门)即可得到•C1•C2•C3•C4====G0+P0C0G1+P1C1=G1+P1G0+P1P0C0G2+P2C2=G2+P2G1+P2P1G0+P2P1P0C0G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0122010-11-14全加器的设计分析S3A3B3S2A2B2S1A0B0A1B1S0C0C3PCPCGGPCGG3P3C3GG2P2C2PG1CP1C1G0P0四位超前进位加法器132010-11-14全加器的设计分析•当加法器位数较多时,进位输出函数式很长,电路很复杂•为了在速度和复杂性之间权衡,可采用分组超前进位方式•16位超前进位加法器可分4组4位加法器,每4位加法有一个向上的进位输出–每组加法部件产生组进位函数–C16表达式形式上与C4相同,可以使用4位超前进位电路142010-11-14全加器的设计分析7654981176576599C8G7PG6P7PG5P7P6PG4P7P6P5PC4G4~7P4~7C4C12G11P11G10P11P10G9P11P10PG8P11P10P9PC8G8~11P8~11C8C16G15P15G14P15P14G13P15P14P13G12P15P14P13P12C12G12~15P12~15C12G12~15P12~15(G8~11P8~11(G4~7P4~7(G0~3P0~3C0)))G0~3G3P3G2P3P2G1P3P2PG0G4~7G7PG6P7PG5P7P6PG4G8~11G11P11G10P11P10G9P11P10PG8G12~15G15P15G14P15P14G13P15P14P13G12P0~3P3P2PP0P4~7PPPP4P8~11P11P10PP8P12~15P15P14P13P12152010-11-14全加器的设计分析1.实现16位加减器的调试仿真2.16位计算器设计,在实验板上验证。162010-11-14全加器的设计分析1.用Verilog结构化描述语言实现16位加减器add_sub_16bits令A[15:0]=AAAA,B[15:0]=BBBB,对add_sub_16bits模块进行仿真3.记录并分析仿真结果,若有错误应返回修改代码172010-11-14全加器的设计分析一.功能:1.2.两个16位操作数支持按键修改进入计算状态后,可进行加/减/与/或操作,并显示结果二.步骤:1.2.3.4.5.编写Top模块调用前面16为全加器和显示模块增加创建操作数模块/计算结果模块编写UCF文件。下载到板子上验证。182010-11-14全加器的设计分析类型引脚取值含义输入sw[3:0]Sw[0]=1做加法操作Sw[1]=1做减法操作Sw[2]=1做与操作Sw[3]=1做或操作btn[0--3]上升沿修改操作数A(扩展板上)btn[4--7]修改操作数B(扩展板上)输出  运算结果显示16位数字在Spartan-3板上的4个七段数码moduleadder_16bits(A,B,Ctr,S,Co);parametersize=16;input[size:1]A;input[size:1]B;inputCtr;output[size:1]S;outputCo;wire[size-1:1]Ctemp;wire[size:1]Bo;assignBo={16{Ctr}}^B;16位全加器程序adder_1bitA1(.a(A[1]),.b(Bo[1]),.ci(Ctr),.s(S[1]),.co(Ctemp[1])),A2(A[2],Bo[2],Ctemp[1],S[2],Ctemp[2]),A3(A[3],Bo[3],Ctemp[2],S[3],Ctemp[3]),A4(A[4],Bo[4],Ctemp[3],S[4],Ctemp[4]),A5(A[5],Bo[5],Ctemp[4],S[5],Ctemp[5]),A6(A[6],Bo[6],Ctemp[5],S[6],Ctemp[6]),A7(A[7],Bo[7],Ctemp[6],S[7],Ctemp[7]),A8(A[8],Bo[8],Ctemp[7],S[8],Ctemp[8]),A9(A[9],Bo[9],Ctemp[8],S[9],Ctemp[9]),A10(A[10],Bo[10],Ctemp[9],S[10],Ctemp[10]),A11(A[11],Bo[11],Ctemp[10],S[11],Ctemp[11]),A12(A[12],Bo[12],Ctemp[11],S[12],Ctemp[12]),A13(A[13],Bo[13],Ctemp[12],S[13],Ctemp[13]),A14(A[14],Bo[14],Ctemp[13],S[14],Ctemp[14]),A15(A[15],Bo[15],Ctemp[14],S[15],Ctemp[15]),A16(A[16],Bo[16],Ctemp[15],S[16],Co);endmodulemoduleadder_1bit(a,b,ci,s,co);//portdeclarationinputwirea,b,ci;outputwires,co;and(c1,a,b),(c2,b,ci),(c3,a,ci);xor(s1,a,b),(s,s1,ci);or(co,c1,c2,c3);endmodule一位全加器moduledisplay32bits(clk,disp_num,digit_anode,segment);inputclk;input[31:0]disp_num;output[7:0]digit_anode;output[7:0]segment;reg[7:0]digit_anode;reg[7:0]segment;reg[12:0]cnt=0;wire[31:0]disp_num;reg[3:0]num;扩展的32位显示(display32bits)程序always@(posedgeclk)begincase(cnt[12:10])3'b000:begindigit_anode<=8'b11111110;num<=disp_num[3:0];end3'b001:begindigit_anode<=8'b11111101;num<=disp_num[7:4];end3'b010:begindigit_anode<=8'b11111011;num<=disp_num[11:8];end3'b011:begindigit_anode<=8'b11110111;num<=disp_num[15:12];end3'b100:begindigit_anode<=8'b11101111;num<=disp_num[19:16];end3'b101:begindigit_anode<=8'b11011111;num<=disp_num[23:20];end3'b110:begindigit_anode<=8'b10111111;num<=disp_num[27:24];end3'b111:begindigit_anode<=8'b01111111;num<=disp_num[31:28];endendcasecase(num)4'b0000:segment<=8'b11000000;4'b0001:segment<=8'b11111001;4'b0010:segment<=8'b10100100;4'b0011:segment<=8'b10110000;4'b0100:segment<=8'b10011001;4'b0101:segment<=8'b10010010;4'b0110:segment<=8'b10000010;4'b0111:segment<=8'b11111000;4'b1000:segment<=8'b10000000;4'b1001:segment<=8'b10010000;4'b1010:segment<=8'b10001000;4'b1011:segment<=8'b10000011;4'b1100:segment<=8'b11000110;4'b1101:segment<=8'b10100001;4'b1110:segment<=8'b10000110;4'b1111:segment<=8'b10001110;endcaseendalways@(posedgeclk)begincnt<=cnt+1;endendmodule192010-11-14全加器的设计分析••••••••••••••moduletop(inputwireclk,inputwire[7:0]btn_in,inputwire[3:0]switch,outputwire[11:0]anode,outputwire[15:0]segment);//variabledefinition:op1,op2,disp_num…reg[15:0]op1,op2;wire[15:0]display_num;wire[7:0]btn_out;wire[15:0]result;wire[31:0]display_num32b;initialbeginop1=16'b0011_0011_0011_0011;//3333op2=16'b0010_0010_0010_0010;//2222Endpbdebouncep0(clk,btn_in[0],btn_out[0]);//去抖程序pbdebouncep1(clk,btn_in[1],btn_out[1]);pbdebouncep2(clk,btn_in[2],btn_out[2]);pbdebouncep3(clk,btn_in[3],btn_out[3]);pbdebouncep4(clk,btn_in[4],btn_out[4]);Anode[11:0]:anode[3:0]为SPART3板上七段数码管的4个位选。Anode[11:4]:为扩展板上七段数码管的8个位选。Segment[15:0]:segment[7:0]为SPART3板子上七段数码管的8个段信号。Segment[15:8]为扩展板上七段数码管的8个段信号。pbdebouncep5(clk,btn_in[5],btn_out[5]);pbdebouncep6(clk,btn_in[6],btn_out[6]);pbdebouncep7(clk,btn_in[7],btn_out[7]);displaym0(clk,display_num,anode[3:0],segment[7:0]);//原16位显示程序display32bitsm1(clk,display_num32b,anode[11:4],segment[15:8]);//32位显示程序calculate_resultm2(switch,op1,op2,result);//运算值always@(posedgebtn_out[0])op1[3:0]<=op1[3:0]+4‘d1;//操作数4位+1always@(posedgebtn_out[1])op1[7:4]<=op1[7:4]+4'd1;always@(posedgebtn_out[2])op1[11:8]<=op1[11:8]+4'd1;always@(posedgebtn_out[3])op1[15:12]<=op1[15:12]+4'd1;always@(posedgebtn_out[4])op2[3:0]<=op2[3:0]+4'd1;always@(posedgebtn_out[5])op2[7:4]<=op2[7:4]+4'd1;always@(posedgebtn_out[6])op2[11:8]<=op2[11:8]+4'd1;always@(posedgebtn_out[7])op2[15:12]<=op2[15:12]+4'd1;assigndisplay_num32b={op2,op1};//操作数2,1合成32位数据。assigndisplay_num=result;endmodule202010-11-14全加器的设计分析••••••••••••••••modulecalculate_result(switch,op1,op2,result);input[3:0]switch;input[15:0]op1;input[15:0]op2;outputreg[15:0]result;wire[15:0]add_sub_result;adder_16bitsm0(op1,op2,switch[1],add_sub_result,co);always@(switch)begincase(switch)4'b0001:result=add_sub_result;4'b0010:result=add_sub_result;4'b0100:result=op1&op2;4'b1000:result=op1|op2;default:result=16'h0000;endcaseendendmoduleNET"clk"LOC="T9";NET"btn_in[0]"loc="E6";NET"btn_in[1]"loc="D5";NET"btn_in[2]"loc="C5";NET"btn_in[3]"loc="D6";NET"btn_in[4]"loc="C6";NET"btn_in[5]"loc="E7";NET"btn_in[6]"loc="C7";NET"btn_in[7]"loc="D7";NET"switch[0]"LOC="F12";NET"switch[1]"LOC="G12";NET"switch[2]"LOC="H14";NET"switch[3]"LOC="H13";NET"anode[0]"LOC="D14";NET"anode[1]"LOC="G14";NET"anode[2]"LOC="F14";NET"anode[3]"LOC="E13";NET"segment[0]"LOC="E14";NET"segment[1]"LOC="G13";NET"segment[2]"LOC="N15";NET"segment[3]"LOC="P15";UCF约束文件NET"segment[4]"LOC="R16";NET"segment[5]"LOC="F13";NET"segment[6]"LOC="N16";NET"segment[7]"LOC="P16";NET"anode[4]"LOC="B11";NET"anode[5]"LOC="A10";NET"anode[6]"LOC="B10";NET"anode[7]"LOC="A9";NET"anode[8]"LOC="A8";NET"anode[9]"LOC="B8";NET"anode[10]"LOC="A7";NET"anode[11]"LOC="B7";NET"segment[8]"LOC="C8";NET"segment[9]"LOC="D8";NET"segment[10]"LOC="C9";NET"segment[11]"LOC="D10";NET"segment[12]"LOC="A3";NET"segment[13]"LOC="B4";NET"segment[14]"LOC="A4";NET"segment[15]"LOC="B5";扩展板UCF引脚数码管位选
本文档为【实验八 全加器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
正方体
暂无简介~
格式:ppt
大小:2MB
软件:PowerPoint
页数:30
分类:
上传时间:2022-05-10
浏览量:0