State Machine
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 88 sur 90.
Défi
Une machine à états est un circuit qui peut se trouver dans l’un de plusieurs états. Pour UART, nous avons différents états pour chaque bit : idle, start, bits de données 0 à 7 et stop. Le compteur de bits (cnt) nous indique dans quel état nous nous trouvons. En fonction de cnt, nous décidons quelle valeur envoyer sur la ligne tx.
Tu disposes du compteur de bits de la leçon précédente. Tu dois le modifier pour qu’il fonctionne comme un émetteur UART.
Valeurs des bits à envoyer (pour la lettre 'A')
| cnt | valeur de tx |
|---|---|
| 0 | 1 |
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 0 |
| 8 | 1 |
| 9 | 0 |
| 10 | 1 |
Ce qu’il faut faire
- Ajouter une entrée appelée
start - Ajouter une sortie reg appelée
tx - Dans le bloc
initial, définirtx = 1(niveau haut au repos) - Modifier la logique du compteur :
- Lorsque
cnt == 0etstart == 1, définircnt <= 1(commencer la transmission) - Lorsque
cntest compris entre 1 et 9, l’incrémenter :cnt <= cnt + 1 - Lorsque
cnt == 10, le réinitialiser à0
- Lorsque
Essayez vous-même
module uart_tx (
input clk,
output reg [3:0] cnt
);
initial begin
cnt = 0;
end
always @(posedge clk) begin
cnt <= cnt + 1;
end
endmoduleToutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Operators 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 LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne