2009. 3.16 Snapshot追加

「偽X1(仮)」プロジェクト

コンセプト 仕様(目標) 進捗状況 拡張構想 お礼 ダウンロード 消費電力 改訂履歴

 FPGA上にクラシックPCを再現する試みは、すでに似非MSXシステム2FPGAでPC-8001を作る計画などで、密かに?広まりつつあります。
 それにつづけという訳ではないですが、FPGAに手を染めている私の個人的な趣味として、SHARP X1をFPGA上に再現させようと立ち上げたプロジェクトです。


BIOSメニュー画面とDIALIDE、手前の黒い固まりは\100防犯ブザーを流用した無電源スピーカー

 構想自体はFPGA-PACMANの開始時からあったもので、適当なターゲットボードが無いため寝ていたものですが、Spartan3 StarterKitという手頃なボードが入手できました。
 このボードには、20万ゲート規模のFPGAの他に、コンフィグROM,SRAMのデバイスと,VGA,PS2,RS232Cのインターフェースを持っていて、単体無改造でスタンドアロンPCを実現できます。
 残念ながら、このFPGAの回路規模では、最終目標であるX1turboフル機能は無理ですが、その前段階としてX1の 縮小版 拡張版を手がけてみます。

コンセプト

 ハード回路として再現するなら、全く同じ遺伝子(回路)を持った「X1クローン」といきたい所ですが、サブCPUのファームウェア(プログラム)が入手できないという致命的な問題があります。
 これは実チップから吸い出すことが出来ないため、当時の開発関係者からプログラムを提供して頂かない限り全く同じ物は作れないでしょう。

 また、当時のTTLデバイスとFPGA内部のロジックでは、回路の応答時間が1桁違い、メモリデバイスの仕様等も大きく異なります。
 FPGAならではの制限もあって、全く同じ回路図となると、安定性を確保できません。
 そこで、実際には全く同じ動作をする同等回路で再現することになります。

 周辺機器に関しても、15KHzのデジタルRGBディスプレイや、X1のキーボードを入手することは困難なので、現在の周辺機器に対応させます。

 以上の理由で結局100%同じにならないため、「偽X1」としました。

 また、今回は比較的安価で入手しやすいボードを、追加回路なしで動作できることを目的の一つとしています。
 なお、プロジェクト名は仮なので、もっと適当でカッコいい名称をいただければ、そちらに変更します。
 2005.4.4 追記:どうやら名前はX1Sになりそう。ただし、新しいプラットフォームに移り、X1turboの標準全機能の構築の見通しが出来た段階で。

仕様(目標)

 CZ-800C(元祖マニアタイプ)をベースに、ボード単体で動作できる状態にする。
 Z80のIPとして、回路規模の小さいfz80コアを採用し、可能な限り機能を拡張します。

 1)主に削る基本機能
  ・カセットデッキとそのコントロール
  ・TVコントロールとスーパーインポーズ
  ・拡張コネクタ、拡張スロット等
  ・VRAM/GRAMアクセスウェイト、IPL ROMのウェイト等詳細タイミング

 2)主に追加する基本機能
  ・GRAM回路

 3)追加する拡張機能
  ・内蔵スキャンコンバータにより、VGA出力対応
  ・1bit DACによるサウンド出力
  ・オリジナルサブCPUの新規構築と、PS/2キーボードのサポート
  ・埋め込みBIOS-ROMの新規構築による、セルフブートとメンテナンス
   リモートデバッガ用モニタ、CFG-ROMからブート、シリアル転送&ブート
  ・オリジナルIPL DISK READルーチンの埋め込み
  ・FDエミュレーション

 バイナリ又はFDイメージをPCからシリアル経由で転送して実行可能にする。
 大容量外部記憶が無いため、スタンドアロン動作では、コンフィグROMの空きエリアに格納しておいた、128KBytesに切り捨てられたFDイメージしか起動出来ません。

進捗状況
 サブCPUのソース整理

 各ソフトの起動確認状況

未実装の基本機能
 テキストV倍角&8ドットスキュー
 時計、タイマ機能 -> これは気が向いたら
 Z80コア(fz80)の実行タイミング100%互換化 -> 予定たたず

実装済拡張機能
 NoICE DEBUGGER対応のモニタソフト&リソースフリー化トラップ回路
 サブCPUの実装と、PS/2キーボード入力処理
 VGAへの周波数変換出力
 GRAMとグラフィック表示
 外付けLPF回路追加による、PSGとヘッドホンサウンド出力(fz80のみ)
 PCGオートウェイト回路
 埋め込み済オリジナルBIOSと偽IPL
 JOYSTICKエミュレーション
 コンフィグROMの空きエリアからのプログラム起動
 簡易NTSCエンコーダによるTV出力(2005.1.20)
 FDC MB8877A及び、.D88 / .2D FDイメージエミュレーション(2005.4.12)
 FD SEEK音エミュレーション(2005.4.12)

拡張構想
 CTC,DMAC,裏GRAM追加のX1Tanbo(タンボ)化で、一部のX1Turboソフトに対応(準備中)
 FM音源の構築(次期ターゲットボード待ち)

次ステップ
 FDCエミュレータのソース整理
 Z80CTC実装

お礼
・Z80のIPとして、OPENCORES.ORGにある、Guy Hutchison氏のTV80を使わせて頂いてます。
・おなじくZ80のIPとして、FPGAでPC-8001を作る計画のfz80を使わせて頂いてます。
・CRTCのIPとして、office D-sanのFPGA-ROCK_OLAに含まれている物を使わせて頂いてます。を書き直させて頂きました。
・CGROMフォントにX Millenniumのソースに内蔵されていたデータを使わせて頂いています。
・動作確認にGORRYさんのDIALIDEを使わせて頂きました。
・同じく動作確認にS-OSのページにあった、筑紫版X1用S-OS SWORD及びS-OS版INVADER GAMEを使用させて頂きました。
・Z80およびMR16(RISC)のアセンブラに、寒河江氏のAASM 3.60を改造の上、使用させていただいています。

・初期のデバッガとして、NoICE DEBUGGERを試用させて頂きました。
・偽サブCPUのCPUとして、Rudolf Usselmann氏のMini-Risc coreを使わせて頂いていました。

・プロジェクト開始の動機において、FPGAでPC-8001を作る計画似非MSXシステム2から大きな影響を受けました。

 この場をお借りして、お礼を申し上げます。

ダウンロードとリンク

偽X1 SunapShot.2009.3.16
偽X1 Ver.050412開発バージョン
偽X1 Ver.050120開発バージョン
偽X1 Ver.050114開発バージョン
偽X1 Ver.050112開発バージョン

サウンドLPFとビデオDAC回路図

消費電力
 電池駆動を考えて消費電流を実測してみました。

 環境:s3_x1_fz版+NEW Mappy、圧電スピーカー、VGA、PS/2キーボード(VCC=3.3V)接続
 測定方法:ニッケル水素単三4本駆動で、1Ω抵抗を直列に入れて、その両端を測定

 標準動作時 = 280mA前後
 LED,7seg消灯 = 240mA前後

 サウンド出力時は、20mA前後の変動があります。
 PS/2キーボードを抜いても、変化は確認できませんでした。

 ニッケル水素の単三4本で8時間、単四でも3時間程度は動きます。
 サスペンド機能を搭載して未使用時の電流を搾れば、SRAM上でバッテリ可動後、PCにセーブというPDA的な使い方ができるかもしれません。 <-VGAモニタはどうすんの!

 未コンフィグ=サスペンドにならないかと、電流を計ってみました。
   マスタシリアルモード = 80mA
   スレーブシリアルモード = 75.5mA
 動作時の1/3程度と、サスペンドというよりスタンバイ状態、2000mA/H / 75.5mA = 約26時間で、SRAMにデータを放りっぱなしにするには短すぎます。

 LEDが9個も点灯しているのはいただけない、こいつらの電流を計ってみる。
 パワーLED = 0.7V / 240Ω = 2.9mA
 LEDx8 = 0.295V / 240Ω = 1.2mA x8
 LEDは12.5mAと以外に食ってない、63mAは他で消費してる。
 LED全消灯でも約31時間、SRAMストレージ運営は辛いですね。

改訂履歴一覧
2005. 4.13 .D88対応版公開
2005. 4. 4 進捗状況、拡張構想更新
2005. 1.20 TV出力追加、fz80バグフィクス
2005. 1.14 デザイン更新、サウンドLPF回路図追加
2005. 1.12 デザイン初公開
2005. 1. 6 整理/公開もしないまま、FDエミュレーションに手をのばしてしまった...
2004.12. 9 進捗更新
2004.12. 6 進捗更新
2004.12. 2 公開