embeded/FPGA - ALTERA

modelsim과 timescale 그리고 50Mhz

구차니 2018. 6. 18. 15:06

modelsim에서 시뮬레이션 할 때

timescale의 값에 설정된 단위대로 돌게 되는데 일반적으로 1ns/10ps를 자주 쓴다.

앞에는 # 뒤에 오는 숫자의 단위 시간이고 

만약 timescale 10ns로 한다면 #1은 1ns대신 10ns로 설정되게 된다.


`timescale 1ns/100ps


module Counter_tb;


reg        clk;

reg        rst_n;

wire [7:0] cnt;

// 20 ns 이다..

parameter PERIOD = 20; 


Counter counter (

  .CLK(clk),

  .RST_N(rst_n),

  .CNT(cnt)

);


initial begin

  #0  clk   = 1'b0;

      rst_n = 1'b0;

  #10 rst_n = 1'b1;

end


// 50MHz 코멘트를 잘달자

always #(PERIOD/2) clk = ~clk;


endmodule 

[링크 : https://blog.naver.com/bohkyou/100093456018]


50MHz는 20ns 주기이고 high / low duty를 고려하면 50% 일 경우

10ns 의 high, 10ns의 low를 유지하면 된다.

그렇기에 timescale 1ns/10ps의 경우

#10 clk = 1;

#10 clk = 0;

으로 반복해서 수행하면 충분해야 할텐데..

의미로 간격 바꾸고 modelsim에서 돌리면 내가 의도한 것과 다르게 나오는 느낌..


조금더 공부를 해봐야 알 듯 하다 ㅠㅠ