본문 바로가기
[Nexys4 DDR]

[Nexys4DDR 프로젝트] Clock Divider Module 설계

by choice1219 2019. 4. 2.

안녕하세요. Verilog 입니다. 

 

오늘은 Clock Divider Module을 설계해보려고 합니다. 

 

Nexys4 DDR은 100MHz의 기본 클락을 가지고 있습니다. 

 

하지만, 통신을 사용하거나, 다른 모듈을 사용할 때, 100MHz가 아닌 더 낮은 주파수의 클락을 사용해야 하는 경우가 있습니다.

 

이런 경우에, 100MHz 클락을 나누어서 사용해야 합니다. 

 

코드를 먼저 보겠습니다. 

 

Clock_Divider Module

 

위의 코드를 보시면 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 의 클락이 생성됩니다. 

 

코드는 아래에 첨부하였습니다. 

 

질문이 있으시면 댓글로 남겨주세요.

 

Clock_Divider.v
0.00MB