[Nexys4DDR 프로젝트] Clock Divider Module 설계
안녕하세요. 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 의 클락이 생성됩니다.
코드는 아래에 첨부하였습니다.
질문이 있으시면 댓글로 남겨주세요.