Verilog UDP基礎知識

2022-05-20 14:32 更新

門級建模中介紹的內(nèi)置門單元,例如 and,or , nor 等,均屬于 Verilog 自帶的一整套標準原語,即通常所說的內(nèi)置原語。

此外,Verilog 還為用戶提供了自己編寫原語的能力,這種原語就是用戶自定義原語(User Defined Primitive,簡稱 UDP)。

在 UDP 中,不能調(diào)用其他 module 或 primitive,調(diào)用方式和門級原語完全相同。

UDP 類型主要有以下 2 種,后面將逐一介紹。

  • 組合邏輯 UDP:輸出僅取決于輸入信號的組合邏輯。
  • 時序邏輯 UDP:下一個輸出值不但取決于當前輸入值,還取決于當前的內(nèi)部狀態(tài)。

UDP 定義

UDP 的定義不依賴于模塊定義,因此可以出現(xiàn)在模塊定義外,也可以單獨在文件里定義。

UDP 格式定義如下:

primitive UDP_name (
  output_name,
  list_of_input) ;

  output_declaration ;
  list_of_input_declaration ;
  [reg_declaration] ;
  [initial_statement] ;
 
  table
    list_of_table_entries ;
  endtable
endprimitive

UDP 說明

端口聲明

  • 端口聲明部分和 module 類似,可以在端口列表聲明時只列出端口信號然后在 primitive 實體中說明其類型,也可以直接在端口列表聲明時就指明其類型。
  • 輸入端口只能采用標量(即 1 位),允許有多個輸入端口。
  • 輸出端口只允許有一個標量(即 1 位),且輸出端口必須出現(xiàn)在端口列表的第一個位置。絕對不允許有多個輸出端口。
  • 輸出端口用 output 關鍵字說明,時序邏輯 UDP 需要保存狀態(tài),則其輸出端口還需要聲明為 reg 類型。
  • UDP 不支持 inout 端口類型。

初始化

可以用 initial 語句對時序邏輯 UDP 的輸出端口(reg 類型)進行初始化,該語句是可選的。

狀態(tài)表

  • UDP 狀態(tài)表是 UDP 中最重要的部分,用關鍵字 table 聲明,它定義了如何根據(jù)輸入狀態(tài)和當前狀態(tài)得到輸出值,類似于邏輯真值表。
  • 狀態(tài)表的項可以為 0,1,或 x。UDP 不能處理 z 值,所以傳遞給 UDP 的 z 值會被當做 x 處理。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號