2 to 1 mux 100 bit wide

DH·2022년 12월 17일
0

HDLBits

목록 보기
4/12
post-thumbnail
post-custom-banner

module top_module( 
    input [99:0] a, b,
    input sel,
    output [99:0] out );
    always @(*)
        begin
            if (!sel) begin
                out = a;
            end
            else begin
                out = b;
            end
        end
                
endmodule

a와 b가 100bit wide이기 때문에 바로 전 문제처럼 boolean logic으로 풀지않고 always문 comb circuit 으로 풀었다.

result:

유의할점은
~와 ! operator의 차이점. stack overflow에서 친절히 설명해준다.

~ is a bit-wise operator and returns the invert of the argument.
! is a logical operator and returns a single bit.

위 문제에서 !sel 대신 ~sel을 쓰면 어떻게될까?

module top_module( 
    input [99:0] a, b,
    input sel,
    output [99:0] out );
    always @(*)
        begin
            if (~sel) begin
                out = a;
            end
            else begin
                out = b;
            end
        end
                
endmodule

마찬가지로 잘 된다. sel 이 1bit이기 때문이다. 하지만 sel이 2bit 이상 넘어가면 어떻게될까?
개인적인 생각엔 ~,! 둘다 쓰지 말고 case문을 쓰던가 ==문을 쓰는게 나을것같다.

profile
Person
post-custom-banner

0개의 댓글