FPGA学习verilog实现半加器和全加器

半加器和全加器的设计和实现

半加器

框图

请添加图片描述

代码

Half_adder.v文件
module Half_adder (
    input wire Ai,
    input wire Bi,
    output wire So,
    output wire Co
);
    
assign {Co,So} = Ai + Bi;

endmodule
tb文件
`timescale 1ns/1ps

module Half_adder_tb ();
    
reg Ai;
reg Bi;
wire So;
wire Co;

initial begin
    Ai = 0;
    Bi = 0; 
end

always #2 Ai = {$random} % 2;
always #2 Bi = {$random} % 2;

Half_adder Half_adder_1(
    .Ai(Ai),
    .Bi(Bi),
    .So(So),
    .Co(Co)
);

endmodule

仿真结果

仿真可以看到,进位Co只有在Ai和Bi都为1时为1。

全加器

框图

请添加图片描述

代码

Full_adder.v文件
module Full_adder (
    input wire Ai,
    input wire Bi,
    input wire Ci,
    output wire So,
    output wire Co
);
    
assign {Co,So} = Ai + Bi + Ci;

endmodule 
tb文件
 `timescale 1ns/1ps

module Full_adder_tb ();
    
reg Ai;
reg Bi;
reg Ci;
wire So;
wire Co;

initial begin
    Ai = 0;
    Bi = 0; 
    Ci = 0;
end

always #2 Ai = {$random} % 2;
always #2 Bi = {$random} % 2;
always #2 Ci = {$random} % 2;

Full_adder Full_adder_1(
    .Ai(Ai),
    .Bi(Bi),
    .Ci(Ci),
    .So(So),
    .Co(Co)
);

endmodule

仿真结果

仿真

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值