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# 20182

v2.1 CORE Generator Aurora - VHDL Pro-X モジュールが初期化されない

説明

キーワード : LogiCORE Aurora, error, v2, Aurora, initialize, エラー, 初期化

重要度 : 標準

概要 :
VHDL Pro-X モジュールが初期化されません。 VHDL では、ポート マップされた信号の結合などポート マッピングでの連結オペレーションが行われません。 このため、最上位の Verilog モジュールを VHDL に変換する際に、ソース コードに信号を追加する必要があります。 MGT RX インターフェイスを Aurora Lane ロジックに接続する信号がこれにあたります。MGT に送られる信号は、Verilog コードでコンカチネーションとして処理されたビット選択されたサブセットです。 残念ながら、この代入文の左辺 (LHS) は不正です。原則として、信号は、出力信号が 2 度代入されるように接続します。

ソリューション

CORE Generator で生成したモジュールでこの問題を解消するには、次の手順に従ってください。

2 バイトのシングル レーンを使用したデザインの場合 :

1. コード内で次の代入文を見つけます。 レーンごとに 1 つのセットがあります。

rx_data_#_vec <= open_rx_data_i(48#+47 downto 48#) & rx_data_i(16*#+15 downto 16#);
rxnotintable_#_vec <= open_rx_not_in_table_i(6#+5 downto 6#) & rx_not_in_table_i(2#+1 downto 2#);
rxdisperr_#_vec <= open_rx_disp_err_i(6#+5 downto 6#) & rx_disp_err_i(2#+1 downto 2#);
rxcharisk_#_vec <= open_rx_char_is_k_i(6#+5 downto 6#) & rx_char_is_k_i(2#+1 downto 2#);
rxchariscomma_#_vec <= open_rx_char_is_comma_i(6#+5 downto 6#) & rx_char_is_comma_i(2#+1 downto 2#);

# は、0 から始まるレーン番号です。 たとえば、レーン 0 には、次を含むセクションがあります。

rx_data_0_vec <= open_rx_data_i(47 downto 0) & rx_data_i(15 downto 0);
rxnotintable_0_vec <= open_rx_not_in_table_i(5 downto 0) & rx_not_in_table_i(1 downto 0);
rxdisperr_0_vec <= open_rx_disp_err_i(5 downto 0) & rx_disp_err_i(1 downto 0);
rxcharisk_0_vec <= open_rx_char_is_k_i(5 downto 0) & rx_char_is_k_i(1 downto 0);
rxchariscomma_0_vec <= open_rx_char_is_comma_i(5 downto 0) & rx_char_is_comma_i(1 downto 0);


2. ビット幅を維持しながら、代入文の 左辺 (LHS) と右辺 (RHS) を入れ替えます。

rx_data_i(16*#+15 downto 16#) <= rx_data_#_vec(15 downto 0);
rx_not_in_table_i(2#+1 downto 2#) <= rxnotintable_#_vec(1 downto 0);
rx_disp_err_i(2#+1 downto 2#) <= rxdisperr_#_vec(1 downto 0);
rx_char_is_k_i(2#+1 downto 2#) <= rxcharisk_#_vec(1 downto 0);
rx_char_is_comma_i(2#+1 downto 2#) <= rxchariscomma_#_vec(1 downto 0);

# は、0 から始まるレーン番号です。 たとえば、レーン 2 は次のようになります。

rx_data_i(47 downto 32) <= rx_data_2_vec(15 downto 0);
rx_not_in_table_i(5 downto 4) <= rxnotintable_2_vec(1 downto 0);
rx_disp_err_i(5 downto 4) <= rxdisperr_2_vec(1 downto 0);
rx_char_is_k_i(5 downto 4) <= rxcharisk_2_vec(1 downto 0);
rx_char_is_comma_i(5 downto 4) <= rxchariscomma_2_vec(1 downto 0);


4 バイトのレーンを使用したデザインの場合、手順は同じですが、名前は若干異なります。

1. コード内で次の代入文を見つけてください。 レーンごとに 1 つのセットがあります。

rx_data_map_i(64*#+63 downto 64#) <= open_rx_data_i(32*#+31 downto 32#) & rx_data_i(32*#+31 downto 32#);
rx_not_in_table_map_i(8*#+7 downto 8#) <= open_rx_not_in_table_i(4*#+3 downto 4#) & rx_not_in_table_i(4*#+3 downto 4#);
rx_disp_err_map_i(8*#+7 downto 8#) <= open_rx_disp_err_i(4*#+3 downto 4#) & rx_disp_err_i(4*#+3 downto 4#);
rx_char_is_k_map_i(8*#+7 downto 8#) <= open_rx_char_is_k_i(4*#+3 downto 4#) & rx_char_is_k_i(4*#+3 downto 4#);
rx_char_is_comma_map_i(8*#+7 downto 8#) <= open_rx_char_is_comma_i(4*#+3 downto 4#) & rx_char_is_comma_i(4*#+3 downto 4#);

# は、0 から始まるレーン番号です。 たとえば、レーン 0 には、次を含むセクションがあります。

rx_data_map_i(63 downto 0) <= open_rx_data_i(31 downto 0) & rx_data_i(31 downto 0);
rx_not_in_table_map_i(7 downto 0) <= open_rx_not_in_table_i(3 downto 0) & rx_not_in_table_i(3 downto 0);
rx_disp_err_map_i(7 downto 0) <= open_rx_disp_err_i(3 downto 0) & rx_disp_err_i(3 downto 0);
rx_char_is_k_map_i(7 downto 0) <= open_rx_char_is_k_i(3 downto 0) & rx_char_is_k_i(3 downto 0);
rx_char_is_comma_map_i(7 downto 0) <= open_rx_char_is_comma_i(3 downto 0) & rx_char_is_comma_i(3 downto 0);

2. ビット幅を維持しながら、代入文の 左辺 (LHS) と右辺 (RHS) を入れ替えます。

rx_data_i(32*#+31 downto 32#) <= rx_data_map_i(64*#+31 downto 64#);
rx_not_in_table_i(4*#+3 downto 4#) <= rx_not_in_table_map_i(8*#+3 downto 8#);
rx_disp_err_i(4*#+3 downto 4#) <= rx_disp_err_map_i(8*#+3 downto 8#);
rx_char_is_k_i(4*#+3 downto 4#) <= rx_char_is_k_map_i(8*#+3 downto 8#);
rx_char_is_comma_i(4*#+3 downto 4#) <= rx_char_is_comma_map_i(8*#+3 downto 8#);

# は、0 から始まるレーン番号です。 たとえば、レーン 2 は、次のようになります。

rx_data_i(95 downto 64) <= rx_data_map_i(159 downto 128);
rx_not_in_table_i(11 downto 8) <= rx_not_in_table_map_i(19 downto 16);
rx_disp_err_i(11 downto 8) <= rx_disp_err_map_i(19 downto 16);
rx_char_is_k_i(11 downto 8) <= rx_char_is_k_map_i(19 downto 16);
rx_char_is_comma_i(11 downto 8) <= rx_char_is_comma_map_i(19 downto 16);
AR# 20182
日付 12/15/2012
ステータス アーカイブ
種類 一般
このページをブックマークに追加