4
我有一個組件:是否可以使用循環創建同一個組件的多個實例?
Component CAU is
port
(
CLK : in std_logic;
RESET : in std_logic;
START : in std_logic;
V_DIRECTION : in vector_3d;
P_ORIGIN : in vector_3d;
V_NORMAL_IN : in vector_3d;
DOT_A : in vector_3d;
DOT_B : in vector_3d;
DOT_C : in vector_3d;
ID_DATA_IN : in scalar;
ID_DATA_OUT : out scalar;
V_REFLECT : out vector_3d;
V_PASS : out vector_3d;
P_INTERSECT : out vector_3d;
V_NORMAL_OUT : out vector_3d;
T_OUT : out scalar;
SUCCESS : out std_logic;
FINISH : out std_logic
);
end Component;
我想創建它的8個實例。每個被稱爲CAU_inst0
,CAU_inst1
,依此類推。每個實例的連接方式如下:
CAU_inst0 : CAU
PORT MAP
(
CLK => CLK_CAU,
RESET => RESET,
START => start_0_sig,
V_DIRECTION => v_direction_0_sig,
P_ORIGIN => p_origin_0_sig,
V_NORMAL_IN => v_normal_in_0_sig,
DOT_A => dot_a_0_sig,
DOT_B => dot_b_0_sig,
DOT_C => dot_c_0_sig,
ID_DATA_IN => id_data_in_0_sig,
ID_DATA_OUT => id_data_out_0_sig
V_REFLECT => v_reflect_0_sig,
V_PASS => v_pass_0_sig,
P_INTERSECT => p_intersect_0_sig,
V_NORMAL_OUT => v_normal_out_0_sig,
T_OUT => t_0_sig,
SUCCESS => success_0_sig,
FINISH => finish_0_sig
);
其中對於每個實例i
數量0
替換i
。我所做的是創建一個Matlab腳本,用正確的編號創建8個不同的實例。但這是一個非常難看的解決方案,因爲它需要170行代碼,只需要很少的更改。有沒有一種方法可以在代碼中的循環中創建組件(如果可能的話還有適當的信號),以減少垃圾郵件和線路?
如何實例產生後命名的? – SIMEL
@IlyaMelamed不知道你的意思。有循環的標籤:GEN_REG,循環變量I和實例REGX。你想知道如何引用循環生成的特定實例嗎?出於什麼目的? – Josh
@IlyaMelamed在模擬設計時,上面代碼中生成的REGX實例將被命名爲GEN_REG(0),GEN_REG(1)和GEN_REG(2)。 –