全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

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

时间:2023-05-22 15:22

人气:

作者:admin

标签:   半加  何去  实现  一个 

导读:加法器用于两个数或者多个数的加和,加法器又分为半加器(half adder)和全加器(full adder)。...

数电基础

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

图片

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

设计规划

本例中我们实现最简单的半加器。这个示例中,采用两个按键作为信号输入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都亮。

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

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信