次の型と定数の宣言では、配列の最後の値は実際には ではありません。これは2**35-1
、より大きい整数2**31-1
は標準の VHDL (2002)ではないためです。
library ieee;
use ieee.numeric_std.all;
-- Boilerplate elided...
constant X_SIZE : natural := 40; -- Really, anything greater than 32
type x_array is array(natural range <>) of signed;
constant XS : x_array := (
to_signed(0, X_SIZE),
to_signed(1, X_SIZE),
to_signed(2**35 - 1, X_SIZE) -- Not possible!
);
to_signed(2, X_SIZE)**35 - 1
ではべき乗が定義されていないのでできませんsigned
。完全な配列を入力するのは気が引けます。これは扱いにくくX_SIZE
、将来変更される可能性があるためです。では、ここで必要な値を作成するにはどうすればよいでしょうか? 0
文字通り 40秒とsを入力するよりも良い方法はあり1
ますか?