Menu
Coddy logo textTech

비트 카운터

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

challenge icon

챌린지

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

두 사람이 전화로 대화하는 것을 생각해 보세요. 한 사람은 말하고(송신), 다른 한 사람은 듣습니다(수신). UART는 각 바이트의 시작과 끝을 표시하는 start 및 stop 비트와 함께 데이터를 한 번에 1 bit씩 전송합니다.

UART transmitter는 start bit (1), data bits (8), stop bit (1)로 구성된 총 10 bits를 전송합니다. 우리가 어떤 비트를 전송 중인지 추적하려면 0부터 10까지 세는 bit counter가 필요합니다.
Bit Counter 작동 방식

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

이번 과제에서는 아직 리셋하지 않고 값을 증가시키기만 합니다.

해야 할 일:

  1. 다음 구성 요소를 가진 uart_tx라는 이름의 module을 Create하세요:
    • 하나의 input: clk
    • 하나의 output: cnt (4 bits, reg 타입)
  2. module inside:
    • initial block inside 시작 시 cnt를 0으로 설정
    • always @(posedge clk) block 추가
    • 각 클록 엣지마다 cnt가 1씩 증가하도록 Make

직접 해보기

// TODO: 입력 clk와 출력 cnt(4비트)를 가진 모듈 uart_tx 생성

// TODO: initial 블록 안에서 시작 시 cnt를 0으로 설정

// TODO: always @(posedge clk) 블록 추가

// TODO: cnt 증가

기초의 모든 레슨