NES on FPGA 23:01 2006/06/19

NES (Nitendo Entertainment System)

 NESにはCPUにサウンド機能を追加したチップが実装されていますが、 ここではサウンド部分をAPUとして説明します。 NESは以下のモジュールで構成します。

・CPU(Central Processing Unit)
中央処理部です。PPUやAPUを制御します。
・PPU(Picture Processing Unit)
画面を描画します。
・APU(Audio Processing Unit)
サウンドを生成します。
・WRAM(Work RAM)
CPUからアクセスする2KバイトのRAMです。
・VRAM(Video RAM)
PPUからアクセスするRAMで、ネームテーブル、 属性テーブルとしてパターンデータの元を保持します。サイズは2Kバイト。
・DMA(Direct Memory Access)
WRAMからPPU内部のメモリへデータを転送します。
・PAD(Propellant-actuated Device)
標準では2つのパッドが接続されています。

[ベースクロック] [メモリマップ] [DMA]

! RP2A03≒6502-10進演算+APU+DMAといったところ。

型番はRP2A03A〜RP2A03Hまであり、製造時期によって異なる。
RP2A03Gは後期、RP2A03Fは海外、RP2A03Hはニューファミコンらしい。

_
ベースクロック

 NESには21.47727MHzの水晶発振器が搭載され、 CPUには12分周された約1.79MHzが、 PPUには4分周された約5.37MHzがそれぞれ入力されます。

! 正確には1.7897725MHzと5.3693175MHzかな。

_
メモリマップ

アドレスサイズ用途
$0000〜$07FF$0800WRAM
$0800〜$1FFF
-
WRAMのミラー×3
$2000〜$2007$0008PPU I/O
$2008〜$3FFF
-
PPU I/Oのミラー×1023
$4000〜$401F$0020APU I/O、PAD
$4020〜$5FFF$1FE0拡張ROM
$6000〜$7FFF$2000拡張RAM
$8000〜$BFFF$4000PRG-ROM
$C000〜$FFFF$4000PRG-ROM

 PPUやPADのI/Oはメモリマップドとなっています。 $4020以降へのアクセスはカートリッジへのアクセスとなります。

! プログラムはPRG-ROMだけでなく、 WRAMに書いてジャンプするゲームもある。

_
DMA

 DMAはWRAMからPPU内部のスプライトRAMへ256バイトのデータを転送します。 DMAはCPUから$4014への書き込みによって開始し、 転送元の開始アドレスは$4014に書き込まれたデータを上位バイト、 下位バイトを$00とします。 DMAはアドレスをインクリメントしながら、データの読み込み、 書き込みを行うためCPU周期で514クロック要します。 この間、CPUは停止します。

! DMAは通常、VBlank中に行われる。

Copyright(C) pgate1 All Rights Reserved.