[HOME]

1chipMSXのコンパイル手順

Jun Mizutani 2006/12/17

1chipMSX は altera社 の Cyclone という FPGA で構成されていて、CPU(Z80A)やビデオチップ(9938VDP)もハードウェア記述言語である VHDL で記述したものを組み込んであるため、VHDL のソースを変更することでハードウェアレベルで機能を変更できる魅力的なオモチャです。私自身は MSX も VHDL も FPGA も初めてなので結構苦労していますが、簡単な部分から VHDL のソースで遊んでいこうと思っています。すでにLEDの機能を変更する改造がされている方がいますが、今後色々な改造が公開されていくものと思われます。そこで、改造されたソースを QuartusII でコンパイルして 1chipMSX に組み込む手順をまとめてみました。


QuartusIIの起動

1chipMSX 付属 CD-ROM の ESEMSX3 フォルダを Fドライブ にコピーして 以下の作業を行いました。PC は PentiumM 1.60GHz RAM 1GB のノートPCです。

QuartusII Web Edition v6.1 をインストールして、ESEMSX3¥pld フォルダ内のプロジェクトファイルである emsx_top.qpf をダブルクリックするとQuartusIIが起動します。

ROMデータをプロジェクトに追加

まずプロジェクトにMSXのROMを追加します。左上の Project Navigator の File タブの 「Other Files」フォルダを右クリックして「Add/Remove Files in Project...」を選びます。 (emsx_top.hex をプロジェクトに追加しなくてもemsx_top.cof に入っていればいいのかもしれません。)
emsx_top.hex


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 の最後部を示します。


BIOSを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 にはメモリマップが出力されます。

BLOCKSTART ADDRESSEND ADDRESS
Page_00x000000000x0002CAE6
emsx_top.hex0x000400000x0007FFFF

ダウンロードケーブルで1chipMSXに転送

ダウンロードケーブルで emsx_top.pof を 1chipMSXに転送する場合は Tool メニューから「Programmer」を選びます。


私はヒューマンデータ http://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ソースがあります。どこから手を付けたらいいんでしょうか?