Verilog HDL語言提供了一種擴充基元的方法,允許使用者自己定義元件(User Defined Primitives,UDP)。通過UDP,可以把一塊組合邏輯電路或時序邏輯電路封裝在一個UDP内,并把這個UDP作為一個基本門元件來使用。需要注意的是,UDP是不能綜合的,隻能用來仿真。
1、定義UDP的文法:
primitive 元件名(輸出端口名, 輸入端口名1, 輸入端口名2,…)
output 輸出端口名;
input 輸入端口名1, 輸入端口名2,…;
reg 輸出端口名;
initial begin
// 輸出端口寄存器或時序邏輯内部寄存器賦初值(0,1,X);
...
end
table
// 輸入1 輸入2 … : 輸出
邏輯值 邏輯值 : 邏輯值;
邏輯值 邏輯值 : 邏輯值;
… … … …;
endtable
endprimitive
2、UDP的調用
UDP名 例化名 (連接配接端口1信号名, 連接配接端口2信号名, …, 連接配接端口n信号名);
3、注意事項:
a. UDP隻能有一個輸出端,而且必須是端口說明清單的第一項。
b. UDP可以有多個輸入端,最多允許10個輸入端。
c. UDP所有端口變量必須是标量,也就是必須是1位的。
d. 在UDP的真值表項中,隻允許出現0、1、X三種邏輯值,高阻态Z是不允許的。
e. initial語句用于為時序電路内部寄存器賦初值時,隻允許賦0、1、X的三種邏輯值,預設值為X.