본문 바로가기
HW Design/HDLBits

[HDLBits 해설] 7458

by 한PU 2024. 1. 18.
728x90
반응형

문제 링크 : https://hdlbits.01xz.net/wiki/7458

 

오늘부터 최소 1문제 이상 업로드 하겠습니다.

 

문제

7458

설계하십셔.

방법 1. assign으로 output 할당

방법 2. output의 intermediate signals를 wire로 할당

 

Module 선언

module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );
    
    
endmodule

 

내 풀이

module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );

    wire p1y_1;
    wire p1y_2;
    wire p2y_1;
    wire p2y_2;
    
    assign p1y_1 = (p1a & p1b & p1c);
    assign p1y_2 = (p1d & p1e & p1f);
    assign p2y_1 = (p2a & p2b);
    assign p2y_2 = (p2c & p2d);
    
    assign p1y = (p1y_1 | p1y_2);
    assign p2y = (p2y_1 | p2y_2);

endmodule

 

결과

Success!

나이스!

 

풀이

방법 2를 차용해서 p1y, p2y에 들어가는 input을 모두 wire 선언 후 각 논리에 맞게 assign 하였다.

코드는 최소 2줄에서 최대 10줄정도 나올거라던데. 10줄을 다 써버렸다.

 

2줄 풀이

방법 1을 이용하면 2줄로 코드 길이를 줄일 수 있다.

wire 선언을 안하고 assign 안에 한 줄로 때려박았다.

가독성은 좀 떨어진다.

 

module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );

	assign p1y = ((p1a & p1b & p1c) | (p1d & p1e & p1f));
	assign p2y = ((p2a & p2b) | (p2c & p2d));


endmodule
728x90
반응형

'HW Design > HDLBits' 카테고리의 다른 글

[HDLBits 해설] Vector 2  (0) 2024.01.22
[HDLBits 해설] Vector 1  (0) 2024.01.22
[HDLBits 해설] Vector0  (0) 2024.01.18