如何将数组类型作为泛型类型参数传递给 VHDL 包?

2024-01-23

我正在 VHDL-2008 中开发通用包(列表)。该包具有元素类型的泛型类型。如果我在包中声明此元素类型的数组类型,那么它就是一个新类型。所以对于例如整数,我的新整数数组将与 ieee 库中的整数向量不兼容。

所以我还需要传入数组类型(例如integer_vector)。当该数组类型的数组实例与'range属性,它在 QuestaSim 中给了我一个警告:

属性“range”的前缀必须适合数组对象或者必须表示数组子类型。

a 如何表示泛型类型参数是数组?

通用包:

package SortListGenericPkg is
  generic (
    type ElementType;  -- e.g. integer
    type ArrayofElementType;  -- e.g. integer_vector
    function LessThan(L : ElementType; R : ElementType) return boolean;     -- e.g. "<"
    function LessEqual(L : ElementType; R : ElementType) return boolean     -- e.g. "<="
  );

  function inside (constant E : ElementType; constant A : in ArrayofElementType) return boolean;
end package;

package body SortListGenericPkg is
  function inside (constant E : ElementType; constant A : in ArrayofElementType) return boolean is
  begin
    for i in A'range loop  -- this line causes the error
      if E = A(i) then
        return TRUE ;
      end if ;
    end loop ;
    return FALSE ;
  end function inside ;
end package body;

实例化:

package SortListPkg is
  package SortListPkg_int is new work.SortListGenericPkg
    generic map (
      ElementType        => integer,
      ArrayofElementType => integer_vector,
      LessThan           => "<",
      LessEqual          => "<="
    );
  alias Integer_SortList is SortListPkg_int.SortListPType;
end package SortListPkg ;

ModelSim 会发出类似的错误/警告,因此这可能是 VHDL 标准问题。

解决方法是声明ArrayofElementType作为包的一部分,例如:

package SortListGenericPkg is
  generic (
    type ElementType  -- e.g. integer
  );
  type ArrayofElementType is array (integer range <>) of ElementType;
  function inside(constant E : ElementType; constant A : in ArrayofElementType) return boolean;
end package;

然后转换参数inside被称为,如:

... inside(int, ArrayofElementType(int_vec));

或简单使用ArrayofElementType如果可能/可行的话,在声明参数时作为类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将数组类型作为泛型类型参数传递给 VHDL 包? 的相关文章

随机推荐

  • 如何减小tesseract生成的PDF的大小?

    我的 网络 应用程序的设置如下 我获取用户上传的 PDF 文件 对它们运行 OCR 并向他们显示 OCRed PDF 由于一切都在线 因此最小化生成的 PDF 文件的大小是减少用户加载和等待时间的关键 我从用户那里收到的文件是sample
  • 从 preg_match_all() 获取行号

    我正在使用 PHP 的 preg match all 来搜索使用 file get contents 导入的字符串 正则表达式返回匹配项 但我想知道在哪个行号找到这些匹配项 实现这一目标的最佳技术是什么 我可以将文件作为数组读取 并为每一行
  • Jekyll 将每个换行符转换为换行符

    我正在使用 Jekyll 和 kramdown 来制作一个静态站点 今天我注意到每当我将同一个句子继续到新行时 Jekyll 就会插入一个 br 标记那里 以前从未发生过这种情况 由于我所有的 Markdown 文件都没有超过 80 个字符
  • 用于清除 RStudio 中命令历史记录的命令或键盘快捷键

    相当于按 RStudio 历史记录窗口中的小扫帚按钮清除当前会话中的整个历史记录缓冲区的命令或键盘快捷键是什么 Note that I don t mean Ctrl L which clears the command window I
  • 从模板创建用于在 Qt 中打印的 PDF 文档

    我编写一个应用程序 当用户在对话框窗口中插入数据 文档标题 发件人姓名和地址等 时 我的应用程序应该根据该用户数据生成一个 pdf 文件 PDF 文件应该有定义的布局 如下所示 我尝试这样做QPdfWriter但在 pdf 中对齐文本时遇到
  • 为什么接口方法没有主体

    要实现多重继承 我们必须使用接口 但是为什么接口方法没有主体 为什么必须在派生类中重写它们呢 我真的想要一个清晰的答案 不涉及太多计算机术语 我似乎无法理解这一点 我参考了各种参考资料 因为 Java 与 C 或 Eiffel 等语言相比
  • android recyclerView水平和垂直间距

    大家好 我对 android 很陌生 我在 recyclerview 方面遇到了问题 我试图在回收视图中的图像视图之间添加空间 但没有成功 我想要的是 怎么了 以下是我的实现ItemOffsetDecoration java public
  • EmberJS 中的 I18n(路由和一般情况)

    EmberJS 支持国际化应用程序的翻译路由吗 或者至少可以轻松扩展它以支持 i18n 路由 有人有这方面的经验吗 例如 可以以某种方式从语言环境文件动态设置路由字符串吗 另外 当使用 Ember 和 Rails 路由时不必指定两次 这会很
  • 无法分配 CursorWindow

    我正在操作SQLite3我的 Android 应用程序中的数据库 我刚刚从预填充的数据库中读取数据 该数据库有 20 万行和 14 列 条目是文字 所有列的数据类型都是文本 查询最多 11 个字母的单词 例如 ABANDONMENT 效果很
  • 使用 IMongoQueryable 进行单元测试

    我正在使用 NET Core 2 0 和 NET Core MongoDB 驱动程序 我创建了一个像这样的存储库 public interface IRepository
  • Laravel 5.1 eloquent 的 with() 方法中的使用限制

    Eloquent staffGroup StaffGroup where id id gt with staffGroupRight gt first In StaffGroup Model public function staffGro
  • 获取类的实例方法列表

    我有一堂课 class TestClass def method1 end def method2 end def method3 end end 我如何获得此类中的方法列表 method1 method2 method3 TestClas
  • 将参数添加到 @keyframes 属性 Less

    我有一处房产 keyframes 我用autoprefixer编译来添加所需的前缀 我想做的是向动画名称 或任何可能的地方 添加一个参数 以将属性值更改为关键帧键 这就是我现在所拥有的 keyframes loader 0 transfor
  • Node.js Express 模块未正确加载

    Geos Mac hone georgiana npm list Users georgiana local hone email protected cdn cgi l email protection email protected c
  • (Z3Py) 函数声明有什么限制吗?

    函数声明有什么限制吗 例如 这段代码返回 unsat from z3 import def one op op arg1 arg2 if op 1 return arg1 arg2 if op 2 return arg1 arg2 if o
  • 如何让PHP使用代理设置来连接互联网?

    我位于不允许直接连接到互联网的代理服务器后面 我的所有 PHP 应用程序都无法连接到互联网进行更新检查等 我如何告诉 PHP 我的代理设置 我不想在代码中输入代理设置 我希望 PHP 本身通过全局配置设置或类似的东西使用它 如果几乎所有人的
  • 根据类中的变量对类向量进行排序[重复]

    这个问题在这里已经有答案了 我有一个类 其中有一个类型变量int储存在里面 然后我创建了一个向量 其中包含此类 然后我需要对其进行排序 然而 我的问题源于这样一个事实 我需要使用此类中存储的 int 值按升序对向量进行排序 我看过std s
  • 羽毛可以与羽毛外部管理的路线共存吗

    我们有一个大型应用程序 它使用 Express 进行休息 使用 primus 进行套接字路由 一下子全部变成羽毛是非常困难的 我正在考虑分阶段的方法 我可以采用一些路线并将它们转换为服务 因此任何新路线都将遵循服务模式 我将慢慢迁移应用程序
  • 如何处理文件路径中的空格

    我在使用以下脚本时遇到问题 我正在检查的文件路径中的空格似乎让我感到震惊 关于如何不让 PoweShell 崩溃的任何想法 Program Files x86 GC C server txt server if Test Path serv
  • 如何将数组类型作为泛型类型参数传递给 VHDL 包?

    我正在 VHDL 2008 中开发通用包 列表 该包具有元素类型的泛型类型 如果我在包中声明此元素类型的数组类型 那么它就是一个新类型 所以对于例如整数 我的新整数数组将与 ieee 库中的整数向量不兼容 所以我还需要传入数组类型 例如in