The Electronics Project
C++

The Electronics Project

Revisitando conceitos de eletrônica e tentando construir um processador. Um repositório de estudos. O objetivo é aprender a projetar placas de circuito impresso (PCB) e circuitos digitais. Verilog, Arduino, ESP32 e Raspberry Pi.

O Projeto de Eletrônica

Um repositório de estudos. O objetivo é aprender design de PCB e circuitos digitais. Verilog, Arduino, ESP32 e Raspberry Pi. Vou postar meu progresso aqui à medida que for avançando.

O objetivo final é imprimir um circuito real ou uma placa de circuito impresso (PCB).
Para chegar lá, estou começando pelos fundamentos. Os esboços do Arduino servem para me familiarizar com os componentes físicos: botões, LEDs, leitura de sinais, esse tipo de coisa. A parte do Verilog serve para compreender a lógica digital mais profundamente — como blocos básicos como registros, contadores e memória realmente funcionam juntos.

O processador está sendo construído para que eu possa aprender da maneira mais dolorosa possível como a eletrônica funciona no nível mais básico.

Porque, aparentemente, sofrer faz bem.

SAP-1 — Simple as Possible Computer (referência): https://karenok.github.io/SAP-1-Computer/


Estrutura

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

Processador (Verilog)

Construído e simulado usando Digital. O esquema completo está em main.dig.

Módulo Arquivo Descrição
Somador de 8 bits adder_8bit.v Soma dois valores de 8 bits com carry de entrada/saída
Registro de 8 bits register_8bit.v Registro sincronizado com habilitação de gravação e reinicialização síncrona
Contador de programa program_counter.v Incrementa a cada ciclo de clock, suporta parada e reinicialização
Memória memory_256x8.v RAM síncrona de 256 bytes
Multiplexador 8-para-1 mux_8_to_1.v Seleciona uma das 8 linhas de dados
Contador de 8 bits counter_8bit.v Conta a cada ciclo de clock, com carga e reinicialização
Do Once do_once.v Latch de disparo único — permite a passagem de um sinal exatamente uma vez

Esboços do Arduino

1. O dispositivo liga-desliga (completamente inútil)

Descrição:
Um dispositivo de alternância básico com um botão físico e dois LEDs (vermelho e azul).

Comportamento:

  • Quando ligado, o LED vermelho acende.
  • Pressionar o botão desliga o LED vermelho e acende o LED azul.
  • Soltar o botão reverte o estado.

Circuito: botão no pino 9 (INPUT_PULLUP), LED azul no pino 2, LED vermelho no pino 7.

Meus ancestrais esperaram pelo momento em que este dispositivo fosse inventado. E aqui estamos nós, finalmente.

2. Teste do botão

Define um pino como HIGH. É isso.

3. Teste de leitura

Lê um pino e imprime o valor na porta serial. Introdução básica.

4. Controle de tráfego

Descrição:
Um semáforo automático de 3 estados. Ciclos verde → amarelo → vermelho por temporizador. O botão interrompe e força o vermelho imediatamente (travessia de pedestres).

Comportamento:

  • Verde (estado 0): LED verde aceso por 5 s, executa 2 ciclos (10 s no total), depois avança para amarelo.
  • Amarelo (estado 1): LEDs vermelho + verde acesos (misturando-se em amarelo), o alarme soa por 2 s, depois avança para o vermelho.
  • Vermelho (estado 2): LED vermelho aceso por 5 s, executa 2 ciclos (10 s no total), depois volta para o verde.
  • Pressionar o botão a qualquer momento: salta diretamente para o vermelho com 500 ms de debounce.
  • As pressões do botão são verificadas no meio do atraso (responsiveDelay) para que o sinal seja sempre interrompível.

Circuito: botão no pino 9 (INPUT_PULLUP), LED vermelho no pino 2, LED verde no pino 3, LED azul no pino 4, buzzer no pino 7.