비트 카운터
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 87번째.
챌린지
이 장에서는 UART transmitter를 단계별로 구축합니다. UART는 Universal 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으로 돌아감
- 무한히 반복
이번 과제에서는 아직 리셋하지 않고 값을 증가시키기만 합니다.
해야 할 일:
- 다음 구성 요소를 가진
uart_tx라는 이름의 module을 Create하세요:- 하나의 input:
clk - 하나의 output:
cnt(4 bits,reg타입)
- 하나의 input:
- module inside:
- initial block inside 시작 시
cnt를 0으로 설정 always @(posedge clk)block 추가- 각 클록 엣지마다
cnt가 1씩 증가하도록 Make
- initial block inside 시작 시
직접 해보기
// TODO: 입력 clk와 출력 cnt(4비트)를 가진 모듈 uart_tx 생성
// TODO: initial 블록 안에서 시작 시 cnt를 0으로 설정
// TODO: always @(posedge clk) 블록 추가
// TODO: cnt 증가