UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 15229

5.1i XST - 係数のアレイが正しくコンパイルされない

説明

キーワード : XST, array, constant, coefficient, アレイ, 定数, 係数

重要度 : 標準

概要 :
係数のアレイをアーキテクチャ文で宣言すると、XST でこの係数が正しくコンパイルされません。

例 :
****
architecture Behavioral of test is
type data_type is array (NATURAL RANGE <> ) of SIGNED (2 downto 0);
constant single_coeff : signed(2 downto 0) := CONV_SIGNED(10#3#,3);
constant array_coeff : data_type(0 to 1) := (CONV_SIGNED(10#3#,3), CONV_SIGNED(10#3#,3));

begin

P1: process(clk)
begin
if clk'event and clk='1' then
out_1 <= CONV_SIGNED(array_coeff(1),4);
out_2 <= CONV_SIGNED(single_coeff,4);
end if;
end process;

end Behavioral;
****

シミュレーションでは、out_1 と out_2 の結果は 0011 であると予測されますが、 実際には out_1 が 1111 に、out_2 が 0011 になります。

ソリューション

この問題を回避するには、次のように 10 進数の初期値を 2 進数に変更する必要があります。

****
architecture Behavioral of test is
type data_type is array (NATURAL RANGE <> ) of SIGNED (2 downto 0);
constant single_coeff : signed(2 downto 0) := "011"; --changed initial values base
constant array_coeff : data_type(0 to 1) := ("011","011"); --changed initial values base

begin

P1: process(clk)
begin
if clk'event and clk='1' then
out_1 <= CONV_SIGNED(array_coeff(1),4);
out_2 <= CONV_SIGNED(single_coeff,4);
end if;
end process;

end Behavioral;
****

この問題は、最新版の 5.1i サービス パックで修正されています。サービス パックは次のサイトから入手できます。
http://support.xilinx.co.jp/support/techsup/sw_updates
この修正は、5.1i サービス パック 1 以降に含まれます。
AR# 15229
日付 07/18/2007
ステータス アーカイブ
種類 一般
このページをブックマークに追加