`timescale命令用來說明跟在該命令后的模塊的時(shí)間單位和時(shí)間精度。使用`timescale命令可以在同一個(gè)設(shè)計(jì)里包含采用了不同的時(shí)間單位的模塊。例如,一個(gè)設(shè)計(jì)中包含了兩個(gè)模塊,其中一個(gè)模塊的時(shí)間延遲單位為ns,另一個(gè)模塊的時(shí)間延遲單位為ps。EDA工具仍然可以對這個(gè)設(shè)計(jì)進(jìn)行仿真測試。
`timescale 命令的格式如下:
`timescale《時(shí)間單位》/《時(shí)間精度》
在這條命令中,時(shí)間單位參量是用來定義模塊中仿真時(shí)間和延遲時(shí)間的基準(zhǔn)單位的。時(shí)間精度參量是用來聲明該模塊的仿真時(shí)間的精確程度的,該參量被用來對延遲時(shí)間值進(jìn)行取整操作(仿真前),因此該參量又可以被稱為取整精度。如果在同一個(gè)程序設(shè)計(jì)里,存在多個(gè)`timescale命令,則用最小的時(shí)間精度值來決定仿真的時(shí)間單位。另外時(shí)間精度至少要和時(shí)間單位一樣精確,時(shí)間精度值不能大于時(shí)間單位值。
在`timescale命令中,用于說明時(shí)間單位和時(shí)間精度參量值的數(shù)字必須是整數(shù),其有效數(shù)字為1、10、100,單位為秒(s)、毫秒(ms)、微秒(us)、納秒(ns)、皮秒(ps)、毫皮秒(fs)。這幾種單位的意義說明見下表。
時(shí)間單位 定義
s 秒(1S)
千分之一秒(10-3S) ms
百萬分之一秒(10-6S) us
十億分之一秒(10-9S) ns
萬億分之一秒(10-12S) ps
千萬億分之一秒(10-15S) fs
下面舉例說明`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)過取整操作,存在參數(shù)d中的延遲時(shí)間實(shí)際是16ns(即
1.6×10ns),這意味著在仿真時(shí)刻為16ns時(shí)寄存器set被賦值0,在仿真時(shí)刻為32ns時(shí)寄存器set被賦值1。仿真時(shí)刻值是按照以下的步驟來計(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 (即語句 #d set=0;執(zhí)行時(shí)刻),在仿真時(shí)刻為32ns的時(shí)候給寄存器set賦值1(即語句 #d set=1;執(zhí)行時(shí)刻),
注意:如果在同一個(gè)設(shè)計(jì)里,多個(gè)模塊中用到的時(shí)間單位不同,需要用到以下的時(shí)間結(jié)構(gòu)。
1) 用`timescale命令來聲明本模塊中所用到的時(shí)間單位和時(shí)間精度。
2) 用系統(tǒng)任務(wù)$printtimescale來輸出顯示一個(gè)模塊的時(shí)間單位和時(shí)間精度。
3) 用系統(tǒng)函數(shù)$time和$realtime及%t格式聲明來輸出顯示EDA工具記錄的時(shí)間信息。
編輯:jq
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121178 -
eda
+關(guān)注
關(guān)注
71文章
2788瀏覽量
173875 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62977
原文標(biāo)題:Verilog HDL 的時(shí)間尺度 `timescale
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論