Kim Seon Deok

[Verilog] Gate level modeling 본문

Verilog

[Verilog] Gate level modeling

seondeok 2022. 12. 8. 03:28

 

  • gate level modeling
  • concurrent assignment
  • behavioral modeling
  • structural modeling

    gate level modeling과 concurrent assignment는 조합회로를 구현하는 데 사용된다. 

      behavioral moeling과 structural modeling은 조합회로와 순차회로를 구현하는 데 사용된다.   

 

 

predefined primitives

베릴로그에서 기본적으로 제공되는 gate primitive이다.

정의나 선언 없이 사용가능하고 모듈 내에서만 사용할 수 있다.
initial과 always 구문 안에서는 사용할 수 없다.

 

userdefiined primitives

사용자가 별개로 정의하는 gate primitive를 말한다.



gate primitives

 

베릴로그에서 제공하는 gate는 다음과 같다.

 

 

게이트 이름 [#(n1,n2)] [인스턴스 이름] (output, input1, input2,...)

#(n1,n2) : gate primitive 지연을 의미한다. default 지연값은 0이다. 생략 가능하다.
n1은 상승지연 n2는 하강지연이다.
인스턴스 이름은 생략 가능하지만 structural modeiling에서 하위 모듈을 인스턴스 할 땐 생략할 수 없다.
포트연결은 출력포트가 가장 먼저 오며 그 다음에 입력포트를 나열한다.

behavioral modeling구문 중 initial, always 구문 내부에서는 gate primitive를 사용할 수 없다.

 

and U1(out1, a. b);   // 입력이 2개인 and 게이트
nor  #2  U4(out4, a,b)  ; // 입력이 2개인 nor 게이트. 시뮬레이션 시 지연 2
xor #(3,4) U5(out5, c,b,a)  ; // 입력 3 개인 xor게이트. 시뮬레이션 시 상승 지연3, 하강지연 4


gate primitive를 이용해 1비트 full adder 구현

1비트 fuul adder

module full_adder(a,b,cin, sum, cout);

	input a, b, cin  ;
	output sum, cout ;
	wire s1,c1,c2    ;
    
    
	xor  G1(s1,a,b)       ;
	and  G2(c1,a,b)       ;
	and  G3(c2, s1, cin)  ;
	xor  G4(sum, s1, cin) ;
	xor  G5(cout, c1, c2) ;
    
endmodule




buf & not gate primitive

buf게이트

buf b1 (out1,out2,in);

 

not #5 inv(out, in);  // 출력값이 5ns지나면 상승, 5ns 지나면 하강. 합성 시 지연 무시됨





3 state buffer primitive

  • 순서에 의한 매핑을 사용

1.출력포트
2.데이터 입력 포트
3.제어 입력 포트
순으로 매핑

  • 3개의 지연값 지정 #(n1,n2,n3)

n1 : 상승지연, n2 : 하강지연, n3 : z로 변할 때의 지연


 

buf   bf(out, data, control);

 

buf  #(10,12,11)  bf(out, data, control);



게이트 인스턴스의 배열
동일한 논리게이트를 여러 개 인스턴스 할 때 line 수가 길어지므로 한 문장으로 나타내도록 함

nand #2 t_nand[0:3](....)   ;
nand #2 x_nand[0:7](....), y_nand[8:15](......)	;






게이트 지연과 net 지연

  • 게이트 지연

게이트 입력에서부터 출력 까지 신호전달 지연
상승지연, 하강지연, turn-off지연
default 값은 0

  • net 지연

net을 구동하는 driver 값이 변하는 시점부터 net값이 갱신되는 시점까지 소요되는 시간
상승지연, 하강지연, turn-off지연
default 값은 0

  • 관성 지연

지정된 지연값보다 입력신호의 변화 폭이 작은 경우 입력신호가 출력에 영향 미치지 않는다.

module inerital_delay_gate() ;
	reg a, b ;
	and # 30(out, a, b);    
	
	initial begin
		a = 1'b0	
		b = 1'b0	;    
	#50 a = 1'b1	; // 50ns기다리고 a,b 변경
		b = 1'b1	;
	#50 a = 1'b0	;  // 50ns기다리고 a,b 변경
		b = 1'b0	;
	#50 a = 1'b1	;  // 50ns기다리고 a,b 변경
		b = 1'b1	;
	#20 b = 1'b0	;  // 20ns기다리고 b 변경. 관성지연 30보다 작으므로 시뮬레이션에서 무시됨
	#50         	;	
	end
	
endmodule








'Verilog' 카테고리의 다른 글

[Verilog] Procedural assignment  (2) 2022.12.08
[Verilog] Concurrent assignment  (0) 2022.12.08
[Verilog] Operator  (0) 2022.12.08
[Verilog] Logic status, Data type  (0) 2022.12.08
[Verilog] 주석, 수 표현 , 문자열, 식별자  (0) 2022.12.06
Comments