Analyse du Code VHDL pour Systèmes Numériques en MEF

School
Université du Québec, École de technologie supérieure**We aren't endorsed by this school
Course
ELE 140
Subject
Computer Science
Date
Dec 11, 2024
Pages
12
Uploaded by ChiefWillpower16084
Auteur: Mikaël PlouffeSession: H2024Professeur.e.s: Pascal GiardRévision: 2024-03-15ELE140 - Conception des systèmes numériquesSolutionnaire de travaux pratiques 5Exercice 1Effectuer l’analyse du code VHDL de la MEF suivante.libraryieee;useieee.std_logic_1164.all;entitybinaryisport(CLOCK, CLEAR:inSTD_LOGIC;A,B,C,D,E:inBOOLEAN;SINGLE, MULTI, CONTIG :outSTD_LOGIC);endbinary;architecturebehaviorofbinaryistypeSTATE_TYPEis(S1, S2, S3, S4, S5, S6, S7);signalCS, NS : STATE_TYPE;beginprocess(CLOCK, CLEAR)-- STATE MEMORYbeginif(CLEAR ='1')thenCS <= S1;elsifrising_edge(CLOCK)thenCS <= NS;end if;end process;process(CS,A,B,C,D,E)-- COMBINATIONAL LOGICbegincaseCSiswhenS1 =>MULTI <='0';CONTIG <='0';SINGLE <='0';if(Aand notBandC)thenNS <= S2;elsif(AandBand notC)thenNS <= S4;elseNS <= S1;end if;whenS2 =>MULTI <='1';CONTIG <='0';SINGLE <='0';if(notD)thenNS <= S3;elseNS <= S4;end if;whenS3 =>MULTI <='0';CONTIG <='1';SINGLE <='0';if(AorD)thenNS <= S4;elseNS <= S3;end if;whenS4 =>MULTI <='1';CONTIG <='1';SINGLE <='0';if(AandBand notC)thenNS <= S5;elseNS <= S4;end if;whenS5 =>MULTI <='1';CONTIG <='0';SINGLE <='0';NS <= S6;whenS6 =>MULTI <='0';CONTIG <='1';SINGLE <='1';if(notE)thenNS <= S7;elseNS <= S6;whenS7 =>MULTI <='0';CONTIG <='1';SINGLE <='0';if(E)thenNS <= S1;elseNS <= S7;end if;end case;end process;endbehavior;Page 1 de 12
Background image
a.S’agit-il d’une MEF avec réinitialisation synchrone ou asynchrone?La réponse se trouve dans le processus de la mémoire d’états, dans l’architecturebehaviorde l’entitébinary. Le code en question est copié ci-dessous.process(CLOCK, CLEAR)-- STATE MEMORYbeginif(CLEAR ='1')thenCS <= S1;elsifrising_edge(CLOCK)thenCS <= NS;end if;end process;On remarque que le processus est sensible au signal de l’horloge ainsi qu’au signal nommé CLEAR.Selon la convention de l’industrie, un système avec réinitialisation asynchrone utilise typiquementun « clear », tandis qu’un système avec réinitialisation synchrone utilise un « reset ». Une analyserapide du processus permet de confirmer cela. La première condition indique que la MEF retourneà l’état S1 dès que le signal CLEAR devient 1. La deuxième condition indique que la MEF passe àl’état futur lors d’un front montant de l’horloge. Puisque le « clear » est indépendant de l’horloge,on confirme qu’il s’agit d’une MEF à réinitialisation asynchrone.b.S’agit-il d’une MEF de Moore ou Mealy?La réponse se trouve dans le processus de la logique combinatoire, dans l’architecturebehaviordel’entitébinary. Plus spécifiquement, les assignations des trois sorties (MULTI, CONTIG, SINGLE)de la MEF sont critiques pour déterminer son type. L’analyse du premier cas est effectué à titrede référence, c’est-à-dire lorsque la MEF se trouve à l’état S1.whenS1 =>MULTI <='0';CONTIG <='0';SINGLE <='0';if(Aand notBandC)thenNS <= S2;elsif(AandBand notC)thenNS <= S4;elseNS <= S1;end if;On observe que les trois sorties sont assignées indépendamment de l’état des entrées. C’est d’ailleursle cas pour tous les états (S1 à S7). On sait par conséquent qu’il s’agit d’une MEF de Moore, carl’état des sorties ne dépend que de l’état présent. S’il s’agissait au contraire d’une MEF de Mealy,l’assignation d’au moins une sortie s’effectuerait à l’intérieur des intructions conditionnelles liéesaux entrées. Autrement dit, l’équation d’au moins une sortie contiendrait une ou plusieurs entrées.Page 2 de 12
Background image
c.Dessiner le diagramme états-transitions.S1MULTI = 0CONTIG = 0SINGLE = 0S2MULTI = 1CONTIG = 0SINGLE = 0S3MULTI = 0CONTIG = 1SINGLE = 0S4MULTI = 1CONTIG = 1SINGLE = 0S5MULTI = 1CONTIG = 0SINGLE = 0S6MULTI = 0CONTIG = 1SINGLE = 1S7MULTI = 0CONTIG = 1SINGLE = 0ELSEABC = 1ABC = 1D= 0D= 1A + D = 1ELSEABC = 1ELSE1ELSEE = 0E = 1ELSEExercice 2Effectuer la conception et l’implémentation VHDL d’un compteur qui génère la séquence[0,0,3,1]en sortie. Le compteur doit être auto-démarrant (revenir à un état défini) en un seul cycle d’horloge.De plus, la réinitialisation du système doit être synchrone.1)000100011001Techniquement, deux bits suffisent pour représenterles nombres de la séquence. Cependant, comme uncompteur ne doit pas avoir de logique combinatoireen sortie, il faut connecter les sorties du compteuraux sorties des bascules. Il faut donc trois basculespour distinguer le premier zéro du deuxième. Parexemple, avecC0= Q0etC1= Q1, c’est la basculeQ2qui permet de faire la distinction entre les deuxpremiers états dont la sortie est zéro.Page 3 de 12
Background image
2)Le diagramme d’étatscontient déjà les étatsdes bascules et, par lefait même, les sortiesindiquées par les bitssoulignés.3)Aucune simplification possible, puisqu’il s’agit d’uneséquence. Par la suite, la conception doit s’effectueren simplifiant les équations d’excitation et de sortie àl’aide des états inutilisés afin de contenir le minimumpossible de portes logiques. Pour finir, il faut validerle respect des restrictions temporelles et effectuer lesmodifications appropriées au besoin.4)Q2Q1Q0Q2Q1Q0C1C00001000000100001010XXXXX0110011110001100101XXXXX110XXXXX111XXXXX5)Q2Q2Q1Q00001XXXXQ1Q2Q1Q00001XXXXQ0Q2Q1Q00011XXXXQ0= Q1+ Q2Q1= Q2Q2=Q2Q04*)Il faut valider le respect des restrictionstemporelles, spécifiquement le retour àun état défini en un seul cycle d’horloge.Pour ce faire, la table de transitions estremplie en remplaçant les états inutilisésavec les états qui permettent d’obtenirles équations d’excitation sous une formeminimale. Les états définis sont en gras.Si les états futurs sont différents de ces4 états, alors les restrictions temporellesne sont forcément pas respectées.Q2Q1Q0Q2Q1Q0000100001000010101011001100011101011110011111011Page 4 de 12
Background image
On remarque que l’état 010 se dirigeait versl’état 101, qui n’est pas un des états définis.Puisque l’état 101 se dirigeait ensuite versl’état 011, le compteur était auto-démarranten deux cycles d’horloge. Afin de remédierau problème, on envoie plutôt l’état 010 versl’état 001. On affecte l’équation d’excitationdeQ2en conséquence.Q2Q1Q0Q2Q1Q00001000010000100010110011000111010111100111110115*)Q2Q2Q1Q000000001Q1Q2Q1Q000001111Q0Q2Q1Q000111111Q0= Q1+ Q2Q1= Q2Q2=Q2Q1Q06)C0= Q0C1= Q1Les sorties du compteur sont les sorties des bascules.7)QDQRSTBascule 0QDQRSTBascule 2QDQRSTBascule 1CLKCLKCLKRSTRSTRSTC0C1Page 5 de 12
Background image
On peut à présent procéder à l’implémentation VHDL du compteur. L’important est de s’assurerque le code respecte toutes les contraintes de l’énoncé. Il serait par exemple possible de réaliser uneimplémentation à partir du diagramme d’états-transitions. Or, l’outil de synthèse possède alors uncertain degré de liberté. Dans ce cas, il est difficile de s’assurer que toutes les contraintes sont bienrespectées. C’est pourquoi on choisit plutôt de forcer l’implémentation de la table de transitionsfinale. Notons enfin que le code VHDL proposé n’est qu’une des nombreuses solutions possibles.libraryieee;useieee.std_logic_1164.all;entitycounterisport(CLK, RST :inSTD_LOGIC;Q :outSTD_LOGIC_VECTOR(1downto0));endcounter;architecturelogicofcounterissignalcurrentCount, nextCount :STD_LOGIC_VECTOR(2downto0) := (others=>'0');begin-- Mémoire d’étatsprocess(CLK)beginifrising_edge(CLK)thenifRST ='1'thencurrentCount <= (others=>'0');elsecurrentCount <= nextCount;end if;end if;end process;-- Logique combinatoire des états futursprocess(currentCount)begincasecurrentCountiswhen"000"=> nextCount <="100";when"001"=> nextCount <="000";when"010"or"011"=> nextCount <="001";when others=> nextCount <="011";end case;end process;-- SortiesQ <= currentCount(1downto0);endlogic;Page 6 de 12
Background image
Exercice 3Soit un compteur synchrone à 3 bits dont la séquence correspond au code Gray.a.Effectuer la conception et dessiner le schéma de portes logiques du compteur sachant que lesbascules D utilisées possèdent une sortie non-inversée et une sortie inversée.1)Le code Gray est une séquence binaire qui, contrairement au code binaire naturel, ne permetde modifier qu’un seul bit par incrément.0000010110101101111011002)Le diagramme d’états contient déjà les étatsdes bascules et, par le fait même, les sortiesindiquées par les bits soulignés.3)Aucune simplification possible,puisqu’il s’agit d’une séquence.4)Q2Q1Q0Q2Q1Q0C2C1C00000010000010110010101100100110100111000001001011001011101111101111011115)Q2Q2Q1Q000001111Q1Q2Q1Q000001111Q0Q2Q1Q000001111Q0=Q2Q1+ Q2Q1Q1= Q1Q0+Q2Q0Q2= Q1Q0+ Q2Q0Page 7 de 12
Background image
6)C0= Q0C1= Q1C2= Q2::::??????????>>>>>??????????<<<<Les sorties du compteur sont les sorties des bascules.7)QDQBascule 0QDQBascule 1QDQBascule 2Q2Q1Q2Q1Q1Q0Q2Q0Q1Q0Q2Q0CLKQ0, C0Q0CLKQ1, C1Q1CLKQ2, C2Q2b.Trouver les délaistffpd(max),tcomb(max),tsetupettholdselon les spécifications techniques fourniesci-dessous.ParamètresValeur(ns)MinTypMaxBascule DClock, Clear, Set to Output-1325Data setup time - HIGH15--Data setup time - LOW15--Hold time5--Porte ETTurn-Off Delay, Input to Output-815Turn-On Delay, Input to Output-1017Porte OUTurn-Off Delay, Input to Output-1416Turn-On Delay, Input to Output-1418Page 8 de 12
Background image
Analyse temporelle d’une MEF synchroneLors de l’analyse temporelle d’une MEF synchrone, il est important de s’assurer que lesmarges de temps soient positives(0).Autrement, le comportement du système est im-prévisible. La marge de préparationtm(prep)ainsi que la marge de maintientm(maint)sontparticulièrement critiques. Voici les paramètres importants pour les déterminer.tclk:Période de l’horloge.tskew:Différence de délai du signal d’horloge entre deux ou plusieurs bascules.tffpd:Temps de propagation d’une bascule (QdevientQ).tcomb:Temps de propagation de la logique combinatoire de l’entrée d’une bascule.tsetup:Temps requis où l’entrée d’une bascule doit être stable avant un front décisif del’horloge pour garantir un bon échantillonnage.thold:Temps requis où l’entrée d’une bascule doit être stable après un front décisif del’horloge pour garantir un bon échantillonnage.La marge de préparation est la différence entre la période de l’horloge et le temps requispour un changement valide d’état de bascules. On adopte une approche conservatrice pourle calcul des marges. De ce fait, l’équation suivante utilise les délais critiques des paramètreset le chemin combinatoire critique, notétcomb(max).tm(prep)= tclktffpd(max)tsetuptcomb(max)La marge de maintien, dont l’équation est fournie ci-dessous, s’assure que la distribution deshorloges du système n’influence pas négativement son fonctionnement.tm(main)= tffpd(min)+ tcomb(min)tholdtskew(max)Les trois paramètres suivants se trouvent directement dans les spécifications fournies.tffpd(max)= 25 nstsetup(max)= tsetup(min)= tsetup= 15 nsthold(max)= thold(min)= thold= 5 nsAfin de trouvertcomb(max), il faut faire une analyse de la logique combinatoire de toutes les bascules.Dans cet exercice, les trois bascules ont la même combinaison de portes logiques, de sorte qu’elles ontle même chemin combinatoire critique. Si ce n’est pas le cas, il faut calculer le chemin combinatoirequi engendre le plus grand délai selon les spécifications des portes logiques fournies. À noter qu’unchemin qui contient plus de portes logiques n’est pas forcément plus lent, cela dépend en fait dutemps de propagation des portes logiques.tcomb(max)1= tcomb(max)2= tcomb(max)3= tET(max)+ tOU(max)= 17 ns + 18 ns = 35 nsPage 9 de 12
Background image
c.Tracer un chronogramme des signaux CLK,D0etQ0qui contient tous les délais identifiés à laquestion précédente ainsi quetclk, en respectant les consignes suivantes.La fréquence de l’horloge est 12.5 MHz.Q0,Q1etQ2sont stables à 0 avant le premier front montant de l’horloge.Dessiner deux cycles complets de CLK.Identifier la marge de préparationtm(prep).tclk=1fc=112.5×106= 80 nstclk80 nsthold5 nstffpd(max)25 nstcomb(max)35 nstsetup15 nstm(prep)5 nsthold5 nstffpd(max)25 nstcomb(max)35 nstsetup15 nstm(prep)5 nsCLKD0Q0tm(prep)= tclktffpd(max)tsetuptcomb(max)= 80 ns25 ns15 ns35 ns = 5 ns0d.En négligeant les délais de propagation dans les fils, calculer la fréquence maximale d’exécutiondu circuit.La fréquence maximale du système correspond par définition à la période minimale de l’horloge.Ce délai entre en compte dans la marge de préparation, qui doit être positive pour que le systèmefonctionne normalement. En observant son équation, on remarque rapidement que la période del’horloge est minimale lorsque la marge de préparation est à sa limite inférieure, c’est-à-dire nulle.tm(prep)= tclktffpd(max)tsetuptcomb(max)0 = tclk(min)tffpd(max)tsetuptcomb(max)tclk(min)= tffpd(max)+ tsetup+ tcomb(max)tclk(min)= 25 ns + 15 ns + 35 ns75 nsDonc,fc(max)=1tclk(min)=175×109= 13.3 MHzPage 10 de 12
Background image
e.Lors de l’implémentation VHDL du compteur, l’outil de synthèse indique que le skew maximalsur l’horloge est de 20 ns. En négligeant toujours les délais de propagation dans les fils, s’agit-ild’une conception adéquate?Afin de répondre à cette question, il faut tout simplement calculer la marge de maintien du système.Selon les spécifications fournies, on obtient les délais suivants.tffpd(min)= 13 nsthold(max)= thold(min)= thold= 5 nstcomb(min)1= tcomb(min)2= tcomb(min)3= tET(min)+ tOU(min)= 8 ns + 14 ns = 22 nsOn peut ensuite calculer la marge de maintien, qui doit être positive(0)pour un fonctionnementnormal du système.tm(main)= tffpd(min)+ tcomb(min)tholdtskew(max)= 13 ns + 22 ns5 ns20 ns = 10 ns0Supplément 1Concevoir un compteur 3 bits qui permet d’avoir la séquence[0,1,5,7,3,2]en sortie. Si le compteurtombe malencontreusement dans un état non-utilisé, le système doit retomber dans l’état initial auprochain coup d’horloge.1)0000011011110110101001102)Le diagramme d’états contient déjà les étatsdes bascules et, par le fait même, les sortiesindiquées par les bits soulignés.3)Aucune simplification possible,puisqu’il s’agit d’une séquence.Page 11 de 12
Background image
4)Q2Q1Q0Q2Q1Q0C2C1C00000010000011010010100000100110100111000001001011111011100001101110111115)Q2Q2Q1Q000000011Q1Q2Q1Q000000111Q0Q2Q1Q000001111Q0= Q2Q0+Q2Q1Q1= Q2Q0+ Q1Q0Q2=Q1Q06)C0= Q0C1= Q1C2= Q2::::??????????>>>>>??????????<<<<Les sorties du compteur sont les sorties des bascules.7)QDQBascule 1QDQBascule 0QDQBascule 2CLKCLKCLKC0C1C2Page 12 de 12
Background image