embeded/FPGA - ALTERA2018. 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에서 돌리면 내가 의도한 것과 다르게 나오는 느낌..


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

'embeded > FPGA - ALTERA' 카테고리의 다른 글

dual purpose pins  (0) 2018.06.20
modelsim define clock  (0) 2018.06.19
modelsim nativelink  (0) 2018.06.18
modelsim 클럭연결하기  (0) 2018.06.15
intel FPGA를 이용한 Processor Logic 설계입문 관련 링크  (0) 2018.06.15
Posted by 구차니