「Verilog学习笔记」串行进位加法器

专栏前言

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

 

`timescale 1ns/1ns

module add_4(
   input         [3:0]  A   ,
   input         [3:0]  B   ,
   input                Ci  , 

   output	wire [3:0]  S   ,
   output   wire        Co   
);
    wire [3:0] C ; 
    genvar i ; 
    generate 
        for (i = 0 ; i < 4 ; i = i + 1) begin 
            add_full u1(.A(A[i]), .B(B[i]), .Ci(i ? C[i - 1] : Ci), .S(S[i]), .Co(C[i])) ; 
        end
    endgenerate

    assign Co = C[3] ; 

endmodule

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 c_1;
    wire c_2;   
    wire sum_1;

add_half add_half_1(
   .A   (A),
   .B   (B),
         
   .S   (sum_1),
   .C   (c_1)  
);
add_half add_half_2(
   .A   (sum_1),
   .B   (Ci),
         
   .S   (S),
   .C   (c_2)  
);

    assign Co = c_1 | c_2;
endmodule

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-05 14:08:02       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-05 14:08:02       97 阅读
  3. 在Django里面运行非项目文件

    2024-01-05 14:08:02       78 阅读
  4. Python语言-面向对象

    2024-01-05 14:08:02       88 阅读

热门阅读

  1. Ubuntu22.04无法启动EasyConnect的问题

    2024-01-05 14:08:02       51 阅读
  2. 授权策略(authorize方法)

    2024-01-05 14:08:02       60 阅读
  3. ffmpeg 5.0版本调试 ffmpeg 5.01 static版本

    2024-01-05 14:08:02       51 阅读
  4. ceph之rados设计原理与实现第四章:存储的基石OSD

    2024-01-05 14:08:02       59 阅读
  5. 启动mongodb失败

    2024-01-05 14:08:02       56 阅读
  6. 信息学奥赛一本通2066:【例2.3】买图书

    2024-01-05 14:08:02       57 阅读