我是靠谱客的博主 悦耳灯泡,最近开发中收集的这篇文章主要介绍FPGA——1位全加器的实现一、认识全加器二、输入原理图实现1位加法器三、Verilog实现1位加法器四、下载测试五、参考链接,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、认识全加器
    • (一)半加器
    • (二)1位全加器
  • 二、输入原理图实现1位加法器
    • (一)半加器原理图输入
    • (二)全加器原理图输入
  • 三、Verilog实现1位加法器
  • 四、下载测试
    • (一)输入原理图
    • (二)Verilog代码
  • 五、参考链接

一、认识全加器

(一)半加器

  1. 半加器的定义
    半加器是能够对两个一位的二进制数进行相加得到半加和以及半加进位的组合电路。
  2. 半加器的真值表
    A,B表示二进制数,C表示半加进位,S表示半加和
    ABCS
    0000
    0101
    1001
    1110
  3. 输出表达式
    S = A ˉ B + A B ˉ = A ⊕ B {S=bar{A}B+Abar{B}=Aoplus B} S=AˉB+ABˉ=AB
    C = A B {C=AB} C=AB
  4. 逻辑电路图
    在这里插入图片描述

(二)1位全加器

  1. 1位全加器的真值表
    Ain表示被加数,Bin表示加数,Cin表示低位进位,Cout表示高位进位,Sum表示本位和
    AinBinCinCoutSum
    00000
    00101
    01001
    01110
    10001
    10110
    11010
    11111
  2. 输出表达式
    S u m = A i n ⊕ B i n ⊕ C i n {Sum=Ainoplus Bin oplus Cin} Sum=AinBinCin
    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=(AinBin)Cin+AinBin=(Ain&Bin)(Bin&Cin)(Ain&Cin)
  3. 逻辑图
    在这里插入图片描述

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

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

(一)半加器原理图输入

  1. 绘制过程实现
    首先选择File->New,进入后选择Block Diagram/Schematic File
    在这里插入图片描述
    选择元件
    在这里插入图片描述
    添加输入输出,完成效果
    在这里插入图片描述
    保存文件,并编译
    通过tool->Netlist Viewers->RTL Viewer,查看电路图
    在这里插入图片描述
  2. 仿真实现
    创建一个向量波形文件,选择菜单项 File→New->VWF
    在这里插入图片描述
    添加信号
    在这里插入图片描述
    编辑信号
    在这里插入图片描述
    保存文件并启动功能仿真,出现错误,进行仿真配置,选择tool->launch simulation library complier
    在这里插入图片描述
    功能仿真结果
    在这里插入图片描述
    时序仿真结果
    在这里插入图片描述
    通过仿真结果,可以发现得到的结果与真值表中是相吻合的。

(二)全加器原理图输入

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

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

  2. 绘制过程实现
    首先选择File->New,进入后选择Block Diagram/Schematic File
    在这里插入图片描述
    选择元件
    在这里插入图片描述
    添加输入输出,完成效果
    在这里插入图片描述
    保存文件,并编译
    通过tool->Netlist Viewers->RTL Viewer,查看电路图
    在这里插入图片描述

  3. 仿真实现
    创建一个向量波形文件,选择菜单项 File→New->VWF
    在这里插入图片描述
    添加信号
    在这里插入图片描述
    编辑信号
    在这里插入图片描述
    保存文件并启动功能仿真,出现错误,进行仿真配置,选择tool->launch simulation library complier
    在这里插入图片描述
    功能仿真结果
    在这里插入图片描述
    时序仿真结果
    在这里插入图片描述
    通过仿真结果,可以发现得到的结果与真值表中是相吻合的。

三、Verilog实现1位加法器

  1. 创建Verilog文件
    在这里插入图片描述
  2. 代码实现
    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,查看电路图
    在这里插入图片描述
  3. 仿真实现
    创建一个向量波形文件,选择菜单项 File→New->VWF
    在这里插入图片描述
    添加信号
    在这里插入图片描述
    编辑信号
    在这里插入图片描述
    保存文件并启动功能仿真,出现错误,进行仿真配置,选择tool->launch simulation library complier
    在这里插入图片描述
    功能仿真结果
    在这里插入图片描述
    时序仿真结果
    在这里插入图片描述
    通过仿真结果,可以发现得到的结果与真值表中是相吻合的。

四、下载测试

芯片引脚配置表
在这里插入图片描述
在这里插入图片描述

(一)输入原理图

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

  2. 配置引脚
    使用3个SW作为输入信号,2个LED作为输出信号
    在这里插入图片描述
    原理图如下
    在这里插入图片描述

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

  4. 结果效果
    通过拨动SW,观察LED的亮灭的效果,发现SW开表示1,关表示0,LED亮表示1,灭表示0。最终,验证的结果为跟其真值表相吻合。

(二)Verilog代码

  1. 配置引脚
    使用3个SW作为输入信号,2个LED作为输出信号
    在这里插入图片描述
  2. 下载
    在这里插入图片描述
  3. 结果效果
    通过拨动SW,观察LED的亮灭的效果,发现SW开表示1,关表示0,LED亮表示1,灭表示0。最终,验证的结果为跟其真值表相吻合。

1位全加器的实现完成后,可以根据多个1位全加器的级联实现多位全加器。

五、参考链接

Verilog全加器

最后

以上就是悦耳灯泡为你收集整理的FPGA——1位全加器的实现一、认识全加器二、输入原理图实现1位加法器三、Verilog实现1位加法器四、下载测试五、参考链接的全部内容,希望文章能够帮你解决FPGA——1位全加器的实现一、认识全加器二、输入原理图实现1位加法器三、Verilog实现1位加法器四、下载测试五、参考链接所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部