안녕하세요. Verilog 입니다.
오늘은 Clock Divider Module을 설계해보려고 합니다.
Nexys4 DDR은 100MHz의 기본 클락을 가지고 있습니다.
하지만, 통신을 사용하거나, 다른 모듈을 사용할 때, 100MHz가 아닌 더 낮은 주파수의 클락을 사용해야 하는 경우가 있습니다.
이런 경우에, 100MHz 클락을 나누어서 사용해야 합니다.
코드를 먼저 보겠습니다.

위의 코드를 보시면 100MHz의 Rising Edge마다 q 값을 하나씩 counting 합니다.
q 값이 저희가 지정한 param 값과 같은 값이 되면, clk_out 값을 토글 하는 코드입니다.
여기서 param 값은 아래 수식을 통해서 계산 할 수 있습니다.
---------------------------------------------------------------

---------------------------------------------------------------
예를 들어, clk_in = 100MHz 이고, 25MHz의 clk_out을 만들어야 한다면,
param 값은 1이 됩니다.
위의 모듈을 Instantiate 하는 방법은 아래와 같습니다.
ex) Clock_Divider m1 #(4)(clk_in, clk_out);
이와 같이 선언하시면, praram 값으로 4가 들어가게 되고, 이는 clk_in이 100MHz 의 경우, 10MHz 의 클락이 생성됩니다.
코드는 아래에 첨부하였습니다.
질문이 있으시면 댓글로 남겨주세요.
'[Nexys4 DDR]' 카테고리의 다른 글
[Nexys4 DDR프로젝트] Frequency Counter of Periodic Signals (2) | 2019.05.12 |
---|---|
[Nexys4 DDR프로젝트] Function Generator (18) | 2019.04.15 |
[Nexys4 DDR 프로젝트] Flip Flop 만들기 (0) | 2019.03.16 |
[Nexys4 DDR 프로젝트] Multi 7-Segment 구현 (2) | 2019.03.10 |
[Nexys4 DDR 프로젝트] Behavioral Modeling (4) | 2019.02.21 |