0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的半加器设计

CHANBAEK 来源:小小研究生 作者: xxyjs2020 2023-05-12 14:50 次阅读

数电基础

加法器用于两个数或者多个数的加和,加法器又分为半加器(half adder)和全加器(full adder)。半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。是实现两个一位二进制数的加法运算电路。而全加器除了加数和被加数之和外还要加上上一级传进来的进位信号。如果没有理解,看真值表和逻辑式就理解了。

A B C S A+B={C,S}
0 0 0 0 S=A⊕B
0 1 0 1 C=AB
1 0 0 1
1 1 1 0
A B Ci-1 Ci S A+B+Ci-1={Ci,S}
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

全加器可看作两个半加器和一个或门组成。

设计规划

本例中我们实现最简单的半加器。这个示例中,采用两个按键作为信号输入A和B,两个LED灯作为输出C和S。按下按键为低电平,LED灯为低电平时点亮。需要实现的功能是,按下AB时CS点亮,按下其中一个时只有C点亮,都不按下时只有S点亮。

根据真值表很容易画出波形。

编写代码

module half_adder
(
input wire in1 , 
input wire in2 , 
output wire sum , 
output wire cout
);


 assign {cout, sum} = in1 + in2;
 endmodule

添加.v文件后编译通过。点击RTL viewer可以查看设计的硬件电路结构,和我们设计所表达的意思相同。

编写testbench

`timescale 1ns/1ns
module tb_half_adder();


reg in1;
reg in2;
wire sum;
wire cout;


 initial begin
 in1 <= 1'b0;
 in2 <= 1'b0;
 end


 always #10 in1 <= {$random} % 2;
 always #10 in2 <= {$random} % 2;




 //--------------------half_adder_inst-----------------
 half_adder half_adder_inst
 (
 .in1 (in1 ), //input in1
 .in2 (in2 ), //input in2


 .sum (sum ), //output sum
 .cout (cout ) //output cout
 );


 endmodule

又是超级熟悉的testbench。

对比波形

波形与预想的一致。

分配管脚

按照设计规划:采用S0和S1作为信号输入A和B,LED0和LED1作为输出C和S。按下AB(0+0)时CS(=00)都亮,按下其中一个(0+1)时只有C(01)亮,都不按下(1+1)时只有S(=10)亮。

全编译后上板验证

都不按时LED1亮

任意按一个时,LED0亮。

两个都按下时,LED0和LED1都亮。

在完成这几个实例的过程中,遇到了很多错误,但是只要会上网,把报错信息进行检索,都能圆满解决。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1630

    文章

    21796

    浏览量

    605727
  • 加法器
    +关注

    关注

    6

    文章

    183

    浏览量

    30218
  • 全加器
    +关注

    关注

    10

    文章

    62

    浏览量

    28551
  • 数电
    +关注

    关注

    15

    文章

    63

    浏览量

    30027
  • 半加器
    +关注

    关注

    1

    文章

    29

    浏览量

    8816
收藏 人收藏

    评论

    相关推荐

    #硬声创作季 FPGA技术应用:设计

    fpga
    Mr_haohao
    发布于 :2022年10月19日 17:08:24

    和全加器是算术运算电路中的基本单元,它们是完成1位二进制数相加的一种组合逻辑电路。两
    发表于 04-07 10:34 1.6w次阅读
    <b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>

    最小逻辑电路 单电子成功研制

    在一项新研究中,韩国、日本和英国科学家组 成的科研小组仅用5个晶体管就制造出一个,它是 所有逻辑电路中最小的一种。
    的头像 发表于 11-25 23:50 3480次阅读

    全加器是什么?全加器和的区别?

    是能够计算低位进位的二进制加法电路。与相比,全加器不只考虑本位计算结果是否有进位,也考虑上一位对本位的进位,可以把多个一位全加器级
    发表于 07-25 11:15 7.4w次阅读
    全加器是什么?全加器和<b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>的区别?

    和全加器的原理及区别(结构和功能)

    +加法和全加法是算术运算电路中的基本单元,它们是完成1位二进制相加的一种组合逻辑电路。
    的头像 发表于 07-25 11:37 33.8w次阅读
    <b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>和全加器的原理及区别(结构和功能)

    全加器真值表和真值表详细分析

    、全加器是组合电路中的基本元器件,也是CPU中处理加法运算的核心,理解、掌握并熟练应用是硬件课程的最基本要求。
    的头像 发表于 07-25 14:39 14w次阅读
    全加器真值表和<b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>真值表详细分析

    电路原理图资料免费下载

    电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。 是实现两个一位二进制数的加法运算电路。
    发表于 07-08 08:00 18次下载
    <b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>电路原理图资料免费下载

    电路原理图

    电路原理图免费下载。
    发表于 06-11 10:51 24次下载

    基于CPLD/FPGA整数分频设计方案

    基于CPLD/FPGA整数分频设计方案
    发表于 06-17 09:37 21次下载

    真值表

    是实现两个一位二进制数加法运算的电子器件,具有被加数A和加数B两个输入端、输出端Y,经常被应用在算数运算电路中,用于计算两个一位二进制相加,不考虑低位进位。
    的头像 发表于 07-09 09:46 5.3w次阅读
    <b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b> <b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>真值表

    vhdl描述

    vhdl描述
    发表于 02-24 11:08 0次下载

    如何去实现一个电路的设计呢?

    加法器用于两个数或者多个数的和,加法器又分为(half adder)和全加器(full adder)。
    的头像 发表于 05-22 15:22 5440次阅读
    如何去实现一个<b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>电路的设计呢?

    FPGA常用运算模块-乘

    本文是本系列的第三篇,本文主要介绍FPGA常用运算模块-乘,xilinx提供了相关的IP以便于用户进行开发使用。
    的头像 发表于 05-22 16:17 1825次阅读
    <b class='flag-5'>FPGA</b>常用运算模块-乘<b class='flag-5'>加</b><b class='flag-5'>器</b>

    和全加器的功能特点

    和全加器是数字电路中的基本组件,用于执行二进制数的加法运算。它们在计算机、微处理和其他数字系统中扮演着重要角色。
    的头像 发表于 10-18 11:10 1854次阅读

    和全加器的区别是什么

    (Half Adder)和全加器(Full Adder)是数字电路中的基本组件,用于执行二进制加法运算。它们的主要区别在于功能和输入输出的数量。 1. 功能差异
    的头像 发表于 10-18 11:12 4553次阅读