日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

改进的for循环

發布時間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 改进的for循环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

改進的for循環

聲明局部循環變量
SystemVerilog簡化了聲明用于for循環的局部變量的方法。SystemVerilog可以在for循環內部聲明循環變量。這樣就不需要在模塊級定義多個變量,也不用在命名的begin…end塊中定義局部變量了。

module chip(...);//SystemVerilog風格的循環...always_ff@(posedge clock) beginfor(bit[4:0] i=0; i<=15;i++)....endalways_ff@(posedge clock)beginfor(int i=1;i <= 1024;i+=1)...end endmodule

局部循環變量避免發生干擾
在for循環內部聲明的變量是這個循環的局部變量。在循環中引用這個變量名稱只會使用這個局部變量,而不會是模塊其他地方,如接口、程序、任務或函數中聲明的相同名字的變量。

for循環內部聲明的變量時自動變量

局部循環變量時自動的
當在for循環初始化語句中聲明變量時,變量時自動儲存而不是靜態的。當次for循環啟動時,就自動地創建這個變量并初始化;當循環退出時,這個變量就被清除。自動變量的使用有如下幾個需要注意的問題:

  • 自動變量不能層次化引用
  • 自動變量不能保存到VCD文件中
  • for循環變量的值不能在循環外部使用,因為這個變量在循環外部是不存在的。

局部循環變量在循環外不存在

always_comb beginfor(int lobit=0;lo_bit <=63;lo_bit++)beginif(data[lo_bit]) break;//當位值為1就退出循環endif(lo_bit > 7) //出錯:此處并沒有lo_bit... end

如果需要在循環外引用一個變量,這個變量必須在循環外聲明。

always_comb int lo_bit;//本塊的局部變量 beginfor( lobit=0;lo_bit <=63;lo_bit++)beginif(data[lo_bit]) break;//當位值為1就退出循環endif(lo_bit > 7) //lo_bit的值為最后一個循環的值... end

2、多重for循環賦值
SystemVerilog可以在for循環中使用多個初始化賦值語句,多個步進賦值語句。
多個初始化或步進賦值語之間用逗號隔開。

for(int i=1,int j=0;i*j < 128;i++,j+=3) ...

每個循環變量可以聲明為不同類型

for(int i=1,byte j=0;i*j <128;i++,j+=3) ....

3、for循環中聲明的變量的層次化引進
局部變量沒有層次路徑
作為for循環一部分聲明的局部變量不能被層次化引用。測試向量、顯示波形或VCD文件都不能引用這些局部變量(但是工具可能會提供私有的、非標準的方法來處理這些變量)

always_ff@(posedge clock) beginfor(int i=0;i<=15;i++)begin...//i不能層次化引用end end

如果確實需要對for循環的控制變量進行層次化引用,則這個變量必須在for循環外部聲明:在模塊級或在命名的begin…end塊內。

always_ff@(posedge clock) begin:loop int i;//i可以層次化引用for(int i=0;i<=15;i++)begin...end end

總結

以上是生活随笔為你收集整理的改进的for循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。