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

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

3天內不再提示

淺談條件語句的可綜合性

電子工程師 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2021-05-12 09:12 ? 次閱讀

條件語句的可綜合性

HDL語言的條件語句與算法語言的條件語句,最大的差異在于:

1.不管條件:當前輸入條件沒有對應的描述,則該條件為不管條件(Don’tCare)。對應不管條件的信號稱為不管信號

2.不選條件:多個條件分支中,未獲得當前輸入條件指向的分析,稱為不選條件(Don’tSelect)。對應的信號稱為不選信號。

不管不選發生時,HDL的綜合器,將盡量維持原值,并且得到額外的生成結構。若無法用生成結構維持原值,則直接報錯。根據行為語句的開節點ON/閉節點CN描述;部分條件PC/全部條件FC;以及條件分支的輸出是否具有同名信號(線與WAND)或不同名信號(非線與Not_WAND),綜合器將得到不同的處理結果。

開節點全部條件全部分支非線與描述

此時,全條件描述導致沒有不管條件和不管信號。但全部分支非線與(即每一個條件分支語句輸出不同名信號),將導致不選信號。對于不選條件不選信號,EDA將維持原值。生成結構為鎖存器。

50a9776e-b2a3-11eb-bf61-12bb97331649.png

條件譯碼邏輯:

pIYBAGCbLLqAMuUNAAATUZNF6dE149.png

RTL視圖:(QuartusII)

50d462da-b2a3-11eb-bf61-12bb97331649.png

這里的譯碼邏輯為:

50dddacc-b2a3-11eb-bf61-12bb97331649.png

一般性的代碼模型分析:

左側為代碼塊,全條件描述不存在不管條件,全部分支非線與存在不選條件和不選信號,EDA需要為這些不選信號生成鎖存器,用于維持原值。右側為其代碼模型:

50ec746a-b2a3-11eb-bf61-12bb97331649.png

結論:開節點全部條件全部輸出非線與的HDL描述,將得到的結構

閉節點全部條件全部分支非線與描述

綜合分析:

1.閉節點描述將導致生成寄存器

2.全部條件描述,使得此時不存在不管條件

3.全部分支輸出非線與,將導致不選條件/不選信號。這些不選信號需要維持原值。

4.由于此時已經輸出末端已經得到有記憶的寄存器,因此綜合器此時將使用這些生成寄存器維持原值(不選信號)

例如:

5110e124-b2a3-11eb-bf61-12bb97331649.png

RTL視圖(QuartusII):

51306292-b2a3-11eb-bf61-12bb97331649.png

這里譯碼邏輯為:

51703444-b2a3-11eb-bf61-12bb97331649.png

關于使用寄存器維持原值(不選信號/不管信號):

寄存器維持原值需要遵循兩個互相矛盾的綜合原則:

1.優化原則:寄存器使用其使能端維持原值,將導致時鐘信號的路由產生邏輯,或者說時鐘信號被加工,最終導致時鐘偏斜參數的惡化,影響系統的最高速度。因此,綜合器將盡量避免寄存器使用使能端。

2.原創原則:綜合器根據代碼模型分析,和實際的物理實現,必然需要對已經的描述的代碼進行加工和修改,最典型的例子就是生成結構(生成鎖存器,生成寄存器)。但過多的生成結構,將導致最終實現的電路可能與設計者的愿望相悖。因此,綜合器將盡量避免生成結構。

除了使用使能端維持寄存器原值,另一個產生生成結構的方法則是多路器閉環:

51a6e638-b2a3-11eb-bf61-12bb97331649.png

一般性的代碼模型分析:

51c4ee76-b2a3-11eb-bf61-12bb97331649.png

結論:閉節點全部條件全部分支輸出非線與描述,將得到的結構。注意此時綜合器在寄存器維持原值時,可能產生時鐘優化原則和原創原則的選擇。

5.3開節點全部條件全部分支線與描述

綜合分析:

1.全部條件避免了不管條件

2.全部分支線與(所以分支輸出同名信號),綜合器為了避免短路,將生產多路器。

注意此時沒有生成鎖存器。

51e163f8-b2a3-11eb-bf61-12bb97331649.png

RTL視圖:

5217cff6-b2a3-11eb-bf61-12bb97331649.png

一般性代碼模型分析:

5237d670-b2a3-11eb-bf61-12bb97331649.png

結論:開節點全部條件全部輸出線與描述,將得到<多路器輸出>結構。

注意這里沒有鎖存器,雖然有不選信號,但這些不選信號被多路器屏蔽。

編輯:jq

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

    關注

    30

    文章

    5164

    瀏覽量

    118134
  • HDL
    HDL
    +關注

    關注

    8

    文章

    324

    瀏覽量

    47130
  • 鎖存器
    +關注

    關注

    8

    文章

    864

    瀏覽量

    41119
  • 代碼
    +關注

    關注

    30

    文章

    4575

    瀏覽量

    67132

原文標題:FPGA學習:條件語句的可綜合性

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    鴻蒙TypeScript入門學習第6天:【條件語句

    條件語句用于基于不同的條件來執行不同的動作。 TypeScript 條件語句是通過一條或多條語句
    的頭像 發表于 04-01 13:51 ?482次閱讀
    鴻蒙TypeScript入門學習第6天:【<b class='flag-5'>條件</b><b class='flag-5'>語句</b>】

    單片機if是什么語句

    單片機中的if語句是一種條件語句,用于根據不同的條件執行不同的代碼塊。在程序執行過程中,條件語句
    的頭像 發表于 01-05 14:04 ?808次閱讀

    單片機中for語句的運用

    語句,它的基本結構如下: for (初始化語句; 條件表達式; 更新語句) {循環體;} for語句的執行流程: 運行初始化
    的頭像 發表于 01-05 14:02 ?821次閱讀

    sql語句多個條件怎么連接

    SQL語句中使用了兩個條件,age >= 25表示年齡大于等于25,age OR運算符用于滿足多個條件中的至少一個條件的情況。例如,
    的頭像 發表于 11-23 11:34 ?1199次閱讀

    python if語句多個條件怎么用

    在Python中,可以使用多個條件來編寫if語句。這些條件可以使用邏輯運算符進行組合,包括and、or和not。 當if語句中有多個條件時,
    的頭像 發表于 11-21 16:45 ?1278次閱讀

    淺談綜合布線系統中如何避免感應雷的襲擊

    電子發燒友網站提供《淺談綜合布線系統中如何避免感應雷的襲擊.doc》資料免費下載
    發表于 11-10 16:09 ?0次下載
    <b class='flag-5'>淺談</b>在<b class='flag-5'>綜合</b>布線系統中如何避免感應雷的襲擊

    考慮x和z在verilog條件語句中的使用情況

    首先,考慮x和z在verilog條件語句中的使用情況,然后我們再考慮在verilog中用x和z給其他reg/wire賦值的情況。
    的頭像 發表于 11-02 09:40 ?753次閱讀
    考慮x和z在verilog<b class='flag-5'>條件</b><b class='flag-5'>語句</b>中的使用情況

    如何評估所選購焊錫膏綜合性能的優劣?

    簡要分享如何評估所選購焊錫膏綜合性能的優劣?
    的頭像 發表于 10-23 09:08 ?326次閱讀

    Python條件條件語句

    if語句 對于if語句,若條件判定為真,那么后面的語句塊就會被執行。若條件判定為假,語句塊就會被
    的頭像 發表于 09-12 16:45 ?406次閱讀

    Python中什么是語句

    條件判斷 語句塊 什么是語句塊呢? 語句塊是在條件為真(條件
    的頭像 發表于 09-12 16:41 ?685次閱讀

    C語言中if語句、if-else語句和switch語句詳解

    在C語言中,有三種條件判斷結構:if語句、if-else語句和switch語句。
    發表于 08-18 16:36 ?1215次閱讀
    C語言中if<b class='flag-5'>語句</b>、if-else<b class='flag-5'>語句</b>和switch<b class='flag-5'>語句</b>詳解

    條件語句/循環語句simulink的實現方法(一)

    條件語句和循環語句是計算機編程中常用的兩種控制結構
    的頭像 發表于 07-21 16:48 ?7387次閱讀
    <b class='flag-5'>條件</b><b class='flag-5'>語句</b>/循環<b class='flag-5'>語句</b>simulink的實現方法(一)

    MATLAB中條件語句和循環結構的使用方式

    MATLAB提供了多種條件語句和循環結構。
    的頭像 發表于 07-05 09:41 ?2854次閱讀

    詳解Verilog賦值語句、塊語句、條件語句

    不可綜合語句經常用在測試文件中,未注明的語句均是可綜合
    的頭像 發表于 07-02 10:47 ?3367次閱讀
    詳解Verilog賦值<b class='flag-5'>語句</b>、塊<b class='flag-5'>語句</b>、<b class='flag-5'>條件</b><b class='flag-5'>語句</b>

    verilog語言的可綜合性和仿真特性

    綜合就是將HDL語言轉化成與,非,或門等等基本邏輯單元組成的門級連接。因此,可綜合語句就是能夠通過EDA工具自動轉化成硬件邏輯的語句。
    發表于 06-28 10:39 ?1217次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>