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에서 돌리면 내가 의도한 것과 다르게 나오는 느낌..
조금더 공부를 해봐야 알 듯 하다 ㅠㅠ