MZ-700 on FPGA for Spartan-3(XC3S200)

戻る


MZ-700 on FPGA for Spartan-3(XC3S200)の詳細については、Oh!石氏のMZを作るを参考にしてください。


実際に動作させてみました。
Windows上で動作するエミュレータより、実機に近い雰囲気が楽しめます。 しかもPCGを内蔵しています。

PS/2キーボードは、5V駆動が一般的ですが、3.3Vで動作可能なものもあります。 ボードの規定値は3.3Vに設定されていますので、キー入力ができない場合はジャンパの設定を5Vにしてみるとよいでしょう。
ここで使用している、JUSTYの106キーボードは3.3Vで利用できました。

mztファイルを転送するには、RS-232Cのストレートケーブルが必要です。手元にRS-232C用のケーブルがなかったので、IO-DATA USB-RSAQ2を利用してUSBで接続しています。「FIFOバッファを使用する」チェックボックスがチェックされていると上手く通信できませんでしたのでチェックをはずしています。
PCGを動作したままだと、一部のキャラクタコードが見えなくなりますので、注意が必要です。 PLAYの「」やカーソルが表示されない場合は、PCGの動作スイッチをチェックしましょう。
PCGの切り替えスイッチは、ボード上のトグルスイッチ:SW7です。
音を出してみました。

結構ゲインが高いのですが、スピーカを直接駆動する電流は流せないと思われます。 アンプを作るのが面倒な場合は、ピンコードで既製品のアンプに接続するとよいでしょう。
実際の波形は確認せずにやっています。直流成分が含まれているとアンプやスピーカを壊す場合がありますので、念のため、壊れても惜しくないアンプやスピーカを使いましょう。
また、FPGAのドライブ能力を確認していません。FPGA側の安全のため、10KΩの半固定抵抗は追加しておいたほうが無難と思われます。
音を出してみました。その2

他励式ケース付圧電ブザー KYOCERA KBS-20-DB を利用しています。\273で購入しました。
圧電ブザーは通常その名のとおりブザーとして利用しますが、アンプをつなぐと利得が低いものの音声を出すことができます。
音質は「ブザー」の域を出ませんが、ともかくMUSIC "CDEFGAB+C" を実行すると一応音階が分かります。X1のようにFM音源を持っているPCでは実用的ではないのですが、MZ-700の能力ならこれでも十分のような気がします。


おまけ


FPGA MZ-700用ROMデータVHDLソースファイル生成ツール

FPGAの開発ツールに少しなれたところで、ちょっと調子にのって、mrom.vhd を、 指定モニタROMイメージファイルで生成するシンプルなツールを作ってみました。
生成されたソースファイルをmz700fpga_X200_051025.lzhに含まれるファイルと置き換えてROMイメージを生成しなおすことで、実機のモニタを利用できるようになります。
ROMイメージは、エミュレータで利用できる4KBのバイナリファイルを 対象にしています。ROMファイルは各自入手してください。
ダウンロード(MZ700RomToVhdl.zip .NET Framework 1.1用実行ファイルおよびソースファイル一式)

ISE7.1iの使い方(mcsをボードにダウンロードする)

1)iMPACTを起動
2)「Boundary-Scan」にmz700.mcsをドロップ
3)Initialize Chainを実行
4)xc3s200にはファイルを指定しない
 ※FPGAチップに一時的に書き込みを行う場合には、mz700.binをxc3s200に設定します。
5)xcf02sに、mz700.mcsを指定
 ※あらかじめ、JP1をFlash Readに設定しておく必要があります。
6)xcf02sを右クリックして、...Program を実行
 ※FPGAチップに一時的に書き込みを行う場合には、xc3s200を右クリックします。

補足:書き込みの設定でVerifyのチェックボックスをチェックするとエラーになります。


ISE7.1iの使い方(mcsを生成する)

X1リソースセンターXilinx Spartan3 Starter Kitにある、sp3_vsmpl.lzhをISE7.1iのプロジェクトに変換して、実行しています。
1)iMPACTを起動
2)[Modeメニュー]-FileMode
3)PROM Formatterタグを選択
4)[Edit]-Launch Wizwed
  PROM File Fromat は、MCSを指定
  PROM File Name にbinファイルと同じファイル名を指定する
  [次へ]ボタン押下
   Auto Select PROMをチェックする
  [次へ]ボタン押下
  [次へ]ボタン押下
   [Add File]ボタンを押して、binファイルを追加する
   binファイルが1つだけの場合、
    "Would you like to add another design file to Data Stream: 0 ?"
    メッセージボックスの[いいえ]を選択する
  [完了]ボタン押下


ISE7.1iの使い方(再合成)

MZ-700を再合成する場合、個別にSynthesizeを実行すると、NgdBuildでエラーが発生するする場合があるようです。
以下のように、いきなり Generate Programming File でRunを実行したほうがよいようです。




「偽X1(仮)」プロジェクトの再合成

nisex1_050412.lzhの、\sp3_x1_050412\bit_mcsディレクトリには、binおよびmcsファイルがありますので、そのままiMPACTで書き込みを行うことが可能ですが、ソースを修正した場合には、再合成を行う必要があります。

  • 再合成手順(1)

    まず、ntsc_enc.npl、tv80c_v15.npl、fz80c.nplを再合成します。ISE7.1がインストールされている環境では、でnplファイルをダブルクリックするとISE7.1iが起動します。
    Generate Programming File でRunを実行すると再合成が開始されます。各nplファイルを同じ手順で再合成を実行してください。
    ※Mapがないことを示すエラーが発生しますが、ここでは無視します。
    ERROR: MAP failed
    Process "Map" did not complete.

  • 再合成手順(2)

    次に、偽X1の本体を再合成します。
    sp3_x1.nplをダブルクリックして、ISE7.1iを起動します。あとは、同じ手順で再合成を行うと、binファイルが生成されます。



    Copyright (c) 2005 TSUNEOKA shinji