赞
踩
目录
1)首先安装Logisim软件,新建一个项目,采用门电路组合电路方式完成一个1位全加器的设计,并在Logisim中进行测试。然后封装这个1位全加器为自定义的一个子电路模块(比如名称为OneAdder),然后新建一个项目,用1位全加器串行级联方式完成一个4位全加器的设计,并进行功能测试。
2)首先基于Quartus 软件完成一个1位全加器的设计。分别采用原理图输入以及 Verilog编程 这两种设计方法。然后通过4个1位全加器的串行级联,完成一个4位全加器的 原理图设计;再改用 Verilog编程(3种模式:门电路、数据流和行为级描述),完成这个4位全加器设计,并观察Verilog代码编译综合后生成的 RTL电路,与之前电路图设计的4位全加器电路进行对比 。
3)编写 测试激励Verilog模块,用Modelsim 对4位全加器 Verilog模块进行仿真测试,观察仿真波形图。如果仿真波形的逻辑功能正确,就连接的实验室 DE2-115开发板硬件上,完成引脚绑定,烧录,再拨动按钮开关,进行加法器 正确性的验证。
半加器是指对输入的两个一位二进制数相加(A与B),输出一个结果位(SUM)和进位(C),没有进位的输入加法器电路,是一个实现一位二进制数的加法电路。
被加数A | 加数B | 和SUM | 进位C |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
逻辑表达式
根据上述的真值表,当A和B相同时SUM为0,否则为1;逻辑关系属于异或;当A和B同时为1时,C等于1,其余都为零,逻辑关系为与。
所以我们可以得到如下的逻辑表达式:
- module half adder(
- input wire A,
- input wire B,
- output wire C,
- output wire sum
- );
-
- //assign sum = (A == B) ? 0 : 1; //这两种方式都可以实现
- assign sum = A^B;
- assign C= A&B;
-
- endmodule
全加器是指对输入的两个二进制数相加(A与B)同时会输入一个低位传来的进位(Ci-1),得到和数(SUM)和进位(Ci);一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。常用二进制四位全加器74LS283。
由全加器的定义理解我们可以知道当Ai和Bi异或后再与Ci-1进行异或得到SUMi,结合真值表,我们可以知道当Ai、Bi、Ci-1只要有两个以上的1是进位Ci就等于1;所以只需要每两变量求与,结果再求或就可以满足要求。由此我们可以得到最常用的逻辑表达式:
由于两个半加器可以构成一个全加器,所以在这里进位Ci还可以表示为
根据逻辑表达式绘制两种逻辑电路图如下:
由两个半加器组成的全加器逻辑电路图
- module full_adder(
- input wire A,
- input wire B,
- output wire C,
- output wire sum
- );
-
- wire sum_h1;
- wire count_h1;
- wire count_h2;
-
- half_adder half_adder1(
- .A(A),
- .B(B),
- .sum(sum_h1),
- .C(count_h1)
- );
-
- half_adder half_adder2(
- .A(sum_h1),
- .B(cin),
- .sum(sum),
- .C(count_h2)
- );
- assign C = count_h1 | count_h2;
- endmodule
四位全加器的典型代表为74LS283,接下来主要通过真值表和逻辑电路图研究其工作原理。
我们输入一个二进制数,假设得到的四位二进制数的每一位分别是a、b、c、d,其中a是第一位,举例 a=0;b=0;c=1;d=1;那么这个数为0011;由此我们真值表如下:
我们列举部分;大家可以计算下其他数值的情况。在这里由于第一位的上级进位都是0,所以省略,后三种数值由于溢出,我们在这里为了方便观察,所以进行了补位,实际情况中是没有第5位(e4)的:
打开Quartus软件,新建一个新项目
第一行是项目存放路径,第二行是项目名称,第三行可以不用管
选择下一步
不用管,直接下一步
输入EP4CE115F29C7搜索,选择下图所指的芯片
不用管直接下一步
完成创建
点击File--New,选择Block Diagram/Schematic File点击OK创建
选择元件,搜索and2和xor
按照以下绘制原理图
保存文件,并编译,通过tool->Netlist Viewers->RTL Viewer,查看电路图
创建一个向量波形文件,选择菜单项 File→New->VWF
双击左侧空白区域后,点击Node Finder
添加波形
随便编辑一下信号,检验结果,对照真值表,发现检验结果符合预期,电路正确,可以进行烧录
烧录运行结果如下
FPGA编程入门——实现一位全加器-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。