J'ai une implémentation d'une unité de contrôle (UC) en AHDL, et je suis supposé la simuler et voir si cela fonctionne comme défini dans le diagramme ASM correspondant. J'ai utilisé MAX + plus II pour le simuler, et cela ne fonctionne pas comme je m'y attendais, mais je ne peux pas vraiment dire ce qui ne va pas parce que je ne suis pas familier avec AHDL, sans parler de la partie .Comment une TABLE fonctionne-t-elle en AHDL?
Voici mon unité de commande:
SUBDESIGN EXP1_UC ( CLKUC: INPUT; RES: INPUT; N1,N2,M1,M2: INPUT;
CLR1, CLR2, CLR3, EN1, EN2, EN3, SEL: OUTPUT; ) VARIABLE UC: MACHINE OF BITS (CLR1, CLR2, CLR3, EN1, EN2, EN3, SEL) WITH STATES ( s0 = B"1110000", s1= B"0001000", s2= B"0000100", s3= B"0000000", s4= B"0000010", s5= B"0000001", s6= B"0000011" ); BEGIN UC.CLK = CLKUC; UC.RESET = RES; TABLE UC, N1,N2,M1,M2 => UC; s0, 0, 0, X, X => s0; s0, 1, X, X, X => s1; s0, X, 1, X, X => s2; s1, X, X, X, X => s3; s2, X, X, X, X => s3; s3, 0, 0, 0, 0 => s3; s3, 1, X, X, X => s1; s3, X, 1, X, X => s2; s3, X, X, 1, X => s4; s3, X, X, X, 1 => s5; s4, X, X, X, X => s3; s5, X, X, X, X => s6; s6, X, X, X, X => s3; END TABLE; END;
Il y a 2 situations dans la simulation que je ne comprends pas:
1) Lorsque l'état actuel est S3 et les entrées sont M1 = 1 et M2 = 1, l'état suivant est S6. Je ne comprends pas, parce que d'après ce que je vois, il n'y a pas moyen d'aller en S6 sans passer par S5 en premier.
2) Lorsque l'état courant est S0 et les entrées sont N1 et N2 = 1 = 1, l'état suivant est défini dans la simulation en tant que « 12 ». Eh bien, il n'y a pas cet état ...
Quelqu'un peut-il me aider? Merci.
MISE À JOUR:
1) Je dois utiliser ADHL et MAX + plus II, même si elle est à peine la meilleure combinaison d'outils, car cela est une paperasse pour le collège, et je n'écrire le code (comme J'ai dit, je suis juste supposé le simuler, je ne peux pas le changer).
Tout d'abord, merci pour votre réponse. C'est ma première question ici, donc je n'étais pas sûr si j'étais censé répondre directement à vous ou comme une mise à jour dans ma question. Eh bien, je vais faire les deux. Mise à jour 1 réponses pourquoi je dois utiliser AHDL, même si je suis actuellement Learnin VHDL, et je suis passé Ise WebPack de Xilinx au lieu de MAX Plus II :) En ce qui concerne votre réponse, toutes mes entrées sont correctement synchronisées: Je ne m'inquiète pas de l'heure de l'exécution, donc j'ai mis mes entrées une demi-période d'horloge AVANT le bord de l'horloge montante, et ils restent comme cela pendant toute une période d'horloge. Une autre idée? Merci encore. – dsetton