女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

continue和break跳轉語句介紹

OpenFPGA ? 來源:OpenFPGA ? 作者:碎碎思 ? 2022-11-09 09:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

跳轉語句允許程序代碼跳過一個或多個編程語句,SystemVerilog的jump語句是continue、break和disable。

continue 和 break跳轉語句

continue和break-跳轉語句在循環中用于控制循環中語句的執行。這些跳轉語句只能用于for循環、while循環和foreach循環。它們不能在循環之外使用。

continue語句跳轉到循環的結尾,并計算循環的結束表達式(end expression),以確定循環是否應繼續進行另一次迭代。

下面的代碼段使用for循環遍歷一個小查找表的地址,該表被建模為16-bit的一維數組。使用continue語句跳過表中值為0的位置。對于非零位置,調用函數對該值進行某種操作(函數未顯示)。

f8758ab0-5fc6-11ed-8abf-dac502259ad0.png

break語句立即終止循環的執行。循環退出,任何循環控制語句(如for循環步驟分配)都不會執行。

示例6-10說明了如何使用continue和break來查找在一個位范圍內設置為1的第一位。圖6-10顯示了該示例的綜合結果。

示例6-10:使用continue和break控制循環執行

//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
modulefind_bit_in_range
#(parameterN=4)//bussize
(inputlogic[N-1:0]data,
inputlogic[$clog2(N)-1:0]start_range,end_range,
outputlogic[$clog2(N)-1:0]low_bit
);
timeunit1ns;timeprecision1ns;

always_combbegin
low_bit='0;
for(inti=0;iend_range)break;//exitloop
if(data[i])begin
low_bit=i;
break;//exitloop
end
end//endoftheloop
//...//processdatabasedonlowestbitset
end

endmodule:find_bit_in_range
//`end_keywords

f899e748-5fc6-11ed-8abf-dac502259ad0.png 圖6-10:示例6-10的綜合結果

disable跳轉語句

SystemVerilog 的disable語句類似于其他編程語言中的go-to語句。disable跳轉到一組命名語句的末尾或任務的末尾。disable跳轉語句的一般用法是:

f9cb2f00-5fc6-11ed-8abf-dac502259ad0.png

在這個代碼片段中,begin-end語句組被命名為search_loop。disable語句指示仿真立即跳到名為begin-end 語句組的末尾。

最初的Verilog語言沒有continue和break-跳轉語句。相反,disable語句與通用go-to行為一樣用于跳轉到循環的末尾,但會繼續執行循環的下一個過程。

disable語句通過跳過循環的末端,過早地跳出循環。要跳過循環中的語句,繼續執行循環時,命名的begin-end語句組必須包含在循環中。要跳出循環,命名的begin-end語句組必須包含整個循環。

下面的示例顯示了與示例6-10相同的功能,除了使用disable 跳轉語句而不是continue和break語句,

f9ec9b22-5fc6-11ed-8abf-dac502259ad0.png

最佳實踐指南6-6
使用continue和break-跳轉語句控制循環迭代。不要使用disable跳轉語句.

disable 跳轉語句提供與break和continue 跳轉語句相同的功能,如上所示。然而,disable 跳轉語句使代碼更難讀懂和維護,使用continue和break是一種更簡單、更直觀的編碼方式。

disable跳轉語句是一個通用的go-to語句,可以在驗證中使用。綜合編譯器通常不支持使用disable的其他方法。

No-op聲明

SystemVerilog編程語句以分號;(分號本身被視為完整的編程語句)表示沒有要執行的功能。單獨的分號執行空操作,通常被稱為無操作語句(no-op語句)。

下面的代碼片段表示存儲數據變量的寄存器(使用觸發器)。由case語句表示的多路輸入確定要存儲在數據寄存器中的值。

fa1f0b7a-5fc6-11ed-8abf-dac502259ad0.png

此代碼段中的case語句不會對mode的2’b11值進行解碼。雖然在本例中功能上是正確的,但不完整的case語句不是完美的,并且可能會在代碼驗證期間引發問題,或者其他工程師在維護或重用代碼時引入歧義(解碼模式值2’b11是不是故意的?還是模型中的疏忽(錯誤))。

在這個例子中,沒有任何東西可以說明這種或那種方式。添加關于未使用的2’b11值的注釋可能會很有幫助,但不是所有人都會用心的注釋代碼。

使用無操作語句有助于使RTL模型更加自我記錄和可讀。下面的代碼片段在功能上與前面的示例相同,但是,即使沒有注釋,很明顯,也很方便人們理解代碼。

fa5abd96-5fc6-11ed-8abf-dac502259ad0.png

時序邏輯中的無操作語句將被綜合編譯器忽略。沒有要實現的功能,因此寄存器將保留其初始值。然而,綜合編譯器不能忽略組合邏輯中的no-op語句。

當沒有為變量賦值時,它將保留以前的值。綜合時可能會添加一個鎖存器,以便邏輯可以保存以前的值。

最佳實踐指南6-7
不要將no-op語句用于RTL建模,

盡管綜合編譯器支持no-op,但它在RTL功能中沒有任何用途,并且可能導致組合邏輯中出現意外的鎖存器。為了完整性,我們討論了no-op語句,但不建議在RTL代碼中使用。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鎖存器
    +關注

    關注

    8

    文章

    926

    瀏覽量

    42365
  • 編程語言
    +關注

    關注

    10

    文章

    1956

    瀏覽量

    36631
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8551

原文標題:SystemVerilog-跳轉語句

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式C語言中的goto語句詳解

    goto語句被稱為C語言中的跳轉語句。用于無條件跳轉到其他標簽。它將控制權轉移到程序的其他部分。
    發表于 07-19 16:08 ?4106次閱讀
    嵌入式C語言中的goto<b class='flag-5'>語句</b>詳解

    C語言中break語句的語法和基本應用

    在C語言中,break語句是一種控制流語句,它用于終止當前所在的循環結構(for、while、do-while)或者switch語句,從而跳出循環或者結束switch
    發表于 08-17 15:35 ?2520次閱讀

    C語言的break轉移語句講解

    C語言的break轉移語句是一種用于跳出循環或者switch語句的控制結構。它的作用是提前結束循環或者switch語句,從而避免不必要的計算或者執行。
    的頭像 發表于 11-22 15:34 ?1114次閱讀
    C語言的<b class='flag-5'>break</b>轉移<b class='flag-5'>語句</b>講解

    深入理解C語言:C語言循環控制

    在C語言編程中,循環結構是至關重要的,它可以讓程序重復執行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環,C語言提供了多種循環控制語句,如breakcontinue和goto,用于
    的頭像 發表于 04-29 18:49 ?1131次閱讀
    深入理解C語言:C語言循環控制

    breakcontinue語句#硬聲創作季

    Conbreak
    學習電子
    發布于 :2022年10月27日 07:32:40

    在C語言中什么是goto語句

    什么是goto語句goto語句被稱為C語言中的跳轉語句,用于無條件跳轉到其他標簽,它將控制權轉移到程序的其他部分。goto語句一般很少使用,
    發表于 07-14 08:17

    continuebreak和return的區別

    嵌入式工程師綜合筆試題之C語言基礎(含部分答案)continuebreak和return的區別?continue:跳過本次循環.Break:只能在循環體內部或者switch開關
    發表于 12-15 06:08

    KEIL環境下華大芯片執行跳轉語句會進入硬件中斷,關閉全部中斷后,為什么跳轉后會停下來而不是自動繼續跑下去?

    我在APP工程中使用attribute語句在0x8008的位置放置了一個入口函數,用于跳轉到0x8200的APP工程。在BOOT工程下增加了跳轉語句跳轉到0x8008這個入口函數( (
    發表于 11-08 08:48

    芯靈思SinlinxA33開發板安卓開發-java語言基礎(五)

    )。?(3)結束while語句的執行.breakcontinue語句breakcontinue
    發表于 12-24 10:45 ?324次閱讀

    C語言程序設計教程之循環結構程序設計資料概述

    本文檔的主要內容詳細介紹的是C語言程序設計教程之循環結構程序設計資料概述主要內容包括了:1.循環語句,2.breakcontinue 語句
    發表于 12-29 17:17 ?16次下載
    C語言程序設計教程之循環結構程序設計資料概述

    c語言中的SCL-CONTIUNE語句

    CONTIUNE語句 CONTIUNE語句用來終止循環語句(FOR, WHILE或REPEAT)的當前重復的執行。 語法(Syntax) CONTINUE
    的頭像 發表于 04-16 11:19 ?2766次閱讀
    c語言中的SCL-CONTIUNE<b class='flag-5'>語句</b>

    決策語句允許程序塊的執行流程

    SystemVerilog case語句與C switch語句類似,但有重要區別。SystemVerilog不能使用break語句(C使用break
    的頭像 發表于 10-27 08:57 ?1199次閱讀

    SCL用GOTO語句執行程序跳轉

    用GOTO語句能夠執行程序跳轉。此引起立即跳轉到指定標號,為此而到同塊中不同的語句
    的頭像 發表于 02-01 09:22 ?3118次閱讀

    什么是python break語句-終止循環

    在循環的過程中如果要退出循環,我們可以用break語句continue語句
    的頭像 發表于 02-23 11:17 ?3061次閱讀

    深入探討嵌入式C編程的goto語句

    什么是goto語句? goto 語句被稱為 C 語言中的跳轉語句。 用于無條件跳轉到其他標簽。它將控制權轉移到程序的其他部分。 goto
    發表于 01-21 10:41 ?974次閱讀
    深入探討嵌入式C編程的goto<b class='flag-5'>語句</b>