2016-11-04 14 views
-1

質問があります。私は信号割り当てにgenerateを使いたい。しかし、シミュレータは私にエラーが発生します。エラーは次のとおりです。「信号割り当てのターゲットが正しくありません。 「未知の識別子A0_i」を含む。vhdlでシグナル割り当て担当者を生成する

architecure sss of fff is 
signal A0_0 : bit ; 
signal A0_1 : bit ; 
signal A0_2 : bit ; 
signal A0_3 : bit ; 

begin 

U0 : for i in 0 to 3 generate 
U1 : A0_i <= a(i) and b(i) ; 
end generate; 

end sss; 
+0

A0に範囲0〜3をカバーするビットの配列を作成し、その範囲をカバーするようにGenerateを書いてください:A0'left〜A0'right i in i: U1:A0(i)<= a i)とb(i);「 –

+0

ありがとうございます。しかし、私は信号名を変更することはできません。この問題を解決する方法はありますか? –

+0

シグナルの代替名を提供する - * 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

答えて

1

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)の両方を分析し、詳しく説明します。

関連する問題