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)要說明如何使用“work” 庫(kù)

Xilinx賽靈思官微 ? 來源:djl ? 作者:賽靈思 ? 2019-07-25 15:33 ? 次閱讀

VHDL的一個(gè)強(qiáng)大功能是用庫(kù)來組織RTL的不同部分。通過使用庫(kù),不同的設(shè)計(jì)人員可以做這個(gè)工程中自己負(fù)責(zé)的那部分工作,而不必?fù)?dān)心會(huì)在命名方面與其他設(shè)計(jì)師發(fā)生沖突。在例化期間,這可以通過手動(dòng)指定要使用的庫(kù)或者通過配置語句來完成。

例如,已經(jīng)在一個(gè)名為“my_lib1”的庫(kù)中創(chuàng)建并編譯了一個(gè)名為“bottom”的實(shí)體。

編譯到任何庫(kù)中的頂層可以輕松地通過直接實(shí)體例化來引用底層:

u0 : entity my_lib1.bottom port map (in1 => in1, out1 => out1);

通過采用上面的編碼方式,需要哪個(gè)版本的底層就顯而易見了?!癿y_lib1”庫(kù)中的版本是正確無誤的版本。

一個(gè)常見的誤解與何時(shí)使用名為“work”的庫(kù)有關(guān)。許多設(shè)計(jì)師將“work”用作庫(kù),假設(shè)它與其他庫(kù)一樣,是一個(gè)物理庫(kù)。但情況并非如此。名為“work”的庫(kù)在VHDL中的用法比較特殊。

它不是一個(gè)物理庫(kù),實(shí)際上它指的是“當(dāng)前庫(kù)”。

當(dāng)一個(gè)文件被編譯到一個(gè)特定的庫(kù)中,然后被告知從“work”中獲取邏輯時(shí),它不會(huì)在名為“work”的物理庫(kù)查找,而是會(huì)在例化的文件被編譯到的庫(kù)中查找。這一點(diǎn)可以通過幾個(gè)例子來展示。

實(shí)例 #1

在此示例中,有三個(gè)文件,top.vhd、bottom1.vhd和bottom2.vhd。 Top.vhd是設(shè)計(jì)中的頂層,例化了一個(gè)名為“bottom”的實(shí)體。底層的兩個(gè)文件都有一個(gè)名為“bottom”的實(shí)體。在bottom1.vhd中,有一個(gè)輸出是由一個(gè)通過反相器過驅(qū)動(dòng)的的輸出。在bottom2.vhd,中,輸出直接由輸入驅(qū)動(dòng)。

簡(jiǎn)要說明如何使用“work” 庫(kù)

頂層被編譯到名為y_lib1、bottom1.vhd的庫(kù)中(也在my_lib1庫(kù)中),而且,bottom2.vhd在名為my_lib2的庫(kù)里。

在頂層,例化看起來類似于以下內(nèi)容:

u0 : entity work.bottom port map (in1=> in1, out1 => out1);

查看詳細(xì)視圖,該示意圖如下所示:

簡(jiǎn)要說明如何使用“work” 庫(kù)

這正是我們期待看到的結(jié)果。更重要的是,當(dāng)使用相同的建立運(yùn)行仿真時(shí),波形圖如下例所示:

簡(jiǎn)要說明如何使用“work” 庫(kù)

接下來,如果top.vhd文件的庫(kù)從my_lib1轉(zhuǎn)換到my_lib2,則對(duì)詳細(xì)視圖所做的更改如下所示:

簡(jiǎn)要說明如何使用“work” 庫(kù)

并且,仿真波形圖也會(huì)發(fā)生變化:

簡(jiǎn)要說明如何使用“work” 庫(kù)

這正是我們預(yù)期的結(jié)果。因?yàn)閠op.vhd文件在my_lib2中,并且在實(shí)體例化中使用了“work”,所以它將從my_lib2中獲取底層。

示例 #2

此示例將顯示假設(shè)“work”是物理庫(kù)所帶來的危險(xiǎn)。這是與示例#1類似的測(cè)試。在此示例中,top.vhd和bottom1.vhd將被編譯到“my_lib1”庫(kù)中,bottom2.vhd將被編譯到名為“work”的庫(kù)中。

簡(jiǎn)要說明如何使用“work” 庫(kù)

與前面的示例一樣,頂層例化底部,如下所示:

u0: entity work.bottom port map (in1 => in1, out1 => out1)

這個(gè)設(shè)計(jì)的詳細(xì)視圖類似于以下示例:

簡(jiǎn)要說明如何使用“work” 庫(kù)

仿真如下所示:

簡(jiǎn)要說明如何使用“work” 庫(kù)

因此,即使bottom2.vhd已被編譯為一個(gè)名為“work”的物理庫(kù),并且頂層由“work”庫(kù)例化了底部,但該工具仍然會(huì)使用bottom1.vhd中與top.vhd編譯到同一個(gè)庫(kù)中的行為。

Vivado默認(rèn)庫(kù):

默認(rèn)情況下,將VHDL文件輸入Vivado工程時(shí),該工具會(huì)將這些文件放入一個(gè)名為“xil_defaultlib”的庫(kù)中。這樣做的原因是讓只使用庫(kù)的用戶能夠輕松地將舊的工程移植到VHDL中,同時(shí)還能幫助設(shè)置有更多組合結(jié)構(gòu)的用戶以恰當(dāng)?shù)姆绞皆赩ivado中對(duì)他們的工程進(jìn)行設(shè)置。

結(jié)論:

選擇VHDL文件的庫(kù)名時(shí)應(yīng)小心。雖然名為“work”的庫(kù)是許多工程公用的庫(kù)名,但該工具處理這個(gè)庫(kù)名的方式與處理其他庫(kù)名的方式略有不同。如果將頂層文件編譯到不同的庫(kù)中并引用“work”,那么它就不會(huì)從名為“work”的物理庫(kù)中獲取行為。如果這不是所期望的,就可能會(huì)導(dǎo)致混亂的行為。

我的建議是永遠(yuǎn)不要使用“work”庫(kù)。相反,在例化較低層時(shí),始終應(yīng)指定要使用的庫(kù)。

這樣做有點(diǎn)費(fèi)事,但通常會(huì)給你想要的行為。

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

    關(guān)注

    50

    文章

    4023

    瀏覽量

    133338
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    805

    瀏覽量

    66226
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TI官方BLE Bridge串口轉(zhuǎn)藍(lán)牙源碼+簡(jiǎn)要說明文檔

    TI官方BLE Bridge串口轉(zhuǎn)藍(lán)牙源碼+簡(jiǎn)要說明文檔
    發(fā)表于 11-03 09:39

    請(qǐng)問參與競(jìng)標(biāo)時(shí)應(yīng)該做什么類型的簡(jiǎn)要說明?

    參與競(jìng)標(biāo)時(shí),提示“請(qǐng)輸入您能夠完成任務(wù)的簡(jiǎn)要說明并且上傳相應(yīng)附件資料”,如貼主需要一個(gè)溫控開關(guān)系統(tǒng),“簡(jiǎn)要說明”是否為所需芯片,如何做出來等;附件又該是什么?現(xiàn)象?
    發(fā)表于 08-01 05:00

    熔絲位簡(jiǎn)要說明

    熔絲位簡(jiǎn)要說明熔絲位功能配置說明 熔絲低位CKDIV8時(shí)鐘8分頻0:時(shí)鐘8分頻 1:時(shí)鐘不分頻 CKOUT時(shí)鐘輸出0:系統(tǒng)時(shí)鐘輸出(PB0) 1:不輸出 SUT1選擇啟動(dòng)時(shí)間根據(jù)時(shí)鐘源選擇..
    發(fā)表于 07-21 07:29

    手機(jī)充電協(xié)議BC1.2簡(jiǎn)要說明

    手機(jī)充電協(xié)議BC1.2· 目前市面上各種手機(jī)充電器,在手機(jī)廠家宣傳時(shí)也會(huì)提到自己的充電器,各種快充??梢哉f消費(fèi)者也是各種蒙圈。為了讓大家不至于蒙圈,此文只限于科普。BC1.2協(xié)議要介紹手機(jī)的充電必須要說明
    發(fā)表于 09-14 08:40

    Socket API簡(jiǎn)要說明

    Socket API簡(jiǎn)要說明:創(chuàng)建套接字 ( socket ) int socket(int domain, int type ,int protocol);參數(shù)描述domain協(xié)議族類型type
    發(fā)表于 01-11 07:26

    簡(jiǎn)要說明四線SPI接口應(yīng)用中需要掌握的一些關(guān)鍵知識(shí)

    SPI,全稱 Serial Peripheral Interface ,即 串行外設(shè)接口 的意思,其作為一種同步、全雙工、主從模式通訊接口,廣泛應(yīng)用于各種片上微控制器與外設(shè)之間的通訊。本文簡(jiǎn)要說明
    發(fā)表于 01-21 14:37

    收銀程序安裝簡(jiǎn)要說明

    收銀程序安裝簡(jiǎn)要說明,感興趣的可以看看。
    發(fā)表于 02-29 16:21 ?1次下載

    接口技術(shù)-USB驅(qū)動(dòng)程序簡(jiǎn)要說明及應(yīng)用例子

    接口技術(shù)-USB驅(qū)動(dòng)程序簡(jiǎn)要說明及應(yīng)用例子,有興趣的同學(xué)可以下載學(xué)習(xí)
    發(fā)表于 04-25 18:24 ?0次下載

    交換機(jī)6000簡(jiǎn)要說明

    6000工業(yè)以太網(wǎng)交換機(jī)用戶手冊(cè)簡(jiǎn)要說明
    發(fā)表于 12-23 02:34 ?0次下載

    6000A-CQ1用戶手冊(cè)簡(jiǎn)要說明

    6000工業(yè)以太網(wǎng)交換機(jī)用戶手冊(cè)簡(jiǎn)要說明CQ1
    發(fā)表于 12-23 02:33 ?0次下載

    漢邦7000SDK V3.0.11.610開發(fā)軟件簡(jiǎn)要說明

    漢邦7000SDK V3.0.11.610開發(fā)軟件簡(jiǎn)要說明
    發(fā)表于 01-04 12:47 ?0次下載

    CreMedia7.2客戶端簡(jiǎn)要說明文檔

    CreMedia7.2客戶端簡(jiǎn)要說明文檔
    發(fā)表于 03-21 08:00 ?0次下載

    SL-DIY02-51單片機(jī)簡(jiǎn)要說明

    SL-DIY02-51單片機(jī)簡(jiǎn)要說明
    發(fā)表于 09-21 13:47 ?4次下載

    儲(chǔ)能連接器制造工藝的簡(jiǎn)要說明

    儲(chǔ)能連接器在生活中的很多地方都有使用。 汽車、電腦等電子設(shè)備都是儲(chǔ)能連接器的必備選擇。 很多人覺得儲(chǔ)能連接器種類太多,制造工藝應(yīng)該不一樣。事實(shí)上,儲(chǔ)能連接器的制造工藝基本相同,可分為沖壓、電鍍、注塑、組裝四種制造工藝。以下是儲(chǔ)能連接器生產(chǎn)商康瑞連接器廠家對(duì)儲(chǔ)能連接器四種制造工藝的簡(jiǎn)要說明
    的頭像 發(fā)表于 06-29 17:25 ?2448次閱讀

    通過解剖一個(gè)邊沿觸發(fā)器簡(jiǎn)要說明setup和hold產(chǎn)生原因

    在后仿真過程中經(jīng)常會(huì)遇到關(guān)于setup和hold violation的問題,但是關(guān)于setup和hold time的產(chǎn)生原因和由來很多人還比較朦朧,為此本文通過解剖一個(gè)邊沿觸發(fā)器簡(jiǎn)要說明setup和hold產(chǎn)生原因。
    的頭像 發(fā)表于 07-04 09:32 ?1525次閱讀
    通過解剖一個(gè)邊沿觸發(fā)器<b class='flag-5'>簡(jiǎn)要說明</b>setup和hold產(chǎn)生原因