The Electronics Project
C++

The Electronics Project

エレクトロニクスの概念を再訪し、プロセッサを作ろうとしています。学習用リポジトリ。目標はPCB設計とデジタル回路を学ぶこと。Verilog、Arduino、ESP32、Raspberry PI。

エレクトロニクスプロジェクト

学習用リポジトリです。目標はPCB設計とデジタル回路を学ぶことです。Verilog、Arduino、ESP32、Raspberry Piを使用します。進捗状況をここに随時投稿していきます。

最終目標は実際の回路またはPCBを製作することです。
そのために、まず基礎から取り組んでいます。Arduinoスケッチは、ボタン、LED、信号読み取りといった物理コンポーネントに慣れるためのものです。Verilog側は、レジスタ、カウンタ、メモリといった基本的な構成要素が実際にどのように連携するか、デジタルロジックをより深く理解するためのものです。

プロセッサは、電子機器が最低レベルでどのように動作するかを、可能な限り苦痛を伴う方法で学ぶために作成しています。

どうやら苦しみは良いものらしい。

SAP-1 — Simple as Possible Computer(参考):https://karenok.github.io/SAP-1-Computer/


構成

arduino/      Arduinoでの物理ハードウェア実験
processor/    Verilogモジュール — デジタルロジック実験

プロセッサ(Verilog)

Digitalを使用して構築・シミュレーションしています。完全な回路図はmain.digにあります。

モジュール ファイル 説明
8ビット加算器 adder_8bit.v キャリーイン/アウト付きで2つの8ビット値を加算
8ビットレジスタ register_8bit.v 書き込みイネーブルと同期リセット付きクロックドレジスタ
プログラムカウンタ program_counter.v クロック毎にインクリメント、停止とリセットをサポート
メモリ memory_256x8.v 256バイト同期RAM
8-to-1マルチプレクサ mux_8_to_1.v 8本のデータ線から1本を選択
8ビットカウンタ counter_8bit.v クロック毎にカウントアップ、ロードとリセット付き
ワンショット do_once.v ワンショットラッチ — 信号を1回だけ通過させる

Arduinoスケッチ

1. オンオフデバイス(完全に役立たず)

説明:
物理的なボタンと2つのLED(赤と青)を使った基本的なトグルデバイス。

動作:

  • 電源投入時、赤色LEDが点灯します。
  • ボタンを押すと赤色LEDが消灯し、青色LEDが点灯します。
  • ボタンを離すと状態が元に戻ります。

回路: ボタンはピン9(INPUT_PULLUP)、青色LEDはピン2、赤色LEDはピン7。

私の祖先はこのデバイスが発明される瞬間を待っていました。そしてついにここに辿り着きました。

2. ボタンテスト

ピンをHIGHに設定します。以上です。

3. 読み取りテスト

ピンを読み取り、値をシリアルに出力します。基本的な入門用です。

4. 交通制御

説明:
3状態の自動交通信号機です。タイマーで緑→黄→赤を循環します。ボタンで割り込み、即座に赤に強制します(横断歩道)。

動作:

  • (状態0):緑色LEDが5秒間点灯、2サイクル(合計10秒)実行後、黄色に進みます。
  • (状態1):赤+緑色LEDが点灯(混ざって黄色に)、ブザーが2秒間鳴動後、赤に進みます。
  • (状態2):赤色LEDが5秒間点灯、2サイクル(合計10秒)実行後、緑にループバックします。
  • いつでもボタン押下:500msのデバウンス付きで直接赤にジャンプします。
  • ボタン押下は遅延中(responsiveDelay)にチェックされるため、信号は常に割り込み可能です。

回路: ボタンはピン9(INPUT_PULLUP)、赤色LEDはピン2、緑色LEDはピン3、青色LEDはピン4、ブザーはピン7。