フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2006-11-30 9:45 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3068 |
I2C Port_Expander_XAPP799_FinalVer.iseではまる せっかくCoolrunner IIが載っているCPLD基板を活用しようと思い立って、I2Cインターフェースのとあるチップをエミュレーションするデザインをしようと思ってXilinxのサイトからI2Cのリファレンスデザインをダウンロード。
Port Expander XAPP799というやつ。 I2Cインターフェースと8bitの入出力ポートの変換回路という感じ。 実はこれ書き込みは8bitなんだけど読み出しは何故か8bit信号ピンがありながらそのうち下位2ビットしか読み出せないアンバランスな仕様。残り6ビットは1固定読み出しとなっている。 //############################################################### // Put data from internal reg to GPIO or to SDA //############################################################### always @ (negedge scl or posedge i2c_rst) begin if(i2c_rst) sda_out <= 2'b1; else if (out_en) begin if (index == 6) sda_out <= gpio_input[1]; else if (index == 7) sda_out <= gpio_input[0]; else sda_out <= 1'b1; end end なら8ビット全部入力できるようにと修正してシミュレーションしてみると、驚愕の事実が発覚。 実はgpio_inputの全ビットを順にsda_outへくりだすようにしてもタイミングが1クロックずれてしまい01101001と出ていくべきところが10110100などという具合になってしまう。 綺麗に直すにはかなり全体を直さないといけない雰囲気。これを書いた人はきっと軽い気持ちで書き始めてポートの読み出しの際にハタと問題にぶつかってすべてのビットを出力するのはやめにして2ビットだけ出力するようにお茶を濁したと想像される。どうせ無償だし無保証なのでそれで構わないのであるが。 これを使おうとした人は皆ここではまったに違いない。 |
フラット表示 | 前のトピック | 次のトピック |
投稿するにはまず登録を | |