天天看點

Veriog_Notes_Chapter 3

第三章

1.子產品結構:子產品端口定義,IO說明,内部信号說明,功能定義。

過程塊都是并行執行(initial always)、連續指派語句(assign)、執行個體引用語句。無關順序

2.資料類型:(wire、reg、integer、parameter)最常用。Large medium scalered …16共16種

3.常量:數字,進制有關:注意負數寫法:-30’d10、8’h4x(低四位不定)、8’b1100_0011(可讀性)“AB”=16’B01000001_01000010 (字元串AB,值為16’h4142),長度預設是32位或64。

4.參數型:parameter average_delay=(r+f)/2 參數型在調用時具有很高的靈活性。定義延遲時間和位寬。

5.變量:網絡類型的變量隻能被驅動(門,連續指派語句,assign)等,若無則為高組态。

6.Wire 常為單門驅動,而tri則是多驅動器是的網絡資料。Wire或tri在邏輯強度不同時會産生不定值。

Wire [N-1:0] a,b;

7.reg 常代表觸發器,預設初始值為不定。Always中的每一個信号都必須為reg型。Reg[ N-1:0] a,b;可以正負值。當為操作數時其為無符号值,即當一個4為的寄存器值倍指派為-1時,運算時将會被當作+15。

memory型即通過reg型建立數組模組化,描述ram型存儲器、rom儲存器、reg檔案。Reg[7:0] mema[255:0]; 256個八位儲存器,尋址範圍0到255。對mema操作 必須指定位置。如mema[3]=0;

8.算術運算符(+,-, x,/,%)指派運算(=,<=)關系運算符(<,>,<=,>=)邏輯運算符(&&,||,!)條件運算符(?:)位運算符(~,|,^,&,^~)移位運算符(<<,>>)拼接運算符({})%運算符最後去被除數符号:例如-10%3= -1;

Parameter在執行個體中的應用優勢

module decode(a,f)
  Parameter width=;polarity=; 
   ...
endmodule
module top;
wire [:] a4;wire [:] a5;
wire[:] f16;wire[:] f32;
decode #(4,0) d1(a4,f16);
decode #(5) d1(a5,f32);
endmodule
           

d1得到了來自參數傳遞過來的值其此時的width和polarity分别為4,0而d2的為5和0。

不可綜合條件:字元串$display,網絡類型wire初始化,defparam,deassign,延時(#5),mos開關,雙向傳輸開關,cmos門和電源上下拉,循環語句(forever,while)specify語句和自定義udp元件

一個子產品中改變另一個子產品中的參數值則需使用defparam指令。(不可綜合)

‘include “top.v” ‘include “block.v”
‘include “annotate.v”
module test 
Wire w; top t();
endmodule
module top;
wire w;block b1();block b2();
endmodule 
module block;
  Parameter p=;
endmodule
module annotate;
  defparam
  test.t.b1.p=; test.t.b2.p=;
endmodule
           

繼續閱讀