산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog assign 문으로 조합 논리 설계하기: 반가산기부터 디코더까지

assign 문은 wire 타입 신호를 연속 구동해 조합 논리를 합성하는 표준 방식입니다. 주요 조합 회로 설계 예제를 통해 패턴을 익혀보세요.

예제 1: 기본 조합 논리 (5입력)

module combo (input a, b, c, d, e, output z);
    assign z = ((a & b) | (c ^ d) & ~e);
endmodule

합성 시 AND, XOR, NOT, OR 게이트 조합으로 구현. 테스트벤치로 32가지 입력 조합 전수 검증 가능.

예제 2: 반가산기 (Half Adder)

module ha (input a, b, output sum, cout);
    assign sum  = a ^ b;  // XOR: 합
    assign cout = a & b;  // AND: 캐리
endmodule

2비트 덧셈의 기본 블록. 4가지 입력 케이스 검증.

예제 3: 전가산기 (Full Adder)

module fa (input a, b, cin, output sum, cout);
    assign sum  = (a ^ b) ^ cin;
    assign cout = (a & b) | ((a ^ b) & cin);
endmodule

캐리 입력을 받아 3비트 덧셈 수행. 반가산기 2개로도 구성 가능하지만 단일 모듈로 최적화.

예제 4: 2:1 멀티플렉서

module mux_2x1 (input a, b, sel, output c);
    assign c = sel ? a : b;  // 삼항 연산자
endmodule

sel로 입력 선택. 삼항 연산자는 합성 시 멀티플렉서로 매핑됨.

예제 5: 1:4 디멀티플렉서

module demux_1x4 (input f, input [1:0] sel, output a, b, c, d);
    assign a = f & ~sel[1] & ~sel[0];
    assign b = f &  sel[1] & ~sel[0];
    assign c = f & ~sel[1] &  sel[0];
    assign d = f &  sel[1] &  sel[0];
endmodule

단일 입력을 셀렉트에 따라 4개 출력 중 하나로 라우팅. 각 출력이 별도 assign으로 구동 (동일 신호 다중 assign은 일반적으로 비권장).

예제 6: 4:16 디코더 (3:8 디코더 확장)

module dec_3x8 (input en, input [3:0] in, output [15:0] out);
    assign out = en ? (1 << in) : 0;
endmodule

en 활성 시 in 값에 해당하는 비트만 1 설정 (원-핫 인코딩). 시프트 연산자(<<) 활용한 간결한 구현.

테스트벤치 공통 패턴

module tb;
    // 입력 reg, 출력 wire 선언
    // DUT 인스턴스화 (이름 기반 연결)
    initial begin
        // 입력 초기화
        $monitor("...", signals);  // 변경 시마다 출력
        for (i = 0; i < combinations; i++) begin
            {inputs} = i;  // 비트 결합으로 입력 벡터 생성
            #10;           // 시간 경과
        end
    end
endmodule

설계 팁

verilog

  1. VHDL·Verilog 마스터하기: 깨끗한 조합·순차 로직 작성법
  2. 스위치 회로: 기본 전기 회로 실용 가이드
  3. 집적회로: 디지털 로직 게이트 기초
  4. 프로그래머블 로직 컨트롤러(PLC): 산업 시스템을 위한 현대적 디지털 제어
  5. 불 대수 이해: 논리 기초부터 디지털 회로까지
  6. 과학적 표기법으로 곱셈과 나눗셈 마스터하기
  7. 인더스트리 4.0 인사이트: 보쉬.IO 베레나 마윤트케와의 Q&A - IoT, 자동화, 미래 공장
  8. 라즈베리 파이로 서버실 정확한 온도 모니터링하기
  9. 실전 Verilog 게이트 레벨 설계: AND, OR, NOT 게이트와 2x1 멀티플렉서
  10. Verilog $timeformat 마스터하기: 정밀도 및 표시 제어