色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

組合邏輯決策優先級介紹

OpenFPGA ? 來源:OpenFPGA ? 2022-12-29 11:07 ? 次閱讀

數字門級電路可分為兩大類:組合邏輯和時序邏輯。鎖存器是組合邏輯和時序邏輯的一個交叉點,在后面會作為單獨的主題處理。

組合邏輯描述了門級電路,其中邏輯塊的輸出直接反映到該塊的輸入值的組合,例如,雙輸入AND門的輸出是兩個輸入的邏輯與。如果輸入值發生變化,輸出值將反映這一變化,組合邏輯的RTL模型需要反映這種門級行為,這意味著邏輯塊的輸出必須始終反映該邏輯塊當前輸入值的組合。

SystemVerilog有三種在可綜合RTL級別表示組合邏輯的方法:連續賦值語句、always程序塊和函數。接下來幾篇文章將探討每種編碼風格,并推薦最佳實踐編碼風格。

組合邏輯決策優先級

SystemVerilog對if-else-if決策序列和case語句的語義是:按順序計算一系列選擇-只執行第一個匹配的分支。這種行為使得表示優先級編碼邏輯成為可能,即其中一種選擇優先于另一種選擇。下面的代碼片段演示了一個以if-else-if決策鏈建模的4-2優先級編碼器,其中高階位優先于低階位。

69a92308-871e-11ed-bfe3-dac502259ad0.png

同樣的優先級編碼器也可以通過使用case語句來建模。(下例使用了一種稱為reverse case語句的編碼風格)。

69d13be0-871e-11ed-bfe3-dac502259ad0.png

if-else-if示例和case語句示例在功能上相同,并將綜合為等效的門級電路。

從case語句中刪除不必要的優先編碼

上面的優先級編碼器示例取決于if-else-if決策和case語句的優先級評估流程。然而,大多數決策序列并不依賴于這種仿真語義,即按照決策選項的列出順序對其進行評估。有限狀態機(FSM)的獨熱碼狀態解碼器說明了這一點,每一個單次值都是唯一的。因此,case選項是相互排斥的——沒有兩個case選項可以同時為真。對于互斥的case選項, case選項的順序無關緊要,case語句的優先級性質也無關緊要。

下面的示例顯示了一個簡單的獨熱碼狀態機解碼器,獨熱碼編碼在枚舉類型標簽的文本值中。

69da1c06-871e-11ed-bfe3-dac502259ad0.png

綜合編譯器優化case語句優先級。在將RTL case語句轉換為門級實現時,綜合編譯器將在需要時保留優先級編碼的求值,例如前面顯示的BCD示例。然而,當case選項相互排斥時,綜合編譯器將自動刪除優先級編碼,并創建并行邏輯來評估case選項。與優先級編碼電路相比,并行電路速度更快,所需要的門數更少。

unique和unique0的決策修飾符

在一些罕見的情況下,不需要對case語句進行隱式優先級編碼,但綜合編譯器無法靜態地確定case選項在所有條件下都是互斥的,當這種情況發生時,綜合編譯器將在門級實現中保留優先級編碼邏輯,以備不時之需。這種情況通常發生在以下情況之一:

case選項表達式使用通配符位。 case-inside決策允許使用通配符位,因為這些位可以是任何值,所以case表達式可能匹配多個case項。

如果case選項表達式使用變量,則綜合是一個靜態編譯過程,因此無法確定變量的值是否永遠不會重疊。

例7-3是一個reverse case語句,其中case項是具有一個變量的獨熱碼。

示例7-3:具有優先級編碼邏輯(部分代碼)的狀態解碼器

//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
modulecase_with_priority_decode
(inputlogic[2:0]current_state,
outputlogicget_ready,get_set,get_going
);

typedefenumlogic[2:0]{READY=3'b001,
SET=3'b010,
GO=3'b100}states_t;

always_combbegin
{get_ready,get_set,get_going}=3'b000;
case(1'b1)
current_state[0]:get_ready='1;
current_state[1]:get_set='1;
current_state[2]:get_going='1;
endcase
end

endmodule:case_with_priority_decode
//`end_keywords

設計者可能知道current_state使用獨熱碼,因此case項是互斥的。然而,綜合編譯器不能靜態地確定當前狀態變量的值在所有情況下都是互斥的。因此,綜合器將使用優先級編碼邏輯實現這一獨熱碼解碼器。case語句不會被自動優化為并行計算。圖7-3顯示了綜合這種reverse case的結果。

圖7-3:例7-3的綜合結果:具有優先級的case語句

69f5438c-871e-11ed-bfe3-dac502259ad0.png

因為綜合編譯器無法識別current_state變量只會有一個單獨的值,因此,case項是互斥的。

unique的決策參數。

當綜合無法自動檢測到case項值是互斥的時,設計工程師需要通知綜合編譯器,case項之間確實是唯一的。這可以通過在case關鍵字之前添加一個unique的決策修飾符來實現,如下例所示:

示例7-4:具有unique并行編碼邏輯的狀態解碼器

//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
modulecase_with_unique0_decode
(inputlogic[2:0]current_state,
outputlogicget_ready,get_set,get_going
);

typedefenumlogic[2:0]{READY=3'b001,
SET=3'b010,
GO=3'b100}states_t;

always_combbegin
{get_ready,get_set,get_going}=3'b000;
unique0case(1'b1)
//uniquecase(1'b1)//work-aroundifunique0notsupported
current_state[0]:get_ready='1;
current_state[1]:get_set='1;
current_state[2]:get_going='1;
endcase
end

endmodule:case_with_unique0_decode
//`end_keywords

圖7-4顯示了綜合該示例的結果。

6a1e7c34-871e-11ed-bfe3-dac502259ad0.png

圖7-4:示例7-4的綜合結果:使用unique

使用unique會指示綜合編譯器可以并行計算case項。與圖7-3所示的優先級實現相比,這顯著減少了該獨熱碼解碼器的門數和傳播路徑的數量。

對于綜合,unique修飾符表示每個case項表達式都將具有互斥的“唯一”值,因此門級實現可以并行計算case項,unique修飾符進一步通知綜合,在case狀態中未使用的任何案例表達式值,可以忽略不計。但在某些設計中,這可能會觸發綜合優化,從而減少門數和傳播路徑。

對于仿真,unique支持運行時錯誤檢查。如果出現以下情況,將報告違規信息

絕不會有多個case 項表達式同時為true

出現的每個case表達式值都有一個分支。

最佳實踐指南7-9
只有在確定綜合邏輯優化效果是理想的情況下,才能使用unique的決策修飾符。

大多數情況下,不需要也不應該在case語句中使用unique 決策修飾符——unique修飾符可能會導致綜合優化,這在許多設計中可能并不可取。

示例7-3和7-4中所示的reverse case語句編碼風格是綜合編譯器需要決策修飾符以實現最佳結果質量(QoR)的少數例外之一。

unique0決策修飾符

SystemVerilog-2009添加了一個unique0決策修飾符。與unique一樣,unique0決策修飾符通知綜合編譯器,每個case項表達式都有一個排斥的、唯一的值,在門級實現之前,可以并行計算case項,但與unique不同,unique0修飾符不會通知綜合忽略case語句中未使用的case表達式值。

對于仿真,unique0決策修飾符只支持運行時錯誤檢查,以確保不存在多個case項表達式同時為真。如果對case語句進行了計算,并且沒有匹配的case項,則不會出現運行時違規消息。

最佳實踐指南7-10
在RTL模型中使用unique的決策修飾符。不要使用unique0決策修飾符。unique0修飾符在 未來可能會被推薦使用,但在本文撰寫時,一些仿真器和大多數綜合編譯器不支持unique0。

過時的parallel_case 綜合注釋

(pragma就是為了讓編譯器編譯出的程序與機器硬件操作系統保持完全兼容而定義的宏擴展)

SystemVerilog在最初的Verilog語言中添加了unique和unique0的決策修飾符。在傳統的Verilog中,設計工程師告訴綜合編譯器所有case項都可以被視為互斥的唯一方法是通過parallel_case的synthesis pragma語句。synthesis pragma是以synthesis一詞開頭的特殊注釋。仿真器會忽略注釋,但綜合編譯器會對這些專用的synthesis pragma進行操作。

case(

筆記
在寫本文的時候,一個商業綜合編譯器并不認為// synthesis是綜合注釋。該編譯器要求pragma以// pragma或// synopsys開頭。

警告-使用注釋向綜合編譯器提供指令存在危險。Parallel_case之類的注釋可以對case語句的門級實現產生重大影響。這些效果在仿真中無法驗證!對于仿真器來說,綜合注釋不過是一種注釋。RTL級別的設計驗證不是驗證與門級實現相同的功能。

unique和unigue0決策修飾符取代了parallel_case綜合注釋——這些決策修飾符是語言的活躍部分,而不是以注釋出現。

unique0 case在綜合中的效果與parallel_case相同,此外,unique0支持運行時仿真檢查,確保每次計算case語句時,case表達式最多只匹配一個case項(如果case表達式不匹配任何case項,則不是錯誤)。

unique case在綜合中的效果與兩個綜合注釋相同, parallel_case和full_case。unique修飾符允許運行時仿真檢查,即在每次計算case語句時,case表達式正好與一個case項相匹配。

最佳實踐指南7-11
不要使用過時的parallel_case綜合注釋!

綜合編譯器非常擅長自動檢測case語句何時可以作為并行解碼器實現,而不影響設計功能,在極少數情況下,需要告知綜合編譯器使用并行實現時,請使用unique決策修飾符。unique決策修飾符通知綜合編譯器,case項可以像parallel_case綜合注釋一樣被視為互斥的,但決策修飾符添加了仿真運行時檢查,以幫助檢測RTL仿真期間case項并行解碼的潛在問題。

(unique0 決策修飾符更準確地描述了parallel_case綜合注釋,但本文不建議使用unique0,因為在編寫本文時,大多數綜合編譯器都不支持它。)






審核編輯:劉清

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

    關注

    45

    文章

    3639

    瀏覽量

    134440
  • 鎖存器
    +關注

    關注

    8

    文章

    906

    瀏覽量

    41497
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8224
  • 門級電路
    +關注

    關注

    0

    文章

    15

    瀏覽量

    1963

原文標題:數字硬件建模SystemVerilog-組合邏輯建模(4)組合邏輯決策優先級

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

收藏 人收藏

    評論

    相關推薦

    RTOS應用中的優先級反轉問題

    在嵌入式系統中,如果使用基于優先級調度算法的RTOS,系統中可能發生優先級反轉現象。優先級反轉用來描述系統中高優先級任務由于等待低優先級任務
    發表于 12-14 11:00 ?1207次閱讀

    優先級參數配對組合測試集生成策略

    在參數組合測試的實際應用中,時間或預算等原因可能導致無法運行整個測試集,造成重要測試案例的漏執行。該文引用優先級權值的思想為測試案例設置優先級介紹2種生成有序
    發表于 04-18 08:47 ?10次下載

    路由優先級

    路由優先級 前面講過,各個路由協議都有自己的標準來衡量路由的好壞(
    發表于 06-09 23:47 ?2973次閱讀
    路由<b class='flag-5'>優先級</b>

    STM32F10X的中斷優先級

    STM32(Cortex-M3)中有兩個優先級的概念搶占式優先級和響應優先級,有人把響應優先級稱作亞優先級或副
    發表于 11-04 15:02 ?41次下載

    stm32定時器優先級

    什么是優先級 優先級是具有高搶占式優先級的中斷可以在具有低搶占式優先級的中斷處理過程中被響應,即中斷嵌套,或者說高搶占式優先級的中斷可以嵌套
    發表于 10-13 11:48 ?5354次閱讀

    DSP中斷如何設置優先級

    原以為2812中斷不能設置優先級。實際上硬件上優先級是做好的。但軟件上有辦法來設置優先級
    發表于 04-08 17:20 ?20次下載

    cortex M內核優先級設置

    Cortex M內核中每個中斷都有一個8位的優先級設置寄存器這個8位的寄存器可以分為搶占優先級和子優先級兩個部分(通過設置優先級組設置)搶占優先級
    發表于 12-01 11:51 ?4次下載
    cortex M內核<b class='flag-5'>優先級</b>設置

    2.FreeRTOS中斷優先級和任務優先級

    FreeRTOS中斷優先級和任務優先級架構:Cortex-M3版本:FreeRTOS V9.0.0前言:最開始,我并沒有搞清楚什么是中斷優先級和任務優先級,但看了部分資料后發現這兩個并
    發表于 12-04 20:21 ?9次下載
    2.FreeRTOS中斷<b class='flag-5'>優先級</b>和任務<b class='flag-5'>優先級</b>

    STM32F103芯片中斷優先級以及FreeRTOS優先級設置

    STM32F103只用了4個位來表達優先級,因此最多支持16的可編程優先級(0~15),15為最低優先級
    發表于 01-25 18:59 ?1次下載
    STM32F103芯片中斷<b class='flag-5'>優先級</b>以及FreeRTOS<b class='flag-5'>優先級</b>設置

    uC/OS-II學習筆記——優先級反轉與優先級繼承機制

    優先級反轉,是指某同步資源被較低優先級的進程/線程所擁有,較高優先級的進程/線程競爭該同步資源未獲得該資源,而使得較高優先級進程/線程反而推遲被調度執行的現象。
    發表于 02-09 10:33 ?2次下載
    uC/OS-II學習筆記——<b class='flag-5'>優先級</b>反轉與<b class='flag-5'>優先級</b>繼承機制

    中斷優先級處理的原則及配置 搶占優先級和響應優先級的區別

    首先我們需要知道什么是中斷優先級:中斷優先級是CPU響應中斷的先后順序
    的頭像 發表于 05-18 15:10 ?2.7w次閱讀
    中斷<b class='flag-5'>優先級</b>處理的原則及配置 搶占<b class='flag-5'>優先級</b>和響應<b class='flag-5'>優先級</b>的區別

    FreeRTOS任務的優先級示例

    任務的優先級:0~24之間。數字越大,任務優先等級越高。高優先級的任務優先執行。
    的頭像 發表于 09-15 11:13 ?2800次閱讀

    Free RTOS的優先級翻轉

    優先級翻轉簡介:就是高優先級的任務運行起來的效果好像成了低優先級,而低優先級比高優先級先運行;
    的頭像 發表于 02-10 15:31 ?1314次閱讀
    Free RTOS的<b class='flag-5'>優先級</b>翻轉

    什么是優先級反轉

    假設現在有三個任務TaskA(優先級高)、TaskB(優先級中)、TaskC(優先級低),一個信號量(Semaphore),此信號量用于任務之間爭奪某個資源。在某一時刻,高優先級的Ta
    的頭像 發表于 04-24 13:01 ?2265次閱讀
    什么是<b class='flag-5'>優先級</b>反轉

    python中運算符的優先級大小

    解。 Python中的運算符可以分為以下幾類:算術運算符、比較運算符、邏輯運算符、位運算符、賦值運算符以及成員訪問運算符。這些運算符有不同的優先級。下面我們將詳細介紹每個運算符的優先級
    的頭像 發表于 11-29 16:21 ?3393次閱讀
    主站蜘蛛池模板: 欧美极限扩肛| 亚洲欧洲免费三级网站| 最近免费中文MV在线字幕| 国产成年人在线观看| 免费毛片播放| 亚洲视频无码高清在线| 港台三级大全| 妻中蜜在线播放| 最近2019年日本中文免费字幕 | 潮 喷女王cytherea| 久久精品美女| 亚洲成人免费在线观看| yellow免费| 明星三级电影| 欲乱艳荡少寡妇全文免费| 国产偷国产偷亚州清高| 乳交高H糙汉宠文| se01国产短视频在线观看| 伦理在线影院伦理电影| 夜色资源站国产www在线视频| 国产色偷偷男人的天堂| 色小妹影院| 成人在免费观看视频国产| 欧美日韩亚洲中字二区| 67194线在线精品观看| 久久re视频这里精品09首页| 亚洲AV综合99一二三四区| 国产69精品麻豆久久久久| 青青视频 在线 在线播放| 99re热精品视频国产免费| 久久精品亚洲AV无码三区观看 | 中文字幕按摩| 久久不射网| 亚洲精品久久AV无码蜜桃| 国产欧美日韩综合精品一区二区| 手机免费毛片| 国产 有码 无码 电影| 色婷婷五月综合中文字幕| 成人网视频在线观看免费| 日本wwwhdsex69| 边摸边吃奶边做带声音|