FPGA入门之一位全加器的实现

一、前言

  • 全加器
    用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。而多个一位全加器进行级联可以得到多位全加器。
    其真值表如下:
    在这里插入图片描述
    其中Ai 为被加数,Bi 为加数,相邻低位来的进位数为 Ci−1,输出本位和为 Si,向相邻高位进位数为 Ci。
    其表达式如下:
    Si=Ai⊕Bi⊕Ci−1
    Ci=AiBi+Ci−1(Ai+Bi)

二、全加器的实现

1.原理图输入实现

一位全加器可以用两个半加器及一个或门连接而成。

  1. 绘制半加器原理图

首先要在quartus中新建工程命名为adder,第三步根据自己的芯片选择,其它直接next就好。
在这里插入图片描述

不会创建工程的可以参考之前的博客链接

选取与门and2,非门xor,两输入两输出绘制原理图如下:
在这里插入图片描述
编译到0 error即可。

  1. 把原理图设置为可调用的文件
    为了构成全加器的顶层设计,所以需要将设计的半加器half_adder.bdf设置为可调的元件
    在这里插入图片描述

  2. 半加器仿真
    创建波形文件
    在这里插入图片描述

这是之后截的图,重在步骤

编辑输入的波形
在这里插入图片描述
仿真结果:
在这里插入图片描述

  1. 设计全加器的顶层文件
    与之前调用元件的方法一样,调用出之前保存的半加器元件
    在这里插入图片描述
    用两个半加器元件,一个或门绘制下图:
    在这里插入图片描述
    将其设置为顶层文件:
    在这里插入图片描述
    保存编译:
    在这里插入图片描述

  2. 全加器的仿真
    如半加器的仿真步骤相同,仿真结果如下图:
    在这里插入图片描述

  3. 绑定引脚
    由于之前创建工程的时候已经根据自己的芯片选择好了,如果有需要修改目标芯片的可以在菜单栏中选择"assingments->device…“进行更改。
    根据自己芯片的引脚图进行引脚绑定。本次用的芯片为EP4CE115F29C7,选择三个拨码开关SW0,SW1,SW2分别接ain,bin,cin(开关向上和向下拨分别显示输入的是高电平还是低电平);LED0,LED1分别接count,sum,灯亮表示输出为1,灯灭表示输出为0。
    选择"assingments->pin planner…”,在location一栏中选择引脚:
    在这里插入图片描述
    此时可以看到原理图中的引脚被绑定:
    在这里插入图片描述

  4. 硬件测试及结果
    把开发板接上电源,USB口接入电脑。
    第一次下载需要更新驱动,打开设备管理器,右键usb-blaster
    在这里插入图片描述
    选择软件安装的路径进行搜索
    在这里插入图片描述
    然后安装更新。
    点击菜单栏中的programer打开下载
    在这里插入图片描述
    选择驱动
    在这里插入图片描述
    勾选.sof文件,点击start
    在这里插入图片描述
    硬件结果:
    三个开关表示三个1,两个灯一个为进位,一个为本位。只有同时三个1时,两个灯才会亮。
    在这里插入图片描述

2.Verilog实现
  1. 新建一个工程,创建Verilog文件
    在这里插入图片描述
    输入代码:
module full_adder(
  input ain,bin,cin,//输入信号,ain表示被加数,bin表示加数,cin表示低位向高位的进位
  output reg cout,sum//输出信号,cout表示向高位的进位,sum表示本位的相加和
  
);
reg s1,s2,s3;
always @(ain or bin or cin) begin
  sum=(ain^bin)^cin;
  s1=ain&cin;
  s2=bin&cin;
  s3=ain&bin;
  cout=(s1|s2)|s3;
end 
endmodule

成功编译。

  1. 创建波形图文件

同上面的操作一样,编辑波形图如下
在这里插入图片描述
点击“run functional simulation” 开始仿真,结果如下:
在这里插入图片描述

三、小结

通过原理图输入比较容易。对于Verilog语言还需要慢慢学习
全加器

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值