1. 程式人生 > >【轉載】關於generate用法的總結【Verilog】

【轉載】關於generate用法的總結【Verilog】

case分支 intro 技術分享 結構 類型 img ora 做了 alt

http://www.cnblogs.com/nanoty/archive/2012/11/13/2768933.html

Abtract

generate語句允許細化時間(Elaboration-time)的選取或者某些語句的重復。這些語句可以包括模塊實例引用的語句、連續賦值語句、always語句、initial語句和門級實例引用語句等。細化時間是指仿真開始前的一個階段,此時所有的設計模塊已經被鏈接到一起,並完成層次的引用。

Introduction

1.generate語法

  • 定義genvar,作為generate種的循環變量。
  • generate語句中定義的for語句,必須要有begin,為後續增加標簽做準備。
  • begin必須要有名稱,也就是必須要有標簽,因為標簽會作為generate循環的實例名稱。
  • 可以使用在generate語句中的類型主要有:
    • ü module(模塊)
    • ü UDP(用戶自定義原語)
    • ü 門級原語
    • ü 連續賦值語句
    • ü initial或always語句
  • 基本結構如下:

genvar 循環變量名;

generate

// generate循環語句

// generate 條件語句

// generate 分支語句

// 嵌套的generate語句

endgenerate

下面將就generate常用的幾種情況舉例說明。

2. generate-loop循環語句

技術分享圖片

3.generate-conditional條件語句

generate允許對語句進行條件選擇,即將條件選擇加入到generate中的for循環中,只例化條件成立時對應的語句或者module。

技術分享圖片

4.generate-case分支語句

generate-case分支語句與generate-條件語句類似,只不過將原來的分支語句換做了case語句。

技術分享圖片

Conclusion

genvar與generate是Verilog 2001才有的,功能非常強大,可以配合條件語句、分支語句等做一些有規律的例化或者賦值等操作,對於提高簡潔代碼很有幫助,同時也減少了人為的影響。

還可參考;

https://wenku.baidu.com/view/b7d08952be23482fb4da4c15.html

【轉載】關於generate用法的總結【Verilog】