The Electronics Project
C++

The Electronics Project

Revisando conceptos de electrónica e intentando hacer un procesador. Un repositorio de estudio. El objetivo es aprender diseño de PCB y circuitos digitales. Verilog, Arduino, ESP32 y Raspberry PI.

El Proyecto de Electrónica

Un repositorio de estudio. El objetivo es aprender diseño de PCB y circuitos digitales. Verilog, Arduino, ESP32 y Raspberry PI. Publicaré mi progreso aquí a medida que avance.

El objetivo final es imprimir un circuito o PCB real.
Para llegar allí, primero estoy trabajando en los fundamentos. Los sketches de Arduino son para familiarizarme con componentes físicos: botones, LEDs, lectura de señales, ese tipo de cosas. La parte de Verilog es para comprender más profundamente la lógica digital — cómo funcionan realmente juntos los bloques básicos como registros, contadores y memoria.

El procesador se está haciendo para que pueda aprender de la manera más dolorosa posible cómo funciona la electrónica al nivel más bajo.

Porque aparentemente sufrir es bueno.

SAP-1 — Computadora tan Simple como sea Posible (referencia): https://karenok.github.io/SAP-1-Computer/


Estructura

arduino/      Experimentos de hardware físico en Arduino
processor/    Módulos Verilog — experimentos de lógica digital

Procesador (Verilog)

Construido y simulado usando Digital. El esquema completo reside en main.dig.

Módulo Archivo Descripción
Sumador de 8 bits adder_8bit.v Suma dos valores de 8 bits con acarreo de entrada/salida
Registro de 8 bits register_8bit.v Registro sincronizado con habilitación de escritura y reinicio síncrono
Contador de Programa program_counter.v Incrementa en cada tick de reloj, soporta parada y reinicio
Memoria memory_256x8.v RAM síncrona de 256 bytes
Multiplexor 8 a 1 mux_8_to_1.v Selecciona una de 8 líneas de datos
Contador de 8 bits counter_8bit.v Cuenta hacia arriba en cada reloj, con carga y reinicio
Hacer Una Vez do_once.v Latch de un solo disparo — deja pasar una señal exactamente una vez

Sketches de Arduino

1. El dispositivo de encendido-apagado (completamente inútil)

Descripción:
Un dispositivo de conmutación básico con un botón físico y dos LEDs (rojo y azul).

Comportamiento:

  • Al encenderse, el LED rojo se enciende.
  • Presionar el botón apaga el LED rojo y enciende el LED azul.
  • Soltar el botón revierte el estado.

Circuito: botón en el pin 9 (INPUT_PULLUP), LED azul en el pin 2, LED rojo en el pin 7.

Mis ancestros esperaron el momento en que este dispositivo fue inventado. Y aquí estamos finalmente.

2. Prueba de botón

Pone un pin en HIGH. Eso es todo.

3. Prueba de lectura

Lee un pin e imprime el valor en el puerto serie. Cosas básicas de introducción.

4. Control de tráfico

Descripción:
Una señal de tráfico automática de 3 estados. Cicla verde → amarillo → rojo con un temporizador. Un botón interrumpe y fuerza el rojo inmediatamente (paso de peatones).

Comportamiento:

  • Verde (estado 0): LED verde encendido durante 5s, ejecuta 2 ciclos (10s total), luego avanza a amarillo.
  • Amarillo (estado 1): LEDs rojo + verde encendidos (mezclándose para amarillo), zumbador suena durante 2s, luego avanza a rojo.
  • Rojo (estado 2): LED rojo encendido durante 5s, ejecuta 2 ciclos (10s total), luego vuelve a verde.
  • Presión de botón en cualquier momento: salta directamente a rojo con 500ms de antirrebote.
  • Las presiones de botón se verifican en medio de la demora (responsiveDelay) para que la señal siempre sea interrumpible.

Circuito: botón en el pin 9 (INPUT_PULLUP), LED rojo en el pin 2, LED verde en el pin 3, LED azul en el pin 4, zumbador en el pin 7.