Question

J'ai récemment acheté Mojo V3 qui a déjà le module UART pour communiquer avec l'AVR et de l'AVR à l'ordinateur.
Mon problème est: Comment puis-je connecter cela avec d'autres modules?
Disons que j'ai un noyau MD5 qui accepte les octets x, quelle est la meilleure approche à lire à partir des caractères de série X jusqu'à ce que l'entrée soit enfoncée puis renvoyez-la sur le noyau MD5?
Ok, je suis un débutant, sans parler de MD5, disons que je veux juste faire un écho simple.
Où devrais-je commencer? utiliser FIFO? SHIFT REGISTRES? Des tableaux simples? Bram?
Ceci est l'interface AVR (UART):

module avr_interface(
    input clk,
    input rst,
    input cclk,

    output spi_miso,
    input spi_mosi,
    input spi_sck,
    input spi_ss,
    output [3:0] spi_channel,

    output tx,
    input rx,

    input [3:0] channel,
    output new_sample,
    output [9:0] sample,
    output [3:0] sample_channel,

    input [7:0] tx_data,
    input new_tx_data,
    output tx_busy,
    input tx_block,

    output [7:0] rx_data,
    output new_rx_data
);

J'utilise ce tutoriel comme base pour en savoir plus: http://embeddedmicro.com/tatudials/mojo/hello-world/
J'ai déjà fait un octet d'écho simple par octet, mais ce n'est pas le point. Je veux juste que la chaîne a fait écho lorsque l'entrée est enfoncée. Merci.

mise à jour:

Développeur Mojo a fait un exemple génial ici:

http://embeddedmicro.com/forum/viewtopic.php?f=2& ; t= 697 & start= 10
Merci.

Était-ce utile?

La solution

Écho pour faire écho à un bloc de longueur arbitraire, vous aurez besoin d'une FIFO et d'une sorte de machine d'état pour le contrôler. L'entrée FIFO sera connectée au bus provenant du module UART RX. La sortie FIFO sera connectée au bus allant au module UART TX. Il doit également être un moyen de «bloquer» l'Output de la FIFO afin de ne pas envoyer d'octet. Un moyen facile de le faire est juste pour et un signal de commande avec le signal «prêt» allant à la FIFO et au signal «valide» qui passe de la FIFO au module UART TX.

Ensuite, toute la machine d'état doit faire est de regarder les données aux deux extrémités de la FIFO. Chaque fois qu'une touche Entrée est reçue, incrémentez un compteur. Chaque fois qu'une touche d'entrée sort de la FIFO, décrémentez le comptoir. Lorsque le compteur est supérieur à zéro, déblocez la sortie FIFO. Sinon, bloquez-le afin qu'aucune donnée ne sort.

Si vous souhaitez envoyer des données spécifiques à un module spécifique, ce que vous devez faire est de définir un format de paquet binaire de quelque sorte. Fondamentalement, vous aurez besoin d'une sorte d'identifiant de départ pour cadrage et probablement une sorte d'identifiant de type, suivi des données. Puis sur le FPGA, vous pouvez attendre le délimiteur de démarrage, vérifier le type, puis chargez les octets dans des registres afin qu'ils entrent. Une fois que vous avez reçu l'ensemble du paquet, vous pouvez envoyer le module que vous communiquez avec un signalez que toutes les données sont prêtes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top