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

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

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

簡(jiǎn)述HDL中循環(huán)語(yǔ)句的可綜合性

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

在HDL的循環(huán)語(yǔ)句中,在指定的循環(huán)過(guò)程中,其代碼塊(循環(huán)體)輸出同名信號(hào),則構(gòu)成順序-循環(huán)(SAS-LOOP),其代碼塊(循環(huán)體)輸出不同名信號(hào),則構(gòu)成并發(fā)-循環(huán)(CAS-LOOP)。

包括循環(huán)語(yǔ)句(含循環(huán)體)組成的代碼塊,EDA稱為循環(huán)框架(Loop Frame)。

5ca8a4e0-b2a3-11eb-bf61-12bb97331649.png

在這里,HDL循環(huán)語(yǔ)句與算法語(yǔ)言的循環(huán)語(yǔ)句的差異:

1.HDL的循環(huán)變量i是以常量進(jìn)入循環(huán)體。算法語(yǔ)言則是以變量進(jìn)入循環(huán)體。

2.HDL的循環(huán)體并不被循環(huán)執(zhí)行,而是被重復(fù)描述(多次重復(fù)綜合),從而實(shí)現(xiàn)建模的效率。算法語(yǔ)言的循環(huán)體則一定是被循環(huán)執(zhí)行。

循環(huán)語(yǔ)句可綜合性的“數(shù)學(xué)歸納法”

數(shù)學(xué)歸納法常用于證明數(shù)學(xué)序列,它的要點(diǎn)是:

1.首先證明序列的基數(shù)成立

2.假設(shè)序列為N時(shí)成立

3.證明序列的N+1成立

HDL的循環(huán)語(yǔ)句是否可綜合,可以借用這個(gè)方法:

1.首先將循環(huán)語(yǔ)句的循環(huán)次數(shù)修改為一個(gè)很小的基數(shù)。由于在很小的基數(shù)時(shí),其電路一定可以用結(jié)構(gòu)化方法直接描述(不使用循環(huán)語(yǔ)句)

2.將基數(shù)加1,仍然可以是結(jié)構(gòu)化描述,并加以驗(yàn)證

3.將基數(shù)修改為L(zhǎng)PM參數(shù)可定制,使用循環(huán)語(yǔ)句描述,并加以驗(yàn)證

4.修改LPM定制參數(shù),將其加1,觀察其綜合結(jié)果(驗(yàn)證)

通過(guò)以上步驟,可以證明所編寫的HDL循環(huán)語(yǔ)句是可綜合的,并且具有很高的綜合效率。

循環(huán)語(yǔ)句設(shè)計(jì)例子:具有64個(gè)輸入端口的8位異或電路:

5cafbeb0-b2a3-11eb-bf61-12bb97331649.png

使用“數(shù)學(xué)歸納法”為其使用循環(huán)語(yǔ)句建模和驗(yàn)證:

1.將基數(shù)(端口數(shù))設(shè)定為4,得到:

5cd11a38-b2a3-11eb-bf61-12bb97331649.png

RTL視圖(驗(yàn)證過(guò)程):

5ce87926-b2a3-11eb-bf61-12bb97331649.png

2.將基數(shù)加1,這里將端口數(shù)修改為8,得到:

5d04fccc-b2a3-11eb-bf61-12bb97331649.png

RTL視圖(驗(yàn)證過(guò)程):

5d4cd948-b2a3-11eb-bf61-12bb97331649.png

修改為端口數(shù)可定制的LPM模型

其RTL視圖:

5d762dc0-b2a3-11eb-bf61-12bb97331649.png

現(xiàn)在將LPM的基數(shù)+1(修改端口指數(shù)PortNum_Power為4)

其RTL視圖:

5db63e60-b2a3-11eb-bf61-12bb97331649.png

以上就是循環(huán)語(yǔ)句構(gòu)成二叉樹異或門的過(guò)程,為了得到最終結(jié)果(64端口),將端口指數(shù)PortNum_Power=6,得到:

5dd86dbe-b2a3-11eb-bf61-12bb97331649.png

這里由于端口數(shù)過(guò)多,EDA的自動(dòng)繪圖需要中間過(guò)程,故首層僅展示如上部分。

循環(huán)語(yǔ)句可綜合性的設(shè)計(jì)例子二:同步計(jì)數(shù)器的結(jié)構(gòu)化設(shè)計(jì)

1.頂層框圖

5e07f64c-b2a3-11eb-bf61-12bb97331649.png

2.代碼和代碼模型分析

5e21c7b6-b2a3-11eb-bf61-12bb97331649.png

其RTL視圖:

615056d2-b2a3-11eb-bf61-12bb97331649.png

以上視圖中,當(dāng)rst_n=0時(shí),多路器指向常數(shù)0;當(dāng)rst_n=1時(shí),多路器指向加法器的輸出;注意加法器是寄存器的輸出q與1相加。

根據(jù)代碼模型和RTL視圖,可以得到等效節(jié)點(diǎn)模型:

6172da40-b2a3-11eb-bf61-12bb97331649.png

若將復(fù)位信號(hào)的條件語(yǔ)句描述屏蔽,則得到RTL視圖更接近節(jié)點(diǎn)等效:

618b06ba-b2a3-11eb-bf61-12bb97331649.png

3.計(jì)數(shù)器的數(shù)學(xué)模型

在RTL視圖中,計(jì)數(shù)器有限自動(dòng)機(jī)的加法器執(zhí)行q+1(的描述),其真實(shí)的電路是得到優(yōu)化和簡(jiǎn)化的一個(gè)數(shù)學(xué)模型:

若Q序列表示為:

時(shí)鐘離散時(shí)刻,Q的變化為:

觀察表格,能夠發(fā)現(xiàn)Q的每一個(gè)比特位翻轉(zhuǎn)的規(guī)律:

()

(, )

(, )

……

(, )

將觸發(fā)翻轉(zhuǎn)的條件(前級(jí)全部為1)采用級(jí)聯(lián)以減少面積:

(,)

(, )

(, )

……

(, )

式中:

…….

注意位翻轉(zhuǎn)的一般表達(dá)式:(, )

其真值表為:

其SOP為:

代入序列中,得到:

……

根據(jù)數(shù)學(xué)模型得到的代碼模型為:

61a7654e-b2a3-11eb-bf61-12bb97331649.png

編輯:jq

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

    關(guān)注

    71

    文章

    2660

    瀏覽量

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

    關(guān)注

    8

    文章

    324

    瀏覽量

    47238
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    384

    瀏覽量

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

    關(guān)注

    30

    文章

    4674

    瀏覽量

    67816
  • LPM
    LPM
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    9928

原文標(biāo)題:FPGA學(xué)習(xí):循環(huán)語(yǔ)句的可綜合性

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一次使用無(wú)菌腦積水分流器綜合性測(cè)試儀

    一次使用無(wú)菌腦積水分流器綜合性測(cè)試儀 描述 一次使用無(wú)菌腦積水分流器是一種用于治療腦積水的醫(yī)療器械。腦積水是指在顱內(nèi)或腦脊液循環(huán)系統(tǒng)
    的頭像 發(fā)表于 04-06 09:13 ?237次閱讀
    一次<b class='flag-5'>性</b>使用無(wú)菌腦積水分流器<b class='flag-5'>綜合性</b>測(cè)試儀

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

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

    assign語(yǔ)句和always語(yǔ)句的用法

    的用法和功能。 一、Assign語(yǔ)句 Assign語(yǔ)句的定義和語(yǔ)法 Assign語(yǔ)句用于在HDL連續(xù)賦值,它允許在設(shè)計(jì)
    的頭像 發(fā)表于 02-22 16:24 ?1648次閱讀

    verilogfor循環(huán)是串行執(zhí)行還是并行執(zhí)行

    的for循環(huán)也是并行執(zhí)行的。 Verilog的for循環(huán)可以用來(lái)實(shí)現(xiàn)重復(fù)的操作,例如在一個(gè)時(shí)鐘周期中對(duì)多個(gè)電路進(jìn)行操作。在循環(huán)內(nèi)部,多個(gè)語(yǔ)句
    的頭像 發(fā)表于 02-22 16:06 ?2187次閱讀

    arduino如何停止loop循環(huán)

    退出這個(gè)循環(huán)。本文將詳細(xì)介紹如何在Arduino停止loop循環(huán)。 在Arduino,可以通過(guò)使用一個(gè)布爾變量或條件語(yǔ)句來(lái)實(shí)現(xiàn)停止loo
    的頭像 發(fā)表于 02-14 16:24 ?3354次閱讀

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

    單片機(jī)的if語(yǔ)句是一種條件語(yǔ)句,用于根據(jù)不同的條件執(zhí)行不同的代碼塊。在程序執(zhí)行過(guò)程,條件語(yǔ)句用來(lái)決定是否執(zhí)行特定的代碼段。在單片機(jī)編程
    的頭像 發(fā)表于 01-05 14:04 ?1298次閱讀

    單片機(jī)for語(yǔ)句的運(yùn)用

    單片機(jī)的for語(yǔ)句是一種常見的循環(huán)控制結(jié)構(gòu),用于重復(fù)執(zhí)行一段代碼塊,可以簡(jiǎn)化程序的編寫和減少代碼量。本文將詳細(xì)介紹單片機(jī)for語(yǔ)句的運(yùn)用
    的頭像 發(fā)表于 01-05 14:02 ?1606次閱讀

    java的switch語(yǔ)句 case的取值

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

    python怎么設(shè)置循環(huán)次數(shù)

    在Python,可以使用循環(huán)語(yǔ)句來(lái)重復(fù)執(zhí)行一段代碼多次。要設(shè)置循環(huán)次數(shù),可以使用循環(huán)的計(jì)數(shù)器來(lái)控制循環(huán)
    的頭像 發(fā)表于 11-23 15:50 ?3924次閱讀

    C語(yǔ)言的break轉(zhuǎn)移語(yǔ)句講解

    C語(yǔ)言的break轉(zhuǎn)移語(yǔ)句是一種用于跳出循環(huán)或者switch語(yǔ)句的控制結(jié)構(gòu)。它的作用是提前結(jié)束循環(huán)或者switch語(yǔ)句,從而避免不必要的計(jì)算
    的頭像 發(fā)表于 11-22 15:34 ?543次閱讀
    C語(yǔ)言的break轉(zhuǎn)移<b class='flag-5'>語(yǔ)句</b>講解

    c語(yǔ)言在while嵌套if循環(huán)

    C語(yǔ)言是一種廣泛使用的面向過(guò)程編程語(yǔ)言,它提供了許多控制結(jié)構(gòu)來(lái)幫助程序員實(shí)現(xiàn)復(fù)雜的邏輯和流程控制。其中,while循環(huán)和if語(yǔ)句是非常常見和重要的控制結(jié)構(gòu)。本文將詳細(xì)介紹C語(yǔ)言中在while循環(huán)
    的頭像 發(fā)表于 11-22 10:09 ?3914次閱讀

    C語(yǔ)言循環(huán)結(jié)構(gòu)的使用方法

    詳細(xì)介紹了C語(yǔ)言while循環(huán)結(jié)構(gòu)、do-while循環(huán)結(jié)構(gòu)、for循環(huán)結(jié)構(gòu)、循環(huán)退出語(yǔ)句的語(yǔ)法和使用方法。
    發(fā)表于 11-02 11:26 ?1174次閱讀
    C語(yǔ)言<b class='flag-5'>循環(huán)</b>結(jié)構(gòu)的使用方法

    基于智能電網(wǎng)的綜合通信系統(tǒng)簡(jiǎn)述

    電子發(fā)燒友網(wǎng)站提供《基于智能電網(wǎng)的綜合通信系統(tǒng)簡(jiǎn)述.pdf》資料免費(fèi)下載
    發(fā)表于 10-26 11:43 ?0次下載
    基于智能電網(wǎng)的<b class='flag-5'>綜合</b>通信系統(tǒng)<b class='flag-5'>簡(jiǎn)述</b>

    如何評(píng)估所選購(gòu)焊錫膏綜合性能的優(yōu)劣?

    簡(jiǎn)要分享如何評(píng)估所選購(gòu)焊錫膏綜合性能的優(yōu)劣?
    的頭像 發(fā)表于 10-23 09:08 ?504次閱讀

    Verilog:for循環(huán)綜合實(shí)現(xiàn)

    采用for循環(huán)語(yǔ)句,逐個(gè)bit位判斷是否為1,為1則累加,否則保持不變,最終輸出輸入信號(hào)1的數(shù)量。
    的頭像 發(fā)表于 10-09 16:31 ?2605次閱讀
    Verilog:for<b class='flag-5'>循環(huán)</b>的<b class='flag-5'>綜合</b>實(shí)現(xiàn)