Reporter un problème UART Déplacement sur 4 octets

I

IceZero

Guest
Je dois faire quelque chose de mal parce que cela ne fonctionne pas comme je m'y attendais. Ce que je suis en train de faire, c'est de passer en 4 octets reçus de l'UART séquentiellement dans un registre de 32 bits. J'ai inclus mon code ci-dessous. Quand j'ai relu le registre 32-bit de l'UART, tous les octets 4-de la 32-bit registre contient le dernier octet reçu de l'UART. Il semble que quand je suis en ajoutant le uart_rx_data_out à uart_rx_opcode dans la dernière étape, c'est d'ajouter de la valeur à ce que tous les bits non seulement les bits 0 à 7 comme je m'attendais. Je vais probablement faire quelque chose de vraiment stupide.
Code:
 if (cnt_rx_next == 0) begin / / Charger l'octet disponible en code OP uart_rx_opcode S'enregistrer = 32'h00000000 + uart_rx_data_out; / / incrémenter le compteur = cnt_rx_next cnt_rx_reg + 1; end else if (cnt_rx_next == 1) commencer / / Chargement de l'octet disponible en code OP S'enregistrer uart_rx_opcode = (uart_rx_opcode
 
Assumé le code est à l'intérieur d'un bloc combinatoire toujours (le mauvais affichage des snippets), il semble que vous utilisez des variables non enregistrées dans certains endroits où vous devez utiliser les inscrits, par exemple dans l'état comparer.
 
Oui, c'est dans le bloc de l'état logique suivante (toujours @ *). Je pense que vous pourriez avoir raison. Maintenant que j'y pense, uart_rx_data_out est de type fil ne reg.
 
Plus précisément, vous avez probablement "cnt_rx" quelque part aussi. Et sans doute quelque chose qui fait cela:
Code:
 toujours @ (posedge clk) cnt_rx
 

Welcome to EDABoard.com

Sponsor

Back
Top