参考:http://www.cnblogs.com/garylee/archive/2012/11/16/2773596.htmlhttp://

http://forums.xilinx.com/t5/High-Level-Synthesis-HLS/Getting-from-HLS-RTL-to-implementation-through-a-Tcl-script/td-p/368835

开发环境:VHDL, Leon3, Quartus

应用场合:在VHDL设计文件中,常见到如下代码出现在首段,作为类似头文件的作用(例如Verilog中的include),本文阐述的是这段语句如何在工程中使用:

 1 library ieee;
2 use ieee.std_logic_1164.all;
3
4 --Leon库
5 library grlib;
6 use grlib.amba.all;
7 use grlib.stdlib.all;
8 library techmap;
9 use techmap.gencomp.all;
10 library gaisler;
11 use gaisler.memctrl.all;
12 use gaisler.leon3.all;
13 use gaisler.uart.all;
14 use gaisler.misc.all;
15 use gaisler.jtag.all;
16 library esa;
17 use esa.memoryctrl.all;
18 use work.config.all;
19
20 -- 用户自定义库
21 library rcq;
22 use rcq.seg.all;

1. library

例如:library grlib

则系统首先在项目文件中寻找相关的文件路径(查看是否有该文件名),例如项目中文件有:

当搜素到有grlib时,会把grlib申明为一个库,把grlib目录下的文件当作库中的文件。

2. Package



当申明了库grlib后,一般会有:

use grlib.amba.all;

其中amba是Package,所以能被调用。amba.vhd部分代码如下:

 1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
4 -- pragma translate_off
5 use std.textio.all;
6 -- pragma translate_on
7 library grlib;
8 use grlib.config.all;
9 use grlib.stdlib.all;
10
11 package amba is
12
13
14 constant CORE_ACDM : integer := CFG_AHB_ACDM;
15
16 constant NAHBMST : integer := 16; -- maximum AHB masters
17 constant NAHBSLV : integer := 16; -- maximum AHB slaves
18 constant NAPBSLV : integer := 16; -- maximum APB slaves
19 constant NAHBIRQ : integer := 32; -- maximum interrupts
20 constant NAHBAMR : integer := 4; -- maximum address

由于申明了amba为package,因此能通过use grlib.amba.all来调用amba.vhd文件,使用其内部申明的变量。

3. 用户自定义库



那用户如何把自己的文件作为库添加到工程里面呢?步骤如下:

1) 用户编写VHDL设计代码,然后在Quartus里面把文件导入至工程中,如下:

其中seg.vhd申明了seg为Package,以便调用

1 package seg is
2
3 -- Design Code
4
5 end package;

2)在工程顶层文件leon3mp.vhd中,申明如下代码:

1 -- 用户自定义库
2 library rcq; //定义了库rcq,系统查找项目中的目录
3 use rcq.seg.all; //调用了rcq目录包含的seg(Package),则相当于
4 //include了seq.vhd文件

这样,通过library及use语句把头文件(申明变量等)加进设计文件中,以便使用其中的模块及变量。



VHDL学习札记:library and Package的更多相关文章

  1. BITED-Windows8应用开发学习札记之二:Win8应用常用视图设计

    感觉自我表述能力有欠缺,技术也不够硬,所以之后的Windows8应用开发学习札记的文章就偏向于一些我认为较难的地方和重点了多有抱歉. 上节课是入门,这节课就已经开始进行视图设计了. Windows应用 ...

  2. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  3. SQL菜鸟学习札记(一)

    刚开始学SQL,从最基础的语句开始写,用一个LOL数据库做实验.目前使用的工具是MySQL Workbench,感觉比较顺手,界面没花多久时间就读懂的差不多了,所以目前就使用这个工具来做SQL的学习了 ...

  4. java学习札记

    java学习札记 0x0 学习原因  本来打算大三再去跟着课程去学习java的,但是现在题目越来越偏向java,所以迫于无奈开启了java的学习篇章,同时也正好写个笔记总结下自己学习一门语言的流程. ...

  5. Masonry学习札记

    Masnory学习札记 在之前的文章里有草草提到过Masonry自动布局,可这么重要第三方布局框架的怎么可以怎么随便带过呢!昨天在完成页面的时候刚好遇到了被Masorny功能惊叹的部分,所以趁热打铁写 ...

  6. Java 学习札记(三)免安装版TomCat中tomcat6w.exe的运行

    1.使用环境 很多时候我们用的是官网的解压免安装版的Tomcat,相比安装Tomcat除了少了安装步骤以外还少了tomcat6w.exe运行所需要的环境变量,所以一般Java开发免安装版的已经足够使用 ...

  7. Library Publication 时遇到 "more than one library with package name" 错误的解决方法

    Library Publication 是 Gradle 在0.9.0 时增加的一个新特性,它的作用是让Lib也能发布不同的版本 在这之前,Lib只能发布release版本,你的项目中依赖的所有Lib ...

  8. Python入门之面向对象module,library,package之间区别

    背景 Python中有一些基本的名词,很多人,尤其是一些初学者,可能听着就很晕. 此处,简单总结一下,module,library,package之间的大概区别. Python中的module的简介 ...

  9. 2.2.1 用户态、内核态的形成 -《zobolの操作系统学习札记》

    内核态的出现,让计算机系统的权力向操作系统高度集中了. 操作系统分出内核态和用户态,就是为了进行不同等级的权限管理, 从而更好的适应多用户多任务并发的工作环境. 用户态和内核态的来源 在早期的单进程单 ...

随机推荐

  1. Maven内置隐式变量(转)

    Maven提供了三个隐式的变量可以用来访问环境变量,POM信息,和Maven Settings env env变量,暴露了你操作系统或者shell的环境变量.便 如在Maven POM中一个对${en ...

  2. java多线程之计算数量

    package Thread.Abort; import java.util.ArrayList; import java.util.List; import java.util.Random; im ...

  3. Ubuntu设置环境变量并立即生效

    Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效. 修改用户环境变量 用户环境变量通常被存储在下面的文件中: ...

  4. ThinkPHP CURD返回结果参考

    ThinkPHP CURD返回结果参考: 1)查询$table->find() ##返回一条记录,是一个关联数组,是一维数组.$table->select() ##返回第一维是索引数组,第 ...

  5. [Flex] PopUpButton系列——CornerRadius的运用

    <?xml version="1.0" encoding="utf-8"?><!--设置主按钮圆角半径 PopUpButtonCornerRa ...

  6. java的新窗体

    1.JFrame窗体 jf.setSize(200, 150);        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  ...

  7. hbase的regionserver宕机

    错误日志: regionserver.HRegionServer: Failed deleting my ephemeral node zookeeper.RecoverableZooKeeper: ...

  8. T4 assembly

    In a T4 template the executing assembly is not yours but one from the T4 engine. To access types fro ...

  9. OC基础(11)

    构造方法 自定义构造方法 继承中的自定义构造方法 自定义类工厂方法 *:first-child { margin-top: 0 !important; } body > *:last-child ...

  10. Problem 1274 - 可怜的lpx

    Problem 1274 - 可怜的lpx Time Limit: 1000MS   Memory Limit: 65536KB    Description 可怜的lpx终于在别人的帮助下追上了aq ...