VHDLには、代替名を名前付きオブジェクトに関連付けるメカニズムがあります。
参照IEEE STD 1076年から2008年6.6エイリアス宣言、一般6.6.1パラ1:
alias宣言は、既存の名前付きエンティティの代替名を宣言します。
オブジェクトエイリアスのルールは、6.6.2オブジェクトエイリアスにあります。ここでの考え方は、ステートメント生成ステートメントのターゲットを生成するためにインデックスを付けることができる名前(8.4インデックス名)を提供することです。
A0_iは識別子(15.4)と不可分な字句要素(15.3)です。
entity fff is
port (
a: in bit_vector(0 to 3);
b: in bit_vector(0 to 3)
);
end entity;
architecture sss of fff is
-- signal A0_0 : bit ; -- REPLACED
-- signal A0_1 : bit ;
-- signal A0_2 : bit ;
-- signal A0_3 : bit ;
signal A0: bit_vector (0 to 3); -- ADDED
-- IEEE Std 1076-2008 6.6 Alias declarations
-- 6.6.1 General
-- An alias declaration declares an alternate name for an existing named entity.
alias A0_0: bit is A0(0);
alias A0_1: bit is A0(1);
alias A0_2: bit is A0(2);
alias A0_3: bit is A0(3);
begin
U0:
for i in 0 to 3 generate
U1: A0(i) <= a(i) and b(i);
end generate;
end architecture sss;
オブジェクトのエイリアスが指定された信号の信号配列と配列の要素にエイリアス元の名前を宣言し、上記番組の構成名前集約のために作成することができないので。
エンティティを追加したこの変更された例では、インデックス名とエイリアス名(例:A0(0)とA0_0)の両方を分析し、詳しく説明します。
A0に範囲0〜3をカバーするビットの配列を作成し、その範囲をカバーするようにGenerateを書いてください:A0'left〜A0'right i in i: U1:A0(i)<= a i)とb(i);「 –
ありがとうございます。しかし、私は信号名を変更することはできません。この問題を解決する方法はありますか? –
シグナルの代替名を提供する - * IEEE Std 1076-2008 6.6エイリアス宣言、6.6.1エイリアス宣言は、既存の名前付きエンティティの別名を宣言します。* 'signal A0:bit_vector(0〜3);エイリアスA0_0:ビットはA0(0)です。エイリアスA0_1:ビットはA0(1)です。エイリアスA0_2:ビットはA0(2)です。問題は、A0_iが識別子であり、割り切れない語彙要素(15.3)であるということである。問題は、A0_iが識別子であり、割り切れない語彙要素(15.3)であるということである。ここではインデックス名(8.4)を使用したいと考えています。 – user1155120