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 |