본문 바로가기

Verilog/HDLbits

[HDLBits] Module cseladd

1. 문제 및 설명

  • 리플 캐리 가산기의 단점 중 하나는 캐리 전파 지연입니다. 첫 번째 단계의 가산기는 캐리 입력으로부터 캐리 출력을 계산하기까지 시간이 오래걸리고, 두 번째 단계 가산기는 첫번째 단계가 끝날 때까지 캐리 출력을 계산할 수 없습니다.이 때문에 전체 가산기가 느려 집니다.
  • 이를 개선한 방식이 캘리 셀렉트 방식이며, 두 번째 단계의 결과 중 맞는 값만 빠르게 선택하기 위해서 MUX를 사용합니다.
  • <module add16 ( input [15:0] a, input [15:0] b, input cin, output [15:0] sum, output cout);> 이 제공될 때 이 모듈을 세 번 인스턴스화 하여 아래 모듈을 설계하세요. 

2. 모듈 정의

module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);

 

 

 

3. 답

module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
    wire cout, trash;
    wire [31:16] temp0, temp1;
    add16 i0 ( a[15:0], b[15:0], 1'b0, sum[15:0], cout);
    add16 i1 ( a[31:16], b[31:16], 1'b0, temp0[31:16], trash);
    add16 i2 ( a[31:16], b[31:16], 1'b1, temp1[31:16], trash);
    
    assign sum[31:16] = cout?temp1[31:16]:temp0[31:16];

endmodule

'Verilog > HDLbits' 카테고리의 다른 글

[HDLBits] Alwaysblock1  (0) 2025.11.18
[HDLBits] Module addsub  (0) 2025.11.18
[HDLBits] Module fadd  (0) 2025.11.18
[HDLBits] Module add  (0) 2025.11.02
[HDLBits] Module shift8  (0) 2025.11.02