[PR]子育てママさんへ:3年毎に15万円うけとれる保険?

   FPGA-Donkey Kong PROJECT        
 1980年代 初めに発表された DonkeyKongのオリジナル基板を FPGAの中に入れてみました。
 FPGAには、ALTERAのCYCLONE、設計言語に Verilog-HDLを採用しました。
デザインウエーブ2003-10月号(CQ出版)付録のCYCLONE(EP1C3T100)基板でも動作しました。 紹介ページは、こちら   
 2004-9-8 dkong v.3.00 
【 変更点 】
1. 今まで DW版で 1.5MHZ暫定動作していた T80が やっと3.0MHzで動作しました。 ただ見た目であまり変わらないのが寂しい。
2. サウンドCPUのI8035を T48_IP(http://www.opencores.org/cvsweb.shtml/t48/)を使用することで FPGAに内蔵できました。

  これで dkong_Full版も FPGA + ROM で動作するようになりました。 
 T48_IPは、BATA版です。 現在進行形のため? PSENnのタイミングにバグがありました。 他にもありそうです。 
 なんとか 動くようになったのですが 2種類の音がおかしいため これだけ WAVE_SOUNDに追加して補間しました。
 今後の 進展を楽しみにしたいと思います。
2004-9-18 dkong v.3.01
 T48_IPのBUGが作者(Arnim Laeuger氏)によって根本的に改善されました。 おかしかった音も改善されました。
 
UPDATE 2005-2-11 dkong v.4.00
【 変更点 】
1. XILINXのデバイスで やっとFull版が動作しました。 
2. Spartan3とCyclone版のソースの共通化をした際、ROMの時分割アクセスのスピードが上がりました。
  このため ROMの規格で アクセス時間が 100nSec以下のものを使用しないと 誤動作します。
  ROMの入手が困難の場合 V3.01を試して下さい。

  V4.00の詳細は, XILINX SPARTAN-3 STARTER BOARD で DONKEY KONG を見てください。
【 基板製作 】
 全ての機能を1個のFPGAに入れたいのですが CPUの知識がまだまだ乏しく とりあえず Z80(VIDEO用)、I8035(SOUND用)は、外付け。あとFPGAの内臓RAMでは、足りないので ROMを外付け...。
 下の写真が今回 FPGA-Donkeykong用に製作した2階建て基板(一部_3階)です. 右側が1階で左側が2階部分です。
 1階部分の構成
 FPGA ALTERA-CYCLONE(EP1C12Q240-C8)
 Config-PROM(EPCS4SI8) 
 電源基板(5V、3.3V、1.5V)
 2階部分の構成
 Z80CPU  (TMPZ84C00AP-6
 I8035CPU(TMP8035)
 ROM 2個
 VIDEO(VGA-CN) I/F
 SOUND  I/F
 SW(Control) 基板
 PLAY-STATION PAD I/F
 その他のICソケットは、DMA(i8257、Z80_DMA)用やRAM用に用意したものです.
 今回は、使用しませんが このDonkeyKongの最初動作させたころは、使用していました。
 液晶画面(秋月製)にてDonkey-Kongを動作させているところ
【 回路構成 & 苦労話  】
 FPGA-DonkeyKongでは、基本的には、20数年前の回路図を元にしていますが オリジナルな試みをところどころでしています。
初めの一歩 


  
 この基板が動作し始めたときには、CPU(Z80)、DMA(uPD8257)、ROM、RAM(CPU用)とAUDIO用 
 のCPU(8035)で動作させていました. 最初は、まともに動いてなかったけど.... 
 なぜFPGAがEP1C12なのか? Donkykongには、 この他にVideo用にROMが9個、RAMが4個 使用
 していました。 これらをFPGAのBLOCK-RAMに 入れるため最大限 大きいものを選びました.
DMAのFPGA内蔵化


   
 基板が動き出すと DMAの仕事が見えてきました.。 CPU-RAM(アドレス 6900h-6A79h)のデータを
 OBJ-RAM(アドレス7000h-7179h)に転送していました。 そこで CPU-RAM側をデュアルポートにして
 定期的に OBJ-RAMに転送するロジックをくんだところ すんなり動作しました。
 DW版では、CPU-RAMとOBJ-RAMを共用化しています。 これで8KbitのRAMの節約になります。
ROMの時分割アクセス



   
 このテクニックは、FPGA-PACMAN(さとう氏)を参考にしています。 VIDEO用ROM-6個とSOUND-CPU
 用-2個とアナログAUDIOデータを時分割でアクセスすることで FPGAのBLOCK-RAMの消費量をへらし
 外部ROM 2個で 動作させています。
 DW版では、サウンドを削除したので CPU-ROMとVIDEO用ROM-6個 を時分割でアクセスすることで
 外部ROM 1個で 動作させています。
サウンド回路  




  
 DonkeyKongのサウンドは、I8035を使って圧縮された音声データを再生する Digtal Sound と 555等の
 タイマーで構成されたAnalog Soundで構成されています。 
 せっかく8035を外付けしてDigtal Sound を動かしても Analog Soundがないと 面白くないのです。
 そこで Analog Soundをサンプルした Wavデータを 8bitのバイナリデータに変換して これを再生する
 ロジック を組み込んでいます。 
 このテクニックを使用すれば、 FPGA-SpaceInvader や FPGA‐Galxianから音が出るのでは?..。
Playstationコントローラ
 5個の押しボタンスイッチでも遊べますが、Playstation コントローラを接続できます。 
 メモリの値を監視して マリオが死ぬと ブルブルします。 
【 DownLoad 】
 今回 製作した回路及びソースを公開します。
  * 注意
  ここでの情報 及びソースには、著作権があり、また工業所有権か確立されている場合があります。したがって
  個人で利用される以外は,所有者の承諾が必要です。
  また、回路、技術、ソースを利用して生じたいかなる障害、損害において作者は一切責任を負わないものとします。
  各自の責任において使用してください。
  FPGA-Donkey Kong  V1.00   
 回  路  図  altera_fpga_dkong_sch.pdf  
 ソ-スファイル  altera_fpga_dkong_v01.zip    
2004-6-8 v.1.5 公開
 改正履歴: altera_fpga_dkong_sch_v2.pdf  CN5-7 - IC2-2間の配線欠落を修正
         altera_fpga_dkong_v15.zip    Quartus2_v4.0SP1にてコンパイル時のBugを修正
  FPGA-Donkey Kong  V1.50   
 回  路  図  altera_fpga_dkong_sch_v2.pdf  
 ソ-スファイル  altera_fpga_dkong_v15.zip    
2004-9-8 v3.00 公開
 改正履歴: メインCPUのZ80を T80_IPを使用して FPGAに内蔵。
         サウンドCPUのI8035を T48_IP(beta3)を使用して FPGAに内蔵。 
         これにより 外付けは、ROMだけになりました。
  FPGA-Donkey Kong  V3.00   
 ソ-スファイル  altera_fpga_dkong_v3.zip    
2004-9-18 v3.01 公開
 改正履歴: T48_IP(beta4)に変更。
  FPGA-Donkey Kong  V3.01   
 ソ-スファイル  altera_fpga_dkong_v301.zip    
< HOME >

[PR]三井住友海上きらめき生命:医療保険のご案内と資料請求はこちらから