bitwise operator 주의점

DH·2023년 1월 13일
0

HDLBits

목록 보기
11/12
post-thumbnail

bitwise operation 시 nbit 와 1bit를 계산하는 실수를 할 수 있다.

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

    wire [31:0] b_sub;
    wire carry;
    wire cout;
    assign b_sub = b ^ {32{sub}}; // 이 부분을 주의하자.
    
    add16 add16_1 (a[15:0] , b_sub[15:0] , sub , sum[15:0], carry);
    add16 add16_2 (a[31:16] , b_sub[31:16] , carry , sum[31:16], cout);
    
endmodule

특히 subtractor를 만들 때 operand를 2의 보수를 취해야 할 일이 있는데
이럴 때 operand와 sub(1 bit) 신호를 XOR 해줘야한다. 이때 bitwise 연산이 들어가는데, 이럴 때 sub 신호를 operand의 bit 수 만큼 복제해줘야 컴파일 에러가 나지 않는다.

profile
Person

0개의 댓글