IEEE vhdl语言参考手册只定义了一组有限的标准包。它没有定义标准类型的功能,例如STD_LOGIC。所以没有标准AND2,INV组件/运算符。
Altera 的 MAX+Plus II 似乎不支持 AND2、INV 组件(如果有,请随时纠正我),但 Xilinx Foundation 支持。
为什么 IEEE vhdl 标准库不能成为 C++ 世界中的 STL 之类的东西?
谢谢。
IEEE vhdl语言参考手册只定义了一组有限的标准包。它没有定义标准类型的功能,例如STD_LOGIC。所以没有标准AND2,INV组件/运算符。
Altera 的 MAX+Plus II 似乎不支持 AND2、INV 组件(如果有,请随时纠正我),但 Xilinx Foundation 支持。
为什么 IEEE vhdl 标准库不能成为 C++ 世界中的 STL 之类的东西?
谢谢。
IEEE 库支持std_logic 类型的Invert、And、Or、... :
a <= b and c
d <= not e
f <= g or h
您的综合工具会自动将这些表达式转换为您的目标技术(Xilinx FPGA、Altera FPGA、ASIC 等)的最佳实现。无需显式实例化特定于技术的组件。实例化技术特定的组件甚至可能会阻碍优化。
您应该始终尝试独立于技术编写您的 VHDL 代码。这允许您重用代码。
您要求的“组件”是 VHDL 中的运算符。
您也可以直接实例化 AND2 和 INV 组件之类的东西,但您需要构建这些库(或使用为您提供的库)。
因为fpga设计软件与目标芯片的相关性很高,只有两家企业有能力开发这样的软件。Altera的Max+PlusII只能支持Altera出货的芯片,Xilinx也一样。这些厂商控制着fpga设计的整个进程,从软件到硬件。然后他们倾向于针对自己的平台开发特定的功能。所以 IEEE 标准库不可能是 C++ 世界中的 STL。
AND2
是primitive
Altera Max+PlusII,但不是primitive
Xilinx Webpack。实际上我们可以设计我们自己的组件AND2
(Xilinx 选择在 unisim 包中提供它,但我们选择不加载这个包)。
INV
不primitive
属于 Altera Max+PlusII,也不属于 Xilinx WebPack。