Counter (카운터)
Counter는 아래 2가지 기능을 갖추고 있다.
1. 과거의 값을 저장하는 Register
2. 과거의 값을 변화시키는 증가/감소 값
Register를 구성하는 개념은 순차 논리 회로인 Flip-Flop에서 시작되며 아래 포스팅을 참고하면 더 이해하기 쉽다.
지난 시간 동안 익혀왔던 개념들이 소자라면 이젠 그 소자들을 이용하여 카운터라는 모듈을 만드는 것이라 생각하면 좋다.
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가 이루어진다.
- 소스 코드
//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
'Digital Logic > Verilog' 카테고리의 다른 글
[Verilog] Fixed point Scaler 연산 (Quantization - sign 곱셈/덧셈 연산) (0) | 2023.09.06 |
---|---|
[Verilog] Fixed point Scaler 연산 (Quantization - binary 연산) (0) | 2023.09.05 |
Verilog 설계에서 중요한 존재들 - 순차 논리 회로(Sequential logic circuits)_#Flip-Flop (0) | 2021.05.09 |
Verilog 설계에서 중요한 존재들 - 조합 논리 회로(Combinational logic circuits) (0) | 2021.05.08 |
[기초 개념] Verilog 문법 한눈에 보기 (1) | 2021.04.12 |
댓글