All Posts

73 posts
RISC-V

RISC-V의 분기·점프 구현: 분기 판단 위치, JAL·JALR, 리턴 주소 스택 힌트(rd·rs1 규칙)

RISC-V 18편. 분기 판단 위치, JAL ID 리다이렉트, BTFN 정적 예측, 명세 2.5 힌트를 따르는 RAS를 파이프라인 모델에 넣어 비교했다. CPI가 1.368에서 1.227로 줄었고, RAS 8칸이 fib 복귀의 98.3%를 맞혔다.

RISC-V

RISC-V 5단 파이프라인: 포워딩·스톨 조건식, x0 처리

RISC-V 17편. 5단 파이프라인 모델로 같은 프로그램을 돌려 QEMU와 일치시키고 CPI를 쟀다. 포워딩을 켜면 1.37, 끄면 1.83이었다. rd≠0 조건을 빼면 HINT ntl.all을 쓰는 프로그램이 0 대신 0x80000000을 썼다.

RISC-V

즉시값 생성기와 RISC-V 단일 사이클 데이터패스

RISC-V 16편. 2편의 선택기 표를 즉시값 생성기 회로로 옮기고 단일 사이클 데이터패스를 조립했다. 프로그램 5개, 명령어 1,076,364개를 실행해 QEMU와 pc 열·레지스터가 모두 같았고, 분기가 20.0%(그중 58.5% taken)였다.

RISC-V

RISC-V 디코더 설계: opcode·funct3·funct7 표, 형식 판별, 불법 명령어 검출

RISC-V 15편. RV32I 디코드 표를 제어 신호까지 채우고 불법 명령어 조건 다섯 가지를 정한 뒤, 174,608개 단어로 GNU objdump와 대조했다. 165,923개가 같았고 다른 8,685개는 네 가지 원인으로 모두 설명됐다.

RISC-V

메모리 모델: RVWMO, FENCE의 의미, Ztso

RISC-V 9편. RVWMO 메모리 모델의 보존 프로그램 순서, fence의 pred·succ, aq·rl, Ztso를 정리했다. 리트머스 7개를 SC·TSO·RVWMO로 열거해 MP·SB·LB의 허용 여부를 세고, GCC의 C11 원자 연산 대응을 RVWMO와 Ztso로 비교했다.

RISC-V

A 확장: LR/SC, AMO, aq·rl

RISC-V 8편. A 확장의 LR/SC 예약과 실패 조건, AMO 9종, aq·rl 비트를 QEMU에서 확인했다. 하트 8개가 카운터를 경쟁하면 일반 증가는 22%만 남고 원자 방식은 모두 정확했으며, QEMU가 같은 값 재저장 뒤 sc를 성공시키는 점도 찾았다.

RISC-V

M 확장: 곱셈·나눗셈과 0 나누기·오버플로 규칙

RISC-V 7편. M 확장의 곱셈·나눗셈 명령어 13개와 0 나누기·오버플로의 정해진 결과(예외 없음)를 정리하고, QEMU에서 경계값 1,948개를 실행해 기준 모델과 모두 일치함을 확인했다. M이 없으면 곱셈 한 번에 명령어 86개가 더 든다.

RISC-V

FENCE.I와 자기 수정 코드: 명령어 쪽에서 지켜야 할 것

RISC-V 22편. FENCE.I와 자기 수정 코드를 다룬다. QEMU는 fence.i 없이도 다른 곳에 쓴 코드는 새 것을, 실행 중인 블록 안은 옛 것을 실행했다. 명령어 모델 16가지 조합으로 코어 구조별 FENCE.I 최소 구현을 확인했다.

RISC-V

C 확장 구현: 압축 해제기, 16비트 경계 페치, 정렬 안 된 32비트 명령어

RISC-V 21편. C 확장의 압축 해제기와 페치 버퍼를 Python으로 만들어 16비트 49,152개와 실제 rv32imc 프로그램을 objdump와 대조했다. 실행 명령어의 36.7%가 두 워드에 걸쳤고, 페치 버퍼가 워드 읽기를 33,771번에서 23,903번으로 줄였다.

RISC-V

A 확장 구현: LR/SC 예약 집합, AMO를 어디서 실행하나, aq·rl과 FENCE 구현

RISC-V 20편. LR/SC 예약 집합, AMO의 원자성, aq·rl과 FENCE 구현을 두 하트 모델로 비교했다. 다른 하트의 저장에 예약을 지우지 않으면 카운터가 69.6%로 줄고, QEMU는 ABA 시험에서 SC를 20번 모두 성공시켰다.

RISC-V

M 확장 구현: 곱셈·나눗셈기 연동, 0 나누기 결과 규칙 그대로 만들기

RISC-V 19편. M 확장 곱셈·나눗셈기를 비트 정확 Python 모델로 구현했다. 33비트 곱셈기 하나로 mulh 계열 셋을 처리하고, 30만 쌍과 QEMU 648개에서 불일치 0, 음수를 0으로 나눌 때의 함정(5,039개 불일치)을 찾았다.

RISC-V

작은 확장 묶음: Zicsr·Zifencei, Zicntr·Zihpm, B(Zba·Zbb·Zbs), Zicond, Zicbom

RISC-V 12편. CSR 명령어가 rd·rs1이 x0인지로 읽기·쓰기를 정하는 규칙을 QEMU에서 확인하고, B·Zicond 명령어를 RV32 2,772개, RV64 3,720개 조합으로 실행해 기준 모델과 모두 일치시켰다. B를 켜면 코드가 6.6~9.0% 줄었다.

RISC-V

C 확장: 압축 형식과 32비트 명령어 대응

RISC-V 11편. C 확장의 16비트 형식 9가지와 32비트 대응을 정리하고, 직접 짠 압축 해제기를 16비트 값 49,152개 전부에 대해 objdump와 대조했다. 실제 코드에서는 명령어의 51~69%가 16비트가 되어 코드가 26~34% 줄었다.

RISC-V

F·D 확장: FP 레지스터, 반올림 모드, fcsr 플래그, NaN boxing, 변환 규칙

RISC-V 10편. F·D 확장의 반올림 모드와 예외 플래그, 정규 NaN, NaN boxing, 범위 밖 정수 변환의 포화 규칙을 QEMU에서 명령어 229개로 실행해 분수 기준 모델과 모두 일치함을 확인했다.

RISC-V

V 확장 2: 마스크, 로드·스토어 종류, 축약·순열, tail·mask agnostic

RISC-V 14편. v0 마스크, 네 가지 로드·스토어, first-fault strlen, 축약·순열, ta/ma를 QEMU에서 실행했다. 커널 4개가 Python과 78항목 모두 일치했고, 명령어는 VLEN 1024에서 스칼라의 4~7%였다.

RISC-V

V 확장 1: VLEN·SEW·LMUL, vsetvli, 벡터 길이에 묶이지 않는 코드

RISC-V 13편. 벡터 레지스터와 VLEN·SEW·LMUL, vsetvli가 vl을 정하는 규칙을 정리했다. 같은 기계어를 QEMU VLEN 128~1024에서 돌리니 원소 100개 덧셈이 25·13·7·4번 돌았고, 명령어는 313~61개(스칼라 813개)였다.

RISC-V

어셈블리와 ABI: 레지스터 이름, 호출 규약, 스택 프레임, 의사 명령어, ELF

RISC-V 6편. psABI 호출 규약과 스택 프레임을 실제 C 함수로 따라갔다. work() 프레임은 80바이트, 9번째 인자부터는 스택으로 갔다. ABI별 인자 위치와 재배치를 확인했고, 링커 완화로 .text가 800바이트에서 712바이트로 줄었다.

RISC-V

RV64I: W 명령어, 부호 확장 규칙, 32비트와 다른 점

RISC-V 5편. RV64I의 W 명령어와 부호 확장 규칙을 QEMU로 확인했다. 0x7fffffff+1이 addw로 0xffffffff80000000이 됐고, 64비트 상수는 li로 평균 7.887개 명령어였다. 1편 utoa10이 커진 이유도 짚었다.

RISC-V

RV32I 3: 분기·점프, 로드·스토어와 정렬, FENCE, ECALL·EBREAK

RISC-V 4편. 분기 6종, jal·jalr, 로드 부호 확장, 정렬 안 된 접근, fence·ecall·ebreak를 QEMU에서 실행했다. jalr는 0x80000021을 0x80000020으로 바꿨고, 결과 56개가 기준 모델과 모두 일치했다.

RISC-V

RV32I 2: 정수 연산·비교·시프트와 lui·auipc로 상수·주소 만들기

RISC-V 3편. RV32I 정수 연산과 비교·시프트, 플래그 없는 오버플로 처리를 QEMU에서 경계값 15개로 확인하고, lui·auipc로 32비트 상수와 주소를 만드는 +1 보정을 100만 개 무작위 시험으로 따진다.

RISC-V

RV32I 1: 레지스터와 명령어 형식 6가지, 즉시값 비트가 뒤섞인 이유

RISC-V 2편. RV32I의 레지스터와 명령어 형식 여섯 가지를 보고, 즉시값 비트가 뒤섞인 이유를 즉시값 생성기의 선택기 입력 수(70 대 98)로 따진다. 직접 짠 인코더·디코더를 GNU as와 5,000개 대조했다.

RISC-V

RISC-V 개요: 명세 구성과 이름 읽기, 확장이 코드를 바꾸는 정도 재기

RISC-V 1편. 모듈식 ISA의 설계 원칙, 비특권·특권 두 권으로 나뉜 명세 구성, rv64gc 같은 이름 읽는 법을 정리하고, 같은 C 함수를 확장 조합별로 컴파일해 코드 크기가 972바이트에서 402바이트로 주는 것을 잰다.

AI Note

신경망 기초: 퍼셉트론에서 다층 신경망까지

AI Note 1편. 뉴런 하나의 가중합과 활성화부터, 퍼셉트론이 XOR을 못 푸는 이유와 층을 쌓아 푸는 방법, softmax·교차 엔트로피 손실, 학습률에 따른 경사 하강까지 직접 계산한 숫자 예제로 따라간다.

AI Note

역전파: 연쇄 법칙으로 그래디언트를 구하고 NumPy로 MNIST 학습하기

AI Note 2편. 연쇄 법칙과 계산 그래프로 역전파를 숫자 예제부터 따라가고, 2층 신경망의 그래디언트를 행렬로 유도한 뒤 NumPy로 직접 구현해 MNIST 97.7%를 얻는다. 미니배치가 빠른 이유도 측정해 본다.

AI Project

분산 환경에서의 연합 학습: FedProx와 SCAFFOLD 알고리즘 비교

Non-IID 데이터 환경에서 FedProx와 SCAFFOLD 연합 학습 알고리즘의 성능을 비교 분석했다. AG News 텍스트 분류 데이터셋과 GRU 모델을 사용하여 실험을 수행하고, 각 알고리즘의 수렴 특성을 분석했다.

AI Project

지식 그래프 기반 노드 분류: GCN을 활용한 NELL 데이터셋 분석

NELL 지식 그래프 데이터셋에서 GCN(Graph Convolutional Network)을 활용하여 노드 분류를 수행했다. PyTorch Geometric으로 모델을 구현하고, 65,755개 노드와 186개 클래스에 대해 97.86%의 테스트 정확도를 달성했다.

etc Project

인간-로봇 상호작용 기반 Guessing Game 시스템 구현

YOLO 객체 탐지와 VLM(Vision-Language Model)을 결합한 인간-로봇 상호작용 기반 Guessing Game 시스템을 개발했다. 로봇 팔이 물체를 가리키고, 사용자가 추측하는 게임을 구현했다.

etc Project

VLSI 배선 최적화를 위한 Rectilinear Steiner Tree 알고리즘 설계

VLSI 설계의 배선 최적화를 위한 Rectilinear Steiner Minimum Tree(RSMT) 알고리즘을 Dijkstra 기반으로 구현했다. Hanan Grid를 활용한 Steiner 후보점 선정과 반복적 최적화를 통해 배선 길이를 최소화했다.

Web & App Project

연구실 홈페이지 개발: WordPress 기반 학술 웹사이트 구축

연세대학교 Intelligent Systems Lab 연구실 홈페이지를 WordPress 기반으로 개발했다. 연구 분야 소개, 구성원 관리, 출판물 아카이빙, 뉴스/갤러리 기능을 구현했다.

Web & App Project

개인 기술 블로그 개발: Django 기반 풀스택 웹 애플리케이션

Django와 순수 JavaScript/CSS로 개인 기술 블로그를 개발했다. 마크다운 기반 글 작성, 계층적 카테고리, AI 기능 연동(Gemini), SEO 최적화 등의 기능을 직접 구현했다.

AI Project

심층 강화학습 알고리즘 구현: DQN, Double DQN, PER 비교 분석

DQN, Double DQN, PER 세 가지 강화학습 알고리즘을 CartPole, Acrobot, MountainCar 환경에서 비교 실험하고 각 알고리즘의 특성과 한계를 분석한다.

Embedded Note

ARM 임베디드 시스템 입문: ARM과 Thumb 명령어 집합 비교

ARM 임베디드 시스템 입문 노트. 임베디드 시스템의 정의와 ARM이 쓰이는 이유, ARMv4부터 도입된 16비트 Thumb 명령어와 32비트 ARM 명령어의 데이터 크기·특성 비교를 정리했다.

SoC Note

반도체 설계 방법론 비교: Full-Custom, Standard-Cell, PLD

반도체 회로 설계 공정과 SoC 설계 방법론을 정리한 노트. 사양부터 레이아웃, 검증, 제조까지의 단계와 Full-Custom·Standard-Cell·PLD 방식 비교, 내부·외부 IP와 Hard·Soft IP 통합을 다룬다.

SoC Note

SoC 설계 프레임워크와 Design Productivity Gap

SoC 설계 흐름을 정리한 노트. 공정 발전을 설계 생산성이 따라가지 못하는 Design Productivity Gap과 해법(추상화, EDA 자동화, IP 재사용), ARM 기반 SoC 예, SoC·MCU·CPU 비교, Apple SoC와 다이 크기를 다룬다.

SoC Note

프로세서와 코어의 차이: 명령어 처리 단계와 추상화 계층

프로세서의 개념과 설계를 정리한 노트. 명령어 처리 단계, 고급 언어에서 기계어까지의 추상화 계층, 코어와 프로세서의 차이, 프로세서 설계 흐름, ARM Cortex 계열, 설계 트레이드오프와 ADD 명령어 실행 예를 다룬다.

SoC Note

ARM Cortex-M0 구조: 레지스터 세트, 동작 모드, 메모리 맵

초저전력 MCU용 ARMv6-M 코어인 Cortex-M0를 정리한 노트. 특징과 구조, 레지스터 세트, 동작 모드, 메모리 맵, 예외와 인터럽트, Thumb 명령어, 3단 파이프라인, SysTick, Cortex-M3·M4와의 비교를 다룬다.

SoC Note

ARM Thumb 명령어 집합 분류: 데이터 처리 명령어 정리

Cortex-M0의 Thumb 명령어 집합을 종류별로 정리한 노트. 레지스터·즉시값·논리·시프트·곱셈 데이터 처리 명령어, 기본·오프셋·다중·PC 상대 로드와 스토어, 분기 명령어의 문법과 인코딩을 다룬다.

SoC Note

AMBA 3 AHB-Lite 버스 구조: 신호 설명과 트랜잭션 동작

Cortex-M0·M3의 표준 시스템 버스인 AMBA 3 AHB-Lite를 정리한 노트. 단일 마스터 구조, 마스터·슬레이브 신호, 파이프라인 트랜잭션과 대기 상태, 버스트 전송과 HTRANS, 주소 디코드, AHB-APB 브리지를 다룬다.

SoC Note

Cortex-M NVIC 인터럽트 처리: 벡터 테이블과 예외 우선순위

Cortex-M의 인터럽트 처리를 정리한 노트. 인터럽트와 예외의 차이, NVIC의 벡터·중첩 인터럽트, 벡터 테이블과 처리 순서, 예외 우선순위와 선점, Tail-Chaining·Late Arrival, PRIMASK·FAULTMASK·BASEPRI 마스킹을 다룬다.

SoC Note

C 언어 SoC 프로그래밍: 메모리 맵 I/O 레지스터 제어

C 언어로 SoC를 프로그래밍하는 방법을 정리한 노트. 메모리 맵 I/O와 volatile, 구조체 기반 레지스터 접근, 비트 설정·해제·토글·검사, 다중 비트 필드, 시작 시퀀스, 링커 스크립트, CMSIS와 인터럽트 핸들러를 다룬다.

Microprocessor Note

CMOS 트랜지스터 동작 원리: PN 접합부터 nMOS/pMOS까지

CMOS 기초를 정리한 노트. IC와 VLSI, 실리콘과 PN 접합, nMOS·pMOS 트랜지스터 동작과 스위치 모델, CMOS 인버터와 NAND·NOR 같은 복합 게이트, CMOS가 전력을 아끼는 원리와 공정 단면을 다룬다.

Microprocessor Note

디지털 가산기 설계: 반가산기·전가산기와 Ripple Carry Adder 지연

디지털 가산기 구조를 정리한 노트. 반가산기·전가산기와 Propagate·Generate, 트랜지스터 수준 설계, Ripple Carry Adder의 지연부터 Carry Lookahead, Carry Skip·Select, Brent-Kung·Kogge-Stone 가산기까지 다룬다.

Microprocessor Note

데이터패스 연산 유닛: 배럴 시프터, 비교기, 곱셈기 설계

프로세서 데이터패스의 연산 유닛을 정리한 노트. 배럴 시프터, 동등·크기 비교기, 배열 곱셈기와 Booth 인코딩, Wallace·Dadda 트리, 복원·비복원 나눗셈기의 구조와 면적·지연 특성을 다룬다.

Microprocessor Note

크로스바 버스 구조: 공유 버스에서 Full Matrix까지 버스 아키텍처 진화

여러 마스터와 슬레이브를 잇는 크로스바 버스를 정리한 노트. 공유 버스에서 계층 버스, Full Matrix로의 발전, PL301 구조와 중재 방식, 파이프라인·버스트 전송, QoS, NoC 확장과 클럭 도메인 교차를 다룬다.

Microprocessor Note

AMBA APB 프로토콜 분석: 신호 구성과 Read/Write 전송 타이밍

AMBA 3 APB 프로토콜을 정리한 노트. 저속 주변장치용 버스의 특징과 신호, 대기 상태 유무에 따른 읽기·쓰기 전송 타이밍, APB 슬레이브 상태 기계, AHB-APB 브리지, APB와 AHB 비교를 다룬다.

Computer Architecture Note

컴퓨터 구조 기초: ISA와 추상화 계층, 성능 평가 방법론

컴퓨터 구조 수업 도입부를 정리한 노트. 추상 자료형(ADT)과 스택 예시, 명령어 집합 구조(ISA), Hennessy와 Patterson의 엔지니어링 방법론과 두 가지 황금 규칙, 성능 평가 방법과 설계 기법을 다룬다.

Computer Architecture Note

파이프라이닝 원리와 해저드: 5-stage MIPS 파이프라인 분석

파이프라이닝 원리를 5단 MIPS 파이프라인으로 정리한 노트. 순차 실행과의 성능 비교, 구조·데이터·제어 해저드와 스톨·버블, 로드-사용 해저드, CPI 계산 예, 슈퍼파이프라인과 슈퍼스칼라를 다룬다.

Computer Architecture Note

메모리 계층 구조와 캐시 동작 원리: Memory Wall과 캐시 설계 4대 질문

메모리 계층과 캐시를 정리한 노트. Memory Wall과 시간·공간 지역성, 계층 용어, 캐시 설계의 네 가지 질문(배치·식별·교체·쓰기), 직접 사상 캐시 예제, 블록 크기와 미스율 관계를 다룬다.

Computer Architecture Note

가상 메모리 동작 원리: 페이징과 가상주소-물리주소 변환

가상 메모리 동작 원리를 정리한 노트. 페이지 단위로 가상 주소 공간을 나누는 페이징, 가상 주소에서 물리 주소로의 변환, 페이지 테이블 구성과 PTBR, TLB, 요구 페이징의 장단점을 다룬다.

Computer Architecture Note

스토리지와 I/O 시스템 구조: I/O 버스와 신뢰성(MTTF)

컴퓨터 I/O 시스템을 정리한 노트. I/O 버스 연결과 장치별 데이터 속도, 신뢰성 지표 MTTF·MTTR과 개선 방법, I/O 레지스터 매핑, 폴링과 인터럽트, 예외와의 차이, DMA와 RAID 구성을 다룬다.

Computer Architecture Note

멀티프로세서와 공유 메모리 동기화: 임계 구역과 Producer-Consumer

멀티프로세서 구조를 정리한 노트. UMA·NUMA 공유 메모리, 합 축소 예제, 생산자-소비자와 임계 구역 문제, Test-and-Set 상호 배제와 최적화된 동기화, 메시지 패싱과 클러스터, 상호 연결 구조를 다룬다.

Hardware Project

아두이노 자동소화장치 만들기: 불꽃·연기·온도 복합 감지와 IoT 알림

성균관대 2021 창의적 종합설계 경진대회 출품작인 아두이노 자동소화장치 쿠릉. 불꽃·연기·온도 센서를 함께 판단해 주방 화재를 일찍 감지하고 소화제를 분사하며 스마트폰으로 알리는 저비용 IoT 장치를 만들었다.

Hardware Project

Radix-8 Booth 곱셈기 설계: 인코딩 테이블과 TDM 트레이드오프 (Verilog)

Radix-8 Booth 인코딩에 TDM을 결합한 곱셈기를 Verilog로 설계했다. Booth 알고리즘 원리, Radix에 따른 부분곱 수와 하드웨어 트레이드오프, Radix-8 인코딩 테이블, 구현과 검증, 배운 점을 정리했다.

Hardware Project

Radix-4 Booth 곱셈기 설계: 부분곱 축소와 TDM 적용 (Verilog)

Booth 인코딩으로 부분곱을 줄이고 TDM으로 압축하는 Radix-4 곱셈기를 Verilog로 설계했다. Booth 인코더·셀렉터, 부분곱 생성, Carry Save Adder, Kogge-Stone 최종 가산기와 정확도 검증 파형을 다룬다.

Hardware Project

Cortex-M0 SoC 설계: AHB-Lite 버스로 만든 다기능 로봇 제어 시스템 (Basys3)

Basys3 보드에 Cortex-M0와 AHB-Lite 주변장치를 묶은 SoC를 설계했다. UART로 작은 로봇을 제어하고 업 카운터, 스톱워치, 난수·곱셈기, 덧셈·뺄셈기를 실행하는 다기능 시스템의 HW·SW 구성과 결과를 담았다.

Embedded Note

ARM 프로세서 내부 구조: 3단 파이프라인과 명령어 실행 과정

ARM 프로세서의 구성과 구현을 정리한 노트. 레지스터 파일, 배럴 시프터, ALU 등 주요 구성 요소와 3단 파이프라인, 메모리 병목, ARM9 5단 구조로의 발전, 데이터 포워딩과 다중 로드·스토어를 다룬다.

Embedded Note

ARM 아키텍처와 레지스터 구조: 프로세서 모드별 뱅크드 레지스터

ARM 아키텍처의 프로그래머 모델을 정리한 노트. 버전별 계보, 보이는 레지스터, 프로세서 모드별 뱅크드 레지스터, PC와 CPSR, 슈퍼바이저 모드, 로드·스토어 구조와 데이터 처리·제어 흐름 명령어를 다룬다.

Embedded Note

ARM 어셈블리 프로그래밍 기초: 명령어 형식과 산술·논리 연산

ARM 어셈블리 프로그래밍 기초 노트. 명령어 형식과 접미사, 산술·논리·시프트·비교 연산, 즉시값 규칙, 시프트된 레지스터 피연산자, 조건 코드 설정, 주소 지정 방식과 분기·서브루틴을 예제와 함께 정리했다.

Embedded Note

ARM Cortex-M3 구조 분석: 하버드 아키텍처와 레지스터, xPSR

ARMv7-M 기반 Cortex-M3 구조를 정리한 노트. 사양, 수정 하버드 메모리 구조, 3단 파이프라인, 범용 레지스터 R0~R12, xPSR의 APSR·IPSR·EPSR 플래그, PRIMASK·FAULTMASK·BASEPRI 특수 레지스터를 다룬다.

Embedded Note

라즈베리파이 하드웨어 구조: 캐시 계층과 ARM vs x86 비교

라즈베리파이 하드웨어를 정리한 노트. BCM2711 SoC 사양, L1·L2 캐시 구성과 연관도, ARM과 x86 비교, Windows와 Linux 차이, 셸 명령어·파일 명령어·파이프·리다이렉션 같은 리눅스 기초를 다룬다.

Embedded Note

라즈베리파이 하드웨어 해킹 입문: GPIO, UART, I2C, SPI 통신

라즈베리파이로 외부 장치를 직접 다루는 하드웨어 해킹 입문 노트. GPIO, UART, I2C, SPI 버스의 동작과 한계, wiringPi로 LED 회로 제어, BCM2835 주변장치 레지스터를 직접 조작하는 실습을 정리했다.

Hardware Project

차동 증폭기 설계: 전류 미러 바이어스와 2단 구성으로 60dB 얻기 (SIMetrix)

SIMetrix로 60dB 이상 이득의 차동 입력·단동 출력 증폭기를 설계했다. 전류 미러 바이어스로 첫 단 차동 증폭기를, 소스 결합 증폭기로 둘째 단을 구성하고 5V·100uA 조건에서 1mV 입력의 출력 파형을 확인했다.

Hardware Project

Verilog 슬롯머신 설계: LFSR 난수 생성과 타이머 시드 (Basys3)

Basys3 보드용 슬롯머신을 Verilog로 설계했다. 타이머로 LFSR에 시드를 넣어 BCD 난수 3개를 만들고, 일치 개수에 따라 입력의 2·5·10배를 출력한다. 블록도, 서브 블록 정의, 시뮬레이션 파형과 고찰을 정리했다.

Hardware Project

Wallace Tree 곱셈기 Verilog 설계: 반가산기·전가산기로 8비트 병렬 곱셈

반가산기와 전가산기로 부분합을 단계별로 줄이는 Wallace Tree 구조로 8비트 병렬 곱셈기를 Verilog 설계했다. 16비트 곱을 내는 계산 과정, 설계 흐름, 테스트벤치와 전체 코드를 정리했다.

Hardware Project

RISC-V 5단 파이프라인 프로세서 Verilog 설계: 해저드 검출과 포워딩 유닛

RV32I 명령어 전체를 지원하는 RISC-V 5단 파이프라인 프로세서를 Verilog로 설계했다. 해저드 검출 유닛과 포워딩 유닛으로 데이터·제어 해저드를 해결하고 iverilog와 GTKWave 파형으로 검증한 과정을 담았다.

Hardware Project

74LS 로직 칩으로 만든 8비트 브레드보드 컴퓨터: CPU 동작 원리 직접 구현

Ben Eater의 설계를 따라 74LS 시리즈 TTL 칩만으로 브레드보드 위에 8비트 컴퓨터를 만들었다. 클럭, 레지스터, ALU, RAM, 프로그램 카운터, 제어 유닛을 직접 배선하며 CPU의 명령어 실행 사이클을 익힌 기록이다.

Web & App Project

안드로이드 랜덤 맛집 추천 앱 개발: 카카오맵·네이버 지역검색 API 연동 (Kotlin)

"오늘 뭐 먹지"를 해결하려고 만든 안드로이드 앱 Mechu. 내 위치 주변 음식점을 네이버 지역검색 API로 찾고 버튼 하나로 랜덤 선택해 카카오맵에 보여 준다. 위치 권한, 애니메이션, 카테고리 필터, 배포 과정을 담았다.

Web & App Project

GitHub Pages + Jekyll 블로그 만들기: 저장소 생성부터 자동 배포까지

GitHub Pages + Jekyll로 첫 블로그를 만들었던 기록입니다. 개발자라면 한 번쯤 거쳐가는 관문인 GitHub Blog 구축 여정을 정리합니다. 왜 GitHub Blog인가 개발자 포트폴리오로서 블로그를 운영하려면 다음 조건이 중요합니다: - 버전 관리로...

etc Project

DC 모터 위치 제어기 설계: PID와 근궤적으로 정착시간 맞추기 (MATLAB)

DC 서보 모터 위치 제어기를 MATLAB으로 설계했다. 감쇠비 0.4~0.7, 정착시간 1/30초 미만, 위상 여유 40도 이상 조건에서 근궤적으로 PID 이득을 구하고 조건 충족과 최적값을 확인한 과정과 고찰을 담았다.

etc Project

전력 계통 발전·송전 계획 최적화: 목적 함수와 제약 조건 모델링

전력 시스템 공학 과목에서 수행한 발전·송전 계획 프로젝트. 장기 수요 증가에 맞춰 발전소 신설과 송전망 확장을 비용 최소화 문제로 모델링하고, 제약 조건, 전력 조류 계산, MILP 최적화와 시나리오 분석을 정리했다.

Hardware Project

Zynq-7000 FPGA AI 가속기 설계: CNN·FC 코어와 AXI CDMA 데이터 이동

Zynq-7000 FPGA에 CNN·Fully Connected 연산 코어와 AXI CDMA 데이터 무버를 설계해 AI 가속기를 만들었다. 설계 흐름, 메모리 맵, 코어와 무버 검증, 5단계 AI 모델 구성까지 Vivado·Vitis 작업을 정리했다.

Hardware Project

라즈베리파이 IoT 자판기 만들기: Firebase 재고 관리와 도난 감지

라즈베리파이로 만든 IoT 자판기 프로젝트. Firebase 데이터베이스로 재고와 수입을 원격 관리하고, 도난을 감지하면 사이렌과 함께 관리자에게 알린다. 부품 구성, 면별 하드웨어 배치, Python 제어 코드를 다룬다.

Hardware Project

Kogge-Stone 가산기 Verilog 설계: higher-valency 셀로 로직 레벨 줄이기

로직 레벨이 가장 적은 트리 가산기인 Kogge-Stone Adder를 higher-valency 셀로 Verilog 설계했다. Bitwise·Group PG와 SUM 로직 코드, 테스트벤치 파형 검증, 성능 최적화 방법과 분석을 정리했다.