0

信号があり、この信号はビットベクトル (Z) です。ビットベクトルの長さは入力 n に依存し、固定されていません。長さを見つけるために、いくつかの計算を行う必要があります。変数を定義した後にシグナルを定義できますか? それを行うとエラーが発生します。変数の前に信号を保持する場合 (以下に表示されているもの) は正常に動作しています..しかし、私はそれを望んでいません.. Z の長さは変数の計算に依存します。解決策は何ですか?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity BSD_Full_Comp is
        Generic (n:integer:=8);
        Port(X, Y : inout  std_logic_vector(n-1 downto 0);
             FZ : out std_logic_vector(1 downto 0));
end BSD_Full_Comp;

architecture struct of BSD_Full_Comp is


Component BSD_BitComparator
    Port ( Ai_1  : inout  STD_LOGIC; Ai_0  : inout  STD_LOGIC;
           Bi_1  : inout  STD_LOGIC; Bi_0  : inout  STD_LOGIC;
           S1 : out  STD_LOGIC; S0 : out  STD_LOGIC
      );
END Component;



Signal Z : std_logic_vector(2*n-3 downto 0);



begin

    ass : process

Variable length : integer := n;
Variable pow : integer :=0 ;
Variable ZS : integer :=0;
begin
while length /= 0 loop
length := length/2;
pow := pow+1;
end loop;
length := 2 ** pow;
ZS := length - n;

wait;

    end process;



end struct;
4

3 に答える 3

1

計算結果に応じてハードウェアバスのサイズを変更しようとしているようですね。回路をコンパイルして FGPA に書き込むと、すべてのバス サイズが固定されることに注意してください。FPGA の構成をオンザフライで変更することは可能ですが、多くの場合必要ではないと思います。そして、それを行うのも難しいと思います。

正確に何を計算しようとしているのかを説明してください。そうすれば、別の方法を考え出すことができるかもしれません。

他にもいくつか。私は VHDL に 100% 精通しているわけではありませんが、双方向ポート ( s)が必要ですか? inoutまた、あなたは使用していないようですBSD_BitComparator; またはポートXYまたはFZ; またはZ、アーキテクチャの説明で信号を送信します。

于 2010-06-07T17:43:33.920 に答える
0

ジェネリックは、コンパイル/エラボレーション時に修正されます。変数は実行時に変更される可能性があります。したがって、あなたが目指していることは、あなたがやろうとしている方法では直接可能ではありません.

バスの一部のビットスライスを動的に指定する場合は、バスを可能な限り最大になるように定義し、計算された n を使用して必要なバスのスライスを多重化する必要があります。

于 2010-08-01T20:47:32.527 に答える
0

ビットベクトルの長さは入力に依存し、n固定されていません。

それ固定されています、それはジェネリックです。FPGA をコンパイルしてエラボレート (ビルド) すると、n修正されます。それで問題ありません。これを使用して、アーキテクチャ内の信号の長さを定義できます。

他の回答者と同様に、あなたがプロセスで何をしようとしているのかわかりません。Z 信号が必要とする長さを計算しようとしていますか?

その場合、それを関数に入れ、Z の宣言で関数を使用できます。

signal Z:std_logic_vector(calc_z_high_bit(n) downto 0);

于 2010-06-08T15:13:53.077 に答える