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
- À l'activation, affichage initial des animaux sur la rive gauche
- Navigation conditionnelle : Le bateau et l'animal doivent être sur la même rive
- Animation fluide : 0.25s par étape de déplacement
- Contrôle d'état : LEDs éteintes en cas d'échec, allumées en cas de succès
- 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