-
[digital] 게이트수준 모델링개인 공부/회로 2024. 12. 19. 21:52
지난번에 이어, Verilog HDL을 이용한 여러 모델링과 문법을 자세히 살펴보자!
첫 번째는 "게이트 수준" 모델링 이다.
게이트 수준 모델링
- 디지털 회로 설계에서 가장 낮은 수준의 추상화 방식 중 하나로, 논리 게이트를 사용하여 하드웨어 동작을 표현하는 방식
- Verilog에서 제공하는 내장 게이트 프리미티브(Primitive)를 사용하여 회로를 직접 구상한다.
- 실제 하드웨어 구현과 매우 밀접하게 매핑된다.
ex) 전가산기(Full Adder)의 게이트 수준 모델링
module full_adder ( input wire A, // 첫 번째 입력 비트 input wire B, // 두 번째 입력 비트 input wire Cin, // 이전 자리에서 넘어온 Carry output wire Sum, // 결과 비트 output wire Cout // 다음 자리로 넘어갈 Carry ); wire xor1_out; // A와 B의 XOR 결과 wire xor2_out; // (A XOR B)와 Cin의 XOR 결과 wire and1_out; // A와 B의 AND 결과 wire and2_out; // (A XOR B)와 Cin의 AND 결과 // A와 B의 XOR xor (xor1_out, A, B); // (A XOR B)와 Cin의 XOR xor (Sum, xor1_out, Cin); // A와 B의 AND (중간 Carry) and (and1_out, A, B); // (A XOR B)와 Cin의 AND and (and2_out, xor1_out, Cin); // 최종 Carry 출력 or (Cout, and1_out, and2_out); endmodule
⇒ 여기서 xor, and, or 과 같은 것은 Verilog에서 제공하는 내장 프리미티브로, 바로 사용 가능하다.
📌 Verilog에서는 게이트 수준 모델링과 스위치 수준 모델링을 위한 논리 게이트와 스위치 프리미티브를 제공한다.
💡프리미티브(Primitive)?
Verilog에서 미리 정의된 디지털 회로의 기본 구성 요소로 추가 정의 없이 바로 사용할 수 있다.
즉, 설계자가 직접 정의하지 않아도 Verilog에서 기본적으로 제공하는 미리 정의된 논리 회로 구성 요소들.
[특징]
- 미리 정의된 요소 : 설계자가 논리 게이트의 동작을 정의할 필요 없이 사용할 수 있다.
- 내장된 동작: 기본 논리 게이트의 동작이 이미 구현되어 있어 바로 사용할 수 있다.
- 단순성: 낮은 수준의 설계에 적합하며, 게이트 수준 모델링에 주로 사용된다.
- 확장 불가: 사용자 정의 프리미티브는 지원되지 않는다.
- 선언 : 사용자 정의 모듈과 달리, 입력/출력을 명시적으로 선언하지 않아도 된다.
- 모듈화 : 프리미티브는 모듈처럼 인스턴스화하여 사용 된다.내장 프리미티프
특징 스위치 수준 게이트 수준 추상화 수준 하드웨어(트랜지스터) 수준 논리 게이트 수준 주요 프리미티브 NMOS, PMOS, CMOS, TRAN, TRANIF and, or, not, nand, nor, xor, xnor, buf 모델링 대상 트랜지스터와 전압/전류 흐름 논리적 연산 및 신호의 상태 복잡성 높은 복잡도 (물리적 동작 모델링) 낮은 복잡도 (추상적 동작 모델링) 사용 사례 아날로그 회로, 트랜지스터 동작 디지털 회로 설계, 논리 동작 모델링 물리적 특성 고려 O (전압, 전류, 저항, 부동 상태 모델링) X (논리적 상태만 고려) 유용성 트랜지스터 수준의 디테일 설계 디지털 회로의 논리적 동작 설계 1. 게이트 수준 모델링 논리 게이트
- 추상화된 논리 동작을 모델링
- 기본 논리 게이트(AND, OR, NOT 등)를 사용하여 디지털 회로의 논리적 관계를 설계
- 신호의 논리적 상태(0, 1)만 고려하며, 전류나 전압과 같은 물리적인 값은 고려하지 않는다.
1.1 기본 논리 게이트
게이트 설명 구문 and AND 게이트 and (out, in1, in2); or OR 게이트 or (out, in1, in2); xor XOR 게이트 xor (out, in1, in2); nand NAND 게이트 nand (out, in1, in2); nor NOR 게이트 nor (out, in1, in2); xnor XNOR 게이트 xnor (out, in1, in2); not NOT 게이트 (인버터) not (out, in); 📌 지연 연산자 # 을 이용하여 출력 전달 지연을 지정할 수 있다. ⇒ 논리게이트 #(상승지연, 하강지연)
ex1) and #(2, 4) (out, in1, in2); // 상승 지연 2ns, 하강 지연 4ns 설정
ex2) or #5 (out, in1, in2); // 값을 하나만 작성하면 상승 지연, 하강 지연 시간이 동일하게 적용
1.2 버퍼 및 고임피던스 제어 게이트
게이트 설명 구문 buf 버퍼 buf (out, in); not NOT 버퍼 (인버터) not (out, in); bufif0 제어 신호가 0일 때 활성화되는 버퍼 bufif0 (out, in, ctrl); bufif1 제어 신호가 1일 때 활성화되는 버퍼 bufif1 (out, in, ctrl); notif0 제어 신호가 0일 때 활성화되는 NOT 게이트 notif0 (out, in, ctrl); notif1 제어 신호가 1일 때 활성화되는 NOT 게이트 notif1 (out, in, ctrl); 📌 버퍼는 인버터가 짝수개 연결된 것과 논리적으로 등가이다. (입력 == 출력)
📌 not 게이트 = 인버터와 동일하다.
2. 스위치 수준 모델링 스위치 프리미티브
- 하드웨어 레벨에서 신호의 경로를 정의할 때 사용한다.
- 트랜지스터(NMOS, PMOS)와 스위치 역할에 초점을 맞추어 회로 동작을 모델링한다.
- 전류 흐름, 전압, 및 물리적 연결을 기반으로 동작한다.
2.1 전송 스위치 (Transmission Switches)
스위치 설명 구문 cmos CMOS 스위치 cmos (out, in, nctrl, pctrl); rcmos 저항성 CMOS 스위치 rcmos (out, in, nctrl, pctrl); tran 전송 게이트 tran (out1, out2); rtran 저항성 전송 게이트 rtran (out1, out2); 2.2 트라이 상태 스위치 (Tri-State Switches)
스위치 설명 구문 tranif0 제어 신호가 0일 때 활성화되는 전송 게이트 tranif0 (out1, out2, ctrl); tranif1 제어 신호가 1일 때 활성화되는 전송 게이트 tranif1 (out1, out2, ctrl); rtranif0 제어 신호가 0일 때 활성화되는 저항성 전송 게이트 rtranif0 (out1, out2, ctrl); rtranif1 제어 신호가 1일 때 활성화되는 저항성 전송 게이트 rtranif1 (out1, out2, ctrl); 2.3 고정 상태 스위치 (Pull Control Switches)
스위치 설명 구문 nmos NMOS 트랜지스터 nmos (out, in, ctrl); pmos PMOS 트랜지스터 pmos (out, in, ctrl); rnmos 저항성 NMOS 트랜지스터 rnmos (out, in, ctrl); rpmos 저항성 PMOS 트랜지스터 rpmos (out, in, ctrl); 2.4 풀업 및 풀다운 저항
스위치 설명 구문 pullup 신호를 논리 1(Vdd)에 연결하는 저항 pullup (out); pulldown 신호를 논리 0(Gnd)에 연결하는 저항 pulldown (out); '개인 공부 > 회로' 카테고리의 다른 글
[digital] 구조적 모델링 (0) 2024.12.19 [digital] Verilog HDL 모델링 (4) 2024.12.02 [digital] PLD 종류 (SPLD, CPLD) (1) 2024.12.01 [digital] PLD란? (2) 2024.11.30