verilog中generate-for與for的區別


generate-for只針對於module、reg、net、assign、always、parameter、function、initial、task等語句或者模塊,而for只針對於非例化的循環。

generate-for語句:
1、generate-for語句必須用genvar關鍵字定義for的索引變量;
2、for的內容必須用begin end塊包起來,哪怕只有一句;
3、begin end塊必須起個名字

在開始仿真前,仿真器會對生成塊中代碼進行確立展開,展開后的仿真代碼中生成變量genvar不復存在。

GENERATE-FOR循環語句

 

GENERATE-CONDITIONAL條件語句

 

 

 1 module top(
 2 input [9:0] in,
 3 output [9:0] out
 4 )
 5 genvar i
 6 generate
 7     for(i=0;i<10;i=i+1)
 8         begin: reverse
 9             assign out[i] = in[9-i];
10         end
11 endgenerate
12 
13 endmodule

引用時:reverse[0].out,reverse[1].out,reverse[2].out,,,,reverse[9].out。

其他:

1 generate
2     if ..
3     else ..
4 endgenerate
1 generate
2     case(N)
3     1: ..
4     2: ..
5     default: ..
6 endgenerate

 

 

for循環語句:

 1 module top(
 2 input [9:0] in,
 3 output [9:0] out
 4 )
 5 
 6 integer i;
 7 always@(*) begin
 8     for(i=0;i<10;i=i+1) begin: 
 9         out[i] = in[9-i];
10     end
11 end
12 
13 endmodule

 


————————————————
版權聲明:本文為CSDN博主「無信號」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43274923/article/details/107510142


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM