在modelsim下建立VHDL库

在modelsim下建立VHDL库,第1张

VHDL 语言一般会调用各种库( library ),这些库包括用户自定义库、其他 EDA 软件下的库,比如 altera 、 synopsys 等 EDA 软件下定义的库。而目前modelsim都会兼容很多流行EDA厂商的library,比如上面提到的altera、synopsys等,这些library设计者都不用去自己建立,modelsim已经为我们建立好了,但用户自定义的库还要设计者自己在modelsim中建立,而在 model-sim 如何调用这样的库,有以下步骤:

1.    在 modelsim 下建立一个 project ,首先应该建立这些用户自定义库、其他 EDA 软件下的库,而不是新建一个工程。

2.    先在建立一个文件夹,把要建立的库文件拷到这个目录下。比如 D:modelsim_project/user_lib

3.    先打开 modelsim ,在 file 菜单下选择 change  directory ,在d出对话框中选择 D:modelsim_project/user_lib

4.   执行菜单 File->new->Library ,按照下图 *** 作,完成 library 的命名,比如命名为 jpeg2k_e 。

5.  然后执行菜单 complie->complie… ,然后选 D:modelsim_project/user_lib 下的库文件,然后点击 complie ,完成后点击 done 完成。这里特别注意,在下图的最上面 library 的选框中,一定要选择刚才建立的 library 的名称,上面我们命名为 jpeg2k_e ,所以,选择的 library 的名称一定为 jpeg2k_e ,默认的一般是 work ,所以大家一定要改过来,改成自己刚才新建的库的名称,这点这重要,我之前在 *** 作中犯过这样的错误,采用了默认的库名 work ,导致建立不成功。

6.      最后,在该目录 D:modelsim_project/user_lib 下或者 D:modelsim_project/user_lib/jpeg2k_e 目录下会生成一个文件“ modelsim.ini ”,打开后添加以下语句:

jpeg2k_e = D:modelsim_project/user_lib/jpeg2k_e 。

7.    重启 modelsim ,或者刷新 library ,就 ok 了。

 

 

你可以去网上下载一些代码看看,一般的工程都会分为顶层设计和底层模块实现这两大部分的。在VHDL中,顶层设计一般是用来连接所有的顶层设计,并设置相应的对外的端口的。在这里简单介绍一下:

1.声明你的底层的模块作为元件

在architecture中声明你的底层模块为元件

component “模块名称” is

port(

clk : in std_logic

...

...

)

end component

2.将你声明的元件例化

“实体名字” : “元件名字”

port map

(

clk => “要连接到的信号”,

...

...

)

这样你在编辑的时候软件会自动识别你的项目文件的层次关系,并加以组织。

如果还有不明白的可以给我邮件liuyle04@gmail.com

首先 你想要实现的其实是调用自己定义的元件是吗?

要实现调用元件是不需要自定义库的啊 只需要保证在一个project里

比如你在project test中写了程序nd2.vhd 定义了一个与非门

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY nd2 IS

PORT(a,b : IN STD_LOGIC

c : OUT STD_LOGIC)

END nd2

ARCHITECTURE behv OF nd2 IS

BEGIN

c <= a NAND b

END behv

然后继续在exp.vhd中调用上面定义的与非门

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY exp IS

PORT( a1,b1,c1,d1 : IN STD_LOGIC

z1 : OUT STD_LOGIC)

END exp

ARCHITECTURE behvexp OF exp IS

COMPONENT nd2 --元件定义语句

PORT (a, b : IN STD_LOGIC

c : OUT STD_LOGIC)

END COMPONENT

SIGNAL x,y : STD_LOGIC

BEGIN

u1: nd2 PORT MAP (a1,b1,x) --元件例化语句

u2: nd2 PORT MAP (a =>c1, c =>y, b =>d1)

u3: nd2 PORT MAP (x, y, c =>z1)

END behvexp

如果你想用库 那么是不用重新定义一个库的

VHDL默认一个WORK库作为你的project的设计库

即你新建一个项目 那么这个项目就会对应自己的WORK库

你所要做的就是定义一个PACKAGE

举个例子,还是在project test中,nd2.vhd同上

是一个实现与非门的程序

在exp.vhd文件中首先定义一个包

PACKAGE pacl IS

COMPONENT nd2 --元件定义

PORT( a, b : IN STD_LOGIC

c : OUT STD_LOGIC)

END COMPONENT

END pacl

USE WORK.pacl.ALL --使用pacl包内所用内容

ARCHITECTURE behvexp OF exp IS

SIGNAL x,y : STD_LOGIC

BEGIN

u1: nd2 PORT MAP (a1,b1,x) --元件例化语句

u2: nd2 PORT MAP (a =>c1, c =>y, b =>d1)

u3: nd2 PORT MAP (x, y, c =>z1)

END behvexp

这样 你在其它.vhd文件中想要调用nd2 不需要重新定义元件

只需要加入USE WORK.pacl.ALL

就可以在程序中直接元件例化了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11633299.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存