【verilog】九、UDP

-UDP:用戶自定義原語(User-defined Primitive),自成體系,UDP中不能調用其他原語或模塊。

UDP有兩種類型:

1、表示組合邏輯的UDP:輸出僅取決於輸入信號的組合邏輯;

2、表示時序邏輯的UDP:下一個輸出值不但取決於當前的輸入值,還取決於當前的內部狀態。輸出端口必須被聲明爲reg類型。

 

電平敏感的狀態表輸入項,優先級高於邊沿敏感的狀態表輸入項;

 

-組成:關鍵字primitive-endprimitive。

 

 

-定義規則:

1、輸入端口:關鍵字input聲明,標量(1位),允許多輸入端口;

2、輸出端口:關鍵字output聲明,標量(1位),輸出端口必須是端口列表第一位,不允許多輸出端口,只能有一個輸出端口;表示時序邏輯的UDO需要聲明位reg類型(保存狀態);

3、初始化:表示時序邏輯的UDP中的狀態可以用initial語句初始化,可選,將1位的值賦給reg類型輸出;

4、狀態表:可以包含0、1、x。不能處理z值,被傳遞給UDP的z值被當作x處理;

5、調用:UDP與模塊同級,不能再波快內部定義,但可以在模塊內部調用(實例引用),調用方法同門級原語;

6、不支持inout端口。

7、狀態表:

1)兩種表示形式:組合邏輯、時序邏輯;

2)狀態表每一行的input順序必須和端口列表中的順序一致;

3)狀態表每一行用“;”結束;

4)能夠產生確定輸出值的所有輸入項組合都必須在狀態表中列出,找不到對應項將用x作爲輸出;

5)無關項(不影響輸出值的輸入值)可以用符號“?”表示,“?”被自動展開爲0、1、x;

 

 

-表示組合邏輯的UDP:

-狀態表:

1)語法形式:

輸入輸出用“:”隔開;

 

 

-表示時序邏輯的UDP:

-狀態表:

1)語法形式:

輸入、當前狀態、輸出三部分用“:”隔開;

2)輸入項可以是電平或是跳變沿的形式;

3)當前狀態:輸出寄存器的當前值;

4)下一狀態有輸入和當前狀態計算得出,下一狀態的值就成爲輸出寄存器的新值;

-電平敏感的表示時序邏輯的UDP:

-邊沿敏感的表示時序邏輯的UDP:

在同一行中存在多個輸入的跳變沿是非法的;

 

-縮寫符號:

 

-設計原則:

1、只能進行功能建模,不能對電路時序、製造工藝(CMOS、TTL、ECL等)建模。

2、輸出端口唯一;

3、輸入端口數目上限由仿真器決定;

4、UDP一般是使用內存中的查找表來實現,輸入端口多會導致內存需求增加;

5、複雜度是決定選擇UDP還是module的重要因素;

6、儘可能完整描述UDP的狀態表;可以使用“沒有被指定輸出值的輸入項組合默認輸出值爲x”的特性來減少狀態表輸入項數目;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章