본문 바로가기

VERILOG

Verilog HDL 문법(구조적(Structural),dataflow,동작적(Behaviroal)모델링,조합논리회로,순차논리회로)

우선 Verilog 코드를 3가지 모델링으로 나눌 수가 있습니다.

 

1. 구조적(Structural) 모델링

  • 논리 게이트, 플립플롭 등을 사용한 연결을 표현
  • 기존 설계한 회로를 포함한 netlist를 사용
  • 가장 최상위 모델링

해당 코드는 밑의 half_adder 모듈을 인스턴스화해서 fulladder를 구조적 모델링을 한 코드입니다.

module fulladder_structural(   //구조적 모델링
    input a,b,cin,
    output sum,carry
    );
    wire sum_0, carry_0, carry_1;

    half_adder ha0 (.a(a), .b(b), .sum(sum_0), .carry(carry_0));
    half_adder ha1 (.a(sum_0), .b(cin), .sum(sum), .carry(carry_1));

    or(carry,carry_0,carry_1);
endmodule

 

2. Dataflow 모델링

  • 데이터의 이동을 표현
  • 연산자를 사용한 연속 할당문(assign 문)
  • 순수 조합회로(AND, OR, XOR) 기술하는 데 사용
  • 클럭이 아닌 데이터가 변할 때 변화
  • 시간 개념 없이 사용할 수 있음
  • 예시 : assign y = a ^ b;

실제 코드 예시 반가산기

module half_adder( //데이터플로우 모델링
    input a,b,
    output sum,carry
    );
    assign sum=a^b;
    assign carry=a&b;
    
endmodule


3. 동작적(Behaviroal) 모델링

  • if~else if, case, while, for 등을 사용
  • 시간 개념 없이 사용할 수 있음
  • 예시 : if (a != b) y=1'b1; else y = 1'b0;

module halfadder_behaviors(    //동작적 모델링
    input a,b,
    output reg s,reg c
    );
    always@(a,b)begin
    case({a,b})
       2'b00:begin s=0; c=0; end
       2'b01:begin s=1; c=0; end
       2'b10:begin s=1; c=0; end
       2'b11:begin s=0; c=1; end
    endcase
    end
endmodule

 

예시인 반가산기 입니다.

 

 

그리고 코드 Logic은 2가지로 나눌 수 있을 거 같습니다.

 

Combination Logic(조합 논리 회로)

  • 기본 gate(and gate, or gate, not gate)의 조합으로 특정 기능을 수행할 수 있도록 설계된 회로
  • 현재 입력되는 신호의 상태에 의해서만 출력이 결정되는 논리회로
  • 입력에 의해서만 출력이 결정됨

산술 및 논리 연산 회로 = 가산기, 감산기, 곱셈기, 나눗셈기 (산술연산 및 논리연산)

데이터 전송회로 = 부호기(decoder), 복호기(encoder), 멀티플렉서(Mux), 디멀티플렉서(Demux), 패리티 발생기(검출기), 코드변환기

 

 

Sequential Logic(순차 논리 회로)

  • 논리게이트 외의 기억 특성과 feedback 기능을 갖는 소자들을 이용하여 구성할 수 있는 회로
  • 현재의 출력상태와 다음 입력상태에 의해서 다음 출력이 결정되는 논리회로
  • 카운터, 메모리 기능이 있는 논리회로
  • 조합논리회로와 메모리 소자인 플립플롭으로 구성
  • 메모리 부분에 클럭펄스가 있음
  • 출력 Y(1)는 현재 상태의 입력 X(1)과 이전상태의 출력 Y(t-1)에 따라 결정됨

1) 동기 순차논리회로

- 클럭을 이용하여 새로운 입력순차와 응답의 출력 생성이 일정한 시간 간격을 둔 상태에서 제어됨

- 일정한 시간 지연이 발생하여 디자인 과정이 단순화되어진다.

2) 비동기 순차 논리회로

- 출력이 외부로부터의 관리에 의해서가 아니라 내부의 지연에 의해서 일정하지 않은 시간 간격을 두고 발생하여 동기 순차논리회로보다 설계과정이 어려움

'VERILOG' 카테고리의 다른 글

Verilog HDL 문법2  (0) 2024.02.02
조합논리회로 코드모음  (0) 2024.02.02
순차논리회로 코드 모음  (0) 2024.02.02
Verilog - reg 와 wire 그리고 in, out, inout 입출력  (0) 2024.02.01
VERILOG - VIVADO, VITIS 설치 방법  (1) 2024.01.30