首页 Verilog 正文

半加器

yummy头像 yummy Verilog 2022-04-01 20:04:56 0 333
导读:加法器是数字电路中经常用到的一种基本器件,主要用于两个数或者多个数的加和,加法器又分为半加器和全加器。半加器电路是指对两个输入数据位相加,输出一个结果位和进位。没有进位输入的加法器...

加法器是数字电路中经常用到的一种基本器件,主要用于两个数或者多个数的加和,加法器又分为半加器和全加器。

半加器电路是指对两个输入数据位相加,输出一个结果位和进位。没有进位输入的加法器电路,是实现两个一位二进制数加法运算电路。

全加器是在半加器基础上的升级版,除了加数和被加数之外还要加上上一位传来的进位信号。

实验使用两个key作为加数和被加数,LED1作为结果位,LED2作为进位来实现。

实验框图

image.png

image.png

波形图

image.png

代码实现

// Filename﹕ half_adder.v
// Author﹕YMY
// Description﹕半加器模块
// Calledby﹕/
// RevisionHistory﹕22-04-01
// Revision1.0
// Email﹕
// Company﹕  
// Copyright(c) YMY, All right reserved
module half_adder(
    input   wire    in_1 , //输入信号1
    input   wire    in_2 , //输入信号2

    output  wire    sum , //结果位
    output  wire    count //进位
);
assign {count,sum} = in_1 + in_2 ; //高位赋值给进位放,低位赋值给结果位

endmodule

测试代码

// Filename﹕ tb_half_adder.v
// Author﹕YMY
// Description﹕半加器测试模块
// Calledby﹕/
// RevisionHistory﹕22-04-01
// Revision1.0
// Email﹕
// Company﹕  
// Copyright(c) YMY, All right reserved
`timescale 1ns/1ns
module tb_half_adder();
reg   in_1 ;
reg   in_2 ;

wire   sum ;
wire   count ;

//初始化输入信号
initial begin
    in_1 <= 1'b0 ;
    in_2 <= 1'b0 ;
end

//产生随机数
always #10 in_1 = {$random}%2;
always #10 in_2 = {$random}%2;


initial begin
    //设置时间格式的系统函数
    $timeformat(-9,0,"ns",6);
    //检测打印函数
    $monitor("@time in_1=%b in_2=%b sum=%b count=%b",$time,in_1,in_2,sum,count);
end

half_adder      half_adder_inst
(
    . in_1          (in_1 ), //输入信号1
    . in_2          (in_2 ), //输入信号2
 
    . sum           (sum  ), //结果位
    . count         (count)  //进位
);

endmodule

仿真波形

image.png

image.png

本文地址:https://xn--zqqs03dbu6a.cn/?id=16
若非特殊说明,文章均属本站原创,转载请注明原链接。

欢迎 发表评论:

标签列表

退出请按Esc键