FPGA入门——1位全加器设计

文章目录

    • 一、认识全加器
    • 二、采用原理图输入完成1位全加器的设计
      • (一)半加器的原理图输入
      • (二)全加器的原理图输入
    • 三、采用Verilog编程完成1位全加器的设计

一、认识全加器

全加器是用门电路实现两个二进制相加并求出和的组合线路,成为一位全加器,一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。
Ain表示被加数,Bin表示加数,Cin表示低位进位,Cout表示高位进位,Sum表示本位和

Ain Bin Cin Cout Sum
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

二、采用原理图输入完成1位全加器的设计

  • 创建工程
    FPGA入门——1位全加器设计_第1张图片
  • 选择芯片
    FPGA入门——1位全加器设计_第2张图片

(一)半加器的原理图输入

新建文件
FPGA入门——1位全加器设计_第3张图片
选择元件
FPGA入门——1位全加器设计_第4张图片
FPGA入门——1位全加器设计_第5张图片
最终原理图
FPGA入门——1位全加器设计_第6张图片

  • 保存之后编译
    如果报错的话,则设置为顶层文件
    FPGA入门——1位全加器设计_第7张图片
    之后再编译就可以了
    FPGA入门——1位全加器设计_第8张图片

  • 将设计的半加器half_adder.bdf设置成可调用的元件
    FPGA入门——1位全加器设计_第9张图片

  • 半加器仿真
    新建文件
    FPGA入门——1位全加器设计_第10张图片
    输入波形文件
    FPGA入门——1位全加器设计_第11张图片

FPGA入门——1位全加器设计_第12张图片
出现的波形文件
FPGA入门——1位全加器设计_第13张图片
设置波形取值
然后编译
FPGA入门——1位全加器设计_第14张图片

如果报了如图的错的话
FPGA入门——1位全加器设计_第15张图片
则选择Tools->Launch Simulation Library Compiler
FPGA入门——1位全加器设计_第16张图片
设置Output directory,然后选择start compilation,编译成功选择close
FPGA入门——1位全加器设计_第17张图片
之后再进行编译就成功了
FPGA入门——1位全加器设计_第18张图片

(二)全加器的原理图输入

新建文件
添加元件
FPGA入门——1位全加器设计_第19张图片
FPGA入门——1位全加器设计_第20张图片

  • 最终原理图
    FPGA入门——1位全加器设计_第21张图片
  • 保存为f_adder,进行编译
  • 将全加器设置为顶层文件
  • 进行波形仿真

FPGA入门——1位全加器设计_第22张图片

  • 设置引脚
    选择Assignments->Pin Planner
    FPGA入门——1位全加器设计_第23张图片

FPGA入门——1位全加器设计_第24张图片

  • 再进行编译
    FPGA入门——1位全加器设计_第25张图片

  • 下载
    FPGA入门——1位全加器设计_第26张图片

  • 结果
    最后的硬件结果和真值表是对应的,当三位全为1时,两个LED等全亮

三、采用Verilog编程完成1位全加器的设计

  • 创建工程
    过程如上

  • 新建Verilog文件
    FPGA入门——1位全加器设计_第27张图片

  • 代码

module full_adder2(
  input  a,b,cin,
  output reg sum,cout
  );
  reg s1,s2,s3;
  always @(a or b or cin) begin
     sum=(a^b)^cin;
	  s1=a&cin;
	  s2=b&cin;
	  s3=a&b;
	  cout=(s1|s2)|s3;
  end
endmodule
  • 编译
    FPGA入门——1位全加器设计_第28张图片

  • 设置引脚
    FPGA入门——1位全加器设计_第29张图片

  • 最后进行编译下载
    最后硬件的结果是和真值表是吻合的。

你可能感兴趣的:(嵌入式系统应用开发,FPGA)