※当サイトではアフィリエイト広告を利用しています

プログラミング 電子工作

1bit CPU組み立てキットに挑戦して、学びになった話

 2023年末に「世界トップクラスの低性能」として話題になった1bit CPU。僕はこちらを発売と同時に購入していたものの組み立てることなく数ヶ月放置。しかしながらつい先日やっと重い腰を上げて組み立てに挑戦しました。

 結果としては組み立ててもまとも動作せず、一応失敗ということにはなるのですが、組み立てる前後で以前から気になっていたロジックICがいかなるものであるとか、ChatGPTのすごさに驚愕したりと、学ぶことが多くありましたので、今日はそのことについて記事にしたいと思います。

1bit-cpu_01

1bit CPUを組み立てた

 僕はFラン私立文系大学出身なので、特にハードの知識がないことに悩みを抱えていました。常にどこかでハードの勉強をせねばと思っているものの、社会人になってから体系立てて学べるような機会もなく途方に暮れていたのですが、今回『やじうまPC Watch』の記事で1bit CPUの存在を知り「これならCPUの原理を理解するのにうってつけでは?」と思い即購入を決めました。

どこにプログラムを書き込めばいいのか

1bit-cpu_02

 現物が届いたはいいものの、どこにプログラムを書き込めばいいのか分からず途方に暮れました。

 組み立てる前にまずはプログラムを書くかと思ったのですが、公式のページにはアセンブラのコードが書いてあるだけで、どのライターソフトを使って書き込めばいいのか分かりません。

1bit-cpu_03

<https://naoto64.github.io/1bit-CPU/>

 説明書にも書き込み方が解説されていないので、同じく1bit CPUを購入した方の解説記事や、YouTubeでの解説動画がないか調べたところ一本だけYouTubeで動画がありました。

 が、プログラムの書き込み方は解説されていませんでした。
 ある程度電子工作やっている方からしたらプログラムの書き込みなんて当たり前過ぎて言及するほどのことでもないんですかね…

ChatGPTに聞いてみる

 とりあえず説明書を読んでみると74HCシリーズという「ロジックIC」なる部品を使っていることがわかりました。
 プログラムは恐らくこの部品に書き込むのだろう。

 そこで74HCシリーズのロジックICについて調べてみるものの基本情報や応用情報で腐るほど見たAND、ORの論理回路の話が出てきて、結局どうやってプログラムを書き込んでいいか分からないので途方に暮れました。YouTubeで解説動画を上げている人にコメントで聞いてみるか、1bit CPUの作者にメールで質問してみるか…

 そう思っていたときにふとChatGPTの存在を思い出します。ということでとりあえずダメ元でChatGPTに聞いてみます。

1bit-cpu_04

自分「東芝の74HCシリーズのロジックICにプログラムを書き込む方法を教えてください。」

ChatGPT「申し訳ありませんが、東芝の74HCシリーズのロジックICにプログラムを書き込むことはできません。74HCシリーズは通常、デジタル回路を構築するための論理ゲートやフリップフロップなどの基本的なデジタル回路を提供するためのICですが、プログラムを書き込むことはできません。

プログラムを書き込むことができるのは、マイクロコントローラーやFPGA(Field-Programmable Gate Array)などのデジタル回路デバイスです。これらのデバイスは、プログラム可能な回路を持っており、ユーザーがプログラムを書き込んで動作を制御することができます。

もし、74HCシリーズのICを使って何か特定の目的を達成したい場合は、どのような目的なのかに応じて、適切な回路設計や組み立てが必要になります。その場合は、目的や要件に合わせた回路設計を行い、必要なICを選択する必要があります。」

 なに!? ロジックICってプログラムを書き込めるものではないのか!!??

 いやー恥ずかしい、ロジックICはてっきりプログラムを書き込むためのものだと思っていました。

 それと驚いたのはChatGPTの回答の精度の高さです。そこまで僕が深い質問をしているわけでもないのに、先回りしてこちらの知りたいことを丁寧に答えてくれるなんて!

 とりあえずこの1bit CPUはプログラムを書き込むものではなくて、一旦組み立てればいいだけだとわかりました。

 

ひさびさのはんだ付けで大苦戦

1bit-cpu_05

 さて、本商品はひとつのユニバーサル基板が与えられて、部品は別個で渡されているので組み立てには自分ではんだ付けを行わなければなりません。

 そこで出しましたよ、数年ぶりにはんだごてを。

 いやーはんだ付けするなんて数年前に転職の面接でプレゼンするために電子工作を作ったとき以来です。数年ぶりのはんだ付け、うまくできるかな。

 ・・・

 ・・

 ・

 組み立て(はんだ付け)に結局5時間ぐらいかかりました。

 YouTube動画では1時間以内には終わると言ってたのに…。

 アマプラでトップガンを流しながら組み立てをやっていたのですが、結局無印の方もマーヴェリックの方も両方終わってしまいました。

 久々のはんだ付けて、はんだごての先端が酸化してまともにはんだが溶けなかったり、ニッパーもサビサビになってまともに切れなかったのでダイソーに慌てて買いに行ったりと、なかなかまぁ思うようには組み立てが進みませんでした(笑)

 特にはんだごての先端が酸化しているのは致命的&僕が不器用ということもあって全く上手く接合できませんでした。

 そうして5時間ぐらいえっちらおっちらやって、やっとか完成。からのスイッチON!!

1bit-cpu_06

 

 動かないのな。

 

 完成すれば3色のLEDが1秒おきに点灯・消灯を繰り返すはずなのですが、かろうじて緑色のLEDがちょろっと光るぐらい。

 組み込みというか電子工作というか、ハードを扱うものは部品単体が悪いのか接合が悪いのかわからないから難しいですよね。結局部品は全部はんだ付けしてしまったので部品の取り換えようもないのでどうすることも出来ませんでした。

 

ロジックICを触ってみて、ロジックICとは何か理解が深まる

 結局1bit CPUの組み立てには失敗しましたが、今回使用した部品について興味が出てきまして、その後色々と調べることにしました。

 ChatGPTの助けを借りつつロジックICとは何かを調べてみると、ものすごく雑に言えばAND回路やOR回路の事を言うんですね。今まで基本情報や応用情報で腐る程見てきていたわけですが、部品だと74HC14になるわけです。これには結構感動しましたね。家で思わず「これかー!!」と叫んでしまいました。

 あと1bit CPUではマルチプレクサという部品を使っていますが、弊社の現場でもちょくちょくマルチプレクサは見聞きするので気になっていたので今回改めて原理を調べてみます。

 Wikipediaやその他の記事を見てもイマイチ理解できなかったのでChatGPTに聞きます。

自分「マルチプレクサICはどのようなときに使うものですか? 具体例を示しながら初心者にも分かるよう説明してください。」

ChatGPT「マルチプレクサIC(Integrated Circuit)は、複数のデータ信号を1つの信号にまとめたり、逆に1つの信号を複数のデータ信号に分割したりするためのデバイスです。主に以下のような場面で使われます。

  1. データの集約と選択:

    • 例えば、複数のデジタル信号があるとします。これらの信号を1つのデータ線にまとめて制御したい場合、マルチプレクサが使用されます。たとえば、デジタルオーディオシステムでは、複数の音声チャンネルを1つのデータストリームに統合するためにマルチプレクサが使われます。
  2. データの分配:

    • 逆に、1つのデータ信号を複数の場所に送信する必要がある場合、デマルチプレクサICが使われます。これは、通信ネットワークやセンサーネットワークなどでよく見られます。例えば、センサーネットワークでは、複数のセンサーからのデータを1つのマイクロコントローラに送るために、デマルチプレクサが使用されます。

これらの用途を理解するために、具体例を見てみましょう。

例1: 音声データのマルチプレクシング

想像してみてください。あなたが4つの異なる音源からの音声信号を扱っているとします。それぞれの音声信号は異なるソースから来ています。これらの信号を1つのデータストリームに統合し、1本のケーブルで送信したいとします。この場合、4入力1出力のマルチプレクサICが使われます。それぞれの音声信号をマルチプレクサに接続し、出力からはこれらの信号を時間的に交互に選択して統合された1つの信号が出力されます。

例2: センサーデータのデマルチプレクシング

次に、センサーデータのデマルチプレクシングの例を考えてみましょう。想像してください、4つの異なるセンサーがあり、それぞれが周囲の温度、湿度、光の強度、および気圧を測定しています。これらのデータをマイクロコントローラに送り、それぞれの測定値を正確に把握したいとします。この場合、1入力4出力のデマルチプレクサICが使われます。それぞれのセンサーをデマルチプレクサに接続し、マイクロコントローラに1つのデータラインからデータが送られます。そして、デマルチプレクサはそれぞれのセンサーデータを選択してマイクロコントローラに提供します。

以上が、マルチプレクサICの基本的な用途と、具体例を交えた説明です。これにより、初心者でも理解しやすくなると思います。」

自分「マルチプレクサICを使用して、センサーデータのデマルチプレクシングを行う際、どのような制御を行ってそれぞれの入力データを切り分けるのですか? 時間で区切って、それぞれのデータを取り込むのでしょうか。」

ChatGPT「はい、マルチプレクサICを使用してセンサーデータのデマルチプレクシングを行う場合、通常は時間的な区切りを使用してそれぞれの入力データを切り分けます。これは、マルチプレクサによって順番に選択された入力チャンネルからのデータを、時間的な区切りごとに切り替えて取り込むことで実現されます。

具体的な方法は、以下の手順で行われることが一般的です:

制御信号の送信: マルチプレクサICには、どの入力チャンネルからのデータを選択するかを制御するための制御ピンがあります。これらのピンに制御信号を送り、次に選択される入力チャンネルを指定します。

入力データの読み取り: 選択された入力チャンネルからのデータが出力されると、マイクロコントローラや他のデータ収集デバイスがそのデータを読み取ります。

時間的な区切りの管理: マイクロコントローラや外部制御回路が、データをマルチプレクサから読み取るタイミングを制御します。通常、一定の時間間隔で入力チャンネルが切り替わり、各チャンネルからのデータが取り込まれます。

データ処理: データがマイクロコントローラや他のデータ処理ユニットに取り込まれると、それぞれのデータは適切に処理されます。たとえば、センサーデータは測定値の単位変換、フィルタリング、解析などの処理が行われることがあります。

このようにして、マルチプレクサICを使用してセンサーデータのデマルチプレクシングが行われます。時間的な区切りを使用することで、複数の入力チャンネルからのデータを効率的に処理し、正確なデータ取得を行うことが可能です。」

自分「マルチプレクサICを使用すると複数のデータを一つのデータラインでデータを送れるようになるのは理解できましたが、わざわざマルチプレクサICを使用せずに最初からパラレル通信でデータを送るほうが効率が良いのではないでしょうか?」

ChatGPT「はい、パラレル通信は一度に複数のデータを送信できるため、一般的には効率が良いです。しかし、マルチプレクサICを使用する理由はいくつかあります。

1. **ピン数の削減**: マイクロコントローラや他のデバイスには、入出力ピンの数に制限があります。パラレル通信では、送信するデータごとに複数のピンが必要ですが、マルチプレクサICを使用すると、複数のデータを1つのデータラインで送信できるため、ピン数を節約できます。

2. **ケーブル数の削減**: データを複数のケーブルで送信する必要がある場合、ケーブルの数を削減することができます。これは、ケーブルの配線やインタフェースの複雑さを減らし、システム全体のコストを低減させます。

3. **距離の制限の緩和**: パラレル通信では、データを送信する際には高品質なケーブルが必要であり、データが劣化しやすいです。一方、マルチプレクサICを使用すると、1つのデータラインで複数のデータを送信するため、信号の劣化が少なくなります。これにより、より長い距離でも信号を安定して送信できる可能性が高まります。

4. **柔軟性と拡張性**: マルチプレクサICを使用することで、システムの柔軟性と拡張性が向上します。新しいセンサーを追加する場合や既存のセンサーを変更する場合、マルチプレクサICを使用するとハードウェアの変更が最小限で済みます。

以上の理由から、マルチプレクサICを使用することで、効率的にデータを送信し、システムのコストや複雑さを削減することができます。」

自分「デマルチプレクサICとマイクロコントローラーの接続方法がよく理解できていませんので詳しく教えてください。デマルチプレクサICとマイクロコントローラーは通常1本のデータラインで接続することが出来るのでしょうか?」

ChatGPT「デマルチプレクサICとマイクロコントローラーを接続する場合、通常は1本のデータラインだけでなく、複数の制御信号も含めて接続します。これにより、マイクロコントローラーがデマルチプレクサICを制御し、適切な入力チャンネルからのデータを選択して取得できるようになります。

以下に、デマルチプレクサICとマイクロコントローラーの基本的な接続方法を示します:

1. **データラインの接続**:
- デマルチプレクサICの出力からのデータは、1本のデータラインでマイクロコントローラーに接続されます。これは、デマルチプレクサICが選択された入力チャンネルからのデータをマイクロコントローラーに送信するための主要な通信経路です。

2. **制御信号の接続**:
- デマルチプレクサICを制御するために、マイクロコントローラーからデマルチプレクサICに制御信号を送ります。これらの制御信号には、選択される入力チャンネルを指定するための信号が含まれます。通常は、選択信号(Select)、クロック信号(Clock)、およびリセット信号(Reset)などが含まれます。

3. **電源および接地の接続**:
- デマルチプレクサICとマイクロコントローラーは、適切な電源および接地に接続される必要があります。これにより、デバイス間の電力供給が確保され、正常な動作が可能となります。

4. **その他の接続**:
- 必要に応じて、他の信号やピン(たとえば、割り込み信号など)がマイクロコントローラーとデマルチプレクサIC間で接続されることもあります。これは、特定のイベントが発生した際にマイクロコントローラーに通知するためのものです。

デマルチプレクサICとマイクロコントローラーの接続は、通常は上記のような方法で行われます。ただし、具体的なデバイスやアプリケーションによって異なる場合がありますので、データシートやマニュアルを参照して正確な接続方法を確認することが重要です。」

 すげぇ、分かりやすい。こりゃChatGPTを制するものはビジネスを制するな。

 

自分で一回触っているとその後の理解度が段違いに上がる

 1bit CPUの製作には失敗しましたが、その前後で今回はかなり学ぶことが多かったなーと感じています。

 本記事で何度か言及している通りAND回路やOR回路なんて今まで腐る程見てきていましたが、実際こうやってロジックICとして触ってみたら一気に理解できるようになりました。やっぱり経験が少ないうちは実物触らないとダメですね。

 ChatGPTも前々から評判は聞いていましたが実際に使ってみると「ここまで精度高く答えてくれるのか!」と感動してしまいましたし、これからも仕事でも勉強でもなんでも詰まる所があれば聞いてみようと思います。世間がこれだけAIブームになっていても「AIゆうてもまだそこまで実用できるわけないだろ」と思っていましたが、自分がいざ触ってみると驚愕してしまいましたもんね。近い将来、単純な事務作業はAIに駆逐されてしまうんだろうなぁ。

 今回の一件で、例え何かに挑戦して失敗しても、その過程で学ぶことは多くあるし、失敗しても大してダメージがないのであればどんどん挑戦したほうがいいと深く感じました。



-プログラミング, 電子工作

© 2024 名古屋とエンジニアリング