• VHDL学习札记:library and Package


    

    参考: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语句把头文件(申明变量等)加进设计文件中,以便使用其中的模块及变量。

    
  • 相关阅读:
    springboot获取application.yml中的配置信息
    springboot+mybatis整合(单元测试,异常处理,日志管理,AOP)
    最近工作中的一些教训
    SAP BADI的“多次使用”(multiple use)
    SAP CRM 忠诚度相关表的关系图
    一个噩梦
    i.s.h.med Enhancement for cancelling an appointment
    一个冷门语言开发者的2016年总结和2017年目标
    装机的几个误区
    关于BAPI_PATIENT_CREATE(病患主数据创建)
  • 原文地址:https://www.cnblogs.com/xiabodan/p/4038594.html
Copyright © 2020-2023  润新知