verilog基礎語法

2021-10-21 13:33:32 字數 2411 閱讀 9610

模組例項化(也稱模組呼叫)基本格式為:

《模組名》 《例化名》(《埠列表 >);

根據被呼叫的低層模組與上層模組的連線埠的描述方式不同,有兩種例項化方法 :

按埠順序連線: 低層模組定義時宣告的埠順序與上層模組相應的連線埠順序保持一致

格式:模組名 例化名 (port_1,…,port_n);

按埠名稱連線,被呼叫的低層模組和上層模組是通過埠名稱進行連線的。

格式:模組名 例化名 (.port_1(port_1),…,port_n(port_n));

建議使用第二種方法

第二種例化格式的優點:

(1)被呼叫模組有較多引腳時,根據埠名字進行訊號連線,可避免因記錯埠順序而出錯。

(2)在被呼叫模組的埠順序發生變化時,只要埠名字含義不變,模組呼叫就可以不更改調整。

支援從開關級,門級,rtl,行為級等不同抽象層次對電路進行描述。

行為級:case語句的4選1多路選擇器

暫存器傳輸級:assign語句的二選一多路選擇器

門級:使用邏輯門組合邏輯功能,and (sign, a, b)

開關級:fpga一般不採用

線網型別(net type):表示結構化元件間的物理連線。它的值由驅動元件的值決定。如果沒有驅動元件連線到線網,線網的預設值為高阻值z

暫存器型別(register type):表示乙個抽象的資料儲存單元,它只能在always語句和initial語句中被賦值。暫存器型別變數的預設值為不確定值x

reg型保持最後一次賦值,wire型需要持續的驅動。

reg可正可負,作為表示式的運算元時,被當做無符號值

reg [n-1] rega; 	//n位暫存器

reg memb [m-1:0]; //m個1位暫存器構成的儲存器組

rega = 0;

memb = 0; //錯誤寫法

memb[0] = 1;

reg [3:0] rom [4:1];

rom[1] = 4'h0;

用結構說明語句「task」和「function」進行行為級描述:

task  writeburst;//定義乙個任務writebrust

input [7:0] wdata;

…endtask

…writeburst(123);//呼叫任務

function max(a,b)//定義乙個函式max,求出a,b兩數的最大值

…endfunction

//函式的呼叫,將data_1,data_2的最大值賦給c

assign c = max(data_1,data_2);

單行注釋以「//」開始,只能寫在一行中。

多行注釋以「/」開始,以「/」結束,可以跨越多行。

例3-11:

16'b1001_1010_1010_1001=16'h9aa9	//下劃線分割二進位制數

8』b11001100 //位寬為8的二進位制數,』b表示二進位制

』hff23 //十六進製制數,採用機器的預設位寬

123 //十進位制數123,採用機器的預設位寬,一般是32'd123

2』b1101 //表示的是2』b01.當數值大於指定的大小時,截去高位

4』b110x //四位二進位制數,最低位為不定值x

6』o1x //位寬為6的八進位制數,其值的二進位制表示為:6』b001***

16』h1z0x /*位寬為16的十六進製制數,其值的二進位制表示為:

16』b0001zzzz0000***x */

字串是雙引號內的字串行。不能分成多行書寫。

例:$display (「the sum is %d,j= %d」,data_out,j);

分為電平敏感和邊沿敏感,兩者不可混用

assign sum1= (a+b)>>1;		//8位+8位,捨去溢位位後右移

assign sum2= (0+a+b)>>1; //兩個8位擴充套件為32位,右移後截斷,最高位為溢位位

//另一種實現方式

wire [8:0] sum_ext;

assign sum_ext = + ;

assign sum2 = sum_ext[8:1];

算數右移(>>>)時移動的是最高位,其它補0。

邏輯移位(<<, >>)左移時位寬增加,右移時位寬不變

左移時乘2n, 右移時除2n

乙個4位2進製變數,技術到15的時候,下乙個時鐘會自動歸零

verilog 基礎語法一

一 過程快包括 always 塊和 initial 塊 連續賦值語句 assign 連續賦值語句常用來描述組合邏輯 always 塊既可描述組合也可時序 內部順序執行,兩個塊並行執行 由多個電平觸發always塊時,只要其中乙個發生變化,都會執行一次程過程塊 所有塊和賦值連續賦值語句都是並行執行 二...

Verilog語法總結

1.阻塞賦值 與非阻塞賦值 的區別 一條非阻塞過程賦值語句對應的賦值操作執行完之前,下一語句也可以開始執行。各條阻塞型過程賦值語句將以他們在順序塊中的排列次序得到執行。2.關係運算子 關係運算子的優先順序比算數運算子的優先順序低.3.縮減運算 縮減運算的過程 第一步將運算元的第一位與第二位進行與或非...

verilog語法隨記

module host cpld 宣告host cpld的輸入輸出變數 input a0,b0,c0 宣告輸入埠a0,b0和c0 output a1,b1,c1 宣告輸出埠a1,b1和c1 reg x 0 reg是暫存器型別,表示需要觸發,無輸入時可保持原來數值 wire x wire是網線型別,表...