
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
就可以在程序中直接元件例化了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)