当前位置:   article > 正文

FPGA编程入门

FPGA编程入门

目录

一、半加器、全加器、四位全加器

半加器

真值表

逻辑电路图

RTL视图验证

​编辑

全加器

真值表

逻辑表达式

逻辑电路图

全加器Verilog代码实现

RTL视图验证

四位全加器

真值表

逻辑电路图

二、Quartus编程

创建项目

1)半加器原理图输入 

创建原理图

 仿真测试


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
0000
0110
1010
1101


逻辑表达式
根据上述的真值表,当A和B相同时SUM为0,否则为1;逻辑关系属于异或;当A和B同时为1时,C等于1,其余都为零,逻辑关系为与。
所以我们可以得到如下的逻辑表达式:

在这里插入图片描述

逻辑电路图

在这里插入图片描述

  1. module half adder(
  2. input wire A,
  3. input wire B,
  4. output wire C,
  5. output wire sum
  6. );
  7. //assign sum = (A == B) ? 0 : 1; //这两种方式都可以实现
  8. assign sum = A^B;
  9. assign C= A&B;
  10. endmodule

RTL视图验证

在这里插入图片描述

全加器

全加器是指对输入的两个二进制数相加(A与B)同时会输入一个低位传来的进位(Ci-1),得到和数(SUM)和进位(Ci);一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。常用二进制四位全加器74LS283。

真值表

| 被加数A|加数B|进位|和SUM | 进位C1||--|--|--|--|--||0|0|0|0||0|1|1|0||1|0|1|0||1|1|0|1|

逻辑表达式

由全加器的定义理解我们可以知道当Ai和Bi异或后再与Ci-1进行异或得到SUMi,结合真值表,我们可以知道当Ai、Bi、Ci-1只要有两个以上的1是进位Ci就等于1;所以只需要每两变量求与,结果再求或就可以满足要求。由此我们可以得到最常用的逻辑表达式:

在这里插入图片描述
由于两个半加器可以构成一个全加器,所以在这里进位Ci还可以表示为
在这里插入图片描述

逻辑电路图

根据逻辑表达式绘制两种逻辑电路图如下:
在这里插入图片描述

由两个半加器组成的全加器逻辑电路图
在这里插入图片描述

全加器Verilog代码实现

  1. module full_adder(
  2. input wire A,
  3. input wire B,
  4. output wire C,
  5. output wire sum
  6. );
  7. wire sum_h1;
  8. wire count_h1;
  9. wire count_h2;
  10. half_adder half_adder1(
  11. .A(A),
  12. .B(B),
  13. .sum(sum_h1),
  14. .C(count_h1)
  15. );
  16. half_adder half_adder2(
  17. .A(sum_h1),
  18. .B(cin),
  19. .sum(sum),
  20. .C(count_h2)
  21. );
  22. assign C = count_h1 | count_h2;
  23. endmodule

RTL视图验证

在这里插入图片描述

四位全加器

四位全加器的典型代表为74LS283,接下来主要通过真值表和逻辑电路图研究其工作原理。

真值表

我们输入一个二进制数,假设得到的四位二进制数的每一位分别是a、b、c、d,其中a是第一位,举例 a=0;b=0;c=1;d=1;那么这个数为0011;由此我们真值表如下:
在这里插入图片描述

我们列举部分;大家可以计算下其他数值的情况。在这里由于第一位的上级进位都是0,所以省略,后三种数值由于溢出,我们在这里为了方便观察,所以进行了补位,实际情况中是没有第5位(e4)的:

逻辑电路图

在这里插入图片描述

二、Quartus编程

创建项目

打开Quartus软件,新建一个新项目

第一行是项目存放路径,第二行是项目名称,第三行可以不用管

 选择下一步

不用管,直接下一步

 输入EP4CE115F29C7搜索,选择下图所指的芯片

不用管直接下一步

 完成创建

1)半加器原理图输入 

创建原理图

点击File--New,选择Block Diagram/Schematic File点击OK创建

选择元件,搜索and2和xor

 按照以下绘制原理图

保存文件,并编译,通过tool->Netlist Viewers->RTL Viewer,查看电路图

 仿真测试

创建一个向量波形文件,选择菜单项 File→New->VWF

双击左侧空白区域后,点击Node Finder

 添加波形

 随便编辑一下信号,检验结果,对照真值表,发现检验结果符合预期,电路正确,可以进行烧录

烧录运行结果如下

FPGA编程入门——实现一位全加器-CSDN博客

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号