Máquina de estados
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 88 de 90.
Desafio
Uma máquina de estados é um circuito que pode estar em um de vários estados. Para o UART, temos estados diferentes para cada bit: ocioso (idle), início (start), bits de dados 0-7 e parada (stop). O contador de bits (cnt) nos diz em qual estado estamos. Com base no cnt, decidimos qual valor enviar na linha tx.
Você tem o contador de bits da lição anterior. Você precisa modificá-lo para funcionar como um transmissor UART.
Valores de Bit para Enviar (para a letra 'A')
| cnt | valor de tx |
|---|---|
| 0 | 1 |
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 0 |
| 8 | 0 |
| 9 | 1 |
| 10 | 1 |
O que fazer
- Adicione uma entrada chamada
start - Adicione uma saída reg chamada
tx - No bloco
initial, definatx = 1(ocioso em nível alto) - Altere a lógica do contador:
- Quando
cnt == 0estart == 1, definacnt <= 1(iniciar transmissão) - Quando
cntestiver entre 1 e 9, incremente:cnt <= cnt + 1 - Quando
cnt == 10, resete para0
- Quando
Experimente você mesmo
module uart_tx (
input clk,
output reg [3:0] cnt
);
initial begin
cnt = 0;
end
always @(posedge clk) begin
cnt <= cnt + 1;
end
endmoduleTodas 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