読者です 読者をやめる 読者になる 読者になる

できないことはできない

ただのメモの置き場所

Arria10でのI2Cのトライステート

動作実績のあるI2Cコントローラで躓いたのでメモ。

全然ackを返してくれなくて苦戦してたら、別件でalterawikiを見てたときに以下のページを発見。

I2C (OpenCores) - Altera Wiki

そしてAlteraのページに飛んだらナンダカ解決方法っぽいものが。

Warning (12620): Input port OE of I/O output buffer is not connected, but the atom is driving a bi-direct

Why does my bidirectional pin drive out '1' instead of 'Z' when the data port is connected to a constant zero in my design?

つまりハイインピーダンス出力'Z'が'1'出力になってしまうというものらしい。

はい、これでした。動かなかったコントローラはackのときに'Z'にしてたので、デバイスが0に引っ張っても、FPGAから'1'をドライブしてしまうので、コントローラはackエラーと認識してしまってました。

ただこれですんなり解決するかと思ったら、AlteraのGPIOモジュールのINOUTシグナルはTOP直下でないとエラーになってしまう・・・。

イライラしながらportmap宣言の部分とかを修正したらやっと動きました。 めでたしめでたし。