Altifigence Academy
디지털 설계무료 · 입문

디지털 논리회로

디지털 신호와 AND·OR·XOR 등 논리 게이트에서 시작해 조합회로, 래치·플립플롭, 카운터와 상태 기계를 설계합니다. 진리표·수식·회로·파형이 어떻게 대응하는지 살펴보고 RTL 실습으로 검증합니다. 선택 심화 과정에서는 데이터패스와 인터페이스도 다룹니다.

조합·순차논리SystemVerilog파형 해석
내 강의실

이 코스에서 배우는 것

  • 논리값과 전압을 구분하고 8종 게이트의 진리표·기호·등가 회로를 설명합니다.
  • 명세를 바탕으로 SOP·POS·카르노 맵을 이용해 조합회로를 설계하고 모든 입력 조합을 검사합니다.
  • 인코더·디코더·MUX·DEMUX·가산기·비교기의 입력 조건과 경계값을 정의합니다.
  • 래치와 플립플롭의 차이를 설명하고 reset·enable·클록에 따라 상태를 갱신하는 규칙을 설계합니다.
  • 카운터·시프트·상태 기계를 RTL로 구현하고 타이밍·비동기 입력·디바운싱을 분석합니다.
  • 독립 참조 모델로 설계를 검증하고, 서로 겹치는 101 패턴도 찾는 검출기를 완성합니다.
  • 선택 심화 과정에서는 ALU·메모리·FIFO·파이프라인·인터페이스를 다룹니다.

시작하기 전에

브라우저 실습은 교육용 모델이며 HDL을 컴파일·실행하지 않습니다. 제공된 소스를 별도로 실행하려면 운영체제에 맞는 Digital Design Studio 안내를 따르고 해당 작업에서 요구할 때 로그인하세요.

설치·첫 실행 안내 ↗ · 다운로드 ↗

커리큘럼

  1. 디지털 신호와 수 표현
    • 디지털 신호: 전압을 0과 1로 읽는 조건개념

      논리값과 전압을 구분하고 입력 임계값·잡음 여유·전파 지연을 계산합니다.

    • 수 체계와 고정 폭 표현개념

      진법을 변환하고, 표현 범위와 필요한 비트 수, 절단 오차를 계산합니다.

  2. 논리 게이트와 진리표
    • 기본 게이트: AND·OR·NOT·BUFFER개념

      회로 기호와 진리표를 연결하고 여러 게이트로 조건을 구성합니다.

    • NAND·NOR와 반전 기호 읽기개념

      부정의 범위를 구분하고 드모르간 법칙으로 같은 기능의 기호와 식을 연결합니다.

    • XOR·XNOR: 같음, 다름과 패리티개념

      두 입력 XOR와 다중 입력 패리티를 구분하고 오류 검출의 한계를 설명합니다.

    • 범용 게이트: NAND만으로 회로 만들기개념

      NAND·NOR만으로 회로를 만들어 기능적 완전성을 확인하고, XOR의 중간 신호를 검증합니다.

  3. 논리식에서 회로 설계까지
    • 불 대수, 등가 변환과 구현 비용개념

      드모르간 법칙과 인수분해로 회로를 바꾸고, 논리적 등가와 타이밍을 구분합니다.

    • 진리표에서 논리식으로: 최소항·최대항·SOP·POS개념

      출력이 1인 행과 0인 행에서 같은 함수를 각각 도출하고 카르노 맵의 표기와 연결합니다.

    • 카르노 맵과 don’t-care의 조건개념

      그레이 코드로 배열한 셀을 묶어 논리식을 줄이고, 사용하지 않는 입력에 어떤 가정을 두었는지 밝힙니다.

    • 설계 실습: 명세에서 3입력 다수결 회로까지실습

      자연어 명세를 완전한 진리표로 바꾸고, 논리식을 최소화해 구현한 뒤 모든 입력 조합을 검사합니다.

  4. 주소와 선택 회로
    • 디코더, 원핫 선택과 유효 입력개념

      이진 주소를 개별 선택선으로 바꾸고, enable의 동작과 유효한 주소 범위, 선택선이 지켜야 할 조건을 정합니다.

    • 인코더와 우선순위: 여러 요청 중 하나 고르기개념

      원핫 인코더에 필요한 입력 조건과 우선순위 인코더의 valid·선택 결과를 살펴봅니다.

    • DEMUX와 디코더: 선택한 경로로 데이터 보내기개념

      MUX·DEMUX·디코더의 데이터 전달 방향과 역할을 비교하고, 출력 중 정확히 하나 또는 최대 하나가 1이어야 하는 조건을 검증합니다.

    • 신호와 포트: 비트 폭·방향·동작 시점개념

      인터페이스에서 신호의 조건을 읽고, 조합 출력과 상태 출력의 값을 언제 비교해야 하는지 구분합니다.

    • 진리표에서 MUX와 Shannon 전개로개념

      선택 논리를 수식으로 유도하고 임의의 논리 함수를 MUX로 분해합니다.

  5. 산술회로와 비교
    • 가산기와 캐리 전달 구조개념

      전가산기 식을 유도하고 ripple-carry 구조의 동작과 필요한 비트 폭, 지연을 분석합니다.

    • 2의 보수, 부호 확장과 오버플로개념

      비트열을 signed로 해석하는 방법과 덧셈에서 overflow가 발생하는 조건을 수식과 반례로 살펴봅니다.

    • 비교기와 경계값 조건개념

      같은 비트열의 unsigned·signed 비교를 구분하고 경계 조건을 검증합니다.

  6. 래치·플립플롭과 상태 저장
    • 기억의 시작: 피드백과 SR·D 래치개념

      교차 결합이 만드는 두 안정 상태를 이해하고, SR 래치의 금지 입력과 D 래치의 투명 구간을 설명합니다.

    • D 플립플롭: 레벨에서 에지로개념

      래치와 플립플롭의 갱신 시점을 비교하고, 레지스터가 값을 저장할 때 필요한 setup·hold 조건을 살펴봅니다.

    • 플립플롭, enable과 제어 우선순위개념

      값을 유지·저장·초기화하는 동작을 다음 상태 식으로 정의하고, 의도하지 않은 클록 게이팅을 피합니다.

    • 동기식 상태 전이와 클록의 역할개념

      여러 레지스터가 같은 이전 상태를 읽고 함께 갱신되는 동기 시스템의 동작을 이해합니다.

  7. MUX의 RTL 구현과 검증
    • 조합 선택과 레지스터 출력의 지연개념

      MUX 결과를 레지스터에 저장했을 때 인터페이스와 지연이 어떻게 달라지는지 분석합니다.

    • 조합 RTL: 모든 경로에서 출력 대입하기개념

      조건 연산자와 always_comb로 같은 함수를 표현하고, 출력 대입을 빠뜨려 latch가 생기는 경우를 찾습니다.

    • 실습: MUX의 전수 검사와 레지스터 출력 분석실습

      같은 입력을 조합 경로와 레지스터 경로에 적용하고, 진리표와 샘플링 시점으로 결과를 검증합니다.

    • 파형의 샘플링 시점과 인과관계개념

      조합 논리가 안정되는 시점과 클록 에지에서 값을 저장하는 시점, 이벤트 처리 순서를 구분해 파형을 읽습니다.

    • MUX 검증: 전수 검사와 속성개념

      조합 입력의 검사 범위와 저장 동작을 따로 확인하고, 같은 오류를 재현하는 가장 짧은 입력열을 찾습니다.

    • 설계 확인: 선택 회로의 등가성과 관찰 시점이해 확인

      진리표만으로 확인할 수 있는 동작과 클록에 맞춰 관찰해야 하는 동작을 구분합니다.

  8. 카운터와 동기식 상태 갱신
    • 상태 개수, 카운터 폭과 사용하지 않는 코드개념

      카운트 범위에서 저장 비트 수를 구하고, 허용 범위를 벗어난 상태에서 어떻게 복구할지 정합니다.

    • 카운터의 다음 상태와 리셋 우선순위개념

      카운터가 증가·유지·리셋·순환하는 조건을 정하고 각 에지 이후의 값을 계산합니다.

    • Nonblocking 대입과 동시 상태 갱신개념

      이전 값과 다음 값을 분리해 파이프라인·카운터 RTL을 정확히 해석합니다.

    • 실습: 카운터의 리셋·순환·불변식 검증실습

      각 상승 에지의 상태를 참조 모델과 대조하고, 초기값·리셋·비트 폭의 영향을 분리합니다.

    • 모듈러·포화 카운터와 종료 펄스개념

      최댓값을 어떻게 처리할지 정하고 terminal-count 신호를 어느 사이클에 낼지 설계합니다.

    • 카운터 디버깅과 최소 반례개념

      리셋·enable·순환 경계의 오류를 구별하는 짧은 테스트를 설계합니다.

    • 설계 확인: 비트 폭·제어 우선순위·순환 조건이해 확인

      주어진 상태 전이 명세로 경계값과 동시 제어 입력을 판단합니다.

  9. 시프트 레지스터와 데이터 흐름
    • 벡터 인덱스, 비트 순서와 부호개념

      비트 번호, 직렬 전송 순서, 수치 해석을 구분하며 데이터 경로를 읽습니다.

    • 직렬 입력과 프레임의 경계개념

      입력 순서와 유효 에지를 정의하고 직렬-병렬 변환의 비트 배치를 계산합니다.

    • 시프트 레지스터의 상태 방정식개념

      비트 이동을 벡터의 상태 전이로 나타내고 저장 길이와 출력 지연의 관계를 살펴봅니다.

    • 슬라이스·연결·반복 연산의 폭개념

      연결한 신호의 전체 비트폭과 원래 값이 보존되는 조건을 계산해 데이터 경로를 구성합니다.

    • 실습: 직렬 데이터의 이동과 비트 순서 검증실습

      비트열과 정수 참조 모델을 함께 사용해 방향, 손실되는 비트, 리셋 이후 지연을 검증합니다.

    • 사이클 지연과 처리율을 구분하기개념

      N단 지연선에서 시간을 세는 기준을 정하고 지연과 처리율을 수치로 계산합니다.

    • 시프트 회로 검증과 데이터·valid 정렬개념

      대칭 패턴만으로는 드러나지 않는 오류와 유효 신호가 한 사이클 어긋나는 문제를 찾습니다.

    • 설계 확인: 지연·정렬·입력 보존이해 확인

      시프트의 방향뿐 아니라 유효 데이터의 이동 횟수와 관찰 기준을 함께 확인합니다.

  10. 타이밍·실제 입력·상태 기계
    • Setup·hold와 타이밍 예산개념

      최대·최소 경로 지연을 나누고 클록 주파수와 별개인 hold 조건을 계산합니다.

    • 논리 해저드와 등가식의 한계개념

      입력이 안정됐을 때 같은 출력을 내는 두 회로도 전파 지연 때문에 전환 중에는 서로 다른 파형을 낼 수 있음을 살펴봅니다.

    • 클록 도메인 경계와 준안정 상태개념

      2단 동기화기의 적용 범위를 이해하고, 단일 비트·짧은 펄스·다중 비트 전송을 구분합니다.

    • 버튼 입력 처리: 동기화·디바운싱·이벤트 검출개념

      비동기 입력 동기화와 접점 바운스 제거를 구분하고 연속 샘플 기반 디바운서를 설계합니다.

    • 상태 기계: 상태·전이·출력의 분리개념

      상태 전이표를 바탕으로 FSM을 작성하고, Moore·Mealy 출력의 차이와 불법 상태·새 요청의 처리 방식을 비교합니다.

    • 검증 계획, 커버리지와 독립 참조 모델개념

      테스트 통과가 명세 전체의 충족을 뜻하지는 않음을 이해하고, 경계 조건·교차 조건·최소 반례를 검증 계획에 포함합니다.

    • 종합 설계: 겹치는 101 패턴 검출기개념

      상태 최소화, 입력의 유효성 확인, 출력의 레지스터 저장, 독립 참조 모델을 이용한 검증을 하나의 설계에 적용합니다.

  11. 선택 심화 · 산술 데이터패스
    • ALU와 zero·negative·carry·overflow 플래그개념

      공유 가산기로 ADD/SUB를 구성하고 carry와 signed overflow를 분리해 비교 조건까지 유도합니다.

    • Barrel shifter와 단계별 MUX개념

      이동량이 1·2·4·8칸인 MUX 단계를 조합해 가변 시프트를 구현하고, 좌우 이동 회로의 공유와 부호 비트 채우기, 비트폭을 넘는 이동량의 처리를 살펴봅니다.

    • 고정소수점·반올림·포화개념

      W,F 형식으로 수치 범위를 정하고 guard·sticky 기반 짝수 반올림과 반올림 이후 포화를 설계합니다.

    • 다중 사이클 unsigned shift-add 곱셈기개념

      부분곱을 W클록에 걸쳐 누산하고 요청·완료 시점, 마지막 누산 결과, 비트폭과 불변식을 검증합니다.

  12. 선택 심화 · 메모리와 FIFO
    • 동기식 메모리와 읽기·쓰기 충돌 처리개념

      읽기 결과를 레지스터에 저장할 때의 응답 시점과 read-first·write-first·no-change를 구분하고, valid와 주소 초기화를 각각 처리하도록 설계합니다.

    • 읽기 포트 2개·쓰기 포트 1개인 레지스터 파일과 bypass개념

      독립된 두 읽기 포트와 동기식 쓰기를 구현하고, 주소 충돌에 따른 bypass와 초기화·valid 처리 규칙을 확인합니다.

    • 단일 클록 FIFO의 포인터와 empty·full 처리개념

      깊이 4인 FIFO의 포인터와 occupancy를 구현하고, empty·full 상태에서 push와 pop이 동시에 들어올 때의 수락 조건을 정합니다.

    • FIFO·메모리 검증 계획과 독립 scoreboard개념

      구현 내부의 포인터에 의존하지 않는 queue scoreboard를 작성하고, 경계 조건·reset·valid·초기화하지 않은 주소의 읽기를 검증 계획에 포함합니다.

  13. 선택 심화 · 파이프라인과 인터페이스
    • Ready/valid로 제어하는 1칸 버퍼개념

      정지할 수 있는 데이터 경로에서 손실·중복 없는 전달 조건과 동시 입출력을 설계합니다.

    • 곱셈·덧셈 파이프라인과 데이터 정렬개념

      레지스터를 사이에 두고 연산을 여러 단계로 나누며, 데이터·valid·보조 피연산자가 같은 입력에 속하도록 맞춰 전달합니다.

    • 멈출 수 있는 파이프라인과 backpressure개념

      단계별 ready를 계산해 정지와 동시 이동 중에도 데이터의 손실·중복·재계산을 방지합니다.

    • 레지스터 인터페이스와 상태 변경 시점개념

      주소·바이트 쓰기·응답 정지를 명세하고, 요청 한 번이 정확히 한 번의 상태 변경으로 이어지게 만듭니다.

    • 종합 실습: UART 송신기와 프레임 타이밍개념

      분주 카운터·시프트 레지스터·흐름 제어를 결합해 8N1 프레임을 만들고 비트 경계를 검증합니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.