专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

VHDL 库的使用

作者:佚名   来源:本站原创   点击数:  更新时间:2013年11月07日   【字体:


       当使用库时,需要说明使用的库名称,同时需要说明库中包集合的名称及范围;  每个实体都应独立进行库的说明;库的说明应该在实体之前;经过说明后,实体和结构体就可以自动调用库中的资源.
      首先说明总库,语句格式 library  库名,例如 :  library ieee;
      其次调用总库中的子库,用 use调取,格式:USE 库名范围(或项目名);    如use ieee.std_logic_1164.all。
      VHDL中库的主要种类:    IEEE库 、STD库 、ASIC库、 work库 、用户定义库 和IEEE库:   含有IEEE的标准包集合“STD_LOGIC_1164”以及一些大公司提供的包集合;使用前必须说明; 例: library ieee;  use ieee.std_logic_1164.all;  使用标准逻辑量的定义和运算; use ieee.std_logic_unsigned.all; 无符号数算术运算的定义; use ieee.std_logic_arith.all;  使用符号数算术运算的定义。
       STD库:  含有“STANDARD”包集合和“TEXTIO”包集合,使用前者时无需说明;
       ASIC库:  由各公司提供,存放与逻辑门一一对应的实体,用于ASIC设计的门级仿真,使用时需加以说明; 例  library altera; use altera.maxplus2.all;     library lpm;  use lpm.lpm_components.all;
       WORK库:  WORK库为现行作业库,位于当前使用时设计文件的指定保存目录;  WORK使用时通常无须说明;但在结构设计中进行元件的宏调用时需要说明; 例:use work.all;
      用户定义库:  由用户自定义生成,使用时需说明(指定库所在的路径);
      package  包集合:用于罗列VHDL语言中使用的类型定义、信号定义、常数定义、元件定义、函数定义和过程定义等(类似于C语言中的include语句),方便不同模块的设计中公共定义的共享。
      数字电路设计中经常使用的包集合: ieee.std_logic_1164 .all;逻辑量的定义 ieee.std_logic_arith.all; 数据转换,逻辑判断 ieee.std_logic_unsigned ;算术运算  std.textio ;
     文本数据输入/输出格式     包集合在使用前必须采用use语句进行说明(在设计程序的最前面);  包集合可以由用户自定义;   包的结构与定义:(用户自定义的包集合)    包集合标题+(包集合体) 包集合标题:  package 包集合名 is        说明语句;   (只有名称)  end 包集合名;      包集合体:  package body包集合名 is        说明语句;  (完整定义)  end 包集合名;  例:( 函数取自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库中,使用时可采用下列语句调用   use work.upac.all;   configuration  配置  在一个实体内可以编写多种不同的构造体,通过配置语句来进行选择; 配置语句格式:    configuration 配置名 of 实体名 is      for 选择的构造体名      end for;   end 配置名;  此语句可以为设计增加更大的灵活性,可以对不同构造体进行比较。    
 

关闭窗口

相关文章