私は8ビットのピクセル値で作業しています..コーディングを簡単にするために、conv_integerを使用してこの8ビットのstd_logic_vectorを変換したいと思います。合成の問題が発生しますか?ハードウェアの速度が低下します...
2 に答える
いいえ、整数は問題なく合成されます。 ただし、conv_integerは使用しないでください。これは古い非標準ライブラリからのものです。
use ieee.numeric_std;
あなたがしたいto_integer(unsigned(some_vector));
それでもビットにアクセスし、ベクトルを数値として扱いたい場合は、符号付きまたは符号なしの型を使用します。これらは、数値として動作するビットのベクトル(まだ持つことができるなど)を定義する-
ためZ
、を書くことができますunsigned_vector <= unsigned_vector + 1
。
値「Z」または「X」を持つなど、標準の論理ベクトルに付属する多くの機能が失われます。ビットにアクセスする必要がある場合は、 std_logic_vector のままにするか、numeric_stdにキャストしてください。そうでなく、凝った算術演算を行う必要がある場合は、int として使用する方がよいでしょう。一日の終わりに、そのすべてのビット。通常は、各ビットを特定のピンにマップできるように最上位のベクター型 (std_logic_vector、unsigned、signed など) を保持するのが最善ですが、それ以外の場合は、必要な型を使用できます。現在、ソフトウェアではなくハードウェアを設計していることを忘れないでください。違いがあります。