0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談條件語句的可綜合性

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

條件語句的可綜合性

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

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

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

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

開節(jié)點全部條件全部分支非線與描述

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

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

條件譯碼邏輯:

pIYBAGCbLLqAMuUNAAATUZNF6dE149.png

RTL視圖:(QuartusII)

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

這里的譯碼邏輯為:

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

一般性的代碼模型分析:

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

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

結(jié)論:開節(jié)點全部條件全部輸出非線與的HDL描述,將得到的結(jié)構(gòu)

閉節(jié)點全部條件全部分支非線與描述

綜合分析:

1.閉節(jié)點描述將導(dǎo)致生成寄存器

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

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

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

例如:

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

RTL視圖(QuartusII):

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

這里譯碼邏輯為:

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

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

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

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

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

除了使用使能端維持寄存器原值,另一個產(chǎn)生生成結(jié)構(gòu)的方法則是多路器閉環(huán):

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

一般性的代碼模型分析:

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

結(jié)論:閉節(jié)點全部條件全部分支輸出非線與描述,將得到的結(jié)構(gòu)。注意此時綜合器在寄存器維持原值時,可能產(chǎn)生時鐘優(yōu)化原則和原創(chuàng)原則的選擇。

5.3開節(jié)點全部條件全部分支線與描述

綜合分析:

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

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

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

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

RTL視圖:

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

一般性代碼模型分析:

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

結(jié)論:開節(jié)點全部條件全部輸出線與描述,將得到<多路器輸出>結(jié)構(gòu)。

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119816
  • HDL
    HDL
    +關(guān)注

    關(guān)注

    8

    文章

    326

    瀏覽量

    47307
  • 鎖存器
    +關(guān)注

    關(guān)注

    8

    文章

    904

    瀏覽量

    41421
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68234

原文標(biāo)題:FPGA學(xué)習(xí):條件語句的可綜合性

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    一次使用無菌腦積水分流器綜合性測試儀

    一次使用無菌腦積水分流器綜合性測試儀 描述 一次使用無菌腦積水分流器是一種用于治療腦積水的醫(yī)療器械。腦積水是指在顱內(nèi)或腦脊液循環(huán)系統(tǒng)中積聚過多液體導(dǎo)致顱內(nèi)壓力增高的病癥。腦積水分流器被用來幫助
    的頭像 發(fā)表于 04-06 09:13 ?288次閱讀
    一次<b class='flag-5'>性</b>使用無菌腦積水分流器<b class='flag-5'>綜合性</b>測試儀

    鴻蒙TypeScript入門學(xué)習(xí)第6天:【條件語句

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

    焊錫膏的綜合性能該如何進(jìn)行評估?

    一款合適的錫膏對生產(chǎn)效率會帶來巨大的提升,可以減少因為錫膏性能問題導(dǎo)致的工期延誤??蛻粼谶x擇錫膏產(chǎn)品是常常會遇到的問題就是,如何評估所選購焊錫膏綜合性能的優(yōu)劣? 根據(jù)深圳福英達(dá)工業(yè)技術(shù)有限公司多年的錫膏解決方案經(jīng)驗,
    的頭像 發(fā)表于 03-20 09:13 ?307次閱讀

    assign語句和always語句的用法

    Assign語句和Always語句是在硬件描述語言(HDL)中常用的兩種語句,用于對數(shù)字電路建模和設(shè)計。Assign語句用于連續(xù)賦值,而Always
    的頭像 發(fā)表于 02-22 16:24 ?2167次閱讀

    淺談商業(yè)綜合建筑能耗分析及節(jié)能發(fā)展情況

    淺談商業(yè)綜合建筑能耗分析及節(jié)能發(fā)展情況 張穎姣 安科瑞電氣股份有限公司 上海嘉定 201801 摘要:商業(yè)的發(fā)展促進(jìn)了人類的交流與進(jìn)步,從早期的集市到后來的市場再到現(xiàn)在的購物商城,商業(yè)綜合體,可以說
    的頭像 發(fā)表于 02-20 15:30 ?5560次閱讀
    <b class='flag-5'>淺談</b>商業(yè)<b class='flag-5'>綜合</b>建筑能耗分析及節(jié)能發(fā)展情況

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

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

    單片機(jī)if是什么語句

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

    單片機(jī)中for語句的運用

    語句,它的基本結(jié)構(gòu)如下: for (初始化語句; 條件表達(dá)式; 更新語句) {循環(huán)體;} for語句的執(zhí)行流程: 運行初始化
    的頭像 發(fā)表于 01-05 14:02 ?2056次閱讀

    java中的switch語句 case的取值

    Java中的switch語句是一種用于多重條件判斷的語句,用于根據(jù)不同的條件執(zhí)行不同的代碼塊。在switch語句中,case關(guān)鍵字用來指定不
    的頭像 發(fā)表于 11-30 16:05 ?1029次閱讀

    sql語句多個條件怎么連接

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

    sql where條件的執(zhí)行順序

    SQL語句中的WHERE條件是用來篩選數(shù)據(jù)的,它決定了哪些數(shù)據(jù)會被返回給用戶。WHERE條件的執(zhí)行順序是影響SQL語句性能的一個重要因素,正確地理解和優(yōu)化WHERE
    的頭像 發(fā)表于 11-23 11:31 ?2110次閱讀

    sql語句where條件查詢

    SQL是一種用于管理和操作關(guān)系型數(shù)據(jù)庫的編程語言。其中,WHERE子句是用于過濾查詢結(jié)果的重要部分。通過WHERE條件,我們可以指定一系列條件,以僅返回滿足條件的記錄。本文將探討WHERE條件
    的頭像 發(fā)表于 11-23 11:28 ?1101次閱讀

    python if語句多個條件怎么用

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

    select語句的基本語法

    、詳實、細(xì)致地解釋SELECT語句的基本語法以及關(guān)鍵部分。 SELECT語句的基本語法如下: SELECT 列名 1 , 列名 2 , ... FROM 表名 WHERE 條件 上述語法可以分為三個
    的頭像 發(fā)表于 11-17 16:23 ?1823次閱讀

    sql查詢語句大全及實例

    的不同類型及其實例。 SELECT語句 SELECT語句是SQL中最常用的查詢語句。它用于從表中選擇數(shù)據(jù),并可以使用不同的條件進(jìn)行篩選。下面是一些SELECT
    的頭像 發(fā)表于 11-17 15:06 ?1383次閱讀