當(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)行比較。