0

私はインターネットで解決策を探すのに本当に苦労しました。しかし、私は失敗したので、ここに置きました。

FPGA で I2C ブロックを設計しようとしています。基本的に他のブロックからDATA、MODE情報を受け取ります。受信後、I2C はその環境デバイスからデータをエクスポートまたは読み取ります。

私の質問は、I2C が FPGA 内の他のブロックと通信する場合、I2C が他のブロックとどのように同期できるかということです。I2C は、他のブロックから受信した DATA と MODE が以前のものであるかどうかをどのように知ることができますか? それとも最新?

私の現在のアイデアは、他のブロックから生成されたパルスを使用して、「新しいデータ」が来ていることを I2C に通知することです。他の方法があるかどうか私は知ることができますか?これらの方法の違いは何ですか?

どうもありがとうございました。

よろしくお願いします

4

2 に答える 2

0

I2C は、他のブロックから受信した DATA と MODE が以前のものであるかどうかをどのように知ることができますか? それとも最新?

私のデザインの (ほぼ) すべての信号には、enable と呼ばれる特別な信号があります。例: data & data_en

したがって、data_en = '1' はデータの新しい値を示します。

これにより、設計作業が容易になります。ステート マシンまたは計算パイプラインで次の有効化を待つだけで、適切なクロック サイクルで処理を開始できます。結果の準備ができたら、関連する result_en を「1」に設定するだけで、次のブロックが機能し始めます。

于 2013-03-27T18:27:04.323 に答える
0

UM10204 I2C-Bus Specification and User Manual (PDF、1.4 MB) を読むと、I 2 C が予想よりも複雑でありながら明確に定義されていることに気付くかもしれません。

VHDL のリファレンス デザインが役立つ場合があります。Frank Buss のI2C Slave を PCA9555 の実装例(ZIP、829KB) で試してください。PCA9555 (データ シート、PDF 529KB) は、I 2 C インターフェイスから 2 つの 8 ビット ポート デバイスへの読み取りおよび書き込みパルスを示してます。割り込みは、マスターにデバイスを読み取らせる入力ポート イベントを通知するために使用されます。SONET アラーム用に、この方法で PCA9555 ファミリー デバイスを使用しました。

あなたの「通知するために他のブロックから生成されたパルス」は互換性があります。別の方法として、2 つの I 2 C バスを使用するか、マスター デバイスとスレーブ デバイスの両方を 1 つまたは複数のデザイン ブロックに配置することもできます。ラティス セミコンダクターには、独自のマスター デザインの実装を教えるために使用できるリファレンス マスター デザイン ( I2C (Inter-Integrated Circuit) バス マスター コントローラーを参照してください。Zip ファイルのダウンロードは 494 KB、VHDL と Verilog の両方で、ライセンスはラティスの実装のみに適用されます) があります。検証用のトラフィック ジェネレーターに役立ちます。

于 2013-03-25T20:02:43.387 に答える