コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.14.x を参照.

CPU ボードとのインターフェース

FPGA と CPU ボードとの接続は以下のようになっている.

  • [16:1] CPU_ADDR: Input, CPU ボードから書き込まれるデータのアドレス
  • [15:0] CPU_DATA: Input/Output, CPU ボードとの間でやり取りされるデータ
  • CPU_CKIO: Input, CPU バスクロック ()
  • CPU_CS1_N: Input, CPU バスイネーブル (負論理)
  • CPU_WE0_N: Input, 書き込みイネーブル (負論理)
  • CPU_RD_N: Input, 読み込みイネーブル (負論理)
  • CPU_RDWR: Input, 1 で CPU からの読み込み, 0 で CPU からの書き込み
  • RESET_N: Input, リセット (負論理)

CPU との通信には, CPU_ADDR, CPU_DATA, CPU_CKIO, CPU_CS1_N, CPU_WE0_N, CPU_RD_N, 及び, CPU_RDWR を使用する. これらの信号は, AMD の BRAM IP (Native Port) と接続できる.

CPU からの書き込みでは, CPU_CS1_N, CPU_WE0_N, CPU_ADDR, CPU_DATA をまず端子の IOB のフリップフロップで CPU_CKIO に同期して取り込む. CPU_WE0_N が連続する 2 回の取り込みでアサートされていたら, 先の取り込みのアドレスとデータで BRAM の addr, din を駆動し, en, we を 1 クロックだけアサートする (1 回のアクセスにつき 1 回だけ書き込む).

CPU からの読み込みには, トライステートバッファを使用し, ~CPU_CS1_N, かつ, ~CPU_RD_N, かつ, CPU_RDWR の場合に CPU_DATA を dout に接続し, そうでないときは CPU_DATA をハイインピーダンス (z) にする.

CPU_ADDR の上位 は領域の選択 (BRAM_SELECT) に, 残り が領域内のアドレスになる (Modulation / Emission BRAM は上位 で選択し, 残り が BRAM 内のアドレスになる). 詳細は Memory を参照されたい.

CPU 側から見ると, この FPGA は CS1 空間 (0x44000000) にマップされた 幅のメモリとして見える.