Bit counter
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 87 de 90.
Desafio
Neste capítulo, você construirá um transmissor UART passo a passo. UART significa Universal Asynchronous Receiver-Transmitter. É um protocolo de hardware simples que permite que dois dispositivos se comuniquem usando apenas um fio (para transmissão) e outro fio (para recepção).
Pense nisso como duas pessoas conversando ao telefone: uma fala (transmite), a outra escuta (recebe). A UART envia dados um bit por vez, com bits de início e parada para marcar o começo e o fim de cada byte.
Um transmissor UART envia 10 bits: bit de início (1), bits de dados (8), bit de parada (1). Para acompanhar qual bit estamos enviando, precisamos de um contador de bits que conte de 0 a 10.
Como o contador de bits funciona
- Começa em 0
- A cada ciclo de clock, adiciona 1
- Quando chega a 10, volta para 0
- Repete para sempre
Nesta tarefa, ainda não vamos redefini-lo: vamos apenas incrementá-lo.
O que fazer:
- Create um module chamado
uart_txcom:- Um input:
clk - Um output:
cnt(4 bits, tiporeg)
- Um input:
- Dentro do module:
- Defina
cntcomo 0 no início, dentro de um initial block - Add um bloco
always @(posedge clk) - Make
cntaumentar em 1 a cada borda de clock
- Defina
Experimente você mesmo
// TODO: Crie o módulo uart_tx com entrada clk e saída cnt (4 bits)
// TODO: Defina cnt como 0 no início dentro de um bloco initial
// TODO: Adicione o bloco always @(posedge clk)
// TODO: Incremente cntTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicPratique por conta própria: Compilador de Verilog online