`timescale命令用來(lái)說(shuō)明跟在該命令后的模塊的時(shí)間單位和時(shí)間精度。使用`timescale命令可以在同一個(gè)設(shè)計(jì)里包含采用了不同的時(shí)間單位的模塊。例如,一個(gè)設(shè)計(jì)中包含了兩個(gè)模塊,其中一個(gè)模塊的時(shí)間延遲單位為ns,另一個(gè)模塊的時(shí)間延遲單位為ps。EDA工具仍然可以對(duì)這個(gè)設(shè)計(jì)進(jìn)行仿真測(cè)試。
`timescale 命令的格式如下:
`timescale《時(shí)間單位》/《時(shí)間精度》
在這條命令中,時(shí)間單位參量是用來(lái)定義模塊中仿真時(shí)間和延遲時(shí)間的基準(zhǔn)單位的。時(shí)間精度參量是用來(lái)聲明該模塊的仿真時(shí)間的精確程度的,該參量被用來(lái)對(duì)延遲時(shí)間值進(jìn)行取整操作(仿真前),因此該參量又可以被稱為取整精度。如果在同一個(gè)程序設(shè)計(jì)里,存在多個(gè)`timescale命令,則用最小的時(shí)間精度值來(lái)決定仿真的時(shí)間單位。另外時(shí)間精度至少要和時(shí)間單位一樣精確,時(shí)間精度值不能大于時(shí)間單位值。
在`timescale命令中,用于說(shuō)明時(shí)間單位和時(shí)間精度參量值的數(shù)字必須是整數(shù),其有效數(shù)字為1、10、100,單位為秒(s)、毫秒(ms)、微秒(us)、納秒(ns)、皮秒(ps)、毫皮秒(fs)。這幾種單位的意義說(shuō)明見(jiàn)下表。
時(shí)間單位 定義
s 秒(1S)
千分之一秒(10-3S) ms
百萬(wàn)分之一秒(10-6S) us
十億分之一秒(10-9S) ns
萬(wàn)億分之一秒(10-12S) ps
千萬(wàn)億分之一秒(10-15S) fs
下面舉例說(shuō)明`timescale命令的用法。
[例1]:`timescale 1ns/1ps
在這個(gè)命令之后,模塊中所有的時(shí)間值都表示是1ns的整數(shù)倍。這是因?yàn)樵赻timescale命令中,定義了時(shí)間單位是1ns。模塊中的延遲時(shí)間可表達(dá)為帶三位小數(shù)的實(shí)型數(shù),因?yàn)?`timescale命令定義時(shí)間精度為1ps.
[例2]:`timescale 10us/100ns
在這個(gè)例子中,`timescale命令定義后,模塊中時(shí)間值均為10us的整數(shù)倍。因?yàn)閌timesacle 命令定義的時(shí)間單位是10us。延遲時(shí)間的最小分辨度為十分之一微秒(100ns),即延遲時(shí)間可表達(dá)為帶一位小數(shù)的實(shí)型數(shù)。
例3:`timescale 10ns/1ns
module test;
reg set;
parameter d=1.55;
initial
begin
#d set=0;
#d set=1;
end
endmodule
在這個(gè)例子中,`timescale命令定義了模塊test的時(shí)間單位為10ns、時(shí)間精度為1ns。因此在模塊test中,所有的時(shí)間值應(yīng)為10ns的整數(shù)倍,且以1ns為時(shí)間精度。這樣經(jīng)過(guò)取整操作,存在參數(shù)d中的延遲時(shí)間實(shí)際是16ns(即
1.6×10ns),這意味著在仿真時(shí)刻為16ns時(shí)寄存器set被賦值0,在仿真時(shí)刻為32ns時(shí)寄存器set被賦值1。仿真時(shí)刻值是按照以下的步驟來(lái)計(jì)算的。
1) 根據(jù)時(shí)間精度,參數(shù)d值被從1.55取整為1.6。
2) 因?yàn)闀r(shí)間單位是10ns,時(shí)間精度是1ns,所以延遲時(shí)間#d作為時(shí)間單位的整數(shù)倍為16ns。
3) EDA工具預(yù)定在仿真時(shí)刻為16ns的時(shí)候給寄存器set賦值0 (即語(yǔ)句 #d set=0;執(zhí)行時(shí)刻),在仿真時(shí)刻為32ns的時(shí)候給寄存器set賦值1(即語(yǔ)句 #d set=1;執(zhí)行時(shí)刻),
注意:如果在同一個(gè)設(shè)計(jì)里,多個(gè)模塊中用到的時(shí)間單位不同,需要用到以下的時(shí)間結(jié)構(gòu)。
1) 用`timescale命令來(lái)聲明本模塊中所用到的時(shí)間單位和時(shí)間精度。
2) 用系統(tǒng)任務(wù)$printtimescale來(lái)輸出顯示一個(gè)模塊的時(shí)間單位和時(shí)間精度。
3) 用系統(tǒng)函數(shù)$time和$realtime及%t格式聲明來(lái)輸出顯示EDA工具記錄的時(shí)間信息。
編輯:jq
-
寄存器
+關(guān)注
關(guān)注
31文章
5608瀏覽量
129968 -
eda
+關(guān)注
關(guān)注
72文章
3113瀏覽量
182886 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67501
原文標(biāo)題:Verilog HDL 的時(shí)間尺度 `timescale
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Verilog HDL語(yǔ)法學(xué)習(xí)筆記
使用Vivado ILA進(jìn)行復(fù)雜時(shí)序分析的完整流程
FPGA 入門必看:Verilog 與 VHDL 編程基礎(chǔ)解析!
中國(guó)研究發(fā)布新型混合微電網(wǎng)系統(tǒng)
【產(chǎn)品介紹】Modelsim:HDL語(yǔ)言仿真軟件
如何利用Verilog HDL在FPGA上實(shí)現(xiàn)SRAM的讀寫測(cè)試
使用Simulink自動(dòng)生成浮點(diǎn)運(yùn)算HDL代碼(Part 1)
多時(shí)間尺度耦合建模:多電航空發(fā)動(dòng)機(jī)實(shí)時(shí)仿真中的微秒-毫秒級(jí)動(dòng)態(tài)整合技術(shù)研究
暫態(tài)過(guò)電壓和瞬態(tài)過(guò)電壓的區(qū)別是什么?
??FourCastNet 3實(shí)現(xiàn)快速精準(zhǔn)的大型集合天氣預(yù)報(bào)
無(wú)刷直流電機(jī)電流測(cè)量的探究
CET中電技術(shù):儲(chǔ)能EMS智能控制系統(tǒng)解決方案
FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理
一文詳解Verilog HDL
探究愛(ài)Verilog HDL的時(shí)間尺度`timescale
評(píng)論