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

Verilog 게이트 지연 이해: 신뢰할 수 있는 디지털 설계를 위한 정확한 타이밍

디지털 소자는 이진 엔티티로 0과 1 두 값만 가질 수 있습니다. 그러나 0에서 1로, 1에서 0으로의 전이에는 과도기 지연이 있으며, 각 게이트 소자도 입력을 출력으로 전파하는 데 지연이 있습니다.

예를 들어, 2입력 AND 게이트는 두 입력이 모두 1이 되면 출력을 1로 전환하고, 입력 중 하나가 0이 되면 다시 0으로 전환해야 합니다. 이러한 게이트와 핀-투-핀 지연은 Verilog에서 논리 기본 요소를 인스턴스화할 때 지정할 수 있습니다.

상승, 하강, 턴오프 지연

게이트 출력이 어떤 값에서 1로 변경되는 데 걸리는 시간을 상승(rise) 지연이라고 합니다. 게이트 출력이 어떤 값에서 0으로 변경되는 데 걸리는 시간은 하강(fall) 지연입니다. 게이트 출력이 어떤 값에서 하이 임피던스로 변경되는 시간은 턴오프(turn-off) 지연입니다.

이 지연들은 실제로 모든 신호에 적용 가능하며, 실제 회로에서 언제든 상승 또는 하강할 수 있고 게이트 출력에만 국한되지 않습니다. 게이트 지연을 표현하는 세 가지 방법이 있으며, 두 지연 형식은 출력이 하이 임피던스로 전이되지 않는 대부분의 기본 요소에 적용할 수 있습니다. 예를 들어, AND 게이트의 출력은 어떤 입력 조합으로도 Z가 되지 않으므로 세 지연 형식을 적용할 수 없습니다.

// 단일 지연 지정 - 세 가지 전이 지연 모두에 사용
or #(<delay>) o1 (out, a, b);

// 두 지연 지정 - 상승과 하강 전이에 사용
or #(<rise>, <fall>) o1 (out, a, b);

// 세 지연 지정 - 상승, 하강, 턴오프 전이에 사용
or #(<rise>, <fall>, <turn_off>) o1 (out, a, b);

단일 지연만 지정하면 세 가지 지연 유형 모두에 같은 값이 사용됩니다. 두 지연이 지정되면 첫 번째는 상승, 두 번째는 하강 지연을 나타냅니다. 세 지연이 지정되면 각각 상승, 하강, 턴오프 지연을 나타냅니다.

단일 지연 형식

module des (
  input a, b,
  output out1, out2
);
  // AND 게이트는 2 타임 유닛 게이트 지연
  and #(2) o1 (out1, a, b);
  // BUFIF0 게이트는 3 타임 유닛 게이트 지연
  bufif0 #(3) b1 (out2, a, b);
endmodule
module tb;
  reg a, b;
  wire out1, out2;
  des d0 (.out1(out1), .out2(out2), .a(a), .b(b));
  initial begin
    {a, b} <= 0;
    $monitor ("T=%0t a=%0b b=%0b and=%0b bufif0=%0b", $time, a, b, out1, out2);
    #10 a <= 1;
    #10 b <= 1;
    #10 a <= 0;
    #10 b <= 0;
  end
endmodule

AND 게이트 출력이 입력 변경 후 2 타임 유닛 뒤에 변경됨을 볼 수 있습니다. 예를 들어, a가 이미 1인 상태에서 b가 1이 되는 T=20에 출력은 T=22에 1이 됩니다. 마찬가지로 a가 T=30에 0으로 돌아가면 출력은 T=32에 새 값을 얻습니다.

BUFIF0의 게이트 지연은 3 타임 유닛으로 지정되어, a가 이미 1인 상태에서 b가 0에서 1로 변경되면 출력이 Z로 업데이트되는 데 3 타임 유닛이 걸려 T=23에 최종적으로 업데이트됩니다.

시뮬레이션 로그

ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=2 a=0 b=0 and=0 bufif0=x
T=3 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=13 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=23 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=32 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=43 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

두 지연 형식

위와 같은 테스트벤치를 상승/하강 지연이 명시된 아래 Verilog 모델에 적용해 보겠습니다.

module des (
  input a, b,
  output out1, out2
);
  and #(2, 3) o1 (out1, a, b);
  bufif0 #(4, 5) b1 (out2, a, b);
endmodule

시뮬레이션 로그

ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=3 a=0 b=0 and=0 bufif0=x
T=5 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=14 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=24 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=33 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=45 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

세 지연 형식

module des (
  input a, b,
  output out1, out2
);
  and #(2, 3) o1 (out1, a, b);
  bufif0 #(5, 6, 7) b1 (out2, a, b);
endmodule

시뮬레이션 로그

ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=3 a=0 b=0 and=0 bufif0=x
T=6 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=15 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=27 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=33 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=46 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

최소/표준/최대 지연 (Min/Typ/Max Delays)

지연은 칩의 서로 다른 부분에서 동일하지 않으며, 온도 등 다른 변동 조건에서도 동일하지 않습니다. 따라서 Verilog는 위에서 언급한 각 지연 유형에 대해 추가적인 제어 수준을 제공합니다. 모든 디지털 게이트와 트랜지스터 셀은 공정 노드 기반으로 최소, 표준, 최대 지연이 지정되며, 보통 팹 라이브러리에서 제공됩니다.

지연 유형(상승, 하강, 턴오프) 각각에 대해 min, typ, max 세 값을 지정할 수 있으며, 각각 최소, 표준, 최대 지연을 나타냅니다.

module des (
  input a, b,
  output out1, out2
);
  and #(2:3:4, 3:4:5) o1 (out1, a, b);
  bufif0 #(5:6:7, 6:7:8, 7:8:9) b1 (out2, a, b);
endmodule

시뮬레이션 로그

ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=4 a=0 b=0 and=0 bufif0=x
T=7 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=16 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=23 a=1 b=1 and=1 bufif0=1
T=28 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=34 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=47 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

verilog

  1. 버릴로그(Verilog) 입문: 디지털 회로 설계를 위한 하드웨어 기술 언어
  2. Verilog 결합(Concatenation) & 복제(Replication) 연산자 실전 가이드
  3. Verilog 할당문 이해: 유형, 문법, 모범 사례
  4. Verilog 차단 vs 비차단 할당: 핵심 차이점 완벽 이해
  5. Verilog 지연 제어 이해: 타이밍 기법과 모범 사례
  6. Verilog 블록 간/블록 내 지연 이해: 인터/인트라 할당 지연
  7. 게이트 레벨 모델링: 하드웨어 회로도에서 Verilog 코드로
  8. 실전 Verilog 게이트 레벨 설계: AND, OR, NOT 게이트와 2x1 멀티플렉서
  9. Verilog 클럭 생성기: 설계 및 구현 가이드
  10. Verilog 수학 함수 마스터하기: 효율적인 하드웨어 설계를 위한 활용