Verilog UDP基礎(chǔ)知識(shí)

2022-05-20 14:32 更新

門(mén)級(jí)建模中介紹的內(nèi)置門(mén)單元,例如 and,or , nor 等,均屬于 Verilog 自帶的一整套標(biāo)準(zhǔn)原語(yǔ),即通常所說(shuō)的內(nèi)置原語(yǔ)。

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

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

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

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

UDP 定義

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

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 說(shuō)明

端口聲明

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

初始化

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

狀態(tài)表

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)