티스토리 뷰

Language/Verilog HDL

Verilog HDL - Clock Generator

ShinyOcean 2021. 1. 29. 11:49

Verilog HDL를 주제로 한 네번째 포스팅에서 다룰내용은 일정한 주기의 진동신호를 만들어주는 클럭 제너레이터 입니다. 

 

 

원리는 DE2보드내에 있는 50MHz 오실레이터를 이용합니다

DE2보드 내의 해당소자 이름은 CLOCK_50이며 핀넘버는 PIN_N2입니다.

 

 

50MHz 오실레이터는 50MHz의 진동수를 발생시키고

이 신호를 프로그래밍을 통해 다른 신호로 이용할수 있습니다.

 

이번 포스팅은 이 50MHz의 진동수를 쪼개어 1헐쯔 짜리 듀티 사이클 신호로 만드는

Clock Generator를 설계 해보도록 하겠습니다.

 

모듈의 인풋과 아웃풋은 다음과 같습니다.

 

리셋 : RST

오실레이터에서 가져올 50헐쯔의 인풋 : CLK_50MHz 

마지막에 배출될 아웃풋 1헐쯔 : CLK_1Hz

 

설계 과정도은 50MHz의 신호를 반으로 나눌 25000000를 MOD로 잠고 카운터를 한번 돌립니다.

그럼 2헐쯔의 신호가 나오게 되는데 이 신호를 MOD-2 카운터를 이용해 듀티 사이클로 만들어 줍니다.

결론적으로 카운터 모듈을 2번 불러와서 와이어를 통해 인풋,아웃풋을 잘엮어주면 됩니다.

 

코드를 통해 알아보겠습니다.

 

Verilog HDL code)

 

module clock_gen (RST , CLK_50MHz , CLK_1Hz);
parameter MOD = 25000000;
parameter BITS = $clog2(MOD);

input CLK_50MHz;
input RST;
output CLK_1Hz;

  wire CLK_2Hz;

counter #(MOD , BITS) U1(.clk(CLK_50MHz) ,.rst(RST), .carry_out(CLK_2Hz)) ;
counter #(2,1) U2 (.clk(CLK_2Hz),.rst(RST), .carry_out(CLK_1Hz));
endmodule

 

 

잘 만들어진 1Hz의 신호를 클럭으로하여 60초를 카운팅하는 Sec Counter를 다음포스팅에 설계해 보도록 하겠습니다

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

Verilog HDL - Digital_clock(basic)  (0) 2021.02.01
Verilog HDL - Sec counter  (1) 2021.01.29
Verilog HDL - Counter  (0) 2021.01.29
Verilog HDL - BCD to SevenSegment  (1) 2021.01.29
Verilog HDL - Binary to BCD  (1) 2021.01.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
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 31
글 보관함