2016-07-14 15 views
3

私はテストベンチをコーディングするのが初めてで、新しい構文がたくさんあります。私は "文字列"の後にアポストロフィが何を示しているのか理解しようとしています。このVHDL関数のカッコの前にアポストロフィがあるのはなぜですか?

hereの属性ではありません。また、私はVHDLのアポストロフィの後に括弧を見たことはありません。

+0

リンクされた[Compact Summary for VHDL](http://www.csee.umbc.edu/portal/help/VHDL/summary.html)は、リスト演算子の範囲の式のみをカバーしています。追加の参照を使用することもできます。 – user1155120

答えて

5

修飾された表現です。

IEEE STD 1076年から2008年、9.3.5認定式:

修飾表現は、オペランドの明示的タイプ、及びおそらくはサブタイプを述べるために使用される基本的な操作(5.1を参照)、ありますそれは式または集合体である。」

qualified_expression :: =
              type_mark '(式)
          | type_mark '集合

この修飾表現は、プロシージャ内でLに割り当てられたアロケータ(9.3.7アロケータ)の型とサブタイプの両方を示します。

修飾された式のオペランドは、式old_L(pos to old_L'high)です。

これは集計ではなく、名前付きの関連付けを使用して、単一の選択肢を持つ括弧で囲まれた式(9.3.3集計)と区別しません。

あなたは式を扱うリファレンスを使用していないので、このアロケータが何をすることができるのか分からないことがあります。 MCVEの作成:シミュレーションでこのコードを実行する

use std.textio.all; 

entity foo is 
end entity; 

architecture fum of foo is 

    procedure Shrink_line(L : inout LINE; pos : in integer) 
    is 
     variable old_L : LINE := L; 
    begin 
     if pos > 1 then 
      L := new string'(old_L(pos to old_L'high)); 
      Deallocate(old_L); 
     end if; 
    end; 

begin 
    process 
     variable L: LINE; 
    begin 
     write (L, string'("...shrinking violet")); 
     Shrink_line(L, 14); 
     writeline(OUTPUT,L); 
     wait; 
    end process; 
end architecture; 

は、出力を提供します:

GHDL -a foo.vhdl
GHDL -e fooの
GHDL -r fooの

出力はwritelineからOUTPUT(ファイルSTD_OUTPUT(POSIX parlanのstdout ce)。

9.3.7アロケータ、パラ2:

アロケータによって作成されるオブジェクトのタイプがサブタイプ指示又は修飾表現のいずれかで指定された型のマークの基本型です。サブタイプ指示子を持つアロケータの場合、作成されたオブジェクトの初期値は、指定されたサブタイプの明示的に宣言された変数のデフォルト初期値と同じです。修飾された式を持つアロケータの場合、この式は作成されたオブジェクトの初期値を定義します。古いアロケータからサブタイプ制約を持つ新しいアロケータを作成する

は、posの位置から古いアロケータから文字列をコピーしました。

もう1つ注目すべきことは、左にある文字列がデフォルトで1になっていることです。 Shrink_lineはそれを数える。

関連する問題