Contador de bits
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 (Receptor-Transmissor Assíncrono Universal). É um protocolo de hardware simples que permite que dois dispositivos se comuniquem usando apenas um fio (para transmitir) e outro fio (para receber).
Pense nisso como duas pessoas conversando ao telefone — uma fala (transmite), a outra ouve (recebe). O UART envia dados um bit por vez, com bits de início (start) e parada (stop) 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 rastrear 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 chegar a 10, volta para 0
- Repete para sempre
Nesta tarefa, ainda não vamos resetá-lo: apenas iremos incrementá-lo.
O que fazer:
- Crie um módulo chamado
uart_txcom:- Uma entrada:
clk - Uma saída:
cnt(4 bits, tiporeg)
- Uma entrada:
- Dentro do módulo:
- Defina
cntcomo 0 no início dentro de um bloco initial - Adicione um bloco
always @(posedge clk) - Faça
cntaumentar em 1 a cada borda de clock
- Defina
Experimente você mesmo
// TODO: Criar o módulo uart_tx com entrada clk e saída cnt (4 bits)
// TODO: Definir cnt como 0 no início dentro de um bloco initial
// TODO: Adicionar o bloco always @(posedge clk)
// TODO: Incrementar cntTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo