2016-08-23 9 views
0

以下のコードに示すように、信号が 'LAST_VALUE又は'EVENTようなエッジを検出するための属性があります方法又はここで事前に定義された属性が宣言またはVHDL langagueで定義さ

FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN IS 
BEGIN 
    RETURN (s'EVENT AND (To_X01(s) = '1') AND 
         (To_X01(s'LAST_VALUE) = '0')); 
END; 

'LAST_VALUE属性が定義されているどのようにそれができるように信号の最後の値を取得しますか?あるいは、これらの種類の定義済み属性はどこに定義されていますか?ファイルやライブラリはありますか?

+0

rising_edge関数の定義があり、定義済みの関数ですが、VHDL言語の一部ではありません。 VHDLコンストラクト。構文、キーワードは言語の一部ですが、属性がVHDLのキーワードとなると、どのように言語の一部になるのでしょうか? –

答えて

1

これらの属性は、言語自体で定義されています。言語はIEEE 1076-2008標準によって定義されています。これは​​と呼ばれています。

挙げ属性はLRM 16.2で定義されている:

16.2事前定義は

定義済み属性は、名前付きエンティティの様々な種類に関連付けられた値、関数、タイプ、サブタイプ、信号、および範囲を表す属性。これらの属性は次のように記述されます。各属性について、以下の情報が提供される:

  • 属性の種類:値、タイプ、サブタイプ、範囲、機能、または信号
  • 属性が
  • の説明は定義されているプレフィックスをパラメータまたは引数、1が
  • 属性の評価結果が存在する場合、結果タイプ(該当する場合)
を適用する任意のさらなる制限やコメント

関数を示すあらかじめ定義された属性の場合、関数には名前付き仮パラメータはありません。したがって、名前付き関連付け(6.5.7.1参照)は、あらかじめ定義された属性によって示される関数を呼び出すときには使用できません。

信号の属性がLRM 16.2.4に記載されています:信号

の定義済みの属性

16.2.4が...

S'EVENT  Kind:  Function. 
       Prefix:  Any signal denoted by the static signal name S. 
       Result type: Type BOOLEAN. 
       Result:  A value that indicates whether an event has just 
          occurred on signal S. 
          Specifically: 
       For a scalar signal S, S'EVENT returns the value TRUE if an event 
       has occurred on S during the current simulation cycle; otherwise, 
       it returns the value FALSE. 

       For a composite signal S, S'EVENT returns TRUE if an event has 
       occurred on any scalar subelement of S during the current simulation 
       cycle; otherwise, it returns FALSE. 

S'LAST_VALUE Kind:  Function 
       Prefix:  Any signal denoted by the static signal name S. 
       Result type: The base type of S. 
       Result:  For a signal S, if an event has occurred on S in any 
          simulation cycle, S'LAST_VALUE returns the value of S 
          prior to the update of S in the last simulation cycle 
          in which an event occurred; otherwise, S'LAST_VALUE 
          returns the current value of S. 

...

+0

しかし、私はLAST_VALUE属性のソースコードが必要なので、どこでそのソースコードを入手できますか?教えてください。 –

+1

ソースコードはありません。それは言語そのもので定義されています。 LRMは、ベンダーがツールでこれらの属性を実装する方法を定義します。 'rising_edge 'さえも、ieeeパッケージで定義されているように実装されていません。ほとんどのベンダーは独自の最適化されたネイティブバージョンを使用します。 – Paebbels

+0

がありますが、rising_edge関数の定義があり、定義済みの関数ですが、VHDL言語の部分ではありません。このあらかじめ定義された属性はどのようにVHDL言語の一部となりますか?BITは定義済みの型ですが、 VHDLコンストラクト。構文、キーワードは言語の一部ですが、属性がVHDLのキーワードとなるのであれば、どのように言語の一部となるのでしょうか。 –

関連する問題