Verilog(5) - 조합회로와 순차회로

유사인간·2023년 4월 21일
0

조합회로

조합회로의 특징

조합회로에는 시간이라는 개념이 존재하지 않는다. 예를 들어, 다음 코드를 보자.

module um (vin ,s ,vout);
	input	[3:0]	vin;
	input	[1:0]	s;
	output			vout;

	wire	[1:0]	sb;
    wire	[3:0]	vins;
    
    // modelsim에서 이미 포함되어있는 프리미티브 게이트 NOT/AND/OR 사용
    // [Gate_kind]	[Gate_name]	(output, input1, input2, ..., inputN)
    NOT		N0	(sb[0], s[0]);
    NOT		N1	(sb[1], s[1]);
    
    AND		A0	(vins[0], sb[0], s[0], vin[0]);
    AND		A1	(vins[1], sb[0], s[1], vin[1]);
    AND		A2	(vins[2], sb[1], s[0], vin[2]);
    AND		A3	(vins[3], sb[1], s[1], vin[3]);
    
    OR		O0	( vout, vin[0], vin[1], vin[2], vin[3]);
endmodule

코드를 보면, 가산기의 논리회로를 그대로 옮겨와 코드를 작성하였다. 이 경우는 코드를 길게 늘렸지만, 합선기, 즉 툴에서 알아서 사용자가 이것을 결과값으로만 작성하여도 같은 논리회로를 작성해준다.

이 코드에서 시간을 연상하는 내용이 들어간 곳이 있는가? 또한 지연시간에 따라 결과를 출력하는 내용이 들어간 곳이 있는가? 물론, 컴퓨터의 CPU도 이것을 차례차례 연산하는 동안의 각각의 연산시간(물론 극도로 작음)이 걸리긴 하지만, 코드에 의하면 거의 즉시 모두가 동시에 실행되는 것처럼 보인다.

이처럼, 시간(clk)에 구애받지 않은 회로를 조합회로라고 하며, initial, wait, $time 등의 구문과 실행구문 등을 절대로 사용할 수 없는 특징을 가지고 있다.

조합회로의 구분

  • 논리게이트, MUX, encoder, decoder
  • 가감산기, 비교기, ALU 등

모두 시간의 흐름과 무관한 연산을 진행하는 회로들이다.

순차회로

순차회로의 특징

현재의 입력, 회로에 저장된 과거의 상태값에 의거하여 출력을 결정하는 회로이다. 상태 값을 저장하는 대표적인 소자인 플립플롭과 latch, 조합논리회로가 포함되어 있다. 이전 값에 의거하여 다음 값이 정해지기 때문에, clk 신호를 줌으로써 하강/상승 시점에서 작동하도록 할 수 있다.

가장 단순한 latch의 코드를 살펴보자.

module latch (d, clk, q);
	input	d;
    input 	clk;
    output	q;
    
    initial begin
    	d = 1'd0; clk = 1'd0;
    end
    
    always #5 clk = ~clk;
    
    if(clk == 1) d = q;
endmodule

이 경우, 단순하게 clk이 1이 인가되었을 경우, d의 값을 q가 추종하게 된다. 이것을 우리는 latch라고 부르는데, 대부분의 경우, 이런 latch는 오류거나 사용자가 의도하지 않은 경우 생성되는 형태로 나오지만, 실제로 latch를 유발하는 부품도 있기 때문에 사용자가 필요한 경우 구현이 가능하다.

순차회로의 종류

플립플롭은 어떤 정보를 저장하며, clk에 의거하여 이전 정보에 기반하여 다음 정보를 출력하는 회로이다. 따라서, 시간 차원인 이전 정보를 구별할 수 있어야 하기에 순차 회로에 필수적이다. 이런 플립플롭은 직렬-직렬, 병렬-직렬,직렬-병렬, 병렬-병렬 등의 시리얼 통신에 유효하게 쓰이는데, q[n]의 출력이 시간에 따라서(clk이 인가)변화하므로 직렬, 또는 상대적으로 적은 입력수를 가진 병렬입력을 많은 출력수를 가진 병렬출력으로 바꾸거나 반대로 MUX를 추가하여 많은 병렬입력은 적은 병렬출력 또는 직렬출력으로 바꿀 수 있는 정보의 주파수를 변경하여 비교적 낮은 사양을 가진 컴퓨터로 시리얼 통신을 가능케 하할 수 있다.

이러한 특성에 의거하여, D, JK 플립플롭을 이용하여 대표적으로 횟수를 세거나 시간을 측정하는 카운터 및 정보를 저장하는 레지스터를 만들 수 있다.

profile
유사 인간에 주의하세요.

0개의 댓글