概述
文章目录
- 一、认识全加器
- (一)半加器
- (二)1位全加器
- 二、输入原理图实现1位加法器
- (一)半加器原理图输入
- (二)全加器原理图输入
- 三、Verilog实现1位加法器
- 四、下载测试
- (一)输入原理图
- (二)Verilog代码
- 五、参考链接
一、认识全加器
(一)半加器
- 半加器的定义
半加器是能够对两个一位的二进制数进行相加得到半加和
以及半加进位
的组合电路。 - 半加器的真值表
A,B表示二进制数,C表示半加进位,S表示半加和A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 - 输出表达式
S = A ˉ B + A B ˉ = A ⊕ B {S=bar{A}B+Abar{B}=Aoplus B} S=AˉB+ABˉ=A⊕B
C = A B {C=AB} C=AB - 逻辑电路图
(二)1位全加器
- 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 - 输出表达式
S u m = A i n ⊕ B i n ⊕ C i n {Sum=Ainoplus Bin oplus Cin} Sum=Ain⊕Bin⊕Cin
C o u t = ( A i n ⊕ B i n ) ⋅ C i n + A i n B i n = ( A i n & B i n ) ∣ ( B i n & C i n ) ∣ ( A i n & C i n ) {Cout=(Ain oplus Bin)cdot Cin+AinBin=(Ain& Bin)|(Bin& Cin)|(Ain& Cin)} Cout=(Ain⊕Bin)⋅Cin+AinBin=(Ain&Bin)∣(Bin&Cin)∣(Ain&Cin) - 逻辑图
二、输入原理图实现1位加法器
创建工程过程
启动 Quartus II 软件,选择File->New Project Wizard,在出现的界面下先Next,填写工程的路径和名称,然后接着Next,直到出现下面界面并进行相应操作。接着一路Next,直到Finish,完成工程的创建。
(一)半加器原理图输入
- 绘制过程实现
首先选择File->New,进入后选择Block Diagram/Schematic File
选择元件
添加输入输出,完成效果
保存文件,并编译
通过tool->Netlist Viewers->RTL Viewer,查看电路图
- 仿真实现
创建一个向量波形文件,选择菜单项 File→New->VWF
添加信号
编辑信号
保存文件并启动功能仿真,出现错误,进行仿真配置,选择tool->launch simulation library complier
功能仿真结果
时序仿真结果
通过仿真结果,可以发现得到的结果与真值表中是相吻合的。
(二)全加器原理图输入
利用半加器元件实现全加器
-
将设计项目设置为可调用的元件
在打开半加器原理图文件half_adder.bdf的情况下,选择菜中File中的Create/Update→CreateSymbolFilesforCurrentFile项,即可将当前文件h_adder.bdf变成一个元件符号存盘,以待在高层次设计中调用
-
绘制过程实现
首先选择File->New,进入后选择Block Diagram/Schematic File
选择元件
添加输入输出,完成效果
保存文件,并编译
通过tool->Netlist Viewers->RTL Viewer,查看电路图
-
仿真实现
创建一个向量波形文件,选择菜单项 File→New->VWF
添加信号
编辑信号
保存文件并启动功能仿真,出现错误,进行仿真配置,选择tool->launch simulation library complier
功能仿真结果
时序仿真结果
通过仿真结果,可以发现得到的结果与真值表中是相吻合的。
三、Verilog实现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
通过tool->Netlist Viewers->RTL Viewer,查看电路图
- 仿真实现
创建一个向量波形文件,选择菜单项 File→New->VWF
添加信号
编辑信号
保存文件并启动功能仿真,出现错误,进行仿真配置,选择tool->launch simulation library complier
功能仿真结果
时序仿真结果
通过仿真结果,可以发现得到的结果与真值表中是相吻合的。
四、下载测试
芯片引脚配置表
(一)输入原理图
-
将设计项目设置为顶层文件
选中对应的设计文件
-
配置引脚
使用3个SW作为输入信号,2个LED作为输出信号
原理图如下
-
下载
-
结果效果
通过拨动SW,观察LED的亮灭的效果,发现SW开表示1,关表示0,LED亮表示1,灭表示0。最终,验证的结果为跟其真值表相吻合。
(二)Verilog代码
- 配置引脚
使用3个SW作为输入信号,2个LED作为输出信号
- 下载
- 结果效果
通过拨动SW,观察LED的亮灭的效果,发现SW开表示1,关表示0,LED亮表示1,灭表示0。最终,验证的结果为跟其真值表相吻合。
1位全加器的实现完成后,可以根据多个1位全加器的级联实现多位全加器。
五、参考链接
Verilog全加器
最后
以上就是悦耳灯泡为你收集整理的FPGA——1位全加器的实现一、认识全加器二、输入原理图实现1位加法器三、Verilog实现1位加法器四、下载测试五、参考链接的全部内容,希望文章能够帮你解决FPGA——1位全加器的实现一、认识全加器二、输入原理图实现1位加法器三、Verilog实现1位加法器四、下载测试五、参考链接所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复