게이트 수준 Modeling

2020. 10. 10. 19:19·study/Logic Circuit
반응형

게이트 및 스위치 프리미티브

predefined 프리미티브

  • 정의나 선언 없이 사용 가능 
  • 단일 출력을 가짐
  • 모듈 내에서만 사용 가능 >>  initial 과 always 구문 내부에서는 사용 불가

Verilog에서 제공되는 게이트 및 스위치 프리미티브

 


 

게이트 프리미티브

인스턴스 구문

primitive_gate_name [#(n1,n2)][instance_name](output, input1, ..);         // [ ] 안에 있는건 생략 할 수 있다는 뜻
                                                                                             //  instance_name은 내가 지을 게이트의 이름

 

  • #(n1,n2) : 게이트 프리미티브의 지연. default 지연값은 0                                                                      >>n1 : 상승지연(0에서 1로 변할 때), n2 : 하강지연 (1에서 0으로 변할 때)                                                      >>min(n1, n2) : 출력이 x (unknown : 0과 1의 중간으로 표현)로 변할 때의 지연 (turn off 지연 이라고 한다.)

  • instance name : instance _ name : 생략 가능
  • 포트 연결 :  순서에 의한 매핑만 사용 가능 (이름에 의한 포트 매핑 불가능)                                                                    출력 포트가 처음에 오며, 입력 신호들은 임의의 순서로 나열

 

ex)

and           U1(out1, a, b);                                  // 2입력 and 게이트
nand             (out2, a, b);                                 // 인스턴스 이름을 생략한 경우
or             U3(out3, a, b, c);                              // 3입력 or 게이트
nor #(2)     U4(out4, a, b);                                 // 2입력 nor 게이트   , 상승 하강 turnoff 모두 지연시간 2
xor #(3, 4)  U5(out5, c, b, a);                              // 3입력 xor 게이트    ,  상승지연 3, 하강지연 4
xnor          U6(out6, a, b);                                 // 2입력 xnor 게이트     
nor #2      G5(y5, a0, a1), (y6, a1, a2), (y7, a2, a3)   // 지연시간 소괄호 생략하여 사용 가능 , multiple instantiations
                                                                   // 한번에 3개의 nor게이터 선언 , 1개만 인스턴스 name 줬음

 

 

 


 

buf와 not 게이트 프리미티브

  • 하나의 입력 , 하나 또는 그 이상의 출력
  • 포트매핑 : 출력 포트 먼저 지정 , 그 뒤에 입력 포트 지정

buf 게이트 (buffer) : 논리 값 그대로 , 그럼 왜 써 ? >> 전기적으로 볼때 output에서 나오는 전류의 양을 많게 만든다.                               전류의 양을 많게 만드는 목적은 ? >> output에서 나오는 값을 여러군데(여러 gate)에서 쓰려고                               할 때 이것들이 정상적으로 작동하기 위한 최소한의 전류가 필요

                           전류가 필요

not 게이트           : 논리 값 반대로 , not 게이트도 위와 같이 전류 목적으로 쓸 때가 있다.

 

buf 와 not은 지연을 3개 까지 표시가능 >    buf # (d1, d2, d3)   상승,하강,turn off 지연

buf 와 not은 입력이 1개이고 출력은 여러개 일 수 있다. >> buf # (d1,d2,d3) b1(out1, out2, in); 

 


 

3상태 버퍼 프리미티브

  • 포트 연결 : 순서에 의한 매핑만 사용 가능                                                                                                             출력 포트, 데이터 입력 포트, 제어 입력 포트의 순서로 매핑
  • 3개의 지연값 지정 : #(n1, n2, n3)                                                                                                                                  n1 : 상승지연, n2 : 하강지연, n3 : z , n3 : z로 변할 때의 지연                                                                      min(n1, n2, n3) : 출력이 x로 변할 때의 지연
  • 2개의 지연값 지정 : #(, ) n1 n2                                                                                                                                      n1 : 상승지연, n2 : 하강지연                                                                                                              min(n1, n2) : 출력이 x 또는 z로 변할 때의 지연 >> turn off지연일 때는 n1,n2중 작은 값 쓴다.

bufif 0은 control 입력을 반대로 주는 것  >> 0일때 연결 , 1일때 차단

 

 


 

논리 게이트 인스턴스의 배열

  • 게이트 인스턴스의 배열 : 인스턴스의 이름 뒤에 배열의 범위를 지정하여 반복 횟수를 표현

ex )

nand #2  t_nand[ 0:7 ] ( . . . );
nand #2  t_nand[ 0:3 ] ( . . . ), t_nand[ 4:7 ]( . . . );      // syntax error , 동일한 이름으로 이어서 선언 불가능
nand #2  x_nand[ 0:3 ] ( . . . ), y_nand[ 4:7 ]( . . . );      // 서로 다른 이름으로 선언하면 가능

 

bufif0 ar[3:0](out, in, en); // 3상태 버퍼의 배열     
                                 // 이것을 풀어서 쓰면

bufif0 ar3(out[3], in[3], en); // 3상태 버퍼의 개별적인 인스턴스
bufif0 ar2(out[2], in[2], en);
bufif0 ar1(out[1], in[1], en);
bufif0 ar0(out[0], in[0], en);

bufif0 ar[3:0](out, in, en);

 

 


 

게이트 지연과 net 지연

 

게이트 지연     (위 게이트 프리미티브에서 지연 그려 놓은 것)

  • 게이트의 입력에서부터 출력까지의 신호 전달지연 (propagation delay)
  • 상승지연, 하강지연, 턴-오프 (turn-off) 지연
  • defualt 값은 0

net 지연     

  • net를 구동하는 driver의 값이 변하는 시점부터 net의 값이 갱신되는 시점까지 소요되는 시간
  • 상승지연, 하강지연, 턴-오프 (turn-off) 지연
  • defualt 값은 0

관성지연 ( inertial delay )

  • 지정된 지연 값보다 입력 신호의 변화 폭이 작은 경우에는 입력 신호가 출력에 영향을 미치지 않음                      >> 지연 시간중에 ( 상태변화가 완료되기 전에 ) 입력 신호가 먼저 원래 대로 돌아오면 값이 변하기 전에 다시 원래 값으로 상태를 변화시켜서 출력에 영향을 미치지 않게 되는 것
  • Verilog HDL의 default 지연
반응형

'study > Logic Circuit' 카테고리의 다른 글

행위수준 모델링  (0) 2020.10.26
할당문  (0) 2020.10.25
Verilog 연산자  (0) 2020.10.10
Verilog 자료형  (0) 2020.10.08
Verilog HDL 개요 , 회로설계 모델링, 어휘 규칙  (0) 2020.10.07
'study/Logic Circuit' 카테고리의 다른 글
  • 행위수준 모델링
  • 할당문
  • Verilog 연산자
  • Verilog 자료형
jjikky
jjikky
  • jjikky
    jikky.env
    jjikky
  • 전체
    오늘
    어제
    • 분류 전체보기
      • React
      • Node.js
        • TDD
        • Node.js
        • mern
        • OAuth
        • js_facebook login
      • Coding Test
        • 백준 알고리즘
        • CodeUp
        • 코테 이론
      • Js
        • Javascript
      • study
        • python
        • android
        • Big data analysis
        • Logic Circuit
      • git
      • 개발일지
      • 게임기획
      • Docker
      • IPFS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬 딕셔너리
    NFT Marketplace
    파이썬 그리디
    ifps 네트워크 지연
    파이썬
    git 유용한 명령어
    Ipfs
    범주형 자료
    코딩테스트
    Python
    빅데이터
    verilog
    UI
    NFT IPFS
    nft
    파이썬 완전탐색
    안드로이드
    그리디 알고리즘
    verilog할당문
    ipfs add
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
jjikky
게이트 수준 Modeling
상단으로

티스토리툴바