3

我需要使用一个模块,我之前在另一个模块中使用 vhdl 创建,但我找不到任何有关如何执行此操作的信息。我被迫使用 maxplus2,我发现的唯一一件事是我可以在那里创建包含文件(将具有 .inc 扩展名),但我仍然无法将它包含在我的第二个模块中。我整个上午都在寻找这个信息,但一无所获。有人可以帮我吗?

4

2 回答 2

8

你没有。

VHDL 没有包含文件,它避免了整个可怕的灾难性不可靠混乱。

VHDL 使用单独的编译,良好的 VHDL 工具(不是全部!)正确跟踪所有依赖项,无需包含或 Makefile。

所以你把你的其他模块编译成一个库——也许是“my_modules”——或者如果你没有指定一个库,只需编译它,它将进入名为“work”的默认库。

然后在你的主模块中命名库(除了总是存在的“工作”)

library ieee;
library my_modules;

并命名你想要的东西(模块,包)(除了“工作”......)

use ieee.numeric_std.all;
use my_modules.all;

现在您可以使用这些库中的任何内容。使用模块的最简单方法是“直接实体实例化”——搜索它,“VHDL”会告诉你如何做。或者你可以在你的主模块中声明一个与你的其他模块具有相同端口的组件,并且正确的模块将在详细说明时替换该组件(VHDL术语用于链接)。如果您还没有编写库模块,您将需要一个组件 - 即自顶向下设计......否则直接实体实例化更简单。

现在,忽略“my_modules”而只使用“work”——当你得到一个大设计时,使用库来组织它,例如保持硬件和测试台分开。

于 2012-11-16T11:32:11.547 回答
4

布赖恩有正确的答案给你。我要添加的内容与您的问题有关,因为这是人们使用包含文件的其他内容:

packages 是 VHDL 共享数据类型、常量、函数和过程的方式。

于 2012-11-16T13:31:55.067 回答