Bonjour,
Nous voilà parti ce novembre dans un casse tête logique et de dessins optimisés dans le diagramme.
Toujours dans les cas concrets, une horloge à LED « un peu ancienne » de type 7 segments à besoin d’être réparée !
Pour cela il lui faut des fonctions logiques booléennes.
Des tables de vérité, tableaux de Karnaugh ou méthodes de Mac Cluskey seront nécessaires pour résoudre quelques optimisations du nombre de portes qui devront êtres utilisées.
Normalement c’est du binaire pur qui est en entrée des circuits logiques et des données booléennes en ressort pour l’allumage des segments séparément.
Mais l’horloge n'est plus fonctionnelle et les valeurs du tableau sont légèrement différentes. (À vous de trouver lesquelles, petit piège...).
Le challenge de ce mois de novembre est de réparer l’horloge en affichant correctement l’heure sur les 7 segments et en utilisant uniquement la palette « booléen » avec les fonctions logiques.
(Seul les fonctions de la ligne 3 ne seront pas utilisables. Voir image)
Pour départager les résultats, le VI qui prendra le moins de taille dans le diagramme gagnera. Donc celui qui utilisera le moins de portes logiques et dont les optimisations logiques seront les meilleures.
Le gagnant pourra passer une certification de son choix gratuitement.
Règles :
- Pas de sous-VI, tout doit être dans le VI « 7 segments.vi » (c’est là qu’il faut bien dessiner les fils, fastidieux je sais, mais c'est ça aussi le challenge)
- Pas d’autres fonctions que celle de la palette « booléen » avec les fonctions de la ligne 3 en moins.
Retournez-moi juste le vi « 7 segments_votre pseudo.vi » (emmanuel.roset@ni.com) avant le 1er décembre 2013.
Voici les images des segments à allumer pour la validation :
et voici l'image de la palette à utiliser sans les fonctions de la ligne 3
Ci-joint le fichier des programmes sous format projet depuis la version 2010 à 2013 pour couvrir le plus de personnes...
Bonne chance.
N'hésitez pas à poser des questions
Précisions 06/11/2013
- Ne pas modifier la face avant ni les objets du diagramme fourni afin de comparer les différents codes (seul le nombre de fonctions/connexions est mesuré)
- L'affichage est avec les "0" à gauche par ex. 00 01 pour minuit et une minute
- L'affichage est en mode 24h
- Ne pas utiliser les valeurs par défaut des objets commandes et indicateurs booléens
3/12/2013 Résulats du défi
Alors, je pensais que cela sera serré entre les participants, mais finalement les utilisations optimisées des portes logiques ont produits pas mal de versions différentes pour chacun.
Finalement c'est la version 6 du code de Cisco qui est le plus optimisé. Bravo, il remporte cette épreuve (encore) et a réussi à réparer le plus efficacement l'horloge 7 segments.
Je tiens aussi a féliciter les autres participants qui ont envoyé également des codes ultra optimisés.
J'ai reçu cependant des codes plus "bruts..." que je ne dévoilerai pas en ligne, car ils font parti des codes d'exemples spaggetti 😉 mais tout le monde est le bienvenu pour envoyer des codes et leur anonymat sera respecté. L'important est de participer et de s'amuser.
Alors voici les codes en pièce jointe ainsi que le tableau des résultats et une copie du diagramme de Cisco (je me demande encore comment ca peut fonctionner...)
cicso | 9905 | |
Nico_EMC | 10849 | |
Yann_50 | 16138 | |
Bleses | 17643 | |
didje007 | 18005 | |
SebMichaud | 20292 | |
Jules1403 | 21949 | |
Xavhendrix | 55653 | Plus de 120 fonctions |
Bientôt noel et les lutins...
Bonjour Emmanuel.
Pas de sous-vi, ça veut dire qu'on fait 4 fois la même chose (aux 'bugs' du tableau près ) ?
Bonsoir,
Il est possible d'optimiser le nombre de fonctions en utilisant les portes logiques des autres chiffres, même "bug" inclus. Par exemple des tableaux de Karnaugh à plus de 4 variables. Ici on peut faire de l'optimisation "FPGA" à la main. ou alors utiliser 4 fois les même équations logiques pour chaque chiffre sans optimiser. Si tout le monde plafonne avec le même nombres de portes, je serai amené à relancer le challenge avec petit défi complémentaire.
OK, effectivement, je suis passé à coté d'une bonne partie de l'optimisation !!
Il me vient, dans ce cas, deux autres questions :
Apparemment, c'est plutôt 24h, puisque l'horloge binaire en panne fournie est au format 24h... quand au zéro à gauche, il me semble que oui il faut l'afficher, cf l'image de ce post qui montre "les images des segments à allumer pour la validation"...
Bonjour, en effet l'horloge est en 24h et on affiche le 0 à gauche.
Sinon, précision, il est demandé de ne pas modifier la face avant afin de pouvoir bien comparer les tailles des diagrammes (ne pas enlever les indicateurs booléens proposés dans le diagramme d'origine, ne pas supprimer les affichages des objets de FA, taille des fonctions tableau déjà fournis etc..) merci. Normalement la taille mémoire de la face-avant est de 47402 octets.
En effet, la mesure de la taille du diagramme est liée au chargement mémoire de la face-avant dans la propriété Taille du diagramme.
J'ai reçu 2 codes déjà et les résultats sont assez différents sur les choix des optimisations, ca s'annonce bien . Ca va être serré
Code envoyé !!!
en respectant les précisions du 6/11/2013.
Code envoyé.
Beaucoup de fils, beaucoup de portes, je sèche un peu pour une bonne optimisation...
Code envoyé
Bonjour les challengers, merci pour vos codes. Je vous confirme qu'il y a bien des différences dans les résulats du nombre de portes que vous avez utilisés. Donc pour le moment pas d'égalité. Juste une précision car je viens de faire une passe sur tous les codes. Il n'est pas permis de changer les valeurs par défaut en face avant et d'enregistrer celle-ci. Cela met ainsi tout le monde sur la même base des codes reçus. (Je vous rassure ça ne touche presque personne)
Merci encore !
Résulats publiés