Implémentation Verilog d'une Simulation de Traversée de Rivière pour Animaux

Spécifications fonctionnelles

Description des tâches

Modéliser le transfert sécurisé d'un chien, d'un chat et d'une souris à travers une rivière. Le bateau ne peut transporter qu'une seule animal à la fois. Contraintes : le chat et le chien ne peuvent rester seuls ensemble, ni le chat et la souris.

Configuration matérielle

  • SW6 : Interrupteur principal (0=éteint, 1=activé)
  • Matrice LED 8×8 : Représente les positions des animaux (rouge=chat, vert=chien, jaune=souris)
  • Affichage 7 segments : Affiche le nombre de traversées
  • LEDs : LD15 (rive gauche), LD0 (rive droite)
  • Boutons : BTN7(chat), BTN6(chien), BTN5(souris), BTN4(bateau seul), BTN0(réinitialisation)

Comportements clés

  1. À l'activation, affichage initial des animaux sur la rive gauche
  2. Navigation conditionnelle : Le bateau et l'animal doivent être sur la même rive
  3. Animation fluide : 0.25s par étape de déplacement
  4. Contrôle d'état : LEDs éteintes en cas d'échec, allumées en cas de succès
  5. Comptage automatique des traversées

Architecture système

Structure modulaire

module ControleurPrincipal(
  input clk, 
  input [7:0] btn,
  output reg [2:0] etat_animaux
);
// Logique de transition d'états
always @(posedge clk) begin
  if (btn[0]) etat_animaux <= 3'b000; // Réinitialisation
  else case(etat_animaux)
    3'b000: if (btn[7]) etat_animaux <= 3'b100; 
    // Transitions supplémentaires...
  endcase
end
endmodule

Modules spécialisés

  • Gestion d'horloge : Division du signal 1kHz en 4Hz/0.25Hz
  • Anti-rebonds : Filtrage des signaux des boutons
  • Contrôle LEDs : Affichage position bateau/états
  • Pilote matrice LED : Visualisation animale
  • Module audio : Signaux sonores conditionnels

Logique de validation

assign conflit = (chat == chien && souris == 1'b0) || 
                (chat == souris && chien == 1'b0);

Optimisatiosn

Gestion de difficulté

Niveau Traversées max Indicateur visuel
0 15 Flammes vertes
1 13 Flammes jaunes
2 9 Flammes orange
3 6 Flammes rouges

Solutions aux défis techniques

  • Conversion de la logique séquentielle en combinatoire pour les afficheurs
  • Synchronisation des entrées avec horloge principale
  • Validation des transitions conditionnelles

Utilisation des ressources

  • Entrées : SW[6:5], BTN[7,6,5,4,0]
  • Sorties : LEDs[15:0], Matrice LED, 7 segments, Buzzer
  • Horloges : Signal maître 1kHz générant 4Hz/0.25Hz

Étiquettes: Verilog FPGA LogiqueNumérique SimulationMatérielle Automates

Publié le 22 juillet à 02h58