Quartus工程中ieee和floatfixlib vhdl库的关系说明

Description of the relationship betwen the ieee and floatfixlib vhdl libraries in a Quartus project

我开始使用 Altera 的 Quartus 包学习 FPGA 编程。

我有一些遗留代码,包括以下内容:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.math_real.all;
library floatfixlib;
use floatfixlib.fixed_pkg.all; --this is the VHDL93 implementation of the VHDL08 fixed point code from http://www.eda-stds.org/fphdl/
use work.ioarrays.all;

不幸的是评论中的 link 现在已经死了。

最初我有以下错误:

Error (10481): VHDL Use Clause error at myvhdlfile.vhd(8): design library "floatfixlib" does not contain primary unit "fixed_pkg"

阅读后,我使用 this answer 将相关的 ieee 库文件(fixed_float_types_c.vhdlfixed_pkg_c.vhdlfloat_pkg_c.vhdl)归于 ieee_proposed 库,并且将代码更改为:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.math_real.all;
library ieee_proposed;
use ieee_proposed.fixed_pkg.all;
use work.ioarrays.all;

然后似乎可以编译。

但是,我不确定这是正确的方法,而且我对这些库开发背后的高级故事缺乏理解。

因此; 请描述 ieee 和 floatfixlib vhdl 库之间的关系。最好简明扼要地描述他们发展的原因,简要的时间表和他们的现状。

fphdl in the link stood for Floating-Point HDL Packages,可用于 VHDL 和 Verilog,并为二进制浮点运算的 IEEE-754 标准提供符合合成条件的包。

该工作的 VHDL 部分作为提案 VHDL-200x-fp 提交,以将包添加到标准的下一个修订版 (IEEE Std 1076-2008)。

您引用的 VHDL 文件名表明它们来自 -1993 兼容性分发版,而不是综合供应商广泛采用的 -2008 版。所有 zip 文件的 link 都已失效,而通用 -1993 兼容的 VHDL 源文件可以在 Internet Archive fphdl link.

上访问

最初,您可以访问个别标有日期的供应商目标发行版,其中包含会告诉您用途的 README 文件:

This is the "ieee_proposed" library. This is a compatability library, which is designed to provide all of the functionality of the VHDL-200X-FT packages in VHDL-93. The "_c" after the package name is used to denote that this is a 1993 compliant version of this package. Otherwise, the name of the file and the name of the package are the same.

Please compile the following files into a library named "ieee_proposed": standard_additions_c.vhdl
env_c.vhdl
standard_textio_additions_c.vhdl
std_logic_1164_additions.vhdl
numeric_std_additions.vhdl
numeric_std_unsigned_c.vhdl
fixed_pkg_c.vhdl
float_pkg_c.vhdl

-2008 修订版采用了固定和浮动包,请参阅 IEEE Std 1076-2008 16.10 定点包和 16.11 浮点包。它们包含在图书馆 ieee 中。如果您有 -2008 兼容工具,您可以使用这些工具。另见附件 G G.4 使用定点包。

代替使用符合本案例包中包含的修订版 -2008 的 VHDL 工具 fixed_pkg,您可以将这些符合合成条件的源代码编译到库中。

正如您从 Brian 和 Jim 的评论中看到的那样,这些包可以针对不同的资源库(包括工作),只需对所需包中的 use 子句进行一些修改。

从 2011 年左右开始,合成供应商通常在库 ieee_proposed 中支持这些包,以提供符合 VHDL 合成条件的浮点。一些供应商会提供预分析资源库。

如果您的代码分析并详细说明了在库 ieee_proposed 中引用它们,您要么已经将这些包分析到库中,要么它们是由您的供应商提供的,他们也可能在找到这些包的地方提供 -2008 兼容性在图书馆 ieee.

不行的可以自己把代码解析成资源包。 Whosebug 有几个问题表明供应商在这样做时遇到了特定的困难。从历史上看,他们倾向于在需要解决方法的供应商工具中演示 VHDL -1993 语言问题。好消息是用户对这些功能的需求帮助推动了 -2008 功能的采用。

兼容性分发版和 -2008 之间存在差异,具体取决于包泛型等功能的可用性。兼容性包还提供了不仅仅是定点和浮点二进制运算,其想法是支持 -2008 与支持 -1993 的工具的兼容性。

随时可用的历史记录丢失是 Accellera 最近停止托管 vhd.org/eda.org 网站的结果。 Accellera 最初在他们的主持下开发了 VHDL 标准的 -2006 修订版,经过各种更改后成为 IEEE -2008 标准修订版。