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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

Verilog generate語句的類型

數(shù)字前端ic芯片設(shè)計 ? 來源:未知 ? 作者:李倩 ? 2018-03-16 14:34 ? 次閱讀

Verilog的generate語句能夠幫助我們寫出可配置可綜合的RTL,主要用于重復(fù)性實例化模塊或者有條件地實例化模塊。這篇文章將簡單回顧一下verilog generate語句。

Verilog generate語句的類型一

有兩種不同的generate語句結(jié)構(gòu)。

Generate loop能夠?qū)⒁欢未a例化多次,通過一個index變量來控制。

conditional generate語句能夠在多段代碼中選擇一段進行例化。Conditional generate包括了if-generate和case-generate兩種不同模式。

Verilog的generate語句在仿真/綜合的elaborate階段進行分析,這個步驟發(fā)生在HDL語言解析之后,在仿真/綜合之前。因此generate結(jié)構(gòu)中包含的所有表達式在elaborate的時候都要是確定的表達式,不能包含動態(tài)變量。比如,generate中的語句能受parameter影響,但不能被動態(tài)變量影響。

一個verilog generate模塊創(chuàng)建了一個新的層次,就像實例化了一個模塊一樣。

關(guān)鍵字generate和end generate(以及begin/end)實際上不是必須的,如果使用的話,那么他們就定義了一塊generate的區(qū)域,generate的區(qū)域只能存在于在module這個scope里。

generate loop一

Generate loop的語法和for loop很類似。Index變量要先用genvar關(guān)鍵字來定義,genvar所定義的index變量會被用在elaboration中。Genvar可以存在于generate region(由generate-endgenerate關(guān)鍵字來限定)之內(nèi)或之外。同一個genvar定義的index可以被用在多個generate loop中,只要這些loop沒有互相嵌套。

如果將generate loop展開,在每個generate loop instance中,都會創(chuàng)建一個隱含的localparam,其名字和類型與genvar所定義的index相同,其值就是當前的循環(huán)次數(shù)。這個localparam能夠用來控制生成代碼。

Generate loop所生成的模塊可以被命名也可以不被命名。如果被命名,那么將會生成以所給名字開頭的一個數(shù)組,每個數(shù)組元素是一個模塊hierarchy。有些工具對于未命名的generate loop會給予警告,因此最好將其命名。

下面的例子是一個使用verilog generate loop來生成的格雷碼->二進制碼的轉(zhuǎn)換器

另外一個來自verilog-2005 LRM的例子闡述了每個verilog generate loop是如何生成一個新的scope的。注意到wire t1,t2,t3都是在generate loop中被聲明的,每個loop iteration都創(chuàng)建了完全不沖突的三個t1,t2,t3。他們都被用于在每個不同的數(shù)組模塊中連接相應(yīng)的電路。并且注意到這些被實例化的xor,and的命名方式。

generate loop同樣能嵌套。只需要單一一個generate/endgenerate來包裹這些嵌套的generate loop。每個generate loop都建立一個新的scope。

if-generate一

Conditional if-generate會從一組互斥的generate block中最多選擇一個generate block。注意到這里說的是最多選擇一個,也有可能一個都不選。而這個判斷語句在elaborate的時候也必須是常量表達式。

與generate loop一樣,conditional if-generate可以命名也可以不命名,可以使用也可以不使用begin-end。它同樣會創(chuàng)建一個新的scope以及hierarchy層次。因為conditional generate選擇至多一個block的代碼,對于互斥的block code,在同一個if-generate結(jié)構(gòu)里可以有同樣的命名。這能夠幫助保留層次名,無論哪個block的代碼被選擇。而不同的generate結(jié)構(gòu)則一定要有不同的名字。

case-generate一

與if-generate類似。case-generate最多會從一組互斥的generate block中選擇一個generate block。它的用法和傳統(tǒng)的case語句一樣。

嵌套的 conditional generate block沒有用begin end來切割會被歸為單獨一個scope/hierarchy。這能夠避免在同一個module中創(chuàng)建沒變要的scope/hierarchy。下面的例子是一個嵌套conditional generate block的例子

generate結(jié)構(gòu)會選擇至多一個叫u1的generate block。而g1的hierarchcal名字是test.u1.g1。當嵌套if-generate 結(jié)構(gòu)的時候,else永遠屬于最近的if。注意到這里任何多余的begin-end會違反這個direct nest規(guī)則,從而生成新的hierarchy。

generate模塊命名一

推薦給generate construct命名來簡化層次索引。并且有些工具對于不命名的generate block會報錯。

如果不命名的話,首先,每個generate construct在一個scope中都被賦予了一個數(shù)字,從1開始。看其在rtl code中是第幾個出現(xiàn)的generate就被賦值為幾。這個數(shù)字對于命名和未命名的generate block都有。所有未命名的block都會被取一個叫g(shù)enblk【n】的名字,n就是被賦予的數(shù)字。

很明顯隨著RTL規(guī)則的改動這些未命名的generate construct的名字也會改變。這樣對于保證RTL層次化會有困難。因此建議總是對generate block進行命名。

小結(jié)一

Generate 結(jié)構(gòu)在創(chuàng)建可配置的RTL的時候很有用。Generate loop能夠讓語句實例化多次,通過index來控制。而conditional generate能夠選擇性地實例化語句。最重要的是要記得對generate construct進行命名,這能夠幫助簡化層次對象以及代碼維護。

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

    關(guān)注

    29

    文章

    1366

    瀏覽量

    111990

原文標題:Verilog——關(guān)于generate語句

文章出處:【微信號:ic_frontend,微信公眾號:數(shù)字前端ic芯片設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 1人收藏
  • 夏天的风-20141

評論

相關(guān)推薦
熱點推薦

Verilog之for語句

以前很少用for語句,以為是不可綜合的。在印象中好像只用循環(huán)生成(for...generate語句綜合過多個模塊。最近在仔細研讀《輕松成為設(shè)計高手——Verilog HDL使用精解》
發(fā)表于 08-13 14:59

Veriloggenerate if 語句如何用systemc實現(xiàn)?

Veriloggenerate if語句如何用systemc實現(xiàn)?例如:generateif (SIZE < 8)assign y = a & b & c;else
發(fā)表于 08-28 12:06

Veriloggenerate if語句如何用systemc實現(xiàn)?

1.Veriloggenerate if語句如何用systemc實現(xiàn)?例如:generateif (SIZE < 8)assign y = a & b & c;else
發(fā)表于 08-29 16:11

新手求解verilog 中的生成塊語句 的意思

verilog 中的 generate for 語句好理解,但是 generate if 和 generate case
發(fā)表于 12-21 12:44

【夢翼師兄今日分享】 generate語句塊的講解

的列舉就會變得很笨拙甚至是不可行的。C語言處理這種問題通常情況下會使用如for循環(huán)語句來完成多次的相同操作。而verilog 語言呢?同樣的為我們提供了generate語句塊來幫助我們
發(fā)表于 12-04 10:33

veriloggenerate語句的用法分享

generateverilog中的生成語句,當對矢量中的多個位進行重復(fù)操作時,或者當進行多個模塊的實例引用的重復(fù)操作時,或者根據(jù)參數(shù)的定義來確定程序中是否應(yīng)該包含某段Verilog
發(fā)表于 12-23 16:59

generate語句的基本概念與用法

生成語句GENERATE)是一種可以建立重復(fù)結(jié)構(gòu)或者是在多個模塊的表示形式之間進行選擇的語句。由于生成語句可以用來產(chǎn)生多個相同的結(jié)構(gòu),因此使用生成
的頭像 發(fā)表于 11-21 07:08 ?6473次閱讀

Verilog可綜合的循環(huán)語句

Verilog中提供了四種循環(huán)語句,可用于控制語句的執(zhí)行次數(shù),分別為:for,while,repeat,forever。其中,for,while,repeat是可綜合的,但循環(huán)的次數(shù)需要在編譯之前就確定,動態(tài)改變循環(huán)次數(shù)的
發(fā)表于 10-13 12:23 ?2w次閱讀

Verilog教程之Verilog HDL程序設(shè)計語句和描述方式

本文檔的主要內(nèi)容詳細介紹的是Verilog教程之Verilog HDL程序設(shè)計語句和描述方式。
發(fā)表于 12-09 11:24 ?47次下載
<b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b> HDL程序設(shè)計<b class='flag-5'>語句</b>和描述方式

verilog中的initial語句說明

解釋verilog HDL中的initial語句的用法。
發(fā)表于 05-31 09:11 ?0次下載

簡述Verilog HDL中阻塞語句和非阻塞語句的區(qū)別

? 在Verilog中有兩種類型的賦值語句:阻塞賦值語句(“=”)和非阻塞賦值語句(“=”)。正確地使用這兩種賦值
的頭像 發(fā)表于 12-02 18:24 ?6707次閱讀
簡述<b class='flag-5'>Verilog</b> HDL中阻塞<b class='flag-5'>語句</b>和非阻塞<b class='flag-5'>語句</b>的區(qū)別

Verilog語法之generate for、generate if、generate case

Verilog-2005中有3個generate 語句可以用來很方便地實現(xiàn)重復(fù)賦值和例化(generate for)或根據(jù)條件選擇性地進行編譯(ge
的頭像 發(fā)表于 12-28 15:21 ?3357次閱讀

Verilog中的If語句和case語句介紹

我們在上一篇文章中已經(jīng)看到了如何使用程序塊(例如 always 塊來編寫按順序執(zhí)行的 verilog 代碼。 我們還可以在程序塊中使用許多語句來控制在我們的verilog設(shè)計中信號賦值的方式
的頭像 發(fā)表于 05-11 15:37 ?5643次閱讀
<b class='flag-5'>Verilog</b>中的If<b class='flag-5'>語句</b>和case<b class='flag-5'>語句</b>介紹

如何使用參數(shù)化編寫可重用的verilog代碼

我們將介紹如何使用verilog參數(shù)和generate語句來編寫可重用的verilog 代碼。 與大多數(shù)編程語言一樣,我們應(yīng)該嘗試使盡可能多的代碼可重用。這使我們能夠減少未來項目
的頭像 發(fā)表于 05-11 15:59 ?1437次閱讀

Verilog常用的循環(huán)語句及用途

本文主要介紹verilog常用的循環(huán)語句,循環(huán)語句的用途,主要是可以多次執(zhí)行相同的代碼或邏輯。
的頭像 發(fā)表于 05-12 18:26 ?3219次閱讀
主站蜘蛛池模板: 啪啪激情婷婷久久婷婷色五月 | 日本熟妇乱妇熟色A片蜜桃 日本熟妇多毛XXXXX视频 | 久久亚洲A片COM人成A | 日本三级按摩推拿按摩 | 玉娇龙续集春雪瓶txt免费阅读 | 亚洲薄码区 | 99视频免费看 | 竹菊影视一区二区三区 | 办公室丝袜老师在线观看 | 灌饱娇嫩H将军公主最新章节 | 精品久久久爽爽久久久AV | 久久99精品久久久久久园产越南 | 成人免费视频网站www | 91av电影在线观看 | 邻家美姨在线观看全集免费 | 99久久精品毛片免费播放 | 久久日韩精品无码一区 | 国产亚洲精品看片在线观看 | 小骚妇BBBXXX| 在线观看成人免费视频 | 久久99精品国产自在自线 | 肉多的小说腐小说 | 日韩精品一卡二卡三卡四卡2021 | 春暖花开 性 欧洲 | 欧美日韩一区二区三区四区 | 久久精品美女 | 99视频国产在线 | 吃奶摸下的羞羞漫画 | 中文字幕va一区二区三区 | 麻豆AV久久无码精品九九 | CHINA末成年VIDEO学生 | 蜜桃传媒一区二区亚洲AV | 99久久国产综合精品网成人影院 | 亚洲色婷婷久久精品AV蜜桃久久 | 国产精品久久久久久人妻精品流 | 亚洲精品嫩草AV在线观看 | 亚洲 欧美 清纯 校园 另类 | 亚洲欧美自拍明星换脸 | 欧美日韩国产在线一区二区 | 精品久久久噜噜噜久久7 | 国产一区二区三区在线看片 |

電子發(fā)燒友

中國電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會員交流學(xué)習
  • 獲取您個性化的科技前沿技術(shù)信息
  • 參加活動獲取豐厚的禮品