【嵌入式系统应用开发】FPGA——1位全加器的实现

1 认识全加器

1.1 半加器

半加器是指对输入的两个一位二进制数相加(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,其余都为零,逻辑关系为与。
所以我们可以得到如下的逻辑表达式:

在这里插入图片描述

逻辑电路图
在这里插入图片描述

1.2 全加器

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

真值表

被加数Ai 加数Bi 低进位Ci-1 和数SUMi 进位Ci
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 1 0
1 1 1 1 1

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

在这里插入图片描述

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

在这里插入图片描述

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

2 输入原理图实现1位加法器

2.1 半加器

2.1.1创建工程过程

启动 Quartus II 软件,选择File->New Project Wizard,在出现的界面下先Next,填写工程的路径和名称,然后接着Next,直到出现下面界面并进行相应操作。接着一路Next,直到Finish,完成工程的创建。

在这里插入图片描述

2.1.2 半加器原理图输入

首先选择File->New,进入后选择Block Diagram/Schematic File,新建原理图文件

在这里插入图片描述

选择元件,并添加输入输出,完成效果如下:

在这里插入图片描述

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

在这里插入图片描述

2.1.3 仿真实现

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

在这里插入图片描述

双击空白处添加信号

在这里插入图片描述

编辑信号

在这里插入图片描述

功能仿真结果如下

在这里插入图片描述

通过仿真结果,可以发现得到的结果与真值表中吻合。

2.2 全加器

利用半加器元件实现全加器

2.2.1 设置项目为可调用的元件

在打开半加器原理图文件adder.bdf的情况下,选择菜中File中的Create/Update→CreateSymbolFilesforCurrentFile项,即可将当前文件adder.bdf变成一个元件符号存盘,以待在高层次设计中调用
在这里插入图片描述

2.2.2 绘制原理图

新建原理图文件,选择刚才创建的半加器
在这里插入图片描述

并依次添加输入、输出,电路原理图如下:

在这里插入图片描述

与上述步骤相同,查看电路图,结果如下:

在这里插入图片描述

2.2.3 仿真实现

仿真,编辑信号,步骤与上述相同,下文将不做赘述

在这里插入图片描述

仿真结果如下

在这里插入图片描述

3 Verilog实现1位加法器

3.1 创建Verilog文件

在这里插入图片描述

填写代码如下:

module full_adder(
	//输入信号,ain表示被加数,bin表示加数,cin表示低位向高位的进位
	input ain,bin,cin,
	//输出信号,cout表示向高位的进位,sum表示本位的相加和
	output reg 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

3.2 编译仿真

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

在这里插入图片描述

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

在这里插入图片描述

添加信号,步骤如上文,功能仿真结果如下

在这里插入图片描述

4 下载测试

以原理图实现的1位加法器上板为例

芯片引脚配置表如下:

在这里插入图片描述

4.1 输入原理图

  1. 将设计项目设置为顶层文件
    选中对应的设计文件
    在这里插入图片描述

  2. 选择目标芯片(新建工程时已指定目标芯片,此步骤可以省略)
    在菜单中选择assignments->device
    在这里插入图片描述
    在弹出的对话框内选择目标芯片,本次实验选择EP4CE115F29C7
    在这里插入图片描述

  3. 设置引脚
    使用3个SW作为输入信号,2个LED作为输出信号
    在这里插入图片描述
    绑定引脚后,重新编译后,原理图如下:
    在这里插入图片描述

  4. 下载
    在这里插入图片描述

此处有个坑:
因为之前安装Quartus时,没装驱动,无法感知连接到的设备

解决办法
需要打开设备管理器,在其他设备中,可以看到一个USB-blaster在这里插入图片描述更新驱动,找到点击【浏 览】按钮选择驱动程序的路径为 Quartus 软件安装目录下\qurtus\drivers\usb-blaster

  1. 实验结果
    通过拨动SW,观察LED的亮灭的效果,发现SW开表示1,关表示0,LED亮表示1,灭表示0。最终,验证的结果为跟其真值表相吻合。
    在这里插入图片描述

总结

通过本次实验,学习了解了一位加法器,总体来说实验完成比较顺利,在实验过程中,出现了找不到驱动的情况,在查阅相关文章后,顺利解决。


参考:
https://blog.csdn.net/nimalaigebazi/article/details/122441089
https://blog.csdn.net/qq_43279579/article/details/115480406
https://blog.csdn.net/qq_43279579/article/details/115158140

猜你喜欢

转载自blog.csdn.net/apple_52030329/article/details/129673476
今日推荐