專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

VHDL 庫的使用

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年11月07日   【字體:


       當(dāng)使用庫時,需要說明使用的庫名稱,同時需要說明庫中包集合的名稱及范圍;  每個實體都應(yīng)獨立進(jìn)行庫的說明;庫的說明應(yīng)該在實體之前;經(jīng)過說明后,實體和結(jié)構(gòu)體就可以自動調(diào)用庫中的資源.
      首先說明總庫,語句格式 library  庫名,例如 :  library ieee;
      其次調(diào)用總庫中的子庫,用 use調(diào)取,格式:USE 庫名范圍(或項目名);    如use ieee.std_logic_1164.all。
      VHDL中庫的主要種類:    IEEE庫 、STD庫 、ASIC庫、 work庫 、用戶定義庫 和IEEE庫:   含有IEEE的標(biāo)準(zhǔn)包集合“STD_LOGIC_1164”以及一些大公司提供的包集合;使用前必須說明; 例: library ieee;  use ieee.std_logic_1164.all;  使用標(biāo)準(zhǔn)邏輯量的定義和運(yùn)算; use ieee.std_logic_unsigned.all; 無符號數(shù)算術(shù)運(yùn)算的定義; use ieee.std_logic_arith.all;  使用符號數(shù)算術(shù)運(yùn)算的定義。
       STD庫:  含有“STANDARD”包集合和“TEXTIO”包集合,使用前者時無需說明;
       ASIC庫:  由各公司提供,存放與邏輯門一一對應(yīng)的實體,用于ASIC設(shè)計的門級仿真,使用時需加以說明; 例  library altera; use altera.maxplus2.all;     library lpm;  use lpm.lpm_components.all;
       WORK庫:  WORK庫為現(xiàn)行作業(yè)庫,位于當(dāng)前使用時設(shè)計文件的指定保存目錄;  WORK使用時通常無須說明;但在結(jié)構(gòu)設(shè)計中進(jìn)行元件的宏調(diào)用時需要說明; 例:use work.all;
      用戶定義庫:  由用戶自定義生成,使用時需說明(指定庫所在的路徑);
      package  包集合:用于羅列VHDL語言中使用的類型定義、信號定義、常數(shù)定義、元件定義、函數(shù)定義和過程定義等(類似于C語言中的include語句),方便不同模塊的設(shè)計中公共定義的共享。
      數(shù)字電路設(shè)計中經(jīng)常使用的包集合: ieee.std_logic_1164 .all;邏輯量的定義 ieee.std_logic_arith.all; 數(shù)據(jù)轉(zhuǎn)換,邏輯判斷 ieee.std_logic_unsigned ;算術(shù)運(yùn)算  std.textio ;
     文本數(shù)據(jù)輸入/輸出格式     包集合在使用前必須采用use語句進(jìn)行說明(在設(shè)計程序的最前面);  包集合可以由用戶自定義;   包的結(jié)構(gòu)與定義:(用戶自定義的包集合)    包集合標(biāo)題+(包集合體) 包集合標(biāo)題:  package 包集合名 is        說明語句;   (只有名稱)  end 包集合名;      包集合體:  package body包集合名 is        說明語句;  (完整定義)  end 包集合名;  例:( 函數(shù)取自p.279 表4-38 ) library ieee;  use ieee.std_logic_1164.all; packge upac is  constant k: integer := 4;  subtype cpu_bus is std_logic_vector(k-1downto 0); function conv_integer (x:std_logic_vector) return integer; end upac;    packge body upac is  function conv_integer (x: std_logic_vector) return integer is variable result: integer; begin    result := 0;     for I in x'range loop     result :=result*2;     case x(i) is      when '0'|'L' => null;      when '1'|'H' => result := result+1;      when others   => null;     end case;    end loop;    return result;  end conv_integer; end upac;  用戶自行編寫的包集合將自動存放于WORK庫中,使用時可采用下列語句調(diào)用   use work.upac.all;   configuration  配置  在一個實體內(nèi)可以編寫多種不同的構(gòu)造體,通過配置語句來進(jìn)行選擇; 配置語句格式:    configuration 配置名 of 實體名 is      for 選擇的構(gòu)造體名      end for;   end 配置名;  此語句可以為設(shè)計增加更大的靈活性,可以對不同構(gòu)造體進(jìn)行比較。    
 

關(guān)閉窗口

相關(guān)文章