« Number of Nodes with overlapsについて | トップページ | Cosmo-Z Vivado版で波形キャプチャができた! »

2016.09.10

Vivadoで3ステートバッファ!?

Vivadoでトライステートバッファ作ろうとしているのですが、HDLで作ったIPモジュールの中で、

pad_bp <= o when (dir = '1') else 'Z';
i <= pad_bp;

というような記述してもCriticalWarningが出てしまいます。

Tricell

メッセージは、「Converted tricell instance 'U0_i1447' to logic」でした。

このU0_i1447というのは、デザインによって変わります。

つまり、tricellのロジック(おそらく3ステートのロジック)を普通のロジックに変更したよ、というCritical Warningのようです。

実機で動作させてみると、出力はちゃんとできているようですが、入力はできていないようです。

もちろん、ISEでは普通に動いていたのに、なぜでしょうね。

sun

プリミティブのIOBUFを使ったら双方向ができました。

adc_sclk_op   : out std_logic;
adc_sdio_ip   : in  std_logic;                    -- ADCチップへ
adc_sdio_op   : out std_logic;                    -- ADCチップへ
adc_sddir_o   : out std_logic                     -- 1ならsdio出力
・・・
adc_sdio_inst : IOBUF port map (
	IO => adc_sdio_bp,
	O => adc_sdio_i,
	I => adc_sdio_o,
	T => not adc_sddir
);

sun

何はともあれ、今手掛けているCosmo-ZのデザインのVivado再設計プロジェクトが、CPUとADC周辺までは完璧にできました。

Csz_adc1

全体はこんな感じ。

Csz_adc2

|

« Number of Nodes with overlapsについて | トップページ | Cosmo-Z Vivado版で波形キャプチャができた! »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Number of Nodes with overlapsについて | トップページ | Cosmo-Z Vivado版で波形キャプチャができた! »