使用VHDL 2008有沒有一種方法可以定義一個抽象實體,該抽象實體的泛型類型具有該類型的端口以及不受約束的數組或從該基類型派生的記錄?是這樣的:如何在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是:
類型T_VECTOR爲T的陣列(INTEGER範圍<>);
和T是一個任意的抽象基類型。面臨的挑戰是如何插入T_VECTOR的定義,T_VECTOR的定義取決於引入了T的泛型之後但T_VECTOR需要的端口之前的T?這兩種類型如何保持通用和抽象,但其中一個是另一個不受約束的陣列?沒有抽象類型,人們會使用一個包來實現這一點,它將包含T和T_VECTOR的類型定義,但是如何在VHDL 2008中使用抽象類型來完成?
我想能夠有一些派生類型,如無約束數組或記錄(例如一個複雜的記錄類型T的實際和虛構文件)仍然是抽象的,並使用它們來定義抽象組件上面的例子。
,它必須得到一個實體?會執行作爲子程序可以接受? –
它必須是一個實體,這是通用分類網絡設計的一部分。我想創建一個具有抽象基類型T的抽象排序網絡實體,它是一個absract「<」函數,用於比較T類型的兩個項目和T類型的非約束陣列的輸入和輸出端口。該實體將實現排序網絡可以使用用戶定義的「<」函數對任何類型元素的數組進行排序。 – user2426721
您可以通過提供類型T,比較函數「<」和輸入和輸出信號來實例化此實體,這些信號是T大小的數組,您將得到所需的排序網絡。 COMP_EXCH只是大型設計的基本組成部分。除了這個T和T_VECTOR問題外,我已經有其他所有工作了。 – user2426721