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 캐리 입력/출력으로 두 개의 8비트 값을 더함
8비트 레지스터 register_8bit.v 쓰기 활성화 및 동기 리셋이 있는 클럭 레지스터
프로그램 카운터 program_counter.v 클럭 틱마다 증가, 정지 및 리셋 지원
메모리 memory_256x8.v 256바이트 동기식 RAM
8-to-1 멀티플렉서 mux_8_to_1.v 8개 데이터 라인 중 하나를 선택
8비트 카운터 counter_8bit.v 클럭마다 증가, 로드 및 리셋 지원
Do Once do_once.v 원샷 래치 — 신호를 정확히 한 번만 통과시킴

Arduino 스케치

1. 켜짐-꺼짐 장치 (완전히 쓸모없음)

설명:
물리적 버튼과 두 개의 LED(빨간색, 파란색)가 있는 기본 토글 장치입니다.

동작:

  • 전원이 켜지면 빨간색 LED가 켜집니다.
  • 버튼을 누르면 빨간색 LED가 꺼지고 파란색 LED가 켜집니다.
  • 버튼에서 손을 떼면 상태가 원래대로 돌아갑니다.

회로: 9번 핀(INPUT_PULLUP)의 버튼, 2번 핀의 파란색 LED, 7번 핀의 빨간색 LED.

제 조상들은 이 장치가 발명되기를 기다렸습니다. 그리고 드디어 여기까지 왔습니다.

2. 버튼 테스트

핀을 HIGH로 설정합니다. 그게 전부입니다.

3. 읽기 테스트

핀을 읽고 값을 시리얼로 출력합니다. 기본적인 입문 내용입니다.

4. 교통 제어

설명:
3상태 자동 교통 신호입니다. 타이머에 따라 초록 → 노랑 → 빨강으로 순환합니다. 버튼이 인터럽트를 걸어 즉시 빨간색으로 강제 전환합니다(보행자 횡단).

동작:

  • 초록(상태 0): 초록 LED가 5초 동안 켜지고, 2사이클(총 10초) 실행 후 노랑으로 전환됩니다.
  • 노랑(상태 1): 빨간색 + 초록색 LED가 켜지고(혼합되어 노란색), 부저가 2초 동안 울린 후 빨간색으로 전환됩니다.
  • 빨강(상태 2): 빨간색 LED가 5초 동안 켜지고, 2사이클(총 10초) 실행 후 다시 초록색으로 순환합니다.
  • 언제든지 버튼을 누르면: 500ms 디바운스와 함께 즉시 빨간색으로 점프합니다.
  • 버튼 누름은 지연 중간(responsiveDelay)에 확인되므로 신호는 항상 인터럽트 가능합니다.

회로: 9번 핀(INPUT_PULLUP)의 버튼, 2번 핀의 빨간색 LED, 3번 핀의 초록색 LED, 4번 핀의 파란색 LED, 7번 핀의 부저.