우선 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 |