VHDL中的资源库和包集合课件.ppt

上传人:小飞机 文档编号:3726772 上传时间:2023-03-17 格式:PPT 页数:28 大小:144KB
返回 下载 相关 举报
VHDL中的资源库和包集合课件.ppt_第1页
第1页 / 共28页
VHDL中的资源库和包集合课件.ppt_第2页
第2页 / 共28页
VHDL中的资源库和包集合课件.ppt_第3页
第3页 / 共28页
VHDL中的资源库和包集合课件.ppt_第4页
第4页 / 共28页
VHDL中的资源库和包集合课件.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《VHDL中的资源库和包集合课件.ppt》由会员分享,可在线阅读,更多相关《VHDL中的资源库和包集合课件.ppt(28页珍藏版)》请在三一办公上搜索。

1、VHDL中的资源:库和包集合,Library 库编译后数据的集合,存放包集合定义、实体定义、构造体定义和配置定义,其功能相当于其他操作系统中的目录,经过说明后,设计中就可以使用库中的数据,实现共享;,库的使用,当使用库时,需要说明使用的库名称,同时需要说明库中包集合的名称及范围;每个实体都应独立进行库的说明;库的说明应该在实体之前;经过说明后,实体和结构体就可以自动调用库中的资源;,库的使用,库说明语句格式library 库名;use 库名.包集合名.范围(或项目名);例:library ieee;use ieee.std_logic_1164.all;,库的主要种类,ieee库 std库 w

2、ork库 用户定义库ASIC库,ieee库,含有IEEE的标准包集合“std_logic_1164”以及一些大公司提供的包集合;使用前必须进行说明;例:library ieee;,ieee库中的重要包集合,std_logic_1164:定义了std_logic数据类型及相应运算;std_logic_arith:定义了signed和unsigned数据类型、相应运算和相关类型转换函数;std_logic_signed与std_logic_unsigned:定义了一些函数,可以使std_logic_vector类型被当作符号数或无符号数一样进行运算。,std库,VHDL标准所含的资源库,含有“st

3、andard”包集合和“textio”包集合,对所有预定义的数据类型、运算规则、函数和语法进行表达;使用standard”包集合时无需说明;,work库与用户定义库,work库:work库为当前设计文件的保存目录;work库使用时通常无须说明;但在结构设计中进行元件的宏调用时需要说明;例:use work.all;用户定义库:由用户自定义生成,使用时需说明(指定库所在的路径);,ASIC库,由各公司提供,存放与逻辑门一一对应的实体,用于ASIC设计的门级仿真,使用时需加以说明;例:library altera;use altera.maxplus2.all;library lpm;use lp

4、m.lpm_components.all;,包集合:package,用于保存VHDL语言中经常使用的类型定义、信号定义、常数定义、元件定义、函数定义和过程定义等(类似于C语言中的include语句),方便不同模块的设计中公共定义的共享;包集合在使用前必须采用use语句进行说明(在设计程序的最前面);包集合内容可以由用户自行定义;,包集合的定义与结构,package 包集合名 is说明语句;(只有名称)end 包集合名;package body包集合名 is说明语句;(完整定义)end 包集合名;,包集合的简单定义,library ieee;use ieee.std_logic_1164.all

5、;packge upac isconstant k:integer:=4;subtype cpu_bus is std_logic_vector(k-1downto 0);end upac;,包集合的详细定义,library ieee;use ieee.std_logic_1164.all;packge upac isconstant k:integer:=4;subtype cpu_bus is std_logic_vector(k-1downto 0);function conv_integer(x:std_logic_vector)return integer;end upac;,包集合

6、的详细定义,packge body upac isfunction conv_integer(x:std_logic_vector)return integer isvariable result:integer;begin result:=0;for I in xrange 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;,包集合的存放与调用,用

7、户自行编写的包集合将自动存放于WORK库中,使用时可采用下列语句调用:use work.upac.all;也可以选择特定的用户库进行存放和调用。,包集合的程序实例:说明部分,package and_pkg is procedure p_and(a,b:in bit;signal c:out bit);-过程说明 function f_and(a,b:bit)return bit;-函数说明end;,包集合的程序实例:执行部分,package body and_pkg is-过程的完整编程 procedure p_and(a,b:in bit;signal c:out bit)is begin

8、c=a and b;end;-函数的完整编程function f_and(a,b:bit)return bit is begin return(a and b);end;end;,包集合的程序实例:调用方式,entity f is port(x,y:in bit;s,z:out bit:=0);end;use work.and_pkg.all;-包集合的调用architecture str of f is begin u1:p_and(x,y,s);-过程调用 z=f_and(x,y);-函数调用end str;,配置:configuration,在一个实体内可以编写多种不同的构造体,通过配置

9、语句来进行选择;配置语句格式:configuration 配置名 of 实体名 isfor 选择的构造体名end for;end 配置名;此语句可以为设计增加更大的灵活性,可以对不同构造体进行比较。,关于配置使用的一个例子,entity an2 is port(a1,a2:in bit;y:out bit);end;architecture dat of an2 is begin y=a1 and a2;end;entity xr2 is port(x1,x2:in bit;y:out bit);end;architecture dat of xr2 is begin y=x1 xor x2;

10、end;-上述程序分别定义了2个2输入的器件;,关于配置使用的一个例子,entity half_adder is port(x,y:in bit;sum,cout:out bit);end;architecture netlist of half_adder is use work.all;component mx port(a,b:in bit;z:out bit);end component;-可以采用元件的抽象定义;component ma port(a,b:in bit;z:out bit);end component;for g1:mx use entity xr2(dat)port

11、(x1=a,x2=b,y=z);-对mx,采用xr2元件;end;-程序中使用了2个2输入器件,mx采用xr2,ma未指定;,关于配置使用的一个例子,begin g1:mx port map(x,y,sum);-已经有具体元件定义;g2:ma port map(x,y,cout);-仍然为抽象元件定义;end;,关于配置使用的一个例子,configuration c1 of half_adder isuse work.all;for netlist for g2:ma use entity an2(dat)port(a1=a,a2=b,y=z);-为ma补充定义,采用an2元件;end for

12、;end for;end;,VHDL的属性语句,属性语句可以从一个信号或变量中提取相关信息,可以针对类型、信号、函数、数值和范围得出相应的结果;属性语句通常在程序中用于过程执行的判断;主要在程序的仿真调试中使用,多数属性语句不可综合;,VHDL的典型属性语句,sevent 检测信号发生变化时给出true;sactive 检测信号有效时给出true;slast_value 给出信号上一次变化之前的值;tleft 提取类型最左边的元素;thigh 提取类型中最大的元素;aleft 提取数组最左边的元素;alength 给出数组的长度;,自定义属性语句,可以通过下述方式自行定义属性:attribut

13、e 属性名称:属性的数据类型;attribute 属性名称 of 数据对象:对象类型 is 对象值;例:attribute syn:boolean;attribute syn of clk:signal is true;p=clk syn;-将属性取值赋值给信号量;,仿真调试过程使用的典型语句,断言与报告语句:assert/report用于将仿真调试中的问题表现出来,不可综合,不消耗硬件资源。语法格式:assert conditionreport messageseverity severity_level;,仿真调试过程使用的典型语句,例:检测两个数据的位宽是否一致:assert alength=blengthreport Error:data length are not sameseverity failure;错误等级是一种预定义类型,包括4个元素:(note,warning,error,failure),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号