[Nexys4 DDR]

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

choice1219 2019. 4. 2. 20:25
반응형

안녕하세요. 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

반응형