1. 프로젝트 소개
프로젝트 개요: N-bit 감가산기 진리표 생성기
이번 프로젝트는 CMake, 파일 관리, 객체지향 프로그래밍, 함수화를 중점적으로 학습하기 위해 진행되었습니다. 임베디드 시스템을 배우며, 실습 경험을 바탕으로 전기전자 기초와 전자회로 시간에 배운 지식을 실제로 적용해 보고 싶었습니다. 그 과정에서 나만의 CPU를 만드는 꿈을 가지게 되었고, 그 첫걸음으로 감가산기(N-bit Subtractor) 진리표 생성기를 만들게 되었습니다.
이 프로젝트는 감가산기의 기본 동작 원리를 이해하고, 다양한 비트 길이(N-bit)의 감가산기에 대한 진리표를 자동으로 생성하는 프로그램을 개발하는 데 중점을 두었습니다.
2. 프로젝트 배경
배경: 임베디드 시스템과 전자회로에 대한 호기심
임베디드 시스템을 학습하면서 실제로 어떻게 프로젝트를 수행하고, 그 과정에서 발생하는 여러 문제를 해결할 수 있을지에 대한 고민이 많았습니다. 특히 전기전자 기초와 전자회로 과목에서 배운 내용을 실습으로 확장하고 싶었습니다.
기초적인 논리 회로 중 하나인 감가산기를 선택한 이유는, 감가산기가 복잡한 연산을 수행하는 더 큰 시스템의 기본 블록이기 때문입니다. 따라서 이 프로젝트는 감가산기의 동작을 깊이 이해하고, 다양한 비트 길이에서의 동작을 직접 확인하기 위한 첫걸음으로 적합하다고 생각했습니다.
3. 프로젝트 개발 과정
개발 과정: CMake, 객체지향 프로그래밍, 함수화
이 프로젝트는 단순한 진리표 생성에 그치지 않고, 코드의 구조화와 관리에 중점을 두었습니다. 이를 위해 다음과 같은 기술을 사용했습니다.
- CMake: 프로젝트 빌드를 체계적으로 관리하기 위해 CMake를 사용했습니다. 이를 통해 빌드 과정에서 발생할 수 있는 여러 문제를 미리 해결할 수 있었습니다.
- 파일 관리: 프로젝트가 커짐에 따라 파일을 적절히 분리하고 관리하는 것이 중요했습니다. 이를 위해 각 기능별로 파일을 나누어 관리했습니다.
- 객체지향 프로그래밍: 프로그램을 모듈화하고 재사용성을 높이기 위해 객체지향 프로그래밍 기법을 적용했습니다. 이를 통해 다양한 비트 길이의 감가산기를 유연하게 처리할 수 있었습니다.
- 함수화: 코드의 가독성과 유지보수성을 높이기 위해 기능별로 함수를 분리했습니다. 이를 통해 코드의 복잡성을 줄이고, 필요 시 쉽게 기능을 확장할 수 있도록 했습니다.
4. 프로젝트 결과 및 느낀 점
결과 및 느낀 점: 기초부터 탄탄히, 사용자 경험까지 고려하다
이번 프로젝트를 통해 감가산기의 동작 원리를 더욱 깊이 이해할 수 있었으며, 임베디드 시스템 개발에 있어 중요한 여러 기법을 실습할 수 있었습니다. 특히, CMake를 사용해 프로젝트를 체계적으로 관리하는 방법과 객체지향 프로그래밍의 중요성을 다시금 깨닫게 되었습니다.
프로그램을 작성하는 과정에서도 많은 고민이 있었지만, 그 중에서도 가장 고민이 많았던 부분은 이 프로젝트를 처음 접하는 사람이 쉽게 사용할 수 있도록 사용자 친화적인 프로그램을 만드는 것이었습니다. 복잡한 개념이나 기술적인 배경이 없는 사람도 직관적으로 이해하고 사용할 수 있도록 UI와 기능을 설계하는 데 신경을 썼습니다. 이를 통해 단순한 기능뿐만 아니라 사용자 경험까지 고려한 프로젝트를 완성할 수 있었다고 생각합니다.
또한, 단순한 아이디어에서 출발해 실제로 동작하는 프로그램을 개발하면서, 기초적인 개념을 탄탄히 다지는 것이 얼마나 중요한지 느낄 수 있었습니다. 앞으로 더 복잡한 시스템을 개발할 때, 이번 프로젝트에서 배운 내용을 바탕으로 더 나은 결과를 얻을 수 있을 것이라 생각합니다.
5. 마무리
마무리: 작은 시작이 큰 성장을 만든다
이번 프로젝트는 아주 작은 아이디어에서 출발했지만, 그 과정에서 많은 것을 배울 수 있었습니다. 임베디드 시스템과 전자회로에 관심이 있는 분들에게 이 프로젝트가 유익한 참고자료가 되었으면 합니다. 앞으로도 더 많은 프로젝트를 통해 성장해 나갈 계획입니다.
GitHub 저장소에서 코드와 자세한 내용을 확인하실 수 있습니다. 프로젝트에 대해 궁금한 점이나 개선할 점이 있다면 언제든지 피드백 부탁드립니다!
'Programming Project > Solo Project' 카테고리의 다른 글
매우 주관적인 개인 프로젝트의 의미 (0) | 2024.08.06 |
---|---|
아두이노로 LED CUBE 만들기 (0) | 2023.07.19 |
아두이노로 미니테트리스 게임만들기 (0) | 2023.06.28 |