この製作では、仕様に注意して部品を入手したり、半田付けのコツやFPGA開発ツールのダウンロード・インストール・Altera USB Blasterによる書き込み、Arduino Pro Microのボードマネージャのインストール・書き込みなど、経験が必要な局面がありますので、比較的難易度が高いと思われます。ブログでわかりやすく説明したいとは思いますが、限界がありますので、あくまで自己責任での製作をお願いします。
まずは、部品表(BOM)に従って、必要な部品を集めてください。そのなかで、下記の部品は、注意深く探してください。
(a)FPGAボード(EP2C5T144 Mini Board)___ アマゾン・Yahooショッピング
(b)Aletra USB Blaster ____________________ アマゾン
(c)Arduino Pro Micro 3.3V/8MHz ___________ アマゾン・eBay
Arduino Pro Micro 3.3V/8MHzについては、5V/16MHz品は、使えませんのでご注意ください。また、「KEYESTUDIO 3.3V Pro Micro Atmega32U4」と称して販売されている場合がありますが、実際には在庫が無いようです。少し値段が高めですが、マルツ・千石電商のSparkFun純正品(DEV-12587)も選択肢になります。
(d)0.36" カソードコモン 7seg LED ___________ aitendo・アマゾン
7seg LEDは、Aitendoの在庫減、アマゾンでは、5個単位で少し高めの価格になっています。
(e)74ACT573 ____________________________ 若松通商・マルツ
(f)GOOJPRT QR204 POS/ESCサーマルプリンタ __ アマゾン
最近アマゾンから「GOOJPRT QR204 POS/ESCサーマルプリンタ」の入手が難しい状況になっています。eBayでは、以前より値段が高くなりますが、入手可能なようです。代替品として「58mm 701 マイクロ 紙熱転写プリンタ」が使用できる可能性がありますので、動作確認ができた時点で、お知らせしたいと思います。
それでは、多くの方がインテル4004をお持ちでないと思いますので、まず、FPGA内蔵の4004コアを利用する製作手順に入っていきます。
①FPGAボード(Cyclone II EP2C5T144 Mini Board)の準備
(a)不要部品の除去
今回、I/Oポートをフルに使用するため、不要部品の除去が必要になります。
下記の写真のように、R1、R2、R9、R10、R13、C14を除去してください。
(12/3追記)--> 表面実装の部品を取り外したことが無い方は、はんだ吸取り線を抵抗に斜め横から被せ、はんだを付けた半田ごてを吸取り線に当てると、吸取り線といっしょにすぐ取れると思います。
(b)FPGA開発ツール(プログラマ)の準備
Cyclone IIシリーズの開発には、Quartus II ウェブ・エディション13.0sp1が必要です。Altera社を吸収したインテル社の下記URLからダウンロードできます。
https://fpgasoftware.intel.com/13.0sp1/ (12/26現在、リンクが無効ですので、更新ブログを参照ください。)
FPGAをスクラッチから開発する場合は、一式ファイルのタブを選択して"Quartus II Web Edition Software (Device support included) Quartus-web-13.0.1.232-windows.tar"が必要になりますが、今回は、FPGAに書き込みをするだけで十分ですので、「個別ファイル」のタブを選択して"Additional Software Quartus II Programmer and SignalTap II"をダウンロードします。
ダウンロードボタンを押すと、"Legal Disclaimer"画面に移り、"I Agree"ボタンを押すと、"Developer Zone Sign In"画面が出て、"Developer Zone Sign In"が必要になります。
画面右側の"Register now for Standard access"リンクから"Developer Zone Standard Registration"画面で登録をしてください。
登録が完了したら、再度
https://fpgasoftware.intel.com/13.0sp1/
から、"Additional Software Quartus II Programmer and SignalTap II"のダウンロードアイコンを押してダウンロードしてください。ダウンロードが終わったら、"Quartus II Programmer and SignalTap II"をインストールしてください。
(c)FPGAのプログラミング
FPGAのプログラミングには、前記"Quartus II Programmer"とAltera USB Blasterを使用します。まず、下記の写真のようにAltera USB BlasterをFPGAボードのASポート(外側)に接続します。
FPGAボードの電源コネクタに5VACアダプタを接続します。初期状態では、LEDチカがサンプルで入っているようです。
まず、FPGA書込み用バイナリファイルFPGA書込み用バイナリファイル(商用には利用できません)をダウンロードし、展開しておきます。
Altera USB BlasterをPCに接続し、"Quartus II 13.0sp1 Programmer"を起動後、FPGA書込み用バイナリファイル中のFPGA_i4004.cdfを開きます。
次に、Altera USB Blasterを使えるようにするため、"Hardware Setup"を行います。
ダイアログが表示され、USB Blasterが検出されていれば、正常です。選択するには、USB Blasterをダブルクリックすれば、良いようです。
②Pro Microの準備
(a)Arduino IDEの準備
下記のURLからArduino IDEダウンロード(できるだけ最新版を推奨)
https://downloads.arduino.cc/arduino-1.8.16-windows.zip(現時点)
zipファイルを適当なディレクトリに展開後、Arduino IDEを起動して環境設定を行います。
「追加のボードマネージャ」のURLに、下記のSparkfunボードマネージャを入力し、右側のボタンで追加します。
"https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json"
次に、設定を変更します。
・ツール->ボード->ボードマネージャで、"SparkFun AVR Boards"をインストールする
・ツール->ライブラリ管理で、"MsTimer2"、"EEPROM"、"Flash"をインストールする
・ツール->ボードで、"SparkFun Pro Micro"を選択する
・ツール->プロセッサで、"ATmeg32U4(3.3V, 8MHz)"を選択する
・ツール->書き込み装置で、"ArduinoISP"を選択する
・ツール->シリアルポートで、有効なポートを選択する
(b)プリンタフォントの書き込み
SBC4004_EEPROMスケッチ(商用には利用できません)をダウンロードし、展開後、SBC4004_EEPROM.inoをArduino IDEから開きます。
Busicom-141PFプリンタのフォントをPro MicroのEEPROMに書き込みます。本来でしたら、プログラム(スケッチ)中に入れておくことが普通ですが、プログラムが盛りだくさんになり32KBに入らなくなったため、苦肉の策で、EEPROMにフォントを配置することになりました。
スケッチ->マイコンボードに書き込むでプログラムを書き込み後、緑LEDが点滅すれば、EEPROM書き込み終了です。1回だけ実行すれば、OKです。
(c)SBC4004モニタの書き込み
SBC4004スケッチ(商用には利用できません)をダウンロードし、展開後、Arduino IDEからSBC4004.inoを開きます。
スケッチ->マイコンボードに書き込むで、Pro Microへプログラムを書き込みます。
Teratermなどのターミナルソフトで、Arduino Pro Microのシリアルポートに通信速度は、9600bpsで接続します。キーボードから「Enter」(改行)を入力すると応答が帰れば、正常に動作しています。
③基板の組立
基本は、背の低い、小さな部品から半田付けを行います。一連の部品を1か所か2か所、仮半田付け(合わせてリードカット)で固定し、最後に、集中的に本半田付けを行うと、効率的で、手早く半田付けができます。下記は、使用した部品です。
(a)コンデンサ・抵抗の取付
C1 16V, 33u タンタル
C2 - C5 C4, C7 - C11, C14 50V, 0.1u 積層セラミック
R1 - R4 1K - 1/8W 小型
R32, R33 1K - 1/8W 小型
R5 - R20 100 - 1/8W 小型
タンタルコンは、極性を間違えないようにしてください。
(b)電源コネクタ・SWの取付
J12 2.1mm type - Jack_DC
SW31 - SW33 6mm タクトSW
SW34 NKKスイッチズ A-18AH ON-OFF-ON トグルSW
(c)レギュレータ・ロジックIC(ソケット使用推奨)
U6 AMS1117CD-3.3(互換品) - TO-252
U10, U11 74ACT573 LED表示ラッチ/セグメントドライバ
U12 東芝 TBD62083APG LED桁ドライバ
(d)設定用ヘッダ・LED表示器の取付
J9 2x8 ピンヘッダ、ショートジャンパ
J10 2x3 ピンヘッダ、ショートジャンパ
D13 3mm赤色LED OSR5JA3Z74A(互換品)
D14 3mm黄緑色LED OSG8HA3Z74A(互換品)
D15 3mm白色LED OSW4YK3Z72A(互換品)
D17 3mm黄色LED OSY5JA3Z74A(互換品)
LEDについては、上がプラス極(リードが長い方)です。
(e)7セグLED表示器の取付
DS1 - DS4 KEM3461ASR 4桁 7セグメントLED 0.36インチ 赤色 カソードコモン(互換品)
(f)プリンタ用コネクタ・電解コンの取付
J7 JST B5B-PH-KL(PRINTER Signals)
J8 JST B2B-XH-A(PRINTER Power)
C5 6.3V, 560u アルミ高分子電解コン
(g)電源電圧確認
ロジックICを外した状態で、5V ACアダプタを接続して、レギュレータの出力側に3.3Vが出力されていることを確認します。
(h)Arduino Pro Micro用ピンソケットJ5, J6 1x12 ピンソケットの取付
Arduino Pro Micro用ピンソケットには、Arduino Pro Micro側のピンヘッダーが差し込まれますが、位置ずれがあると、コネクタの接触不良を起こすことがありますので、次の手順で、はんだ付けをお勧めします。
下記の写真は、ピンヘッダーを仮止めしたものを基板から抜いた状態です。基板にストレスなく戻せる状態だと、コネクタにストレスがかからずに接触不良を回避できます。
・基板を部品面を上にして置く
・SBC4004/Busicom-141PF側のJ5,J6に上記のピンソケット側を基板に差し込む
・Arduino Pro Microの部品面を上にしてピンヘッダー側にに差し込む
・Arduino Pro Microのスルーホールのほぼ真ん中にピンヘッダーのピンが位置するように調整する
・ピンヘッダー両端の仮はんだ付をし、位置を確定させる
・全体的に問題なければ、Arduino Pro Micro側のピンヘッダーを手早くはんだ付けする
・基板を半田面を上になるように裏返す
・SBC4004/Busicom-141PF側のピンソケットに浮き無いことを横から確認する
・SBC4004/Busicom-141PF側のピンソケットを手早くはんだ付けする
(i)FPGAボード用ピンソケット(J1 - J4 2x14 ピンソケット)の取付
同様に、FPGAボード用ピンソケットには、FPGAボード側のピンヘッダーが差し込まれますが、位置ずれがあると、コネクタの接触不良を起こすことがありますので、次の手順で、はんだ付けをお勧めします。
・FPGAボード付属のピンヘッダーにSBC4004/Busicom-141PF側のピンソケットを差し込み一体化する(4セット)
・基板を部品面を上にして置く
・SBC4004/Busicom-141PF側のJ1,J2,J3,J4に上記のピンソケット側を基板に差し込む
・FPGAボードの部品面を下にしてピンヘッダー側にに差し込む
・FPGAボードのスルーホールのほぼ真ん中にピンヘッダーのピンが位置するように調整する
・ピンヘッダー両端の仮はんだ付をし、位置を確定させる
・全体的に問題なければ、FPGAボード側のピンヘッダーを手早くはんだ付けする
・基板を半田面を上になるように裏返す
・SBC4004/Busicom-141PF側のピンソケットに浮き無いことを横から確認する
・SBC4004/Busicom-141PF側のピンソケットを手早くはんだ付けする
(j)動作確認
全てのはんだ付けが終わったら、ブリッジや忘れがないことを確認し、ロジックICをソケットに挿入後、5V ACアダプタを接続します。正常なら、LED表示が「SbC4004 b_141PF」と表示されるはずです。約10秒後、インテル4004の検出を行い、検出できないはずですので、FPGA内蔵の4004コアが有効になり、PC=000で停止状態にします。
下記は、その時点の写真です。
次にTeratermなどのターミナルソフトを、通信速度9600bpsで、Arduino Pro Microのシリアルポートに接続し、キーボードから「Enter」(改行)を入力すると応答が帰れば、コマンド入力ができます。
Dコマンド、Uコマンド、Xコマンドなど、確認できます。
(k)キー入力用タクトSWの取付
下記は、使用したタクトスイッチです。
SW1- SW30 12mm角型 透明キャップ付き タクトSW
(l)キートップラベルの取付
キートップラベルを印刷し切り離して、透明キートップにマイナスドライバーの先などを使って差し込んでいきます。透明キートップにラベルをキーに一度はめ込むと修正が効かないので注意してください。
④トラブルシューティング
正しい部品を使用し、はんだ付けに問題なければ、動作するはずです。
(a)SBC4004モニタが動作しない:Pro Microの詳細な書込みログを確認ください。
(b)LEDが正しく表示されない:FPGAコネクタ・Pro Microコネクタ・74ACT573など半田付けを確認ください。
(c)PC=000で停止状態の初期表示がされない:FPGAボードの不要部品除去を確認ください。
⑤電卓プログラムの実行
特に問題なければ、「GO」キーで電卓プログラムが実行開始されます。なお、プリンタは、電源投入以前に接続しておいてください。
Teratermなどのターミナルソフトを、通信速度9600bpsで、Arduino Pro Microのシリアルポートに接続すると、電卓プログラムが動作中でも、コマンドを受け付けますので、RAMの内容など確認できます。下記は、√2を計算した結果です。