verilog的數(shù)據(jù)類型及邏輯系統(tǒng)_第1頁
已閱讀1頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、第六章 Verilog的數(shù)據(jù)類型及邏輯系統(tǒng),,,,學習Verilog邏輯值系統(tǒng)學習Verilog中不同類的數(shù)據(jù)類型理解每種數(shù)據(jù)類型的用途及用法數(shù)據(jù)類型說明的語法,學習內(nèi)容:,Verilog采用的四值邏輯系統(tǒng),,,,’0’, Low, False, Logic Low, Ground,VSS, Negative Assertion‘1’, High, True, Logic High, Power,VDD, VCC, Pos

2、itive Assertion’X’ Unknown: Occurs at Logical Which Cannot be Resolved ConflictHiZ, High Impedance, Tri- Stated,Disabled Driver (Unknown),主要數(shù)據(jù)類型,,,Verilog主要有三類(class)數(shù)據(jù)類型:,,net (線網(wǎng)) : 表示器件之間的物理連接register (寄存器) :表示抽

3、象存儲元件parameters(參數(shù)) : 運行時的常數(shù)(run-time constants),net(線網(wǎng)),,,net需要被持續(xù)的驅(qū)動,驅(qū)動它的可以是門和模塊。 當net驅(qū)動器的值發(fā)生變化時, Verilog自動的將新值傳送到net上。在例子中,線網(wǎng)out由or門驅(qū)動。當or門的輸入信號置位時將傳輸?shù)骄€網(wǎng)net上。,,net類的類型(線網(wǎng)),,,有多種net類型用于設計(design-specific)建模和工藝

4、(technology-specific)建模沒有聲明的net的缺省類型為 1 位(標量)wire類型。但這個缺省類型可由下面的編譯指導改變: `default_nettype ,綜合編譯器不支持的net類型,,,,,,,,net類的類型(線網(wǎng)),,,,wire類型是最常用的類型,只有連接功能。wire和tri類型有相同的功能。用戶可根據(jù)需要將線網(wǎng)定義為wire或tri以提高可讀性。例如,可以用tri

5、類型表示一個net有多個驅(qū)動源?;蛘邔⒁粋€net聲明為tri以指示這個net可以是高阻態(tài)Z(hign-impedance)??赏茝V至wand和triand、wor和triorwand、wor有線邏輯功能;與wire的區(qū)別見下頁的表。trireg類型很象wire類型,但trireg類型在沒有驅(qū)動時保持以前的值。這個值的強度隨時間減弱。修改net缺省類型的編譯指導: `default_nettype

6、 nettype不能是supply1和supply0。,net類在發(fā)生邏輯沖突時的決斷,,,,Verilog有預定義的決斷函數(shù)支持與工藝無關(guān)的邏輯沖突決斷wire-and用于集電極開路電路wire-or用于射極耦合電路,寄存器類 (register),,,,寄存器類型在賦新值以前保持原值寄存器類型大量應用于行為模型描述及激勵描述。在下面的例子中,reg_a、reg_b、reg_sel用于施加激勵給2:1多路器。用行為描述結(jié)構(gòu)

7、給寄存器類型賦值。給reg類型賦值是在過程塊中。,寄存器類的類型,,,,寄存器類有四種數(shù)據(jù)類型,不要混淆寄存器數(shù)據(jù)類型與結(jié)構(gòu)級存儲元件,如udp_dff,Verilog中net和register聲明語法,,,,net聲明 [range] [delay] [, net_name];net_type: net類型range: 矢量范圍,以[MSB:LSB]格式delay: 定義與net相關(guān)的

8、延時net_name: net名稱,一次可定義多個net, 用逗號分開。寄存器聲明 [range] [, reg_name];reg_type:寄存器類型range: 矢量范圍,以[MSB:LSB]格式。只對reg類型有效reg_name :寄存器名稱,一次可定義多個寄存器,用逗號分開,Verilog中net和register聲明語法,,,,舉例:reg a; //一個標量寄存器

9、wand w; // 一個標量wand類型netreg [3: 0] v; // 從MSB到LSB的4位寄存器向量reg [7: 0] m, n; // 兩個8位寄存器tri [15: 0] busa; // 16位三態(tài)總線wire [0: 31] w1, w2; // 兩個32位wire,MSB為bit0,選擇正確的數(shù)據(jù)類型,,,module top;wire y; reg a, b;DUT u1 (y,

10、a, b) ;initial begina = 0; b = 0; #5 a = 1; endendmodule,module DUT (Y, A, B);output Y;input A, B;wire Y, A, B;and (Y, A, B) ;endmodule,輸入端口可以由net/register驅(qū)動,但輸入端口只能是net,輸出端口可以是net/register類型,輸出端

11、口只能驅(qū)動net,在過程塊中只能給register類型賦值,若Y,A,B說明為reg則會產(chǎn)生錯誤。,,,in1,,in2,O,,,A,B,Y,雙向端口輸入/輸出只能是net類型,選擇數(shù)據(jù)類型時常犯的錯誤,,,,用過程語句給一個net類型的或忘記聲明類型的信號賦值。 信息:illegal …… assignment.將實例的輸出連接到聲明為register類型的信號上。 信息: has il

12、legal output port specification.將模塊的輸入信號聲明為register類型。 信息:incompatible declaration, ……,下面所列是常出的錯誤及相應的錯誤信息(error message),信號可以分為端口信號和內(nèi)部信號。出現(xiàn)在端口列表中的信號是端口信號,其它的信號為內(nèi)部信號。對于端口信號,輸入端口只能是net類型。輸出端口可以是net類型,也可以是regi

13、ster類型。若輸出端口在過程塊中賦值則為register類型;若在過程塊外賦值(包括實例化語句),則為net類型。內(nèi)部信號類型與輸出端口相同,可以是net或register類型。判斷方法也與輸出端口相同。若在過程塊中賦值,則為register類型;若在過程塊外賦值,則為net類型。若信號既需要在過程塊中賦值,又需要在過程塊外賦值。這種情況是有可能出現(xiàn)的,如決斷信號。這時需要一個中間信號轉(zhuǎn)換。,信號類型確定方法總結(jié)如下:,選擇數(shù)據(jù)類

14、型時常犯的錯誤舉例,,,,修改前:module example(o1, o2, a, b, c, d); input a, b, c, d; output o1, o2; reg c, d; reg o2 and u1(o2, c, d); always @(a or b) if (a) o1 = b; else o1 = 0;endmodule,修改后

15、:module example(o1, o2, a, b, c, d); input a, b, c, d; output o1, o2;// reg c, d;// reg o2 reg o1; and u1(o2, c, d); always @(a or b) if (a) o1 = b; else o1 = 0;endmodule,ex

16、ample.v,選擇數(shù)據(jù)類型時常犯的錯誤舉例,,,,Compiling source file "example.v"Error! Illegal left-hand-side assignment [Verilog-ILHSA] "example.v", 11: o1 = b;Error! Illegal left-ha

17、nd-side assignment [Verilog-ILHSA] "example.v", 12: o1 = 0;2 errors,第一次編譯信息verilog –c example.v,第二次編譯信息,Compiling source file "example.v"Error! Incompatible declara

18、tion, (c) defined as input at line 2 [Verilog-IDDIL] "example.v", 5: Error! Incompatible declaration, (d) defined as in

19、put at line 2 [Verilog-IDDIL] "example.v", 5: Error! Gate (u1) has illegal output specification [Verilog-GHIOS]

20、 "example.v", 8: 3 errors,參數(shù)(parameters),,,,用參數(shù)聲明一個可變常量,常用于定義延時及寬度變量。參數(shù)定義的語法:parameter ;可一次定義多個參數(shù),用逗號隔開。在使用文字(literal)的地方都可以使用參數(shù)。參數(shù)的定義是局部的,只在當前模塊中有效。參數(shù)定義可使用以前定義的整數(shù)和實數(shù)參數(shù)。,module mod1( out, in

21、1, in2); . . .parameter cycle = 20, prop_ del = 3, setup = cycle/2 - prop_del, p1 = 8, x_ word = 16’bx, file = "/ usr1/ jdough/ design/

22、 mem_ file. dat"; . . . wire [p1: 0] w1; // A wire declaration using parameter . . .endmodule,注意:參數(shù)file不是string,而是一個整數(shù),其值是所有字母的擴展ASCII值。若file=“AB”,則file值為8‘h4142。用法:$fopen(file);$display(“%s”, file)

23、;,參數(shù)重載(overriding),,,,可用defparam語句在編譯時重載參數(shù)值。defparam語句引用參數(shù)的層次化名稱使用defparam語句可單獨重載任何參數(shù)值。,Defparam語句(現(xiàn)在綜合工具還不支持),module mod1( out, in1, in2); . . . parameter p1 = 8, real_constant = 2.039,

24、 x_word = 16’bx, file = "/usr1/jdough/design/mem_file.dat"; . . .endmodule,module test;. . . mod1 I1( out, in1, in2); defparam I1. p1 = 6, I1

25、. file = "../ my_mem.dat";. . .endmodule,參數(shù)重載(overriding),,,,module mod1( out, in1, in2); . . . parameter p1 = 8, real_constant = 2.039, x_word = 16’bx,

26、 file = "/usr1/jdough/design/mem_file.dat";. . .endmodulemodule top; . . . mod1 #( 5, 3.0, 16’bx, "../ my_mem. dat") I1( out, in1, in2); . . .endmodule,模塊實例化時參數(shù)重載,使用#,次序與原說

27、明相同,不需要給所有參數(shù)賦新值,但不能跳躍賦值,假設模塊MOD順序定義三個參數(shù)a, b, c,則:MOD u1 #( a, b) (...); MOD u2 #(a) (...);MOD u3 #(a, ,c) (...); MOD u4 #(, b, c) (...);,為什么編譯器認為這是參數(shù)而不是延時呢?,因為#說明延時的時候只能用于gate或過程語句,不能用于模塊實例。gate(primitives)在實例化時只能

28、有延時,不能有模塊參數(shù)。,寄存器數(shù)組(Register Arrays),,,,在Verilog中可以說明一個寄存器數(shù)組。 integer NUMS [7: 0]; // 包含8個整數(shù)數(shù)組變量 time t_vals [3: 0]; // 4個時間數(shù)組變量reg類型的數(shù)組通常用于描述存儲器 其語法為: reg [MSB:LSB] [first_addr:last_addr];

29、 [MSB:LSB]定義存儲器字的位數(shù) [first_addr:last_addr]定義存儲器的深度 例如: reg [15: 0] MEM [0:1023]; // 1K x 16存儲器 reg [7: 0] PREP [‘hFFFE: ’hFFFF]; // 2 x 8存儲器描述存儲器時可以使用參數(shù)或任何合法表達式 p

30、arameter wordsize = 16; parameter memsize = 1024; reg [wordsize-1: 0] MEM3 [memsize-1: 0];,存儲器尋址(Memory addressing),,,,存儲器元素可以通過存儲器索引(index)尋址,也就是給出元素在存儲器的位置來尋址。 mem_name [addr_expr]Verilog不支

31、持多維數(shù)組。也就是說只能對存儲器字進行尋址,而不能對存儲器中一個字的位尋址。,module mems;reg [8: 1] mema [0: 255]; // declare memory called memareg [8: 1] mem_word; // temp register called mem_ word. . .initial begin $displayb( mema[5]);

32、 //顯示存儲器中第6個字的內(nèi)容 mem_word = mema[5]; $displayb( mem_word[8]); // //顯示第6個字的最高有效位 endendmodule,若要對存儲器字的某些位存取,只能通過暫存器傳遞,,,復習(review),,,,問題:在Verilog中,什么情況下輸出端會輸出X值?net和register類型的主要區(qū)別是什么?

33、在Verilog中如何定義一個常數(shù)?,解答:若輸出端輸出X值, 一種可能是輸出net上發(fā)生驅(qū)動沖突,二是由一個未知值傳遞到net上引起。register有存儲功能,而net必須持續(xù)驅(qū)動。在Verilog中使用parameter定義一個常數(shù)。文本宏也是常數(shù)的一種形式。,第7章 結(jié)構(gòu)描述(structural modeling),,,,如何使用Verilog的基本單元(primitives)如何構(gòu)造層次化設計了解Verilog的

34、邏輯強度系統(tǒng),學習內(nèi)容:,術(shù)語及定義 (terms and definations),,,,結(jié)構(gòu)描述 : 用門來描述器件的功能primitives(基本單元) : Verilog語言已定義的具有簡單邏輯功能的功能模型(models),結(jié)構(gòu)描述,,,,Verilog結(jié)構(gòu)描述表示一個邏輯圖結(jié)構(gòu)描述用已有的元件構(gòu)造。,module MUX4x1( Z, D0, D1, D2, D3, S0, S1); output Z;

35、input D0, D1, D2, D3, S0, S1; and (T0, D0, S0_, S1_), (T1, D1, S0_, S1), (T2, D2, S0, S1_), (T3, D3, S0, S1); not (S0_, S0), (S1_, S1); or (Z, T0, T

36、1, T2, T3);endmodulemodule rs_latch (y, yb, r, s); output y, yb; input r, s; nor n1( y, r, yb); nor n2( yb, s, y);endmodule,結(jié)構(gòu)描述等價于邏輯圖,都是連接簡單元件構(gòu)成更復雜元件,,,通過門的實例使用門,忽略了門的實例名。,同一種門可以通過一個語

37、句實例化,,,,Latch,結(jié)構(gòu)描述(續(xù)),,,,結(jié)構(gòu)描述等價于邏輯圖。它們都是連接簡單元件來構(gòu)成更為復雜的元件。Verilog使用其連接特性完成簡單元件的連接。在描述中使用元件時,通過建立這些元件的實例來完成。上面的例子中MUX是沒有反饋的組合電路,使用中間或內(nèi)部信號將門連接起來。描述中忽略了門的實例名,并且同一種門的所有實例可以在一個語句中實例化。上面的鎖存器(latch)是一個時序元件,其輸出反饋到輸入上。它沒有使用任何內(nèi)部

38、信號。它使用了實例名并且對兩個nor門使用了分開的實例化語句。,Verilog基本單元(primitives),,,,Verilog基本單元提供基本的邏輯功能,也就是說這些邏輯功能是預定義的,用戶不需要再定義這些基本功能。基本單元是Verilog開發(fā)庫的一部分。大多數(shù)ASIC和FPGA元件庫是用這些基本單元開發(fā)的。基本單元庫是自下而上的設計方法的一部分。,基本單元的引腳 (pin)的可擴展性,,,,基本單元引腳的數(shù)目由連接到門上的ne

39、t的數(shù)量決定。因此當基本單元輸入或輸出的數(shù)量變化時用戶不需要重定義一個新的邏輯功能。所有門(除了not和buf)可以有多個輸入,但只能有一個輸出。not和buf門可以有多個輸出,但只能有一個輸入。,帶條件的基本單元,,,,Verilog有四種不同類型的條件基本單元這四種基本單元只能有三個引腳:output, input, enable這些單元由enable引腳使能。當條件基本單元使能信號無效時,輸出高阻態(tài)。,帶條件的基本單元(

40、續(xù)),,,條件基本單元有三個端口:輸出、數(shù)據(jù)輸入、使能輸入,三種未知狀態(tài): 值 強度x 1, 0, z 未知L 0, z 未知H 1, z 未知,,,,基本單元實例化,,,在端口列表中,先說明輸出端口,然后是輸入端口實例化時實例的名字是可選項 and (out, in1, in2, in3,

41、 in4); // unnamed instance buf b1 (out1, out2, in); // named instance延時說明是可選項。所說明的延時是固有延時。輸出信號經(jīng)過所說明的延時才變化。沒有說明時延時為0。 notif0 #3.1 n1 (out, in, cntrl); // delay specified信號強度說明是可選項

42、 not (strong1, weak0) n1 (inv, bit); // strength specified,module intr_sample; reg A; wire Y; not #10 intrinsic (Y, A);initial begin A = 0; #15 A = 1; #15 A = 0; #8 A = 1; #8

43、 A = 0; #11 A = 1; #10 $finish;endendmodule,,仿真波形,固有延時,模塊實例化(module instantiation),,,,模塊實例化時實例必須有一個名字。使用位置映射時,端口次序與模塊的說明相同。使用名稱映射時,端口次序與位置無關(guān)沒有連接的輸入端口初始化值為x。,module comp (o1, o2, i1, i2); output o1,

44、 o2; input i1, i2; . . .endmodulemodule test; comp c1 (Q, R, J, K); // Positional mapping comp c2 (.i2(K), .o1(Q), .o2(R), .i1(J)); // Named mapping comp c3 (Q, , J, K); /

45、/ One port left unconnected comp c4 (.i1(J), .o1(Q)); // Named, two unconnected portsendmodule,名稱映射的語法:.內(nèi)部信號(外部信號),,沒有連接時通常會產(chǎn)生警告,,module driver (in, out, en); input [2: 0] in; output [2: 0] out;

46、 input en; bufif0 u[2:0] (out, in, en); // array of buffersendmodule,實例數(shù)組(Array of Instances),,,,實例名字后有范圍說明時會創(chuàng)建一個實例數(shù)組。在說明實例數(shù)組時,實例必須有一個名字 (包括基本單元實例)。其說明語法為: ();,兩個模塊功能完全等價,范圍說明語法:[MSB : LSB

47、],,module driver_equiv (in, out, en); input [2: 0] in; output [2: 0] out; input en; // Each primitive instantiation is done separately bufif0 u2 (out[2], in[2], en); bufif0 u1 (out[1], in[

48、1], en); bufif0 u0 (out[0], in[0], en);endmodule,,,實例數(shù)組(Array of Instances)(續(xù)),,,,如果范圍中MSB與LSB相同,則只產(chǎn)生一個實例。一個實例名字只能有一個范圍。下面以模塊comp為例說明這些情況,module oops; wire y1, a1, b1; wire [3: 0] a2, b2, y2, a3, b3,

49、 y3; comp u1 [5: 5] (y1, a1, b1); // 只產(chǎn)生一個comp實例 comp m1 [0: 3] (y2, a2, b2); comp m1 [4: 7] (y3, a3, b3); // 非法endmodule,ml作為實例陣列名字使用了兩次,,邏輯強度(strength)模型,,,Verilog提供多級邏輯強度。邏輯強度模型決定信號組合值是可知還是未知的,以

50、更精確的描述硬件的行為。下面這些情況是常見的需要信號強度才能精確建模的例子。開極輸出(Open collector output)(需要上拉)多個三態(tài)驅(qū)動器驅(qū)動一個信號MOS充電存儲ECL門(emitter dotting)邏輯強度是Verilog模型的一個重要部分。通常用于元件建模,如ASIC和FPGA庫開發(fā)工程師才使用這么詳細的強度級。但電路設計工程師使用這些精細的模型仿真也應該對此了解。,邏輯強度(strength)模

51、型(續(xù)),,,,用戶可以給基本單元實例或net定義強度?;締卧獜姸日f明語法: (); 例:nand (strong1, pull0) #( 2: 3: 4) n1 (o, a, b); // strength and delay or (supply0, highz1) (out, in1, in2, in3); // no instance name用戶可以用%v格式符顯

52、示net的強度值 $monitor ($ time,," output = %v", f);電容強度(large, medium, small)只能用于net類型trireg和基本單元tran 例如:trireg (small) tl;,信號強度值系統(tǒng),,,,Verilog多種強度決斷,,,,在Verilog中,級別高的強度覆蓋級別低的強度,復習,,,,問題:什么是Veri

53、log中的結(jié)構(gòu)化描述?連接模塊端口有哪兩種方法?哪一種更通用一些?什么是實例數(shù)組?什么時候?qū)嵗质强蛇x的?,解答:結(jié)構(gòu)化描述是使用Verilog基本單元或單元(cell)級元件對設計進行描述,與邏輯圖很相似??梢愿鶕?jù)次序(位置映射)或名字(名稱映射)來映射端口。雖然在這個教程中大多使用位置映射,這主要是為了節(jié)省空間。在實際設計中,名稱映射可能更通用一些。實例數(shù)組用一條語句創(chuàng)建模型(模塊或基本單元)的多個實例。基本單元實例

54、化時實例名是可選的,說明基本單元數(shù)組時除外。當實例化模塊時,實例名是必須的。,第8章 延時模型,,,,學習內(nèi)容:如何說明塊延時如何說明分布延時如何說明路徑延時怎樣在模塊中說明時序檢查標準延時格式SDF(Standard Delay Format),術(shù)語及定義,,,,模塊路徑(module path): 穿過模塊,連接模塊輸入(input端口或inout端口)到模塊輸出(output端口或inout端口)的路徑。路徑延時(p

55、ath delay):與特定路徑相關(guān)的延時PLI:編程語言接口,提供 Verilog數(shù)據(jù)結(jié)構(gòu)的過程訪問。時序檢查(timing check):監(jiān)視兩個輸入信號的關(guān)系并檢查的系統(tǒng)任務,以保證電路能正確工作。時序驅(qū)動設計(timing driven design):從前端到后端的完整設計流程中,用時序信息連接不同的設計階段,延時模型類型(Delay Modeling Types),,,延時有三種描述模型:,將全部延時集中到最后一個門,

56、延時分布在每一個門上,分布延時,塊延時,路徑延時,塊延時(Lumped Delay),,,,塊延時方法是將全部延時集中到最后一個門上。這種模型簡單但不夠精確,只適用于簡單電路。因為當?shù)捷敵龆擞卸鄠€路徑時不能描述不同路徑的不同延時??梢杂眠@種方法描述器件的傳輸延時,并且使用最壞情況下的延時(最大延時)。,`timescale 1ns/ 1nsmodule noror( Out, A, B, C); output Out;

57、 input A, B, C; nor n1 (net1, A, B); or #3 o1 (Out, C, net1);endmodule,用塊延時描述時,不同路徑的延時完全相同,左邊例中各路徑延時為: A -> Out is 3 ns B -> Out is 3 ns C -> Out is 3 ns,分布延時(Distributed D

58、elays),,,,分布延時方法是將延時分散到每一個門。在相同的輸出端上,不同的路徑有不同的延時。分布延時有兩個缺點:在結(jié)構(gòu)描述中隨規(guī)模的增大而變得異常復雜。仍然不能描述基本單元(primitive)中不同引腳上的不同延時。,`timescale 1ns/ 1nsmodule noror( Out, A, B, C); output Out; input A, B, C; nor #2 n1

59、 (net1, A, B); or #1 o1 (Out, C, net1);endmodule,這種描述方法描述的不同路徑的延時。例中各路徑延時為: A -> Out is 3 ns B -> Out is 3 ns C -> Out is 1 ns,模塊路徑延時(Module Path Delays),,,,module noror( O, A, B, C);

60、 output O; input A, B, C; nor n1 (net1, A, B); or o1 (O, C, net1); specify (A => O) = 2; (B => O) = 3; (C => O) = 1 endspecifyendmodule,例中各路

61、徑延時為: A -> Out is 2 ns B -> Out is 3 ns C -> Out is 1 ns,在專用的specify塊描述模塊從輸入端到輸出端的路徑延時。精確性:所有路徑延時都能精確說明。模塊性:時序與功能分開說明,路徑必須括在圓括號內(nèi),,結(jié)構(gòu)描述的零延時反饋(Loop),,,,當事件隊列中所有事件結(jié)束時仿真前進一個時片。在某種零延時反饋情況下,新事件在同一時片不斷的加入,致

62、使仿真停滯在那個時片。若在結(jié)構(gòu)描述中出現(xiàn)從輸出到輸入的零反饋情況,多數(shù)仿真器會檢測到這個反饋并產(chǎn)生錯誤信息。Verilog的lint checker對這種情況會提出警告。解決這個問題的方法是在電路中加入分布延時。路徑延時不能解決零延時振蕩問題,因為輸出信號在反饋前不會離開模塊。,精確延時控制,,,,在Verilog中,可以:說明門和模塊路徑的上升(rise)、下降(fall)和關(guān)斷(turn-off)延時 and #

63、(2,3) (out, in1, in2, in3); // rise, fall bufif0 #( 3,3,7) (out, in, ctrl); // rise, fall, turn- off (in => out) = (1, 2); // rise, fall (a => b) = (5, 4, 7); // rise, fall, turn- off在路徑延時中可以

64、說明六個延時值(0 ?1, 1 ?0, 0 ?Z, Z ?1, 1 ?Z, Z ?0) (C => Q) = (5, 12, 17, 10, 6, 22);在路徑延時中說明所有12個延時值(0 ?1, 1 ?0, 0 ?Z, Z ?1, 1 ?Z, Z ?0, 0 ?X, X ?1, 1 ?X, X ?0, X ?Z, Z ?X) (C => Q) = (5, 12, 17, 10, 6, 22

65、, 11, 8, 9, 17, 12, 16);上面所說明的每一個延時還可細分為最好、典型、最壞延時。 or #( 3.2:4.0:6.3) o1( out, in1, in2); // min: typ: max not #( 1:2:3, 2:3:5) (o, in); // min: typ: max for rise, fall user_module #(1:2:3

66、, 2:3:4) ( ……);在Cadence Verilog中還不支持 (b => y) = (2: 3: 4, 3: 4: 6, 4: 5: 8); // min: typ: max for rise, fall, and turnoff,精確延時控制(續(xù)),,,,上升延時是輸出轉(zhuǎn)換為1時的延時下降延時是輸出轉(zhuǎn)換為0時的延時關(guān)斷延時輸出轉(zhuǎn)換為三態(tài)時的延時到X的轉(zhuǎn)換延時是最小延時,而從X到其它值的轉(zhuǎn)換使用最

67、壞延時如果說明了上升、下降和關(guān)斷延時,則1->X的轉(zhuǎn)換延時使用上升和關(guān)斷延時的最小值。X->0的延時為下降延時;X->Z的轉(zhuǎn)換為關(guān)斷延時。如果只說明了上升和下降延時,則1->X和X->0使用下降延時,X->Z使用上升和下降延時的最小延時如果只說明了一個延時,則所有轉(zhuǎn)換使用這個延時。如果說明了六個延時,則1->X使用1->X和1->Z中最小延時;X->0使用1->0

68、和X->0的最大延時;X->Z使用1->Z和0->Z中的最大延時。,延時說明定義的是門或模塊的固有延時。輸入上的任何變化要經(jīng)過說明的延時才能在輸出端反映出來。如果沒有延時說明,則基本單元的延時為0。分布關(guān)斷延時只對三態(tài)基本單元有效。,Specify塊,,,,specify塊定義了模塊的時序部分時序信息和功能在不同的塊中描述,這樣功能驗證獨立于時序驗證。specify塊在不同的抽象級中保持不變。設計的功能描述中

69、的延時,如#delay在綜合時不起作用specify塊由specify開始, 到endspecify結(jié)束,并且在模塊內(nèi)部使用關(guān)鍵字specparam在specify中進行參數(shù)聲明。不要同模塊參數(shù)(由parameter說明)混淆。specparam只能在specify塊內(nèi)聲明參數(shù)并使用;而parameter也只能在specify外聲明參數(shù)并使用。specify塊可以:描述穿過模塊的路徑及其延時描述時序檢查以保證器件的時序約束能夠

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論