ブログの練習

ブログを書く練習です。
最近はレトロな計算機(電卓、マイコン、パソコンなど)
に関することを書き始めました。

Intel 4004 (その7) 実験用ボードの作成

2023-02-01 11:53:55 | マイコン(4004)
4004をちゃんと計算機として使えるような実験ボードを作っています。今現在、シリアル通信まで実装できましたが、この記事ではちょっと時間を遡って初期の組み立て段階のところをまとめます。
最近はプリント基板を安く作れるようになりましたが、さすがにまだ試行錯誤が必要だと思われるのでまずは回路変更の自由度の高いブレッドボードに組んでみました。それなりの規模の回路になるのでまず最初に回路図を描きます。(シリアル通信まではこの回路で動いていますが、プログラム領域のRAMの読み書きは未検証です。ちゃんと動くようになったらgithubに載せる予定です。)
なるべく当時の部品を使うという方針で作っていますが、明らかにメリットがある部分については21世紀の部品(低消費電力LEDなど)を採用しています。

クロック生成回路。

2相クロックを生成します。これはインテルのマニュアル通りで、既に何度も作っている回路です。オリジナルの回路ではカウンターは9316だけど74LS161で代用可、7400は74LS00でも可、MH0026はDS0026を使いました。74H04は74S04でも動きましたが、ここは水晶発振のアナログな部分なので他のシリーズで代用できるかどうかは不明です。今時の部品を使うとしたら74HCU04でゲート1個で発振させるのかな。

CPU周りとデータRAM、IOポート、通信部分。

MCS-4のRAM 4002には4002-1と4002-2という2種類があり、アドレスの8bit目の0,1で使い分けるということになっています。当時の集積技術とピン数の制約からくる苦肉の策だったと思います。1バンクあたり-1を2つと-2を2つ搭載できるのですが、今回は入手が簡単な4002-1だけを4つ使って2個x2バンク構成にしました。I/Oポートには低消費電力LEDを並べました1mA未満で光ってくれるので抵抗100kで直付けしています。
4002-1はeBayで1個800円ぐらいで買えたので10個以上買っちゃいました。1バンクフル実装も試してみたいので、1個2600円の4002-2も2つだけ買って到着待ちになっています。
通信部分ですが、こちらも妥協して21世紀の部品Toshiba TLP2958を採用しました(データシートにはnot recommended for new designとありますが)。入力閾値1.6mA、電源3~20V、5Mbpsの通信ができるフォトカプラです。最初は4002のIOポートに直付けしていたのですが、TTL UARTの論理の正負を勘違いしていた関係でCMOSのインバータ経由になりました。電源15VだとCMOSでも数mA流せるというのは今回初めて知りました。結果的にはこの方が4002の負荷が軽くなって良かったです。

プログラムメモリ周り。

4004はデータ用のメモリとプログラム用のメモリが区別されています。データ領域は上記4002を使用。プログラム用のメモリはMCS-4専用のマスクROM 4001を使うか、4289(メモリインターフェース)を介して通常のROMに継げます。
アドレス空間は4KB。アドレスのMSBを見てROMとRAMで半分づつにするのが簡単なので2KBづつに分けました。ROMは2716(2k x 8bit)、RAMは6116(2k x8bit)を2つです。RAMが2つな理由は下記の通り。
WPM命令によるプログラムメモリへの書き込みの際、4289は4bitのI/Oポートで2回に分けてアクセスします。なので、2k x 4bit (8k bit)のSRAMがあると丁度いいのですが、そのようなSRAMが存在しないのです。歴史的には4kbitの次は16kbitみたい。8kbit品も皆無というわけではなく、1k x 8bit はあったみたいですが、2k x 4bitは無さそうでした。というわけで6116を2つ使っています。
ちゃんと時代考証すると2716も6116も4004よりちょっと後の世代の部品なので、当時の計算機を再現ということにはなっていないのですが、配線が面倒だしバス負荷も心配なのでここは妥協しました。
この回路でROMの読み込みはできていますが、RAMへのアクセスは未確認、これから試すところです。4004の命令セットにはプログラムメモリ領域への書き込み命令WPMはあるのですが、読み込み命令RPMは4040で拡張された命令らしく、普通に読む手段が存在しないようなので要調査です。

組み立ての様子。まず電源(+5V, GND, -10V)。


部品の配置を決めます。ギリギリぴったり収まりそうです。


クロック部分を作成。


クロックの動作確認。L=-10V, H=+5Vの二相クロックが出ています。


電源の配線。


信号の配線。


完成!


しかし動かない!切り分けのために前回作ったLチカボードのROMを継げてみます。2716と1702ではバスが全然違うので外に引き出して継げます。


1702だとちゃんと動いたので、問題切り分け。切り分け作業中にいろいろ信号を観測した信号はあるんだけど、説明を書くのが面倒なので割愛。これに丸1日ぐらいかかったのですが、結局このuPD2716の個体が不良というのが原因でした。しかも完全に壊れているわけではなく、電源投入後の短時間は動くのでROMリーダーでは読めてしまったり、+5Vに継げなくてはいけないVppを切ると動くという性質の悪い壊れ方。ROMはたくさんあったのに不良の1個をいきなり引いたっぽい。とほほ。

気を取り直してLチカプログラムの動作確認。


次の記事ではシリアル通信用プログラムを作った話を書きます。





コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Intel 4004 (その6) MCS-4 Ev... | トップ | Intel 4004 (その8) シリアル... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
PCBWay Sponsor (Liam)
2023-02-02 17:34:24
​​​Hello

Deeply impressed by your blog content which means a lot to electronic enthusiasts.
I’d like to sponsor your project by providing free PCB prototyping,
only hoping for a slight promotion or a review about quality or service in return.

Are you interested?

こんにちは

あなたのブログの内容は、電子愛好家にとって多くのことを意味し、深く感銘を受けました。
私は無料のPCBプロトタイプを提供することによって、あなたのプロジェクトのスポンサーになりたいと思います。
ただ、見返りとして、ちょっとした宣伝や品質やサービスについてのレビューを期待しています。

あなたは興味がありますか?
Unknown (ryo)
2023-02-02 18:25:54
Thank you for your interest, I have used PCBWay many times. It will take me a few more weeks to debug this project. Can I apply for the Non-profit Project Sponsor Ship when I get to the stage of making a PCB?

コメントを投稿

マイコン(4004)」カテゴリの最新記事