templates - 是否可以在 vhdl 中使用泛型类型?

标签 templates generics type-conversion vhdl procedure

VHDL 中有没有办法拥有泛型类型?因此,例如我想调用一个过程,但我不确定我想提供的信号类型作为参数,是否可以将参数声明为泛型?
就像在 C++ 中一样,您将使用模板。

procedure eq_checker(name : string; sig : ANYTHING); should : ANYTHING; at : time) is
  if (at = now) then
    if sig = should then
      report "has same value" severity note;
    else
      report "has not same value" severity note;
    end if;
  end if;
end checker;

至少应该可以使用不同的信号类型作为“sig”。

最佳答案

Peter Ashenden 和 Jim Lewis 的书“VHDL-2008 - Just the new stuff”以

Chapter 1 : Enhanced Generics
1.1 Generic Types



因此,如果您的工具正确支持 VHDL-2008,您现在可以声明泛型类型,并且可以在子程序(不仅仅是实体)上声明泛型。

如果它们遵循 Ada 模型,那么在您第一次编译它们时会检查泛型,而不是在实例化它们时,这样任何编译的实例化都将起作用,这与 C++ 模板的情况不同,在这种情况下,错误可能会潜伏多年,直到您以特定方式实例化它们(因为 C++ 模板比真正的通用元编程更接近宏)

示例:未经测试,但在上述书的第 17 页上编写了以下示例...
procedure eq_checker
         generic  (type ANYTHING) 
         parameter(name : string; sig,should : ANYTHING; at : time) is
begin
  if (at = now) then
    if sig = should then
      report "has same value" severity note;
    else
      report "has not same value" severity note;
    end if;
  end if;
end procedure eq_checker;

关于templates - 是否可以在 vhdl 中使用泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15382791/

相关文章:

c# - 从 Type 变量中获取实际类型

Java 泛型返回类型语法

javascript - 将一些位操作从 javascript 转换为 c# --- if(int & #)

c++ - 类型推导如何用于评估表达式?

c++ - 模板非类型参数 : check condition at compile-time

c++ - 终止模板搜索

java - Java 程序中单行中的多个类型转换

javascript - 如何将 javascript 源文件插入到我的 Pyramid python 应用程序中并在我的模板中使用它们?

Java 泛型 - 桥接方法?

java - 如何在Java中不使用循环将String数组转换为int数组