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

고급 Verilog 스위치 레벨 모델링

Verilog는 트랜지스터 레벨 모델링도 지원하지만, 회로 복잡성이 증가하면서 설계자들이 스위치 레벨 모델링보다는 더 높은 추상화 수준으로 이동해야 했기 때문에 요즘은 설계자들이 거의 사용하지 않습니다.

NMOS/PMOS

module des (input d, ctrl, output outn, outp);
  nmos (outn, d, ctrl);
  pmos (outp, d, ctrl);
endmodule
module tb;
  reg d, ctrl;
  wire outn, outp;
  des u0 (.d(d), .ctrl(ctrl), .outn(outn), .outp(outp));
  initial begin
    {d, ctrl} <= 0;
    $monitor ("T=%0t d=%0b ctrl=%0b outn=%0b outp=%0b", $time, d, ctrl, outn, outp);
    #10 d <= 1;
    #10 ctrl <= 1;
    #10 ctrl <= 0;
    #10 d <= 0;
  end
endmodule

시뮬레이션 로그

ncsim> run
T=0 d=0 ctrl=0 outn=z outp=0
T=10 d=1 ctrl=0 outn=z outp=1
T=20 d=1 ctrl=1 outn=1 outp=z
T=30 d=1 ctrl=0 outn=z outp=1
T=40 d=0 ctrl=0 outn=z outp=0
ncsim: *W,RNQUIE: Simulation is complete.

CMOS 스위치

module des (input d, nctrl, pctrl, output out);
  cmos (out, d, nctrl, pctrl);
endmodule
module tb;
  reg d, nctrl, pctrl;
  wire out;
  des u0 (.d(d), .nctrl(nctrl), .pctrl(pctrl), .out(out));
  initial begin
    {d, nctrl, pctrl} <= 0;
    $monitor ("T=%0t d=%0b nctrl=%0b pctrl=%0b out=%0b", $time, d, nctrl, pctrl, out);
    #10 d <= 1;
    #10 nctrl <= 1;
    #10 pctrl <= 1;
    #10 nctrl <= 0;
    #10 pctrl <= 0;
    #10 d <= 0;
    #10;
  end
endmodule

시뮬레이션 로그

ncsim> run
T=0 d=0 nctrl=0 pctrl=0 out=0
T=10 d=1 nctrl=0 pctrl=0 out=1
T=20 d=1 nctrl=1 pctrl=0 out=1
T=30 d=1 nctrl=1 pctrl=1 out=1
T=40 d=1 nctrl=0 pctrl=1 out=z
T=50 d=1 nctrl=0 pctrl=0 out=1
T=60 d=0 nctrl=0 pctrl=0 out=0
ncsim: *W,RNQUIE: Simulation is complete.

양방향 스위치

tran

module des (input io1, ctrl, output io2);
  tran (io1, io2);
endmodule
module tb;
  reg io1, ctrl;
  wire io2;
  des u0 (.io1(io1), .ctrl(ctrl), .io2(io2));
  initial begin
    {io1, ctrl} <= 0;
    $monitor ("T=%0t io1=%0b ctrl=%0b io2=%0b", $time, io1, ctrl, io2);
    #10 io1 <= 1;
    #10 ctrl <= 1;
    #10 ctrl <= 0;
    #10 io1 <= 0;
  end
endmodule

시뮬레이션 로그

ncsim> run
T=0 io1=0 ctrl=0 io2=0
T=10 io1=1 ctrl=0 io2=1
T=20 io1=1 ctrl=1 io2=1
T=30 io1=1 ctrl=0 io2=1
T=40 io1=0 ctrl=0 io2=0
ncsim: *W,RNQUIE: Simulation is complete.

tranif0

module des (input io1, ctrl, output io2);
  tranif0 (io1, io2, ctrl);
endmodule

시뮬레이션 로그

ncsim> run
T=0 io1=0 ctrl=0 io2=0
T=10 io1=1 ctrl=0 io2=1
T=20 io1=1 ctrl=1 io2=z
T=30 io1=1 ctrl=0 io2=1
T=40 io1=0 ctrl=0 io2=0
ncsim: *W,RNQUIE: Simulation is complete.

tranif1

module des (input io1, ctrl, output io2);
  tranif1 (io1, io2, ctrl);
endmodule

시뮬레이션 로그

ncsim> run
T=0 io1=0 ctrl=0 io2=z
T=10 io1=1 ctrl=0 io2=z
T=20 io1=1 ctrl=1 io2=1
T=30 io1=1 ctrl=0 io2=z
T=40 io1=0 ctrl=0 io2=z
ncsim: *W,RNQUIE: Simulation is complete.

전원과 그라운드

module des (output vdd, output gnd);
  supply1 _vdd;
  supply0 _gnd;
  assign vdd = _vdd;
  assign gnd = _gnd;
endmodule
module tb;
  wire vdd, gnd;
  des u0 (.vdd(vdd), .gnd(gnd));
  initial begin
    #10;
    $display ("T=%0t vdd=%0d gnd=%0d", $time, vdd, gnd);
  end
endmodule

시뮬레이션 로그

ncsim> run
T=10 vdd=1 gnd=0
ncsim: *W,RNQUIE: Simulation is complete.

verilog

  1. 멤브레인 스위치 이해하기: 설계, 기능, 이점
  2. 전기 스위치 이해: 유형, 기능, 응용
  3. C# switch 문 마스터하기: 문법, 예제, 모범 사례
  4. C# 변수 범위(Scope) 이해: 클래스, 메서드, 블록 레벨
  5. 칩 설계 추상화 계층 완벽 이해: 시스템부터 레이아웃까지
  6. 게이트 레벨 모델링: 하드웨어 회로도에서 Verilog 코드로
  7. 실전 Verilog 게이트 레벨 설계: AND, OR, NOT 게이트와 2x1 멀티플렉서
  8. 제조업 디지털 체크리스트 도입 5대 이점
  9. 레벨 스태프(Level Staff) 이해: 정의, 용도 및 유형
  10. 토글 스위치(Toggle Switch) 이해: 기능, 용도, 내구성