1樓:80後的
verilog中允許使用者通過門延遲來說明邏輯電路中的延遲,此外使用者還可以指定端到端的延遲。
在verilog門級原語中,有三種從輸入到輸出的延遲。
1 上升延遲:在門的輸入發生變化的情況下,門的輸出從0,x,z變化到1所需的時間成為上升延遲。
2 下降延遲:下降延遲是指門的輸出從1,x,z變化到0所需的時間。
3 關斷延遲:門的輸出從0,1,x變化為高阻z所需的時間。
另外,如果值變化到不確定值x,則所需的時間可以看成是以上三種延遲值中最小的那個。
verilog中有三種不同的方法來說明門的延遲。如果使用者只確定了一個延遲值,那麼所有型別的延遲都是用這個延遲值,如果使用者指定了兩個延遲值,則他們分別代表上升延遲和下降延遲,兩者中小者為關斷延遲,如果使用者指定了三個延遲值,則他們分別代表上升延遲、下降延遲和關斷延遲。如果為制定延遲值,那麼預設延遲值為0.
延遲宣告的例子
and #(3,4,5) b1 (out,in,control); //上升延遲為3,下降延遲為4,關斷延遲為5
2樓:來自南泉寺舞盡霓裳的葡萄柚
表示給低層傳遞引數(parameter)
可以給予低層模組的parameter新的值,覆蓋掉定義模組的預設parameter
3樓:手機使用者
延遲有三種,最小延遲,典型延遲,最大延遲。一般形式為
#(3,4,5);//依次對應為最小延遲,典型延遲,最大延遲。
只寫兩個的寫法沒見過~~
4樓:
那是引數傳遞
被呼叫的函式裡面有parameter 定義的巨集定義
5樓:匿名使用者
應該是呼叫的這個模組在實現的時候是這麼寫的module modulename #(
parameter val = 某個數字
)(引數1,引數2...
);...
endmodule
這樣在呼叫的時候你就可以寫
modulename #(重新定義val的值) uut(引數1,引數2...)
在verilog語言中#是什麼意思?
6樓:
前**用的,無法綜合的。
例如:#5 data_in = data_tmp;
就是延遲5個時間單位後
,在進行復制。
具體延遲多少,得看你的 timescale`timescale n/n
根據這個來看你具體延遲的時間
7樓:愛露
verilog hdl是一種硬體描述語言(hdl:hardware description language),以文字形式來描述數字系統硬體的結構和行為的語言,用它可以表示邏輯電路圖、邏輯表示式,還可以表示數字邏輯系統所完成的邏輯功能。
#1 a=1;#表延遲,延遲一個時間單位後執行a=1;語句
#1 b=1; 延遲一個時間單位後執行b=1;語句
8樓:匿名使用者
這得分情況的,如果出現在賦值語句前面或者中間,表示延時,比如:
#5 variable1 = ***x;
varibale2 = #6 ***x;
如果出現在模組例項化的時候,既可以表示延時,又可以表示對模組內部parameter的重新賦值,比如:
對於閘電路,表示延時:nand #(3,4) nand1(a,b,c)->輸入a,b各延時3和4個單位
對於一般模組,表示對parameter的重新複製,如:
你定義了而一個子模組:
module sub_module(clk,rst,....);
parameter width=8;
parameter addr=5;
.....
...endmodule
然後在一個頂層模組中例項化sub_module,但是你要改變sub_module中定義的parameter值,可以這樣:
sub_module #(32,6) u1(clk,rst.....);
這樣的話,width和addr就分別為32和6了
9樓:邰懷蕾範掣
@英文為
at,就是表示條件,即當(
posedge
clock
)時候@一直翻譯為at的,其實和郵箱地址中的@一樣,不過就是郵箱中的@表示位置而已
10樓:匿名使用者
延遲#1 延遲1個定義的時間單位
#2 延遲2個定義的時間單位
。。。。
11樓:匿名使用者
前**用的,無法綜合的。
for(i=1;i++;)
5個時間單位後a去反就實現了a的資料的定義,就不用在**的時候手動設定波形了。
12樓:匿名使用者
表示時延的意思,例如 #3表示延遲3個單位時間,#0表示延遲0個時間單位
13樓:匿名使用者
延時符號,產生波形時用
verilog hdl 中 assign #(1:2:3,4:5:6) y = ~a;中的#()內是什麼意思?那個參考資料上有,能給個參考資料
14樓:匿名使用者
#(1:2:3) y = ~a;括號裡
du數是延時值,zhi1是延時的最小值,dao2是典型值,3是最大值專,就是經過延時值後將
屬~a付給y。
#(1:2:3,4:5:6) y = ~a;
這個1:2:3和4:5:6是分別是非門的上升沿和下降沿的時間(最小值:典型值:最大值)。
這方面的書很多啊,電子書也很多。跟你說個論壇,你可以去那搜下,夏宇聞編寫,eetop
15樓:崢崢好
#在verilog中用來延遲一段時間,硬體無法實現這樣的操作,一般都是**的時候使用這樣的語句,至於括號裡面的,貌似在matlab裡面是個陣列的表示方法,verilog裡面確實沒見過。
16樓:匿名使用者
#是一種運算方式,括號是提示內容
verilog中,#符號是什麼意思
17樓:
#5的概念是延遲的意思。但是是行為級描述 綜合時將被過濾。
一般#+數字的組合在**器中產生一定的延遲。延遲結構如下~~
首先`timescale 1ns/100ps 這個是整個延遲的定義。`timescale是關鍵字,然後後面的兩位時間 第一位是用來表示你的延遲因子的。第二位用來表示步進時間。
舉例:`timescale 1ns/100ps
......
always(這裡用forever亦可)
#10 clk=~clk;
那麼也就是說,10個延遲因子時clk取反。也就是說10納秒時clk取反。所以你就得到一個50mhz的時鐘。
後面的100ps代表的意思是機器**的步進時間,當你寫1ns/100ps時。在螢幕上顯示的1ns時間內。機器做10次的運算。
如果不能直觀理解。那麼就嘗試一下`timescale 1ns/1ps的區別。你就知道了。
千萬注意的是:這個只能在**工具中運用。綜合成電路時。你不要希望有這類延遲存在。
18樓:匿名使用者
表示延時5ns後執行語句
float a表示什麼意思,float a 3 4 表示什麼意思?
p 3 為指標 來陣列,其每一 源個元素 p i 都是一個指標,可以存放一個float型元素的地址,a 5 3 為二維陣列,c c 的陣列是構造性的,二維陣列被解釋為 元素為一維陣列 的一維陣列,因此,a 5 3 被視為具有5個元素 a 0 a 1 a 4 的一維陣列,每個元素都是一個一維陣列,a ...
verilog中wire一般什麼時候應用
有幾種情況變數需要定義成wire 第一 assign 語句 例如 reg a,b wire and result assign and result a b 你可以試試把wire定義成reg。綜合器會報錯。第二 元件例化時候的輸出必須用wire 例如 wire dout ram u ram out ...
37327378這個數中的3和7表示的意義一樣嗎?分別表示什麼
3732 7378這個數中的三個3和三個7表示的意義不一樣。從左邊起第一個3表示3個千萬,第二個 3表示3個十萬,第三個3拜師3個百 第一個7表示7個百萬,第二個7表示7個千,第三個7表示7個十。37327378中的三個3和三個7表示的意義一樣嗎 1 37327378中的三個3和三個7表示的意義不一...