![](https://blogimg.goo.ne.jp/user_image/4f/e3/ce45587b7ce956e98d40f18f8a6ec99d.jpg)
4004の周辺回路を現代の部品で作る試みの第3弾、TangNano編です。やっと完成したのでブログにまとめることにしたのですが、かれこれ1ヶ月以上前からやっていて、最初の頃のことは自分でもすっかり忘れているので、twitterで自分のツイートを読み返しながら書きます。トラブったことや部品選定の話をとりとめもなく書くだけなので、技術的な話はGitHubの回路図やソースを見てもらう方がいいと思います。
Tang Nanoというのは、Gowin SemiconductorのFPGAを使ってSipeedが製造販売しているFPGA評価ボードです。
当初Tang Nano 9Kというボードで試しており、64KBのメモリを実装するにはリソースがギリギリ足りないので実機と完全コンパチには出来ず、ブレッドボードでVTLを走らせるところまで試してさてどうしたものかと思っていたのですが、つい先日20Kという新製品が発売され、64KBのメモリを実装できるようになり、実機と完全互換のものが作れました。
9Kでブレッドボードで試していたときの写真がこれ。
![](https://blogimg.goo.ne.jp/user_image/70/09/c73b1b025b45ba2b9aa17c09a70afc1f.jpg)
この実験をしているときに、3.3V→15Vのレベル変換IC(CD40109)のGNDを継ぎ忘れていたせいでTangNano9Kを1つ壊してしまいました。40109にGNDを継げずに15Vと3.3Vだけ継げて検証実験をしたところ、入力端子(TangNano側の出力端子)に4.2Vの電圧が発生。
![](https://blogimg.goo.ne.jp/user_image/70/1a/24b1b1343311d860a31e40bd8d467f86.jpg)
![](https://blogimg.goo.ne.jp/user_image/23/95/2ae1e42d4905115802b17927e6bcbee6.jpg)
結構な時間こんな状態が続いていたのでまあ壊れるのも納得です。で、すぐに予備の9Kを2つ秋月に発注したのですが、なんとその日の夜にSipeedがtwitterで新製品の20Kの発売開始を発表。
とりあえず20Kの方もコントローラー付属のゲームキット1つとピンヘッダー無しを2つ注文しました。巷では5月25日頃に到着の報告を見かけたのですが、どうやらゲームキットもいっしょに注文したのがまずかったようで、発送が遅れて6月1日にやっと届きました。(しかも1個足りなくて、再送してもらいました。)
![](https://blogimg.goo.ne.jp/user_image/1b/14/b15b1fb48b84e341a47e7a5c9419e451.jpg)
初物なのでいろいろトラブルがありました。主なのは2つかな。
1つ目はpin25とpin26がデータシートで逆に描かれているという問題。pin25に継げたスイッチが全く反応しないので何がおかしいのか調べていたらどうやらpin25とpin26が逆の様子。これは6月8日のアップデートで修正されました。
2つ目はpin75から信号が出ない、信号入力もできないという問題。当初全く動かないので、twitterでSipeed宛てにpin75が動かないよ~と下記画像を付けてツイートしてみました。
![](https://blogimg.goo.ne.jp/user_image/4f/21/e145bb95512f48602015a92c7e5a5218.jpg)
いろいろ調べているうちに、なぜか手動で信号をGNDと+3Vに切り替えると0、1はちゃんと入力できることがわかり、これはもしかしてと周波数を変えて試してみたところ、高い周波数がカットされているらしいという現象を見つけて追加でツイート。
![](https://blogimg.goo.ne.jp/user_image/73/5f/194e2434cf50e5e094b8a614ea613794.jpg)
これに対して別の人から、pin75はコンデンサにつながってるとのリプライがあり、原因がわかりました。
![](https://blogimg.goo.ne.jp/user_image/77/b3/69ec42b6c2aaec0eb1ddbf9e36d2ad4c.jpg)
Sipeedからも、そのcapを外せばいいというツイートがあったので外して試してみたところ無事直りました。
![](https://blogimg.goo.ne.jp/user_image/48/e2/c8092fb22727d3d675fbc8f38af6e5dd.jpg)
![](https://blogimg.goo.ne.jp/user_image/15/cc/8ec71027a4a59b98e8e09e4df8db2932.jpg)
pin75が使えないと基板作り直しだなあと思っていたので作り直さずに済んで良かったです。(今は未使用のCMRAM1_nの信号につなげているので実害は無いのですが気持ちが悪いので。)
同様の信号がpin51にもあるのですが、こちらのコンデンサはパターンだけあって実装されていません。pin75のコンデンサも次期ロットあたりから外されるのかな。
今回の試作でもうひとつトラブったのが電源周りの話です。(こちらはTang Nanoとは無関係な話です。)
周辺回路をほとんどTangNanoに入れてしまったので、15Vの電源が必要なのは4004とクロックドライバだけになります。4004のデータシートを見ると、平均消費電流は最大40mA、絶対定格で1Wとあり、クロックも4004にしか供給されないので、多く見積っても全部で50mAもあれば良さそうです。
5V→15V、1WのDCDCでいけるだろうと思ってブレッドボードで試していたのですが、電圧が14Vぐらいまでしか上がらないという謎な現象に遭遇しました。
3WのDCDCにとりかえて電流を測定してみたところ、なんと最初に90mAぐらい流れています。
![](https://blogimg.goo.ne.jp/user_image/51/63/3d0adb6a49e180fa4c8839bbe4e84ab1.jpg)
15V1Wは67mAなので、これは過負荷です。14Vまでしか上がらないのも納得。
これが1分ほどで想定通りの33mAぐらいに落ちつきます。
![](https://blogimg.goo.ne.jp/user_image/5b/6b/066d29663e9c9e6adb331e26bb434b63.jpg)
最初は温度の問題かと思ったのですが、電源を入れなおすとまた90mAぐらい流れるので温度の問題では無さそう。4004とクロックドライバを疑って個別に計測してみたのですが特に問題無し。
CMOSゲートの4049を測ってみたところなんと1つあたり30mA流れていることが判明。これが犯人でした。いや、犯人は私なんですけどね・・・
4049の未使用入力をオープンにしていたのが原因でした。基板を作るときはちゃんとVCCかGNDに継げますが、ブレッドボードでは面倒なのでサボっていました。ごめんなさい。
電源がらみでもう1つ。DC/DCの選定にあたり、秋月で売ってるMINMAXにするか、ワールドワイドで入手性がいいRECOMのどちらにするか試してから決めようと思っていろいろ買ってみたのですが、RECOMの3WのRI3-0515Sがばかに電圧高めに出るなあと思っていたところ、DC/DCにはregulatedとunregulatedがあるということに気がつきました。
![](https://blogimg.goo.ne.jp/user_image/31/d4/420b11f0f3d86449a930fc21c528378f.jpg)
全部regulatedだと思ってたのですが、
MINMAXは1WのMAUはunregulatedで3WのMCWIはregulated。RECOMもROEやRI3はunregulated。regulatedが欲しければRS3なのでした。
3Wのunregulatedを0.5Wぐらいで使うと電圧は高くなってしまうというのは仕様通りの挙動。いろいろ買って試してみてやっと気がつきました。
![](https://blogimg.goo.ne.jp/user_image/6c/a6/19a8d1197a4464809ddbc9754699c358.png)
1Wを0.5Wぐらいで使うのは丁度いいようなので、今回はワールドワイドで入手性のいいRECOMのROE-0515Sを採用することにしました。
最後に部品選定の話をもう1つ。クロックドライバについてです。
昔の4004の回路では、DS0026というドライバが使われていました。若松でしか売ってないレベルの昔の部品です。現行品を使う方がいいかなと思い、teensyやPIC版では秋月で売ってるMicrochipのMCP1402に変えてみたのですが、やっぱりSOT23+変換基板というのは美しくないのでいろいろ調べた結果、同じくMicrochipのMIC4427というのがDIPの現行品らしいのでこれを使うことにしました。
![](https://blogimg.goo.ne.jp/user_image/72/c1/d4cb6ae6204f96685af9078e72c74ae9.jpg)
これについて調べてたときに、Microchipのこの表を見て途方に暮れていたのですが、
![](https://blogimg.goo.ne.jp/user_image/6e/7a/6c871693ccc48efaae2aac5d5e802c94.png)
TIが作ってくれたこの表に助けられました。
![](https://blogimg.goo.ne.jp/user_image/21/95/9af214e0de9fd720a8478b568e4e7779.png)
これに限らず、TIの資料は本当にわかりやすいです。
で、なんやかんやで完成した基板がこれ。
![](https://blogimg.goo.ne.jp/user_image/0d/af/0b054378f637fdbb04936571d0772ff7.png)
部品のほとんどはレベル変換用IC(15V←→3.3V, 15Vクロックドライバ, UART用5V耐圧バッファ)です.
ほとんど昔の部品で作った基板はこちら。この赤で囲んだ部分が全部Tang Nanoに入ったことになります。
![](https://blogimg.goo.ne.jp/user_image/4b/0c/31bba2b21b8b479d2905b72d9798684d.png)
一定の成果が得られたので、4004の周辺回路を現代の部品で作る試みはひとまずこれでひとくぎりにします。当たり前ですが、ハードウェアをエミュレートするのはCやアセンブラよりverilogの方が簡単でした。
次は何をやろうかな。
Tang Nanoというのは、Gowin SemiconductorのFPGAを使ってSipeedが製造販売しているFPGA評価ボードです。
当初Tang Nano 9Kというボードで試しており、64KBのメモリを実装するにはリソースがギリギリ足りないので実機と完全コンパチには出来ず、ブレッドボードでVTLを走らせるところまで試してさてどうしたものかと思っていたのですが、つい先日20Kという新製品が発売され、64KBのメモリを実装できるようになり、実機と完全互換のものが作れました。
9Kでブレッドボードで試していたときの写真がこれ。
![](https://blogimg.goo.ne.jp/user_image/70/09/c73b1b025b45ba2b9aa17c09a70afc1f.jpg)
この実験をしているときに、3.3V→15Vのレベル変換IC(CD40109)のGNDを継ぎ忘れていたせいでTangNano9Kを1つ壊してしまいました。40109にGNDを継げずに15Vと3.3Vだけ継げて検証実験をしたところ、入力端子(TangNano側の出力端子)に4.2Vの電圧が発生。
![](https://blogimg.goo.ne.jp/user_image/70/1a/24b1b1343311d860a31e40bd8d467f86.jpg)
![](https://blogimg.goo.ne.jp/user_image/23/95/2ae1e42d4905115802b17927e6bcbee6.jpg)
結構な時間こんな状態が続いていたのでまあ壊れるのも納得です。で、すぐに予備の9Kを2つ秋月に発注したのですが、なんとその日の夜にSipeedがtwitterで新製品の20Kの発売開始を発表。
とりあえず20Kの方もコントローラー付属のゲームキット1つとピンヘッダー無しを2つ注文しました。巷では5月25日頃に到着の報告を見かけたのですが、どうやらゲームキットもいっしょに注文したのがまずかったようで、発送が遅れて6月1日にやっと届きました。(しかも1個足りなくて、再送してもらいました。)
![](https://blogimg.goo.ne.jp/user_image/1b/14/b15b1fb48b84e341a47e7a5c9419e451.jpg)
初物なのでいろいろトラブルがありました。主なのは2つかな。
1つ目はpin25とpin26がデータシートで逆に描かれているという問題。pin25に継げたスイッチが全く反応しないので何がおかしいのか調べていたらどうやらpin25とpin26が逆の様子。これは6月8日のアップデートで修正されました。
2つ目はpin75から信号が出ない、信号入力もできないという問題。当初全く動かないので、twitterでSipeed宛てにpin75が動かないよ~と下記画像を付けてツイートしてみました。
![](https://blogimg.goo.ne.jp/user_image/4f/21/e145bb95512f48602015a92c7e5a5218.jpg)
いろいろ調べているうちに、なぜか手動で信号をGNDと+3Vに切り替えると0、1はちゃんと入力できることがわかり、これはもしかしてと周波数を変えて試してみたところ、高い周波数がカットされているらしいという現象を見つけて追加でツイート。
![](https://blogimg.goo.ne.jp/user_image/73/5f/194e2434cf50e5e094b8a614ea613794.jpg)
これに対して別の人から、pin75はコンデンサにつながってるとのリプライがあり、原因がわかりました。
![](https://blogimg.goo.ne.jp/user_image/77/b3/69ec42b6c2aaec0eb1ddbf9e36d2ad4c.jpg)
Sipeedからも、そのcapを外せばいいというツイートがあったので外して試してみたところ無事直りました。
![](https://blogimg.goo.ne.jp/user_image/48/e2/c8092fb22727d3d675fbc8f38af6e5dd.jpg)
![](https://blogimg.goo.ne.jp/user_image/15/cc/8ec71027a4a59b98e8e09e4df8db2932.jpg)
pin75が使えないと基板作り直しだなあと思っていたので作り直さずに済んで良かったです。(今は未使用のCMRAM1_nの信号につなげているので実害は無いのですが気持ちが悪いので。)
同様の信号がpin51にもあるのですが、こちらのコンデンサはパターンだけあって実装されていません。pin75のコンデンサも次期ロットあたりから外されるのかな。
今回の試作でもうひとつトラブったのが電源周りの話です。(こちらはTang Nanoとは無関係な話です。)
周辺回路をほとんどTangNanoに入れてしまったので、15Vの電源が必要なのは4004とクロックドライバだけになります。4004のデータシートを見ると、平均消費電流は最大40mA、絶対定格で1Wとあり、クロックも4004にしか供給されないので、多く見積っても全部で50mAもあれば良さそうです。
5V→15V、1WのDCDCでいけるだろうと思ってブレッドボードで試していたのですが、電圧が14Vぐらいまでしか上がらないという謎な現象に遭遇しました。
3WのDCDCにとりかえて電流を測定してみたところ、なんと最初に90mAぐらい流れています。
![](https://blogimg.goo.ne.jp/user_image/51/63/3d0adb6a49e180fa4c8839bbe4e84ab1.jpg)
15V1Wは67mAなので、これは過負荷です。14Vまでしか上がらないのも納得。
これが1分ほどで想定通りの33mAぐらいに落ちつきます。
![](https://blogimg.goo.ne.jp/user_image/5b/6b/066d29663e9c9e6adb331e26bb434b63.jpg)
最初は温度の問題かと思ったのですが、電源を入れなおすとまた90mAぐらい流れるので温度の問題では無さそう。4004とクロックドライバを疑って個別に計測してみたのですが特に問題無し。
CMOSゲートの4049を測ってみたところなんと1つあたり30mA流れていることが判明。これが犯人でした。いや、犯人は私なんですけどね・・・
4049の未使用入力をオープンにしていたのが原因でした。基板を作るときはちゃんとVCCかGNDに継げますが、ブレッドボードでは面倒なのでサボっていました。ごめんなさい。
電源がらみでもう1つ。DC/DCの選定にあたり、秋月で売ってるMINMAXにするか、ワールドワイドで入手性がいいRECOMのどちらにするか試してから決めようと思っていろいろ買ってみたのですが、RECOMの3WのRI3-0515Sがばかに電圧高めに出るなあと思っていたところ、DC/DCにはregulatedとunregulatedがあるということに気がつきました。
![](https://blogimg.goo.ne.jp/user_image/31/d4/420b11f0f3d86449a930fc21c528378f.jpg)
全部regulatedだと思ってたのですが、
MINMAXは1WのMAUはunregulatedで3WのMCWIはregulated。RECOMもROEやRI3はunregulated。regulatedが欲しければRS3なのでした。
3Wのunregulatedを0.5Wぐらいで使うと電圧は高くなってしまうというのは仕様通りの挙動。いろいろ買って試してみてやっと気がつきました。
![](https://blogimg.goo.ne.jp/user_image/6c/a6/19a8d1197a4464809ddbc9754699c358.png)
1Wを0.5Wぐらいで使うのは丁度いいようなので、今回はワールドワイドで入手性のいいRECOMのROE-0515Sを採用することにしました。
最後に部品選定の話をもう1つ。クロックドライバについてです。
昔の4004の回路では、DS0026というドライバが使われていました。若松でしか売ってないレベルの昔の部品です。現行品を使う方がいいかなと思い、teensyやPIC版では秋月で売ってるMicrochipのMCP1402に変えてみたのですが、やっぱりSOT23+変換基板というのは美しくないのでいろいろ調べた結果、同じくMicrochipのMIC4427というのがDIPの現行品らしいのでこれを使うことにしました。
![](https://blogimg.goo.ne.jp/user_image/72/c1/d4cb6ae6204f96685af9078e72c74ae9.jpg)
これについて調べてたときに、Microchipのこの表を見て途方に暮れていたのですが、
![](https://blogimg.goo.ne.jp/user_image/6e/7a/6c871693ccc48efaae2aac5d5e802c94.png)
TIが作ってくれたこの表に助けられました。
![](https://blogimg.goo.ne.jp/user_image/21/95/9af214e0de9fd720a8478b568e4e7779.png)
これに限らず、TIの資料は本当にわかりやすいです。
で、なんやかんやで完成した基板がこれ。
![](https://blogimg.goo.ne.jp/user_image/0d/af/0b054378f637fdbb04936571d0772ff7.png)
部品のほとんどはレベル変換用IC(15V←→3.3V, 15Vクロックドライバ, UART用5V耐圧バッファ)です.
ほとんど昔の部品で作った基板はこちら。この赤で囲んだ部分が全部Tang Nanoに入ったことになります。
![](https://blogimg.goo.ne.jp/user_image/4b/0c/31bba2b21b8b479d2905b72d9798684d.png)
一定の成果が得られたので、4004の周辺回路を現代の部品で作る試みはひとまずこれでひとくぎりにします。当たり前ですが、ハードウェアをエミュレートするのはCやアセンブラよりverilogの方が簡単でした。
次は何をやろうかな。
※コメント投稿者のブログIDはブログ作成者のみに通知されます