8

STD_LOGIC_1164またはSTD_NUMERICの事前定義された型を使用して、0から2 ^ 32-1の範囲の整数を表す方法はありますか?(デフォルトの整数型の範囲を考慮して、-2^31-1から2^31-1まで)

32ビットカウンターを実装する必要があり、std_logic_vectorの代わりに整数型を使用してコードを保存する方法を探していました。このためのデザインパターンはありますか?

または、より良い質問:操作> / <、=、+-/をサポートする32ビット(符号なし)整数を宣言するための最良の方法は何ですか?

事前にTahnks

編集1:私が見つけた1つのオプションは、信号をstd_logic_vector(31 downto 0)として宣言し、比較または+-演算を実行するときに変換を実行することでした。例:counter <= counter + std_logic_vector(unsigned(value)+ 1)。ただし、除算を行う方法はまだ見つかりません(たとえば、counterの値の1/4が必要な場合)

4

2 に答える 2

9

整数型を使用すると、できません(少なくとも、移植性はありません。最小値を超えて64ビット整数を提供するVHDLツールがいくつかある可能性があります)

IEEE.numeric_stdを使用すると、完全な32ビット範囲(または必要に応じて53ビット)でUnsignedを宣言でき、要求内容を誤解しない限り、必要なすべてを実行できます。

于 2012-11-18T22:46:09.870 に答える
6
use ieee.numeric_std.all;

次に、unsignedデータ型を使用します。これは、数学演算が定義されたビットベクトルとして動作します。必要なビット数を選択できます。例えば:

signal mynum : unsigned(234 downto 0)
于 2012-11-19T14:36:41.387 に答える