4位全加器实验报告.docx

上传人:rrsccc 文档编号:9836428 上传时间:2021-03-29 格式:DOCX 页数:11 大小:17.27KB
返回 下载 相关 举报
4位全加器实验报告.docx_第1页
第1页 / 共11页
4位全加器实验报告.docx_第2页
第2页 / 共11页
4位全加器实验报告.docx_第3页
第3页 / 共11页
4位全加器实验报告.docx_第4页
第4页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

1、4位全加器实验报告数电第一次实验通信1402 程杰U202113468【实验目的】采用ISE集成开发环境,利用verilog硬件描述语言中行为描述模式、结构描述模式或数据流描述模式设计四进制全加器。【实验内容】加法器是数字系统中的基本逻辑器件。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。实现多位二进制数相加的电路称为加法器,它能解决二进制中1110的功能(当然还有 00、

2、01、10).【实验原理】全加器除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图4为全加器的方框图。图5全加器原理图。被加数Ai 、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si 与向高位的进位Ci作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表2中所列。信号输入端信号输出端A iB iC i S i C i0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1表2 全加器逻辑功能真值表图4 全加器方框图图5 全加器原理图多位全加器连接可以是逐位进位

3、,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。四位全加器如图9所示,四位全加器是由半加器和一位全加器组建而成:图9 四位全加器原理图【实验步骤】(1)建立新工程项目:打开ISE软件,进入集成开发环境,点击FileNew project建立一个工程项目adder_4bit。建立文本编辑文件:点击FileNew在该项目下新建Verilog源程序文件adder_4bit.v并且输入源程序。(2)编译和仿真工程项目:在verilog主页面下,选择Compile Compile All或点击工具栏上的按钮启动编译,直到project出现status栏全勾,即可进行仿真。选择si

4、mulate - start simulate或点击工具栏上的按钮开始仿真,在跳出来的 start simulate框中选择work-test_adder_4bit测试模块,同时撤销Enable Optimisim前的勾,之后选择ok。在sim-default框内右击选择test_adder_4bit,选择Add Wave,然后选择simulate-run-runall,观察波形,得出结论,仿真结束。四位全加器1、原理图设计如图9所示,四位全加器是由半加器和一位全加器组建而成:图9 四位全加器原理图【程序源代码】半加器程序代码如下:module Halfadder(S,C,A,B);input

5、 A, B;output S, C;xor (S,A,B);and (C,A,B);endmodule一位全加器程序代码如下:module onebit_adder(Sum,Co,A ,B,Ci);input A,B,Ci;output Sum,Co;wire S1,D1,D2;Halfadder HA1(.B(B), .S(S1), .C(D1), .A(A);Halfadder HA2(.A(S1), .B(Ci), .S(Sum), .C(D2);or g1(Co, D2, D1);endmodule四位全加器程序代码如下:module fourbit_adder(S,C3,A,B,C_

6、1);input 3:0 A,B;input C_1;output 3:0 S;output C3;wire C0,C1,C2;onebit_adder U0_FA(S0,C0,A0,B0,C_1);onebit_adder U1_FA(S1,C1,A1,B1,C0);onebit_adder U2_FA(S2,C2,A2,B2,C1);onebit_adder U3_FA(S3,C3,A3,B3,C2); endmodule四位全加器仿真代码如下:module fourbir_adder_TF;/ Inputsreg 3:0 A_t;reg 3:0 B_t;reg C_1_t;/ Outpu

7、tswire 3:0 S_t;wire C3_t;/ Instantiate the Unit Under Test (UUT)fourbit_adder uut (.S(S_t),.C3(C3_t),.A(A_t),.B(B_t),.C_1(C_1_t);initial begin/ Initialize InputsA_t = 0000;B_t = 0001;C_1_t = 0;#10 $display (A B=%b %b,S_t=%b,C3_t=%b,A_t,B_t,S_t,C3_t);A_t = 0011;B_t = 0011;C_1_t = 0;#10 $display (A B=

8、%b %b,S_t=%b,C3_t=%b,A_t,B_t,S_t,C3_t);A_t = 0111;B_t = 1100;C_1_t = 0;#10 $display (A B=%b %b,S_t=%b,C3_t=%b,A_t,B_t,S_t,C3_t);endendmodule仿真结果截图引脚分配代码NET A0 LOC =P11;NET A1 LOC =L3;NET A2 LOC =K3;NET A0 LOC =B4;NET B0 LOC =G3;NET B0 LOC =F3;NET B0 LOC =E2;NET B0 LOC =N3;/拨动开关NET S0 LOC =M5;NET S0

9、LOC =M11;NET S0 LOC =P7;NET S0 LOC =P6;NET C3 LOC =N5同步可逆二进制计数器【程序源代码】module M2_counter(UPDO,CP,Q);input UPDO,CP;output reg 3:0 Q;initial beginQ=0000;endalways (posedge CP)if(UPDO)/如果UPDO=1,则加法记数beginif(Q=15)Q=0;elseQ=Q+1;endelse/如果updo=0,则减法计数beginif(QQ=15;elseQ=Q-1;endendmodule【仿真源代码】module M2_cou

10、nter_TF;reg UPDO_t;reg CP_t;/ Outputswire 3:0 Q_t;M2_counter uut (.UPDO(UPDO_t),.CP(CP_t),.Q(Q_t);initial beginCP_t=0;/ Initialize InputsForever #10 CP_t=CP_t;endinitial beginUPDO_t=1;$display (CP UPDO = %b %b,Q=%b ,CP_t,UPDO_t,Q_t);#80 UPDO_t=0;$display (CP UPDO = %b %b,Q=%b ,CP_t,UPDO_t,Q_t);enden

11、dmodule【仿真截图】【引脚分配代码】/输入引脚分配NET UPDO LOC =P11;NET CP LOC =B8;/输出引脚分配NET Q0 LOC =M5;NET Q1 LOC =M11;NET Q2 LOC =P6;NET Q2 LOC =P7;【实验小结】通过设计4位全加器,及可逆二进制计数器的附加实验,使我对数电这门课程有了更深的兴趣,在实验过程中,我们首先通过Verilog语音对两个电路进行描述,然后通过写仿真文件,让我们能够更直观的看出我们的电路是否正确,也是在几乎没有成本的情况下让我们感受到了奇妙的数字电路的应用,最后我们编写引脚文件把所对应的文件烧录到BASYS2中,更加直观了。总之,通过这次实验,我对门级电路有了更深的认识,对 Verilog语言更为熟练,对ISE软件也能较灵活地使用,最重要的是,使我对数字电路这门课有了更浓厚的兴趣。最后,从仿真以及实际烧录的板子来看,两者相吻合且符合预期,由此也可以确定该实验是成功的。

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

当前位置:首页 > 社会民生


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