United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

FPGAカンファレンス「ChipHack」でEDSAC テープリーダを復活!

モダンなFPGAプラットフォームで使用するための8穴式の古い紙テープリーダの入手

MyStorm_efaee2099c755bb2f7be20595c911e7c93cff126.jpg

先日「ChipHack」なるイベントが開催された。「ChipHack」は、ハードウェア記述言語(HDL)「Verilog」を使用したFPGAプログラミング技術の紹介とシェアを目的としたカンファレンスイベントだ。特に今回は初期コンピュータシステム「EDSAC」をテーマとしていた。

本記事では、イベントのために準備したノウハウをまとめてみた。すなわちLatticeセミコンダクタ製のFPGA「iCE40」上に構築したEDSACシステムに、たまたま入手できたテープリーダーを使用させてみている。

EDSACとは?

EDSACの正式名称はElectronic Delay Storage Automatic Calculator (EDSAC)だ。直訳すると『電気遅延メモリ自動計算機』になる。イギリスのケンブリッジ大学で開発された最初期のコンピュータである。その設計は1946年に始まり、その最初のコードが動いたのはなんと3年後の1949年だ。最初に計算したのはテーブルの辺の長さだと言われている。EDSAC 2が登場する1958年まで、大学で学術計算に利用されていた。

EDSAC_%2825%291_97743862e5ac55459c8cd523f5984b385c487d6b.jpg

 マルチコアコンピュータをポケットで持ち運ぶ現在では、たとえば1990年代のスーパーコンピュータで行っていた計算の同等以上の計算を誰もが手軽に行うことができる。

しかし1950年代は大きく事情が異なる。当時のコンピュータは現在のものとは異なりアプリやオペレーティングシステム(OS)を持たない。強いてEDSACに近いものに例えるなら、アセンブリ言語でマイコンを計算させるようなものだ。

当時のコンピュータシステムは現代の機器とは異なり、ストレージは極端に限られていた。全体で512ワード、それぞれ17ビットで構成されていた。そう、これは決して冗談ではなく、本当に17ビットだったのだ。初期の設計の段階では18ビットであったのだが、操作をプッシュするタイミングの問題のため、信頼性を向上するために17ビットとしていた。この残されたコードのスペースは非常に限られており、EDSACをプログラミングすることは、この孫にあたる機器よりもかなり難しかった。特に、現代のようなプログラミング技術はほとんど発明されていなかったのだ。

磁気媒体という夢

今ではフラッシュメモリやクラウドストレージが当たり前のように普及しているが、数年前までは、それらの便利なツールの代わりに磁気媒体でストレージしていたのを覚えているだろうか。その磁気媒体も1950年当時には夢のモノだった。そうそれが後のRAMだ。データを記憶しておくことは、メモリが遅延線で構成されているEDSACには難しいことだったのだ。

EDSACはデータの保存に水銀柱遅延線を使用している。音は水銀柱に注入され、長さ/音の速さ の遅れでもう一つの端に到着したときに測定される。これはまさに”RAM”であり、現代のものは揮発性であるため、データを保持する力が必要だったのと同様だ。それはまた水銀を利用していたため、非常に重くて有毒なため危険であったが、それが計算機の歴史の始まりにおいてはあたり前のことだったのだ。

非揮発性のストレージペーパのため、そう、“紙テープ”だ!

Tape3_bb11526a009bee6a0e49d50d98fa2ab658e9bf78.jpg

EDSACへの接続は、5ビットデータをパンチテープにエンコードする端末「Teleprinter」で行われる。これにより、ZX Spectrumまたはコモドール64の磁気カセットテープと同じように読み取ることが出来る。80年代/90年代当時の子どもたちは”テープを挿入して下さい”からロードされるのに1時間かかったことを覚えているだろう。しかし、これは他のペーパーテープよりも早いロード時間だったのだ。

Tape_reader_989bdd45c1bc88f76374127e0921a4065a516b90.jpg

iCE40におけるFPGAの実装

オープンソースソフトウェアソリューション会社 Embecosm はこのワークショップの組織を率いてChip Hackの基本チュートリアルについてまとめた。Bill Purvis氏とRichard Miller氏はイベントの一部のEDSAC ChallengeのためにRTL(Register Transfer Level)設計を行った。コスト的に効率的Latticeセミコンダクタ製FPGA「iCE40」を使用しているため、このイベントには多くの人が参加できるだけではなく、実用的であるという利点もある。これらのデバイスが秘めている”力”はすばらしいものだ。特に小型で安価なFPGAが利用可能である点だ。

テープとパンチ

Both_426d160f79432bee535da763623834451ff56ea9.jpg

To give a little authenticity it would be a great addition to have a vintage tape and punch available for the event. Finding a working 1950’s teleprinter was a little bit much of an ask. We did, however, get have a tape punch and reader from CNC machine use, circa the 1980/1990s era. You may find it hard to believe, but paper tape is still being used on some CNC machines.

一方テープデバイスの方はかなりリアルなものになった。今回のイベントのためにビンテージテープとパンチを使ったのだ。「どこで動作可能な1950年代のテレプリンターを見つけたのか」とよく聞かれるが、実は 1980/1990年代頃、CNCマシンではテープパンチとリーダーが使われていた。信じられないかもしれませんが、一部のCNCマシンではまだ紙テープが現役で使用されていて、今回、それを使ったのだ。

GNT28テープリーダ

さて、本題に入ろう。今回私達が入手した古いテープリーダにはビンテージドリルファイルが付属していた。全てのデバイスの電源をオンにすると全てうまく動作するように見えたが、『テープフォワードボタン』をクリックするとテープがスプール(簡単に言うと先に処理するデータの準備をしておくこと)され、おかしな挙動になり、場合によっては煙がでるまでこれを複数回繰り返したという。

ユニットをオフにして電源供給部分を離して配置することは、変圧器とデイオー度ブリッジを備えた場合の基本設計だった。変圧器に搭載されていたXクラスのコンデンサは非常に壊れやすいものだった。この部品は短いものであったので、取り除いても問題ないようであった。そのため、私達は気をつけてその部品を取り除き、再びもとに戻した。すると問題なく動作しているようだった。

X-Cap_8fafb4d56e54f54736e9a09f5ab7c6f794e2317b.jpg

リーダにおいてコンデンサは必要ないようであったため取り外すことに成功したが、それはEMCのためにあるため(つまり電磁気ノイズの対策の一つ)、今回は現代の代替品に新たに交換しておいた。

ピンアウト問題

GNT28と検索するとインターネット上には情報が何もないはずだ。また、入手したデバイスが”平行”であるのはCNCリーダ、つまり数値制御においては非常に変わったことだ。そのため、私たちはできればマニュアルを手に入れたいと考えた。そこで私達は実際にこのリーダの製造元を見つけ、運がいいことに彼らはまだビジネスを続けていた。そのためユーザーマニュアルを送ってくれるように頼むことができたのだ。

入手したデバイスはバラバラになっていた。そこで製造元からのユーザーマニュアルが手に入らなかった場合を考え、リバースエンジニアリング(マニュアルなどなしに手探りに対象を明らかにすること)を兼ねて組み立てることにした。

ボード上のICを確認すると、F3341DCという2つのメモリデバイスが存在していたことがわかった。これらはデータライン用(データのやり取りに利用される)のものである可能性が高い。この仮説のもと、コネクタのピンを1 - 8に戻すことは比較的簡単だった。全ての出力はインバータ、DM7404N、ピン9とピン10についても何かしらの出力であることも明らかであった。入力はどうやらピン11のみだったようだ。

Tape_PCB1_4d3c99c45742013e32e171ff2937f3dcf2fabe4a.jpg

電力の減衰を利用してピン11が制御、ピン1~8がデータ、ピン9と10が何らかの出力(おそらくクロックだろう)であることがわかった。こうしてリバースエンジニアリングを行い、この知見のもと、実際に組み立て、テストに移ることにした。

理論の検証

最近の記事でDigilent Digital Discoveryを見て、今回利用することを決めた。回路を見ると、DM7404Nが5Vであることがわかる。これはちょうどDigital Discoveryの許容電圧の範囲だ。

Sneak3_8e4635359decc571c1125c99b0166d233c213797.jpg

ピン1 - 10を入力に接続し、ピン11を出力に接続する。これには3V3ピンのみだが、DM7404Nの論理レベルは満たしているはずだ。そうして、テープを準備し電源を入れた。リーダは数秒でテープ全体を読み込んだ。驚くべきことに、こんなにも短い時間でDigital Discoveryにデータを取り込むことが出来たのだ。ピン9はクロックのような動きをすることがリバースエンジニアリングによってわかっているので、データの準備を行っているものだと考えた。またGNT28で”Ready”をクリックしてテープが終わるまではピン10がHighの状態になっていることが確認できた。

Data3_64365baf782c571556c07204f1f9261cac39d210.jpg

それからまもなく、メーカーから郵便でリーダのマニュアルを受け取った。マニュアルによってケーブルとアダプタを作ることができる確証を持つことができた。またデータレートを遅くするために入力をパルス(振動)させることもできた。

残るはChip Hackで使用されるmyStormボード上の回路だ。Pmodコネクタへの迅速なインタフェースの回路が必要なためだ。これで全てのRTLコーディング(論理回路をプログラミングすること)の準備が整った。

PMOD_e60fa1441ed46a0e288d2abf6e5b96be778099f7.jpg

最後に

ここまで読んでくれた方はおわかりだろう。古いデバイスをデバッグすることは難しいのだ。しかし、以前は回路をフェルトチップペンを使って描き、テープを利用してロジックを考えなければなかったのだ。今の私達が直面している問題は当時とほぼ同じ状況なため、その解決策も当時と同様だ。

Chip Hack EDSACチャレンジイベントでテープリーダを使用することで、「私達のコンピュータの歴史を垣間見ることが出来る」絶好の機会といえるだろう。この経験によって、コンピュータがどのように「アップグレード」してきたかを学び、さらにどう動いているのかを理解するためにRTLに興味を持ち、そして今後の未来に役立つことを願っている。

Karl Woodward

Karl is a design engineer with over a decade of experience in high speed digital design and technical project leadership in the commercial electronics sector.