본문 바로가기
Digital Logic/Verilog

Verilog 설계에서 중요한 존재들 - Counter (카운터)

by 고뭉나무 2021. 5. 10.

Counter (카운터)

 

Counter는 아래 2가지 기능을 갖추고 있다.

1. 과거의 값을 저장하는 Register

2. 과거의 값을 변화시키는 증가/감소 값

 

Register를 구성하는 개념은 순차 논리 회로인 Flip-Flop에서 시작되며 아래 포스팅을 참고하면 더 이해하기 쉽다.

지난 시간 동안 익혀왔던 개념들이 소자라면 이젠 그 소자들을 이용하여 카운터라는 모듈을 만드는 것이라 생각하면 좋다.

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

 

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

순차 논리 회로(Sequential logic circuits) 현재의 입력과 기억 소자에 기록된 과거 출력들과의 조합에 의해 현재의 출력 값이 결정된다. 이 논리 회로에는 조합 논리 회로와 달리 '시간 개념'이 도

rubber-tree.tistory.com

 

Counter는 출력 값을 2진 데이터의 버스 형태로 묶어서 사용하면 되고,

출력의 2진 값을 갖는 비트들은 그 자체가 입력 clock pulse의 분주된 신호 형태를 갖는다.

그러므로 Counter의 입력 펄스와 출력 값을 적절히 이용하면 사용자가 원하는 주파수를 갖는 디지털 주파수 발생기를 설계할 수 있다.

 

이 주파수 발생기의 출력 신호는 시간의 기준으로 사용할 수 있으며, 이 신호를 시간 기준 신호(Time base signal)라 부른다.

위와 같은 동작을 하는 소자를 우리는 Timer라고 한다.

 

 

Counter 예시

비동기 8 bit Up-Down Counter

제어 신호에 의해서 Clock 입력에 맞추어 Counter가 증가하거나 또는 감소하는 카운터를 Up-Down Counter라고 한다. 

MUX에 의해 Reg8에서 출력되는 논리 값의 피드백 값이 1이 증가된 값과 1이 감소된 값 중에서 하나를 선택하도록 하는 제어 신호가 필요하며, 이 제어 신호(UP_DOWN_CONT)에 의해 선택된 MUX 출력이 Reg8의 입력 값으로 대기 상태가 된다. 대기된 값은 Clock 신호에 의해 Reg8의 출력 값으로 출력된다. 이 출력된 값은 다시 피드백이 되어 증가 또는 감소된 값이 MUX에 의해 선택되어 UP/DOWN Counter가 이루어진다.

Up/Down Counter 블록 다이어그램

 

- 소스 코드

//updn = 1: up counter, updn = 0: down counter
module counter_8bits_updn(CLK, updn, RST, Q);
       input CLK, updn, RST;
       output [7:0] Q;
       
       reg [7:0] Q;
       
       always @(negedge RST or posedge CLK)
              if (!RST)
                   Q <= 0;
              else
                   if (updn)
                       Q <= Q + 1;
                   else
                       Q <= Q - 1;
endmodule
반응형

댓글