본문 바로가기
Digital Logic/Verilog

Verilog 설계에서 중요한 존재들 - 순차 논리 회로(Sequential logic circuits)_#Flip-Flop

by 고뭉나무 2021. 5. 9.

순차 논리 회로(Sequential logic circuits)

 

현재의 입력과 기억 소자에 기록된 과거 출력들과의 조합에 의해 현재의 출력 값이 결정된다.

 

 

이 논리 회로에는 조합 논리 회로와 달리 '시간 개념'이 도입 된다.

조합 논리 회로에 대해 잘 모른다면 아래 글을 참고하면 좋다.

2021.05.08 - [Digital Logic/Verilog] - Verilog 설계에서 중요한 존재들 - 조합 논리 회로(Combinational logic circuits)

 

 

순차 논리 회로는 역할은 동일하되 특징에 따라 종류가 나눠진다. 그러므로 먼저 역할에 대해 알아보고 특징에 따른 종류를 구분해보도록 하겠다.

 

1. 역할

   정보를 저장하는 기억 소자이며 때로는 데이터 정보를 전송하는 회로에도 사용된다.

 

 

2. 동작에 따른 종류

   - 신호의 Level에서 동작하는 것을 비동기식이라 하며 이를 'Latch'라고 한다.

      얘는 Verilog 설계에서 사용하지 않는다.

   - 신호의 Edge에서 동작하는 것을 동기식이라 하며 이를 'Flip-Flop'이라고 한다.

     Clock 신호와 동기가 되어 Verilog 설계에게 주로 사용한다.

 

*Flip-Flop과 Latch의 차이점

Latch에서는 동작을 가능하게 하는 신호 'EN=1'이 먼저 선정된 후에 입력 R과 S 값에 의해 출력이 결정된다.

그러나 Flip-Flop에서는 신호 R과 S 값이 먼저 선정된 후에 신호 Clock Pulse에 의해 출력이 결정된다.

 

Flip-Flop과 Latch 에 대한 내용은 아래 글에서도 간단히 다루니 한 번 살펴보아도 좋다.

2021.04.12 - [Digital Logic/Verilog] - [기초 개념] Verilog 문법 한눈에 보기

 

Verilog 설계에서는 Flip-flop을 사용하기 때문에 아래 종류는 Flip-flop(이하 F/F) 기준으로만 설명할 예정이다.

 

 

3. 회로 구성에 따른 종류

S-R, J-K, T, D 이렇게 총 4가지가 있다.  그럼 하나씩 살펴보자.

 

S-R 플리플롭

- 특징: 결과가 4가지로 출력된다. No change, Set(1), Reset(0), Undetermine

- 논리 회로 (ex. NAND S-R F/F)

S-R Flip-Flop 논리 회로

- 진리표 

 S   R Q(t+1) Description
0   0 -- undetermine
0   1 1 Set
1   0 0 Reset
1   1 Q(t) No Change 

 

 

J-K 플리플롭

 

- 특징: S-R F/F에서의 금지 조건(undetermine)을 해결한 F/F이다. 한마디로 S-R F/F의 진화 버전이다.

- 회로도를 보면 S-R F/F 에서 과거의 값을 현재의 값 연산에 영향을 주는 부분을 추가했다.(아래 그림의 빨간 글씨)

- 결과가 4가지로 출력된다. No change, Set, Reset, Toggle

- 'Clock'이 추가 되어 edge 신호에서 반응한다.

- 현재 값이 과거의 값의 반대로 적용되는 Q'(t), 즉 toggle 값도 추가되었다.

- 논리 회로

J-K 플립플롭 심볼 및 회로도

출처: www.electronics-tutorials.ws/sequential/seq_2.html

 

- 진리표

CLK J   K Q(t+1) Description
Pos. edge 0   0 Q(t) No change
Pos. edge 0   1 0 Reset
Pos. edge 1   0 1 Set
Pos. edge 1   1 Q'(t) Toggle

 

 

 

T 플리플롭

- 특징: J-K 입력을 묶어 하나의 입력 신호 T를 만든다. 나머지 특징은 J-K 플립플롭과 동일하다.

- 심볼

T 플립플롭 심볼

 

 

*D 플리플롭

Verilog 설계에서 가장 많이 쓰이는 Flip-Flop 이다.

- 특징: D 라는 1개의 데이터 입력을 가지며 D 입력에 가해진 데이터를 Clock 신호에 의해서 출력으로 그대로 전달된다. D는 현재 상태를 지연시키는 역할이며 Data 전달Delay라는 의미를 담고 있다.

- 사용처: 데이터를 잠깐 간직하는 Register와 빠른 속도의 용량이 적은 Memory에 쓰인다.

- 심볼 

D 플립플롭 심볼

- 진리표

CLK D Q(t+1) Description
Pos. edge L L Reset
Pos. edge H H Set

- 타이밍 다이어그램

D 플립플롭 타이밍 다이어그램

D에 들어간 데이터가 Delay 되어 출력 Q로 나오는 것을 알 수 있다.

 

 

[번외] D Flip-flop의 비동기 Reset 구조

가장 많이 쓰이는 만큼 D 플립플롭에서도 종류가 여러 가지 있다. 그 중에서도 많이 쓰이는 'D Flip-flop의 비동기 Reset 구조'가 있다.

 

원래 종류는 동기식과 비동기식이 있는데 동기식은 CLK 신호의 edge에서 Reset이 동작한다고 보면 된다.

 

D Flip-flop의 비동기 Reset 회로는 F/F에 가해지는 CLK 신호와 관계없이 Reset 신호가 가해지는 시점에서 Reset이 동작하는 회로이다. Reset 같은 경우 회로의 초기화, 아주 심각한 상황 발생 등에 의해 강제적으로 이루어지는 부분이 많으므로 비동기식을 사용하는 것이 회로상 이점이 많다. 따라서 Reset 은 비동기식으로 사용하는 경우가 많다.

 

- 심볼

- 타이밍 다이어그램

Reset이 '1'이 되면 CLK edge와 상관없이 Q가 0으로 Reset 된다.

 

- 소스 코드

module async_reset_d_ff(d, clk, reset, q);
       input d, clk, reset;
       output q;
       
       reg q;
       
       always @(posedge reset or posedge clk)   //동기식은 posedge reset이 없음
       begin 
             if (reset)
                 q <= 0;
             else
                 q <= d;
       end

endmodule

 

 

 

Register 만드는 법

 

디지털 회로를 구성하면서 정보를 저장해주는 Register 사용은 빠질 수 없다. 그럼 이 Register는 어떻게 만드는 지 한번 알아보자.

 

D Flip-Flop은 1 bit 정보를 기억하는 소자이다.

그리고 Register는 2 bits 이상의 정보를 제어 신호에 의해 기억하는 소자이다.

 

그래서 D Flip-Flop을 여러 개 이어붙이면 Register를 만들 수 있다.

 

 

이번 포스팅에서는 순차 논리 회로인 '플리플롭'에 대해 자세히 알아보았다. Verilog 설계에서 플리플롭이 가장 중요한 요소로 꼽히는 데 이 이유는 또 가장 중요한 모듈인 Register의 기본 요소이기 때문이다. 그 뿐만 아니라 Counter, Shift register등 다른 중요한 모듈의 요소이기도 하다. 다음 포스팅에서는 이들에 대해 더 알아보도록 하겠다:)

 

반응형

댓글