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.
