1chipMSX は altera社 の Cyclone という FPGA で構成されていて、CPU(Z80A)やビデオチップ(9938VDP)もハードウェア記述言語である VHDL で記述したものを組み込んであるため、VHDL のソースを変更することでハードウェアレベルで機能を変更できる魅力的なオモチャです。私自身は MSX も VHDL も FPGA も初めてなので結構苦労していますが、簡単な部分から VHDL のソースで遊んでいこうと思っています。すでにLEDの機能を変更する改造がされている方がいますが、今後色々な改造が公開されていくものと思われます。そこで、改造されたソースを QuartusII でコンパイルして 1chipMSX に組み込む手順をまとめてみました。
1chipMSX 付属 CD-ROM の ESEMSX3 フォルダを Fドライブ にコピーして
以下の作業を行いました。PC は PentiumM 1.60GHz RAM 1GB のノートPCです。
QuartusII Web Edition v6.1 をインストールして、ESEMSX3¥pld フォルダ内のプロジェクトファイルである
emsx_top.qpf をダブルクリックするとQuartusIIが起動します。
まずプロジェクトにMSXのROMを追加します。左上の Project Navigator の File タブの
「Other Files」フォルダを右クリックして「Add/Remove Files in Project...」を選びます。
(emsx_top.hex をプロジェクトに追加しなくてもemsx_top.cof に入っていればいいのかもしれません。)
Settingダイアログが開くので追加するファイルを指定します。
ファイルオープンダイアログからファイルの種類に「Other Source Files」を指定して、
ファイル名としてemsx_top.hex を追加します。
プロジェクトファイルに emsx_top.hex が追加されていることが確認できます。
メニューの「Processing」から「Start Compilation」を選択するとコンパイルが始まります。
コンパイルの経過は「Status」パネルに表示され、PCの環境に依存しますが、10分程度でコンパイルが終了します。
コンパイルの状況は拡張子が rpt のテキストファイルでプロジェクトファイルと同じフォルダに生成されます。
emsx_top.asm.rpt emsx_top.fit.rpt emsx_top.flow.rpt emsx_top.map.rpt emsx_top.tan.rpt
ロジックエレメントやRAMの使用量などの概要は emsx_top.flow.rpt に出力されています。
emsx_top.flow.rpt 抜粋 +-------------------------------------------------------------------+ ; Flow Summary ; +-------------------------+-----------------------------------------+ ; Flow Status ; Successful - Sun Dec 17 02:08:58 2006 ; ; Quartus II Version ; 6.1 Build 201 11/27/2006 SJ Web Edition ; ; Revision Name ; emsx_top ; ; Top-level Entity Name ; emsx_top ; ; Family ; Cyclone ; ; Device ; EP1C12Q240C8 ; ; Timing Models ; Final ; ; Met timing requirements ; No ; ; Total logic elements ; 10,011 / 12,060 ( 83 % ) ; ; Total pins ; 171 / 173 ( 99 % ) ; ; Total virtual pins ; 0 ; ; Total memory bits ; 74,014 / 239,616 ( 31 % ) ; ; Total PLLs ; 1 / 2 ( 50 % ) ; +-------------------------+-----------------------------------------+ : +----------------------------------------+ ; Flow Elapsed Time ; +-------------------------+--------------+ ; Module Name ; Elapsed Time ; +-------------------------+--------------+ ; Analysis & Synthesis ; 00:06:58 ; ; Fitter ; 00:03:29 ; ; Assembler ; 00:00:09 ; ; Classic Timing Analyzer ; 00:00:34 ; ; Total ; 00:11:10 ; +-------------------------+--------------+
1chipMSXのコンフィグROM(EPCS4)に転送するファイルは emsx_top.pof になります。
emsx_top.pof はバイナリファイルで適当なバイナリエディタで確認できます。
emsx_top.pof の最後部を示します。
この emsx_top.pof には MSX のROMファイルが含まれていないため、この emsx_top.pof を1chipMSXに
転送しても 1chipMSX はMSXとして起動しません。Fileメニューの「Convert Programming Files」から
ROMデータがインテルHEXフォーマットで記述されている emsx_top.hex を emsx_top.pof に設定します。
「Open Conversion Setup Data」ボタンから emsx_top.cof を選択し、「Generate」ボタンを押すと
emsx_top.hex が後半部に書き込まれた emsx_top.pof 生成されます。
または、「Output programming file」部分で「Programmer ObjectFile [.pof]」、
「EPCS4」を選択、emsx_top.pof を指定して、「Input files to convert」部分で
「Main Block Data」に emsx_top.hex を「Add File」、「SOF Data」に emsx_top.sof を「Add File」して cof ファイルを作成することもできます。
emsx_top.pof の最後部に「emsx_top.hex」という文字列が確認できます。
emsx_top.map にはメモリマップが出力されます。
BLOCK | START ADDRESS | END ADDRESS |
---|---|---|
Page_0 | 0x00000000 | 0x0002CAE6 |
emsx_top.hex | 0x00040000 | 0x0007FFFF |
ダウンロードケーブルで emsx_top.pof を 1chipMSXに転送する場合は Tool メニューから「Programmer」を選びます。
私はヒューマンデータ https://www.hdl.co.jp/home.htmlのダウンロードケーブル自作キット(BLKIT) を使っていますが、その場合は「Hardware Setup」から ByteBlasterIIを指定して、
「Active Serial Programing」モードで「Start」ボタンを押すと数秒で転送が終了します。
( ダウンロードケーブルと1chiMSXの接続 )
コンパイルで生成されたファイルの一覧です。emsx_top.pof と emsx_top.sof 以外はテキストファイルです。
emsx_top.cof 2006/11/23 00:00:00 613 emsx_top.hex 2006/11/23 00:00:00 632,606 emsx_top_assignment_defaults.qdf 2006/12/17 01:48:44 27,152 emsx_top.qpf 2006/12/17 01:48:44 912 emsx_top.qsf 2006/12/17 01:57:38 34,630 emsx_top.map.rpt 2006/12/17 02:04:37 768,608 emsx_top.map.summary 2006/12/17 02:04:37 326 emsx_top.pin 2006/12/17 02:08:08 30,307 emsx_top.fit.summary 2006/12/17 02:08:10 423 emsx_top.fit.rpt 2006/12/17 02:08:10 424,658 emsx_top.sof 2006/12/17 02:08:21 281,507 emsx_top.asm.rpt 2006/12/17 02:08:22 7,282 emsx_top.tan.summary 2006/12/17 02:08:57 4,029 emsx_top.flow.rpt 2006/12/17 02:08:58 5,281 emsx_top.tan.rpt 2006/12/17 02:08:58 573,000 emsx_top.done 2006/12/17 02:09:02 26 emsx_top.pof 2006/12/17 02:19:32 524,505 emsx_top.map 2006/12/17 02:19:32 167 emsx_top.qws 2006/12/17 02:29:01 152 emsx_top.cdf 2006/12/17 02:29:01 299
src フォルダ以下には760KバイトほどのVHDLソースがあります。どこから手を付けたらいいんでしょうか?