티스토리 뷰
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 |