디지털 논리 Roadmap: 30일 만에 Gate에서 CPU까지
하루씩 따라가는 디지털 논리 curriculum입니다. AND gate부터 작동하는 CPU까지 30일 동안 매일 글 하나와 interactive template 하나로 집중 학습합니다.
요약: 30일, 4주, 첫 AND gate에서 직접 배선한 작동하는 CPU까지 이어지는 하나의 구조화된 경로입니다. 매일 blog 글 하나(이론)와 interactive simulator template 하나(실습)를 짝지었습니다. 하루 한 시간을 투자하세요. 30일째에는 컴퓨터가 어떻게 동작하는지 비유가 아니라 clock cycle을 하나씩 진행할 수 있는 회로로 이해하게 됩니다.
디지털 논리는 대수와 회로를 서로 분리해 가르칠 때 더 어려워집니다. 회로 없는 대수는 현실과 동떨어져 보이고, gate 수준의 능숙함 없이 보는 CPU schematic은 전선을 베끼는 연습이 되기 쉽습니다. 이 roadmap은 두 관점을 함께 유지하여 모든 부울 표현식에는 대응 회로가 있고 모든 회로에는 존재 이유가 있게 합니다.
이 계획은 30번의 학습 session을 주제별 4주로 구성하고 집중 읽기와 simulator 실습을 짝지었습니다. 하루 한 시간은 약속이 아니라 권장 pace입니다. 실행하기 전에 회로 동작을 예측할 수 없다면 그 session을 반복하세요.
독학 계획, 4학점 학부 강의 syllabus, hardware interview 학습 안내서, 직장에서 특정 주제가 나올 때 찾는 reference index로 사용할 수 있습니다. 이 page를 bookmark하고 차례로 따라가면 디지털 논리라는 분야가 더는 위압적으로 느껴지지 않을 것입니다.
이 Roadmap은 누구를 위한 것인가요?
Hardware는 “그저 abstraction layer”라는 말을 들었지만 가장 아래 layer를 보고 싶은 컴퓨터과학 학생이라면 이 roadmap이 맞습니다. Embedded, kernel, compiler, performance 같은 low-level system을 다루면서 실리콘 안에 실제로 무엇이 있는지 어렴풋이만 아는 software engineer에게도 맞습니다. “CPU 동작 원리” 영상을 수없이 봤지만 실제로 하나를 만들고 싶은 hobbyist에게도 맞습니다.
선행 지식은 이진수의 기본 이해(1주차에 복습합니다), 기초 대수, 4주 동안 하루 약 한 시간을 쓸 인내심뿐입니다. 필요한 도구는 browser 하나입니다. 모든 template은 설치 없이 browser에서 실행되는 DigiSim.io로 연결됩니다.
Roadmap 구성
Week 1 Days 1- 7 Gates and Boolean foundations
Week 2 Days 8-14 Combinational circuits
Week 3 Days 15-21 Sequential logic
Week 4 Days 22-28 Arithmetic and memory
Final Days 29-30 Putting it together as a CPU
매일 같은 형태로 진행합니다.
- 목표 — 그날 마칠 때 갖게 될 기술을 한두 문장으로 설명합니다.
- 읽기 — 이론을 가르치는 blog 글 하나를 지정합니다.
- 만들기 — 직접 연습할 simulator template 하나를 지정합니다.
대략 20분은 읽고 40분은 만들어 보세요. 학습이 굳어지는 곳은 만들기 단계입니다. 만들기를 건너뛰는 것은 독학자가 디지털 논리를 기억하지 못하는 가장 흔한 이유입니다.
1주차 — Gate와 부울 대수 기초
CPU를 이해하려면 가장 작은 조각부터 이해해야 합니다. 1주차에는 모든 불 primitive, 진리표, 기호, 표현식을 이루는 조합 방식까지 gate 수준의 능숙함을 쌓습니다. 일요일에는 부울 표현식을 보고 회로를 예측하고, 회로를 보고 진리표를 예측할 수 있어야 합니다.
1일차 — 디지털 논리에 오신 것을 환영합니다
목표: 디지털 신호가 무엇이며 논리 gate가 물리 수준에서 무엇을 하는지 이해합니다.
읽기: 디지털 논리 101: AND, OR, NOT Gate로 내딛는 첫걸음
만들기: 기본 switch와 light demo — switch를 켜면 light가 켜집니다. 가능한 가장 작은 디지털 회로이며 모든 microprocessor의 계보가 시작되는 곳입니다.
2일차 — AND Gate
목표: AND 진리표를 체화하고 AND 형태의 논리가 나타나는 곳을 알아봅니다.
읽기: AND Gate: 디지털 논리와 의사 결정의 토대
만들기: AND-gate security system — 두 조건을 모두 충족해야 열리는 문입니다. 이어 AND 부품 참고 문서를 살펴봅니다.
3일차 — OR Gate와 NOT Gate
목표: 보편적 불 연산자 세 가지를 완성하고 OR와 NOT이 AND와 어떻게 조합되는지 봅니다.
읽기: OR Gate: 디지털 논리의 민주적 투표를 읽고 소박한 NOT Gate로 이어갑니다.
만들기: OR-gate alarm system — sensor 하나라도 작동하면 울리는 alarm입니다. 오늘의 부품 reference는 OR primitive와 NOT primitive입니다.
4일차 — 배타적 가족: XOR와 XNOR
목표: OR와 XOR의 차이, equality test와 덧셈에 exclusive logic이 등장하는 이유를 이해합니다.
읽기: XOR Gate: 차이의 논리 완전 정복을 읽고 XNOR Gate: Equality의 챔피언으로 이어갑니다. 실용적 동기는 XOR와 XNOR: 오류 검출의 결정적 차이와 함께 살펴보세요.
만들기: XOR 부품 참고 문서와 XNOR 부품 참고 문서를 탐색합니다. Switch 두 개를 XOR에 연결하고 출력을 관찰하세요.
5일차 — NAND와 NOR: 범용 Gate
목표: NAND 하나 또는 NOR 하나만으로 모든 함수를 만들 수 있는 이유와 chip fabrication에서 그 의미를 이해합니다.
읽기: NAND Gate: 모든 디지털 논리를 만드는 단 하나의 구성 요소를 읽고 숨은 영웅: NOR Gate가 아폴로를 만든 방법으로 이어갑니다.
만들기: NAND gate만으로 AND gate를 구성합니다. NAND primitive와 NOR primitive를 참고하세요. 이어 논리 gate 진리표 reference를 찾아 자신의 구성을 검증합니다.
6일차 — 부울 대수와 드모르간 법칙
목표: 부울 표현식을 대수적으로 조작하고 드모르간 법칙으로 회로를 단순화합니다.
읽기: 부울 대수 완전 정복: 디지털 회로 설계의 토대를 읽고 드모르간 법칙 완전 정복으로 이어갑니다.
만들기: 같은 3변수 표현식의 회로를 그린 다음 드모르간 법칙으로 변환하고 두 회로가 같은 출력을 내는지 검증합니다. Buffer 부품과 buffer가 존재하는 이유를 읽으며 gate 수준의 고리를 닫습니다.
7일차 — 기호, 다중 입력 Gate, 이진법의 역사
목표: ANSI 및 IEC 표기법으로 회로 diagram을 읽고, multi-input gate를 능숙하게 다루며, binary의 기원을 이해합니다.
읽기: 디지털 논리 해독: ANSI와 IEC 기호, 입력 두 개를 넘어: Multi-Input Logic Gate 완전 정복을 읽습니다. 이진법의 3,500년 여정이라는 멋진 우회로로 한 주를 마칩니다.
만들기: Simulator에서 같은 4입력 함수를 ANSI와 IEC 표기법으로 각각 그립니다. 두 표기법을 막힘없이 오갈 수 있는지 확인하세요.
2주차 — 조합 회로
2주차에는 개별 gate에서 벗어나 출력이 오직 입력의 함수인 완전한 회로로 나아갑니다. 일요일에는 부울 표현식을 Karnaugh map으로 단순화하고 multiplexer, decoder, encoder, buffer 같은 올바른 primitive를 사용해 빠른 조합 구현을 배치할 수 있어야 합니다.
8일차 — Sum of Products
목표: 모든 진리표를 sum-of-products 표현식과 AND-OR 회로로 바꿉니다.
읽기: Sum of Products(SOP) 완전 정복
만들기: 임의의 3변수 함수를 골라 SOP 형태로 구현합니다. Gate 수를 canonical, 즉 단순화하지 않은 형태와 비교합니다.
9일차 — Product of Sums와 쌍대 형태
목표: 쌍대 표현, POS가 SOP보다 유리한 때, 둘을 변환하는 방법을 이해합니다.
읽기: Sum of Products를 넘어: Product of Sums 완전 정복
만들기: 어제의 함수를 POS 형태로 다시 구현하고 진리표가 같은지 검증합니다. Gate 수의 차이를 기록하세요.
10일차 — Karnaugh Map
목표: K-map으로 모든 4변수 함수의 최소 SOP 및 POS 구현을 찾습니다.
읽기: 논리 시각화: Karnaugh Map 완전 정복
만들기: 함수 의 K-map을 그리고 minimum cover를 찾은 뒤 구현합니다.
11일차 — Don’t-Care Condition
목표: Don’t-care를 사용해 관심 있는 입력에 대해 최소인 회로를 찾습니다.
읽기: Karnaugh Map의 Don’t-Care Condition
만들기: 10일차 함수에 don’t-care 세 개를 추가하고 다시 최소화합니다. Gate 수가 대개 눈에 띄게 줄어듭니다.
12일차 — Multiplexer와 Demultiplexer
목표: Mux를 programmable wire-router로, demux를 그 역으로 이해합니다.
읽기: Multiplexer(MUX) 완전 해부를 읽고 Demultiplexer Tutorial: 1-to-4와 1-to-8로 이어갑니다.
만들기: 4-to-1 multiplexer로 임의의 2변수 함수를 구현합니다. Mux는 범용 조합 block입니다. 부품 reference는 MULTIPLEXER와 DEMULTIPLEXER입니다.
13일차 — Decoder, Encoder, Priority Encoder
목표: 7-segment display driver를 만들고 interrupt controller를 위한 priority encoding을 이해합니다.
읽기: Decoder와 Encoder: 7-Segment Display 구동, Priority Encoder 해설, BCD to 7-Segment Decoder를 읽습니다.
만들기: BCD-to-7-segment decoder를 배선해 숫자 0부터 9까지 표시합니다. 부품 reference는 DECODER와 ENCODER입니다.
14일차 — Tri-State Buffer와 Bus Arbitration
목표: 세 번째 상태인 high-impedance와 공유 bus가 물리적으로 가능한 방식을 이해합니다.
읽기: 숨은 영웅: 디지털 Buffer가 필수인 이유를 읽고 Tri-State Buffer와 Bus Arbitration으로 이어갑니다.
만들기: Tri-state buffer를 사용해 register 두 개를 공유 4비트 bus에 배선합니다. TRI_STATE_BUFFER 부품을 참고하세요. 추가로 조합 논리의 hazard를 읽어 timing 함정을 알아봅니다.
3주차 — 순차 논리
조합 회로에는 memory가 없지만 실제 computer에는 있습니다. 3주차에는 storage element인 latch, flip-flop, register, counter, shift register와 이들을 정직하게 유지하는 timing discipline을 소개합니다.
15일차 — SR Latch
목표: Bistability와 latch가 값을 영원히 유지할 수 있는 이유를 이해합니다.
만들기: SR latch demonstration. 모든 입력 조합을 하나씩 진행하며 forbidden state를 확인합니다. SR_LATCH primitive가 부품 reference입니다.
16일차 — D Latch
목표: SR latch에 data 입력과 enable을 추가해 가장 단순한 level-sensitive memory를 만듭니다.
만들기: 기본 D latch. Transparency window를 관찰하세요. Enable이 HIGH이면 출력이 입력을 따라가고 LOW가 되면 값을 유지합니다.
17일차 — D Flip-Flop
목표: Level-sensitive와 edge-triggered storage의 차이 및 모든 현대 register가 후자를 쓰는 이유를 이해합니다.
읽기: D Flip-Flop: 동기식 디지털의 숨은 영웅
만들기: Edge-triggered D flip-flop. Timing diagram을 어제의 D latch와 비교합니다. D_FLIP_FLOP primitive가 reference입니다.
18일차 — JK와 T Flip-Flop
목표: Flip-flop 가족을 완성하고 각 변형이 존재하는 이유를 이해합니다.
읽기: SR와 JK Flip-Flop: 순차 논리의 기초, JK Flip-Flop: 범용 구성 요소 완전 정복, T Flip-Flop: 디지털 Counting의 숨은 영웅을 읽습니다.
만들기: JK flip-flop master-slave. JK_FLIP_FLOP과 T_FLIP_FLOP primitive를 참고하세요.
19일차 — Clock과 Timing Discipline
목표: 동기식 설계가 의존하는 아날로그 물리인 setup time, hold time, propagation delay, metastability를 이해합니다.
읽기: Clock Pulse: 컴퓨터에 심장박동이 필요한 이유, 보이지 않는 Clock: Setup, Hold, Metastability 완전 정복, 전파 지연: 디지털 속도를 결정하는 물리, Clock Skew를 읽습니다.
만들기: Clock 부품으로 flip-flop을 구동합니다. Data transition을 sampling edge에 점점 가까이 옮기고 digital model이 어느 값을 포착하는지 비교하세요. 이어 같은 물리적 crossing이 metastable해질 수 있는 이유를 계산합니다. Logic simulator는 실제 metastable node의 아날로그 voltage나 통계적 resolution time을 재현하지 않습니다.
20일차 — Register와 Shift Register
목표: Flip-flop을 multi-bit storage로 묶고 shift-register mode 네 가지를 배웁니다.
읽기: Shift Register 완전 정복: Serial-to-Parallel, SISO, SIPO, PISO, PIPO Shift Register Mode를 읽습니다. Parallel-load register를 8비트 register 부품과 연결해 이해하세요.
만들기: Clock이 있는 4비트 register와 기본 shift register demo. 부품 reference는 REGISTER와 SHIFT_REGISTER입니다.
21일차 — Counter와 State Machine
목표: 여러 modulus의 counter를 만들고 state machine의 Mealy와 Moore 차이를 이해합니다.
읽기: Counter와 State Machine: 디지털 Sequence 제어, Frequency Division 완전 정복: Flip-Flop에서 Modulo-N까지, Johnson Counter: 효율적인 Twisted Ring 완전 정복, 마지막으로 FSM 이론을 위한 Mealy와 Moore State Machine을 읽습니다.
만들기: 4비트 binary counter, 이어 4비트 asynchronous ripple counter를 만들고 timing을 비교합니다. COUNTER 부품이 reference입니다.
4주차 — 산술과 Memory
4주차에는 실제 CPU의 문턱까지 갑니다. Adder, comparator, ALU와 data 및 instruction을 저장하는 memory primitive를 만듭니다. 일요일이면 CPU에 필요한 부품을 모두 갖추게 됩니다.
22일차 — Half Adder와 Full Adder
목표: 가장 작은 산술 회로를 만들고 연결하여 multi-bit adder로 확장합니다.
읽기: Half-Adder: 디지털 논리 설계의 첫걸음, Half-Adder와 Full-Adder 비교를 읽습니다.
만들기: Half-adder 부품 demo, 1비트 half adder, Carry가 있는 full adder를 차례로 만듭니다. Reference는 HALF_ADDER와 FULL_ADDER입니다.
23일차 — Ripple-Carry와 Carry-Lookahead Adder
목표: Ripple-carry가 큰 규모에서 느린 이유와 carry-lookahead가 실리콘 면적의 대가를 치르는 이유를 이해합니다.
읽기: 이진 덧셈 완전 정복: 4비트 Ripple-Carry 만들기, Carry-Lookahead Adder: Ripple-Carry보다 빠르게를 읽습니다.
만들기: Full-adder 네 개를 연결해 4비트 ripple-carry adder를 만들고 worst-case propagation을 측정합니다. ADDER와 ADDER_8BIT 부품을 참고하세요.
24일차 — 2의 보수와 부호 있는 산술
목표: 덧셈으로 뺄셈을 수행하는 방식과 sign 및 overflow flag 계산법을 이해합니다.
만들기: 23일차 adder가 두 번째 operand를 반전하고 carry-in을 1로 설정해 뺄셈을 처리하도록 수정합니다. 음수에서 올바른 2의 보수 결과를 만드는지 검증하세요.
25일차 — Comparator
목표: Equality 및 magnitude comparator를 만들고 CPU 안에서의 위치를 이해합니다.
읽기: Digital Comparator 해설: Equality와 Magnitude
만들기: XNOR와 AND tree로 4비트 equality comparator를 배선합니다. COMPARATOR primitive를 참고하세요.
26일차 — ALU
목표: Adder, comparator, logic block을 multiplexer 뒤에 결합해 programmable arithmetic unit을 만듭니다.
읽기: ALU 동작 원리: Gate로 만드는 Arithmetic Logic Unit
만들기: 4비트 ALU demonstration에서 시작해 8비트 ALU system으로 발전합니다. Reference는 ALU와 ALU_8BIT입니다.
27일차 — Flag
목표: ALU 출력에서 Zero, Carry, Sign, Overflow flag를 계산하고 저장합니다.
읽기: CPU Flags Register: Carry, Zero, Overflow, Sign
만들기: CPU flags register template. FLAGS_REGISTER primitive를 참고하세요.
28일차 — Memory: RAM과 ROM
목표: 주소를 지정할 수 있는 memory를 만들고 volatile RAM과 non-volatile ROM의 차이를 이해합니다.
만들기: 기본 RAM memory system과 Address control이 있는 RAM. 부품 reference는 RAM과 ROM입니다. 추가로 multi-byte value의 layout은 endianness 글을 읽으세요.
29~30일차 — 완전한 CPU 만들기
이제 기본 CPU에 필요한 부품을 모두 갖추었습니다. 마지막 이틀 동안 하나로 연결합니다.
29일차 — Fetch-Decode-Execute Cycle
목표: Instruction 하나를 memory에서 execute와 write-back까지 microoperation별로 추적합니다.
읽기: Fetch-Decode-Execute Cycle 시각화, 더 긴 Microprocessor 동작 원리: Fetch-Decode-Execute 심층 분석을 읽습니다. 움직이는 부품은 Program Counter, Instruction Register와 Decode Stage를 참고하세요.
만들기: Sequential instruction executor template. Cycle 사이에서 pause하고 모든 register transfer를 관찰합니다. 부품 reference는 PROGRAM_COUNTER_8BIT, INSTRUCTION_REGISTER, CONTROL_UNIT, ACCUMULATOR입니다.
30일차 — 나만의 CPU 만들기
목표: 4주차 부품과 29일차의 program counter, instruction register, control unit을 연결해 작동하고 programming할 수 있는 CPU를 만듭니다.
만들기: Sequential instruction executor template에서 시작해 수정합니다. 새 instruction을 추가하고 실행을 관찰하세요. 자신만의 assembly language로 program을 쓰고 자신이 만든 CPU가 실행하는 모습을 처음 볼 때 roadmap 전체의 결실을 얻습니다.
30일 이후 — 다음으로 갈 곳
30일이면 작동하는 CPU까지 도달합니다. 그 뒤에는 여러 방향이 있습니다.
더 깊은 Architecture
기본 cycle이 직관적으로 느껴지면 현대 CPU를 빠르게 만드는 pipelining, cache, branch prediction, out-of-order execution이 다음 layer입니다. Microprocessor 심층 분석이 그 주제로 가는 다리입니다.
더 많은 산술
Multiplication과 floating-point는 그 자체로 하나의 세계입니다. Booth multiplier와 IEEE 754 floating-point를 읽어 다음 두 layer로 나아가세요.
오류 검출 및 정정
실제 시스템에서는 bit가 손실됩니다. Parity, Hamming code, checksum이 시스템을 지키는 방법입니다. Parity Bit Tutorial과 Hamming Code Error Correction을 읽으세요.
특수 Encoding
Gray code와 BCD는 일반 binary가 문제가 되는 곳에 나타납니다. Gray Code 해설과 BCD 기초를 읽으세요.
도구와 방법론
실제 회로를 simulation하기 시작하면 debugging tool이 중요해집니다. Oscilloscope로 디지털 회로 Debugging하기를 읽고 oscilloscope 부품 reference를 탐색하세요.
학습 자료 저작
배운 내용을 가르치고 싶다면 수업이나 Blog에 Interactive Circuit 삽입하기와 SimCast 학습: 단계별 Circuit Tutorial을 읽으세요.
도구 선택
어느 simulator를 계속 사용할지 결정하려면 2026년 최고의 디지털 논리 simulator 비교와 breadboard 시대의 끝을 통해 browser 기반 simulation이 학습 toolkit의 영구적인 부분인 이유를 살펴보세요. DigiSim이 처음이라면 DigiSim.io 첫 5분이 가장 친절한 시작점입니다.
Roadmap을 따라가는 팁
끝까지 가는 학생과 중간에 멈추는 학생을 가르는 몇 가지 습관이 있습니다.
- 매일 배운 내용을 적으세요. 모든 것을 머릿속에 담으려 하기보다 journal에 두 문장을 쓰는 편이 낫습니다. 개념은 쌓입니다. 23일차에서 multiplexer를 언급할 때 12일차를 다시 찾을 수 있어야 합니다.
- 글을 읽기 전에 회로를 만들어 보세요. 직관과 반대 같지만 효과가 있습니다. 목표를 훑고 회로 배선을 시도한 다음 글을 읽습니다. 이미 올바른 곳에서 실패했기 때문에 설명이 더 깊이 와닿습니다.
- 막히면 진리표를 읽으세요. 거의 모든 디지털 논리의 혼란은 진리표의 한 행으로 풀립니다. 논리 gate 진리표 reference가 index입니다.
- 모든 clock cycle을 하나씩 진행하세요. 특히 3주차부터 중요합니다. Simulator를 계속 실행하고 싶은 유혹을 이겨 내세요. 순차 회로는 cycle 하나씩 볼 때만 이해됩니다.
- 다음 날을 시작하기 전에 전날을 다시 읽으세요. 3분의 복습이 누적됩니다.
- 하루도 건너뛰지 마세요. 일이 생기면 절반 길이로라도 무언가 하세요. 2주 공백은 한 주의 momentum을 지웁니다.
인쇄할 수 있는 읽기 일정표
전체 curriculum을 한눈에 보는 것이 도움이 된다면 다음 표를 사용하세요.
어려워지는 지점과 넘어서는 방법
아무것도 어렵지 않은 척하는 30일 roadmap은 정직하지 않습니다. 어떤 날은 매끄럽습니다. 읽고, 배선하고, 이해합니다. 어떤 날은 절벽입니다. 어느 날이 그런지 알면 체력을 알맞게 배분할 수 있습니다.
학생들이 자주 떨어지는 절벽:
- 6일차(부울 대수): 기호 위의 대수는 전선 위의 gate와 동떨어져 보입니다. 해결책은 대수 옆에 언제나 회로를 그리는 것입니다. 드모르간 변환을 적용할 때 회로도 다시 그리세요. 시각 feedback이 추상을 고정합니다.
- 10일차(Karnaugh map): K-map은 sudoku처럼 보이지만 그렇지 않습니다. 인접 cell이 변수 하나만 다른 진리표를 2차원으로 펼친 것입니다. 행과 열에 Gray-code 순서로 label을 붙여 스스로 확인하면 나머지 기법이 자연스럽게 따라옵니다.
- 17일차(D flip-flop): Level-sensitive에서 edge-triggered로 넘어가는 도약입니다. 기호가 거의 같아 많은 학생이 과소평가하지만 개념 변화는 큽니다. Flip-flop은 시간의 불연속을 만듭니다. 순간 의 출력값은 순간 가 아니라 의 입력값에 달려 있습니다. 여기에 시간을 더 쓰세요. 같은 input pattern을 D latch와 D flip-flop에 적용하고 timing diagram을 나란히 비교합니다.
- 19일차(timing discipline): Setup, hold, metastability는 디지털 설계가 순수한 Boolean 세계를 벗어나 아날로그 토대를 인정하는 순간입니다. 해결책은 전파 지연 글을 체화하는 것입니다. Gate에 시간이 걸리고 그 시간이 변한다는 사실을 받아들이면 timing rule은 필연적으로 보입니다.
- 26일차(ALU 통합): 작동하는 ALU에는 전선이 수십 개입니다. Schematic을 그대로 복사하고 넘어가고 싶겠지만 참으세요. 한 번에 한 bit씩 operation 하나를 따라가야 mental model을 지킬 수 있습니다. 이 단계를 건너뛰면 30일차가 고통스러워집니다.
- 30일차(통합의 날): 모든 것이 누적되는 날입니다. 이전 만들기를 건너뛰었다면 여기에서 드러납니다. 해결책은 한 달 내내 어느 만들기도 건너뛰지 않는 것입니다.
보기보다 쉬운 날:
- 5일차(NAND/NOR 범용성): 증명은 gate마다 회로 하나입니다. NAND로 AND를 만드는 것을 보면 나머지는 기계적으로 따라옵니다.
- 12일차(multiplexer): Mux는 select line을 가진 wire-router입니다. 핵심은 그것뿐입니다. 12일차의 “함수 생성기로서 mux” 요령은 즐겁지만 선택 사항입니다.
- 22~24일차(산술): 4주차까지 왔다면 adder 가족은 순서대로 조립하기만 하면 됩니다. 쉬운 날을 즐기세요. 뒤에서 그 에너지가 필요합니다.
어느 날 만들기를 건너뛰고 싶다면, 그것이야말로 그 만들기를 절대 건너뛰면 안 된다는 가장 강한 신호입니다. 읽기만 하고 만들지 않으면 말로 설명할 수 있는 회로도 직접 배선하지 못하게 됩니다.
매주 끝에 “완료”란 무엇인가요?
매주는 checkpoint로 끝납니다. 할 수 없다면 다음으로 넘어가기 전에 그 주를 반복하세요.
- 1주차 완료: 4입력 진리표가 주어졌을 때 출력 부울 표현식을 쓰고 대응하는 gate-level 회로를 그리며 모든 입력의 출력을 예측할 수 있습니다. 같은 회로를 ANSI 또는 IEC 표기법으로 읽을 수 있습니다.
- 2주차 완료: 불 함수가 주어졌을 때 Karnaugh map으로 거의 최소인 구현을 찾고 SOP와 POS 중 비용이 낮은 것을 고르며 적합한 primitive(mux, decoder, encoder)를 선택할 수 있습니다. 7-segment-display driver를 처음부터 배선할 수 있습니다.
- 3주차 완료: Clocked circuit이 주어졌을 때 여러 clock cycle에 걸친 waveform을 예측할 수 있습니다. 임의 modulus의 counter를 만들고 setup 및 hold time이 존재하는 이유와 metastability를 설명할 수 있습니다.
- 4주차 완료: Add, subtract, AND, OR, XOR를 지원하고 flag를 올바르게 생성하는 n비트 ALU를 만들 수 있습니다. RAM을 배선하고 counter에서 주소를 지정할 수 있습니다.
- 30일차 완료: 자신이 만든 CPU instruction set으로 짧은 program을 쓰고 RAM에 load한 뒤 reset을 눌러 CPU가 실행하는 모습을 볼 수 있습니다.
이 Roadmap이 효과적인 이유
학생들이 같은 지점에서 같은 plateau를 만나는 모습을 보았습니다. 순차 논리가 조합 논리에는 필요 없던 timing intuition을 갑자기 요구하는 3주차입니다. Roadmap은 1주차에 gate 능숙함을 먼저 쌓아 3주차에 XOR가 무엇인지까지 다시 떠올리지 않게 합니다. 이론과 실습을 엮어 어떤 개념도 24시간 넘게 추상적으로 남지 않게 합니다. 마지막에는 실제 CPU를 만듭니다. 그 순간 분야 전체가 맞물립니다. 배선한 모든 gate, flip-flop, multiplexer가 같은 회로 안에서 실제 일을 합니다.
Roadmap은 확장할 수 있게 설계했습니다. 한 달이 아니라 일주일이 있다면 1주차, 2주차, 그리고 4주차의 26~30일차에 집중해 깊이 대신 뼈대를 얻으세요. 한 학기가 있다면 일정을 두 배로 늘려 하루를 이틀로 만들고 둘째 날을 연습과 project에 씁니다. 1년이 있다면 “30일 이후” 갈래를 따라 pipelining, error correction, floating-point로 나아갑니다.
디지털 논리를 가르친다면 이 roadmap을 자유롭게 사용하세요. 학생에게 주고, customize하고, fork하세요. Blog 글은 공개되어 있고 simulator template은 무료로 remix할 수 있습니다. 부탁은 학생들과 무언가를 만들고 그들이 만든 것을 공유해 달라는 것뿐입니다. Hardware는 공개적으로 함께할 때 더 즐겁습니다.
30일 계획의 변형
이 roadmap에는 분명한 관점이 있지만 날짜를 계약이 아니라 순서로 생각하세요. 세 가지 변형을 소개합니다.
Sprint version(10일): 이전에 배운 경험이 있어 압축하려면 17일차를 각각 하루에 하나씩 하고, 24주차는 가장 대표적인 개념 하나씩(K-map, D flip-flop, ALU)만 하루에 다룹니다. 8~10일차는 CPU 만들기에 씁니다. 깊이는 줄지만 뼈대는 유지합니다.
Marathon version(90일): 하루를 이론 + 만들기 + 확장으로 세 배 늘립니다. 확장 단계에서는 그날 개념을 글에 없던 문제에 적용합니다. 2입력 AND로 7입력 AND를 만들고, 6비트 counter를 설계하고, serial bit stream에서 “1011”을 검출하는 Mealy machine을 simulation합니다. 이렇게 roadmap을 하나의 강좌로 바꿀 수 있습니다.
주제 중심 version: Hobby project용 custom counter 설계처럼 결과 하나만 원한다면 roadmap의 dependency tree가 필요한 날짜를 알려 줍니다. Counter에는 clock과 flip-flop이 필요하고, flip-flop에는 latch가, latch에는 gate가 필요합니다. 결과에서 foundation으로 거꾸로 걸어가면 custom plan이 만들어집니다.
Roadmap과 Site의 나머지 부분 연결하기
Blog와 simulator는 하나의 resource로 설계되었습니다. Roadmap은 그 안을 지나는 선별된 경로지만 자유롭게 돌아다녀도 좋습니다.
- Docs index는 공개된 Logic 부품 참고 문서를 모으고 Relay, Electricity 자료와 범위를 좁힌 Analog Beta 가이드를 각각 연결합니다. JK flip-flop의 J와 K 입력 동작을 잊었다면 글을 다시 읽는 것보다 JK_FLIP_FLOP 부품 참고 문서가 빠릅니다. 모든 부품에 개별 페이지가 있다고 가정하지 말고 색인을 확인하세요.
- Blog index는 최신순으로 정렬되고 tag가 붙어 있습니다.
primaryTag로 filter하여 한 series의 모든 글을 찾을 수 있습니다. - 가격 page는 어떤 기능이 무료인지(이 roadmap의 모든 기능)와 Professional bundle에 포함되는 기능(export, premium template, advanced lesson)을 설명합니다.
- 멈춘 단계가 있는 lesson 형태의 narration을 원하면 SimCast lesson을 보세요.
이 roadmap의 주제에 더 깊은 글이 없다면 아마 writing queue에 있는 것입니다. 앞으로 몇 달 동안 blog feed를 확인하세요.
마지막 안내
이 page를 bookmark하세요. Curriculum이 발전하며 새 글을 놓치지 않도록 DigiSim blog RSS를 구독하세요. 대략 매주 새 글을 추가하며 많은 글이 기존 날짜의 심층 자료로 roadmap에 바로 들어옵니다. 완료하면 자신의 CPU를 어딘가에 게시하세요. 다른 사람에게 설명하는 과정에서 어느 부분을 실제로 체화했는지 알게 됩니다.
1일차는 한 번만 누르면 시작할 수 있습니다. 디지털 논리 101을 열고 기본 switch와 light demo를 띄운 뒤 시작하세요.
지금 시작하기: 1일차 읽기는 디지털 논리 101, 만들기는 기본 switch와 light demo입니다. 이 page를 bookmark하고 blog feed를 구독한 뒤 내일 2일차에 돌아오세요.

