verilog
디지털 요소는 이진 항목이며 0과 1의 두 값 중 하나만 유지할 수 있습니다. 그러나 0에서 1로, 1에서 0으로의 전환에는 전환 지연이 있으므로 각 게이트 요소도 값을 입력에서 출력으로 전파합니다.
예를 들어, 2개의 입력 AND 게이트는 두 입력이 모두 1이 되면 출력을 1로 전환하고 입력 중 하나가 0이 되면 다시 0으로 전환해야 합니다. 이러한 게이트 및 핀 대 핀 지연은 로직 프리미티브를 인스턴스화할 때 Verilog에서 지정할 수 있습니다.
게이트의 출력이 어떤 값에서 1로 변하는 데 걸리는 시간을 상승이라고 합니다. 지연. 게이트의 출력이 일부 값에서 0으로 변경되는 데 걸리는 시간을 하강이라고 합니다. 지연. 게이트의 출력이 특정 값에서 높은 임피던스로 변경되는 데 걸리는 시간을 턴오프라고 합니다. 지연.
이러한 지연은 실제 회로에서 언제든지 상승 또는 하강할 수 있고 게이트 출력에만 국한되지 않으므로 실제로 모든 신호에 적용할 수 있습니다. 게이트 지연을 나타내는 세 가지 방법이 있으며 두 가지 지연 형식은 출력이 고임피던스로 전환되지 않는 대부분의 프리미티브에 적용될 수 있습니다. 입력 조합에 대해 출력이 Z로 이동하지 않기 때문에 3개의 지연 형식을 AND 게이트에 적용할 수 없습니다.
// Single delay specified - used for all three types of transition delays
or #(<delay>) o1 (out, a, b);
// Two delays specified - used for Rise and Fall transitions
or #(<rise>, <fall>) o1 (out, a, b);
// Three delays specified - used for Rise, Fall and Turn-off transitions
or #(<rise>, <fall>, <turn_off>) o1 (out, a, b);
단일 지연만 지정된 경우 세 가지 유형의 지연 모두 동일한 주어진 값을 사용합니다. 두 개의 지연이 지정된 경우 첫 번째 지연은 상승을 나타냅니다. 두 번째 것은 가을을 나타냅니다. 지연. 3개의 지연이 지정되면 상승을 나타냅니다. , 떨어지다 및 꺼짐 각각 지연됩니다.
module des ( input a, b,
output out1, out2);
// AND gate has 2 time unit gate delay
and #(2) o1 (out1, a, b);
// BUFIF0 gate has 3 time unit gate delay
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시간 단위로 변경됩니다. 예를 들어, T=20에서 a는 이미 1인 반면 b는 1이 됩니다. 그러나 출력은 T=22에서만 1이 됩니다. 마찬가지로 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.
rise 아래에 표시된 다른 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.
지연은 제조된 칩의 다른 부분에서 동일하지 않으며 다른 온도 및 기타 변형에서도 동일하지 않습니다. 따라서 Verilog는 위에서 언급한 각 지연 유형에 대한 추가 제어 수준도 제공합니다. 모든 디지털 게이트 및 트랜지스터 셀에는 프로세스 노드를 기반으로 지정된 최소, 일반 및 최대 지연이 있으며 일반적으로 제작 파운드리의 라이브러리에서 제공합니다.
각 지연 유형 - 상승, 하강 및 끄기 - 세 가지 값 min , 일반 및 최대 지정될 수 있으며 최소, 일반 및 최대 지연을 나타냅니다.
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
매개변수는 다른 사양으로 모듈을 재사용할 수 있도록 하는 Verilog 구성입니다. 예를 들어, 4비트 가산기는 비트 수에 대한 값을 허용하도록 매개변수화될 수 있으며 모듈 인스턴스화 중에 새 매개변수 값이 전달될 수 있습니다. 따라서 N비트 가산기는 4비트, 8비트 또는 16비트 가산기가 될 수 있습니다. 함수 호출 중에 전달되는 함수에 대한 인수와 같습니다. parameter MSB = 7; // MSB is a parameter with a constant value 7 paramet
Verilog는 하드웨어 설명 언어이며 설계자가 RTL 설계를 시뮬레이션하여 논리 게이트로 변환할 필요가 없습니다. 시뮬레이션이 필요한 이유는 무엇입니까? 시뮬레이션은 RTL 코드가 의도한 대로 동작하는지 확인하기 위해 다른 시간에 다른 입력 자극을 설계에 적용하는 기술입니다. 기본적으로 시뮬레이션은 설계의 견고성을 검증하기 위해 잘 따라야 하는 기술입니다. 또한 가공된 칩이 실제 세계에서 사용되는 방식과 다양한 입력에 반응하는 방식과 유사합니다. 예를 들어, 위의 디자인은 출력 pe 보여진 바와 같이. 시뮬레이션을 통해