忍者ブログ

[PR]

2025年04月25日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

VHDLの型に関して

2008年11月20日
VHDLは型については非常に厳格な言語です。C言語等と違って、異なる型同士で、演算、代入をする場合にはキャストをしないと必ずエラーが返ってきます。まぁそこが良い所でもあるのですが!
そこで型に関して簡単に紹介するので参考にして下さい。それぞれの型がどのライブラリで定義されているかまで説明すれば、長くなるんで割愛します。
  • Std_Logic
    • 1bitデータを扱う。
  • Std_Logic_Vector(基本はこれ)
    • 複数ビットデータを扱う 
  • Signed(Std_Logic_Vectorのサブタイプ。符号アリ)
  • Unsigned(Std_Logic_Vectorのサブタイプ。符号ナシ)
  • Integer(整数。constantで定数を宣言するときに使ったりします。)
  • Real(実数。これは使わないなー)
Std_Logic_Vectorの型だけでは算術演算は出来ません。例えば負の数は2の補数で表現されますが、Std_Logic_Vectorだとそれを正の数として計算するので、実際の値と異なってしまいます。正負が入り混じった演算をしたい場合は、signed、unsignedで一時的にキャストしましょう。

Xが符号ナシ、Yが符号アリの場合このようにキャストすると正しい値が出てきます。

Z<=unsigned(X)*signed(Y)
PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字