【发布时间】:2013-05-28 02:11:09
【问题描述】:
使用 VHDL 2008 是否有一种方法可以定义具有通用类型的抽象实体,该通用类型具有该类型的端口以及从该基本类型派生的不受约束的数组或记录?像这样:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity COMP_EXCH is
generic(type T; -- VHDL-2008 abstract generic base type
function "<"(L,R:T) return BOOLEAN; -- VHDL-2008 abstract generic function
LATENCY:INTEGER:=0);
port(I0,I1:in T;
O:out T_VECTOR(0 to 1));
end COMP_EXCH;
architecture TEST of COMP_EXCH is
begin
O<=(I1,I0) when I1<I0 else (I0,I1);
end TEST;
其中 T_VECTOR 是:
type T_VECTOR 是 T 的数组(INTEGER range );
并且 T 是任意抽象基类型。挑战在于如何插入 T_VECTOR 的定义,这取决于 T 在引入 T 的泛型之后但在需要 T_VECTOR 的端口之前?两种类型如何保持通用和抽象,但其中一种是另一种的不受约束的数组?如果没有抽象类型,人们将使用一个包来实现这一点,其中将包含 T 和 T_VECTOR 的类型定义,但是如何在 VHDL 2008 中使用抽象类型来完成呢?
我希望能够让许多派生类型,如无约束数组或记录(例如具有 T 类型的实部和虚部的复杂记录)仍然保持抽象,并使用它们来定义抽象组件,如示例多于。
【问题讨论】:
-
必须是实体吗?作为子程序实施是否可以接受?
-
它必须是一个实体。这是通用排序网络设计的一部分。我想创建一个抽象的排序网络实体,它有一个抽象的基本类型 T、一个抽象的“
-
您将通过提供类型 T、比较函数“