Le module PmodMaxSonar
est un capteur à ultrasons capable de mesurer des distances entre 15 et 648 cm.
Il propose plusieurs interfaces de communication, dont une interface série
compatible avec l’entité UART
que vous avez déjà utilisée.
Pour faire communiquer le module PmodMaxSonar avec le processeur, nous
allons ajouter une deuxième instance d’UART
à l’architecture Computer
.
Vous pouvez vous référer à la section Interface série asynchrone
pour relire les explications concernant l’entité UART
.
Si ce n’est pas déjà fait, ouvrez votre projet Computer
dans Vivado :
cd $HOME/CoCiNum
./scripts/vivado vivado/Computer/Computer.xpr
Comme les fichiers de l’interface série sont déjà présents dans votre projet, vous n’avez pas besoin de les ajouter.
Choisissez sur quel connecteur d’extension Pmod de la carte Basys3 vous allez
brancher votre sonar.
Sur la sérigraphie de la carte, ils portent les noms JA
(en haut à gauche),
JB
(en haut à droite), JC
(en bas à droite), et JXADC
(en bas à gauche).
Dans le panneau, Flow Navigator, exécutez l’action Add Sources, choisissez Add or create constraints et pressez le bouton Next.
Ajoutez au projet Vivado le fichier de contraintes correspondant à votre choix :
Sous-dossier | Fichier | Rôle |
---|---|---|
Basys3 |
Basys3_PmodA.xdc |
Fichier de contraintes pour Vivado, brochage du connecteur JA. |
Basys3 |
Basys3_PmodB.xdc |
Fichier de contraintes pour Vivado, brochage du connecteur JB. |
Basys3 |
Basys3_PmodC.xdc |
Fichier de contraintes pour Vivado, brochage du connecteur JC. |
Basys3 |
Basys3_PmodXADC.xdc |
Fichier de contraintes pour Vivado, brochage du connecteur JD. |
Computer_pkg
Dans le fichier Computer_pkg.vhd
, ajoutez des constantes pour définir les
caractéristiques des nouveaux périphériques du système :
Constante | Type | Valeur | Rôle |
---|---|---|---|
SONAR_UART_ADDRESS |
Octet | 84hex | Les bits 31 à 24 de l’adresse pour accéder à l’UART reliée au sonar. |
SONAR_UART_BIT_RATE_HZ |
Entier | 9600 | La vitesse de communication de l’interface série, en bits/seconde. |
INTC_EVENTS_SONAR_UART |
Entier | 3 | Pour le contrôleur d’interruptions, le numéro de l’événement indiquant la réception d’un octet. |
Les adresses et numéros d’événements contenus dans la colonne Valeur sont des exemples. Vous pouvez les modifier à condition que chaque périphérique de votre architecture ait une adresse et un numéro d’événement différents des autres périphériques.
Computer
Dans le fichier Computer.vhd
, complétez l’entité Computer
en déclarant
le port du connecteur d’extension que vous avez choisi.
Le tableau ci-dessous donne la liste des ports disponibles et leur rôle.
Ils sont tous de type std_logic
.
Rôle | JA |
JB |
JC |
JXADC |
Mode |
---|---|---|---|---|---|
Inutilisée | pmod_a1 |
pmod_b1 |
pmod_c1 |
pmod_xadc1 |
in |
Inutilisée | pmod_a2 |
pmod_b2 |
pmod_c2 |
pmod_xadc2 |
in |
Données série | pmod_a3 |
pmod_b3 |
pmod_c3 |
pmod_xadc3 |
in |
Inutilisée | pmod_a4 |
pmod_b4 |
pmod_c4 |
pmod_xadc4 |
in |
Déclarez bien les quatre ports, même ceux qui ne sont pas utilisés.
Structural
Dans le fichier Computer.vhd
, complétez l’architecture pour intégrer une seconde
instance de l’entité UART
en utilisant les constantes que vous avez ajoutées
au paquetage Computer_pkg
.
Par précaution, le port d’entrée correspondant à la ligne RX
devra être resynchronisé.
Ajoutez une entrée et une sortie à l’instance sync_inst
de la manière suivante :
sync_inst : entity work.InputSynchronizer
generic map(
WIDTH => 19
)
port map(
...
data_i(18) => ..., -- Votre port d'entrée RX en provenance du sonar
data_o(18) => sync_sonar_rx -- Pensez à déclarer ce signal
);
Pensez à déclarer le signal sync_sonar_rx
et à le relier à l’entrée
rx_i
de votre second UART.
Inspirez-vous des instances déjà présentes dans l’architecture.
Représentez sous la forme d’un schéma la nouvelle structure du système.
Dans Vivado, générez le fichier binaire à charger dans le FPGA : Flow Navigator → Program and Debug → Generate Bitstream.
Si ce n’est pas déjà fait, reliez le connecteur micro-USB de la carte à un port USB de votre PC et mettez la carte sous tension.
Connectez Vivado à votre carte Basys3 : Flow Navigator → Program and Debug → Open Hardware Manager → Open Target → Auto-connect.
Configurez le FPGA : Flow Navigator → Program and Debug → Open Hardware Manager → Program Device.
Si vous n’avez pas d’autre périphérique à ajouter, vous pouvez passer à la section Développement logiciel embarqué.