「Verilog学习笔记」全加器

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

// 对于半加器,只有输入a,b,输出和进位表示为:
//         S=a^b;        ①
//         C=a&b;        ②
// 全加器,在a,b的基础上增加了进位ci输入:
//         S=a^b^ci;     ③
//         C=a&b+ci&(a^b);④
// 先将全加器中的a,b放入半加器中例化,将输入分别代入①②得到:
//         S1=a^b;      ⑤
//         C1=a&b;      ⑥
// 接下来将S1和Ci放入半加器进行例化,将输入分别代入①②得到:
//         S2=S1^ci=a^b^ci;    ⑦
//         C2=S1&ci=(a^b)&ci;  ⑧
// ⑦⑧为例化两次的输出,③④是真正全加器的输出,③和⑦完全相等,因此例化两次后的输出可以作为全加器的输出;
// ⑧是全加器④的后半部分,还需要加上⑥,才组成一个完整的全加器进位输出,这就是为什么最后C需要把前两次的进位结果或在一起;

`timescale 1ns/1ns

module add_half(
   input                A   ,
   input                B   ,
 
   output	wire        S   ,
   output   wire        C   
);

    assign S = A ^ B;
    assign C = A & B;
endmodule

/***************************************************************/
module add_full(
   input                A   ,
   input                B   ,
   input                Ci  , 

   output	wire        S   ,
   output   wire        Co   
);
    wire S1, C1, S2, C2 ; 

    add_half u1(.A(A), .B(B), .S(S1), .C(C1)) ; 
    add_half u2(.A(S1), .B(Ci), .S(S2), .C(C2)) ; 

    assign S = S2 ; 
    assign Co = C1 | C2 ;

endmodule
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UCSD.KS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值