Menu
Coddy logo textTech

비트 카운터

Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 87번째.

challenge icon

챌린지

이 장에서는 UART 송신기(transmitter)를 단계별로 구축해 보겠습니다. UARTUniversal Asynchronous Receiver-Transmitter(범용 비동기 송수신기)의 약자입니다. 이는 두 장치가 송신용 와이어 하나와 수신용 와이어 하나만을 사용하여 통신할 수 있게 해주는 간단한 하드웨어 프로토콜입니다.

두 사람이 전화로 대화하는 것과 같다고 생각하면 됩니다. 한 사람은 말하고(송신), 다른 한 사람은 듣습니다(수신). UART는 각 바이트의 시작과 끝을 표시하기 위해 시작 비트와 정지 비트를 사용하여 한 번에 한 비트씩 데이터를 전송합니다.

UART 송신기는 시작 비트(1), 데이터 비트(8), 정지 비트(1) 등 총 10비트를 보냅니다. 현재 어떤 비트를 보내고 있는지 추적하려면 0부터 10까지 세는 비트 카운터가 필요합니다.
비트 카운터 작동 방식

  • 0에서 시작
  • 매 클록 사이클마다 1씩 증가
  • 10에 도달하면 다시 0으로 돌아감
  • 무한 반복

이 과제에서는 아직 리셋 기능을 구현하지 않고, 단순히 증가만 시킬 것입니다.

수행할 작업:

  1. 다음과 같은 구성을 가진 uart_tx 모듈을 생성하세요:
    • 입력 1개: clk
    • 출력 1개: cnt (4비트, reg 타입)
  2. 모듈 내부에서:
    • initial 블록 내부에서 시작 시 cnt를 0으로 설정
    • always @(posedge clk) 블록 추가
    • 각 클록 에지(edge)마다 cnt가 1씩 증가하도록 설정

직접 해보기

// TODO: clk 입력과 cnt 출력(4비트)을 가진 uart_tx 모듈을 생성하세요.

// TODO: initial 블록 내부에서 시작 시 cnt를 0으로 설정하세요.

// TODO: always @(posedge clk) 블록을 추가하세요.

// TODO: cnt를 증가시키세요.

기초의 모든 레슨