티스토리 뷰

Language/Verilog HDL

Verilog HDL - Counter

ShinyOcean 2021. 1. 29. 07:48

Verilog HDL를 주제로 한 세번째 포스팅에서 다룰내용은 진동수에 따라 카운팅을 시켜주는 Counter 입니다..!

 

mod-60 카운터를 만들 계획 입니다. 60으로 나눈 나머지값들의 모임인셈이죠

1,2,3,4,5,6 ... ... 58, 59 순서로 카운팅됩니다.

 

카운터의 원리는 무엇일까요 진법의 원리 와 같습니다 N진법에서 N으로 카운팅될때

carry를 하나 올려주고 해당 자리수를 0으로 초기화하여 다시 N까지 카운팅해주는 것이죠

이러한 카운터의 특성을 살려 모듈의 구성을 먼저 해보겠습니다.

 

카운팅의 기준이 될 CLK

카운팅되고 있는 숫자를 표현할 count_out

자리수가 올라가면 발생될 carry_out

리셋 rst, 신호가 들어오면 전부 0으로 초기화

 

이정도 구성으로 카운터를 꾸려 보겠습니다.

 

코드의 원리는 간단합니다. 리셋이 안들어올 경우, 클럭이 들어올때마다 

카운팅을 업시켜줍니다. 그리고 카운팅값이 MOD값과 동일하게 되었을때 carry를

발생시키고 카운팅 값을 0으로 초기화 시켜줍니다.

그리고 MOD에 상수로그2를 취한 값으로 BITS값을 만들어주고 이 비트수에서 1을빼주어 

count_out의 비트수를 결정해줍니다.

 

Verilog HDL code)

 

module counter (clk , rst , count_out , carry_out);
parameter MOD = 60;
parameter BITS = $clog2(MOD);

input clk , rst;
output reg [BITS -1:0] count_out;
output reg carry_out;

always @ ( posedge clk or negedge rst)
begin
if (!rst)
begin
count_out <= 0;
carry_out <= 0;
end
else if (count_out < MOD -1)
begin
count_out <= count_out + 1;
carry_out <= 0;
end
else
begin
count_out <= 0;
carry_out <= 1;
end
end
endmodule

 

'Language > Verilog HDL' 카테고리의 다른 글

Verilog HDL - Sec counter  (0) 2021.01.29
Verilog HDL - Clock Generator  (1) 2021.01.29
Verilog HDL - BCD to SevenSegment  (1) 2021.01.29
Verilog HDL - Binary to BCD  (0) 2021.01.29
Verilog HDL - Basic  (0) 2021.01.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함