4位全加器实验报告_第1页
4位全加器实验报告_第2页
4位全加器实验报告_第3页
4位全加器实验报告_第4页
4位全加器实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、【实验原理】全加器除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图4为全加器的方框图。图5全加器原理图。被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表2中所列。信号输入端信号输出端AiBiCiSiCi0000000110010100110110010101011100111111表2 全加器逻辑功能真值表图4 全加器方框图图5 全加器原理图多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。四位全加器如图9所示,四

3、位全加器是由半加器和一位全加器组建而成:图9 四位全加器原理图【实验步骤】(1)建立新工程项目:打开ISE软件,进入集成开发环境,点击FileNew project建立一个工程项目adder_4bit。建立文本编辑文件:点击FileNew在该项目下新建Verilog源程序文件adder_4bit.v并且输入源程序。(2)编译和仿真工程项目:在verilog主页面下,选择Compile Compile All或点击工具栏上的按钮启动编译,直到project出现status栏全勾,即可进行仿真。选择simulate - start simulate或点击工具栏上的按钮开始仿真,在跳出来的 star

4、t 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 A, B; output S, C; xor (S,A,B); and (C,A,B);

5、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_1 ); input 3:0 A,B; input C_1; outp

6、ut 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;/ Outputswire 3:0 S_t;wire C3_t;/

7、 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=%b

8、 %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); end endmodule仿真结果截图引脚分配代码NET "A0" LOC ="P11"NET "A1" LOC ="L3"NET "A2" LOC ="K3"NET "A0&q

9、uot; LOC ="B4"NET "B0" LOC ="G3"NET "B0" LOC ="F3"NET "B0" LOC ="E2"NET "B0" LOC ="N3"/拨动开关NET "S0" LOC ="M5"NET "S0" LOC ="M11"NET "S0" LOC ="P7"NET

10、"S0" LOC ="P6"NET "C3" LOC ="N5同步可逆二进制计数器【程序源代码】module M2_counter(UPDO,CP,Q ); input UPDO,CP; output reg 3:0 Q; initial begin Q=0000; end always (posedge CP) if(UPDO)/如果UPDO=1,则加法记数 begin if(Q=15) Q=0; else Q=Q+1; end else/如果updo=0,则减法计数 begin if(Q<=0) Q=15; els

11、e Q=Q-1;end endmodule【仿真源代码】module M2_counter_TF; reg UPDO_t;reg CP_t; / Outputs wire 3:0 Q_t; M2_counter uut (.UPDO(UPDO_t),.CP(CP_t),.Q(Q_t);initial begin CP_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 UPD

12、O_t=0;$display ("CP UPDO = %b %b,Q=%b ",CP_t,UPDO_t,Q_t);end endmodule【仿真截图】【引脚分配代码】/输入引脚分配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语音对两个电路进行描述,然后通过写仿真文件,让我们能够更直观的看出我们的电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论