La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #6 Conception.

Présentations similaires


Présentation au sujet: "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #6 Conception."— Transcription de la présentation:

1 INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #6 Conception dunités de contrôle

2 INF3500 : Conception et implémentation de systèmes numériques Plan pour aujourdhui Retour sur lévaluation formative du cours Rappel – circuits séquentiels: section 6.1 Analyse dun circuit séquentiel synchrone: section 6.2 Machines à états en VHDL: section 6.3 Conception de machines à états: section 6.4 Conception de processeurs: section 6.5 Exemples 2 + Parenthèses sur VHDL, des précisions sur les notes de cours, des trucs pour utiliser Active-HDL, et des exemples!

3 INF3500 : Conception et implémentation de systèmes numériques Rappel: exemple de la machine distributrice 3 Source: Wikipédia

4 INF3500 : Conception et implémentation de systèmes numériques Machine distributrice 4 Lunité de contrôle détermine dans quel ordre les différentes actions doivent se produire, et génère les signaux de contrôle correspondants pour les chemin des données et pour les sorties.

5 INF3500 : Conception et implémentation de systèmes numériques Parties dun processeur Un processeur est composé de deux parties: – Le chemin des données (datapath) traite les données. Il inclut: des registres; des unités fonctionnelles (comme une unité arithmétique et logique) un mécanisme de commutation pour transférer et manipuler les données. – Lunité de contrôle (control unit) est responsable du séquençage des opérations à exécuter par le chemin de données selon des entrées externes et le résultat des opérations. 5 (notes, section 5.1)

6 INF3500 : Conception et implémentation de systèmes numériques Circuits séquentiels synchrones Un circuit séquentiel comporte: – une partie combinatoire; et – des éléments à mémoire. Les éléments à mémoire entreposent létat présent du circuit. La partie combinatoire calcule le prochain état du système ainsi que ses sorties. Un circuit séquentiel a normalement des entrées et des sorties. Un circuit séquentiel est mené par un signal dhorloge et devrait avoir un signal de réinitialisation. Ces signaux sont des entrées spéciales. 6 (notes, section 6.1)

7 INF3500 : Conception et implémentation de systèmes numériques Circuits séquentiels synchrones 7 (notes, section 6.1) Un circuit séquentiel comporte: – des éléments à mémoire, qui entreposent létat présent du circuit; – un circuit combinatoire, qui calcule: le prochain état du circuit; et, les sorties du circuit.

8 INF3500 : Conception et implémentation de systèmes numériques Compétences à avoir en INF3500 concernant les circuits séquentiels synchrones 8 Code VHDL Schéma du circuit Implémentation sur FPGA Spécification textuelle Diagramme détats

9 INF3500 : Conception et implémentation de systèmes numériques Analyse dun circuit séquentiel synchrone On analyse un circuit pour en comprendre le fonctionnement. Analyser un circuit séquentiel synchrone en quatre étapes: 1.identifier les variables détats; 2.écrire les équations détats et les équations de sortie; 3.dresser le tableau détats; et, 4.dessiner le diagramme détats. 9 (notes, section 6.2) 2. A + = A xor B; B + = B or X; Z = A nor B; 1.{A, B}

10 INF3500 : Conception et implémentation de systèmes numériques Analyse dun circuit séquentiel synchrone (suite) 10 (notes, section 6.2) 3. Tableau détats: état présententréeétat prochainsortie ABXA+B+Z Diagramme détats: état 0: AB = « 00 » état 1: AB = « 01 » état 2: AB = « 10 » état 3: AB = « 11 » Cest une machine de Moore, la sortie ne dépend que de létat présent.

11 INF3500 : Conception et implémentation de systèmes numériques Description dune machine à états en VHDL 1. à partir dun schéma Approche adéquate: – quand on désire modéliser un circuit pour lequel on a le schéma – quand on a les équations détats et de sortie 11 (notes, section 6.3) library IEEE; use IEEE.std_logic_1164.all; entity cctsequentielex1 is port ( reset : in STD_LOGIC; CLK : in STD_LOGIC; X : in STD_LOGIC; Z : out STD_LOGIC ); end cctsequentielex1; architecture arch1 of cctsequentielex1 is signal A : STD_LOGIC; -- bascule A (en haut) signal B : STD_LOGIC; -- bascule B (en bas) begin process(CLK, reset) is begin if (reset = '0') then A <= '0'; B <= '0'; elsif (rising_edge(CLK)) then A <= A xor B; B <= x or not(B); end if; end process; -- signal de sortie z <= not(A or B); end arch1; Deux bascules dans un seul processus Sortie décrite par un énoncé concurrent à lextérieur du processus (pas de registre). Réinitialisation asynchrone.

12 INF3500 : Conception et implémentation de systèmes numériques Description dune machine à états en VHDL 2. i. à partir dun diagramme détats, encodage numérique Approche beaucoup plus puissante: – identifier les états, les conditions de transition et les sorties pour chaque état – pas besoin déquations détats – plus lisible, robuste, facile à maintenir 12 (notes, section 6.3) architecture arch2 of cctsequentielex1 is type type_etat is range 0 to 3; signal etat : type_etat := 0; begin process(CLK, reset) is begin if (reset = '0') then etat <= 0; elsif (rising_edge(CLK)) then case etat is when 0 => etat <= 1; when 1 => if x = '0' then etat <= 2; else etat <= 3; end if; when 2 => etat <= 3; when 3 => if x = '0' then etat <= 0; else etat <= 1; end if; end case; end if; end process; z <= '1' when etat = 0 else '0'; end arch2; Type spécial pour létat. Ici: encodage numérique. Processus avec énoncé case pour les transitions entre états. Signal de sortie à lextérieur du processus.

13 INF3500 : Conception et implémentation de systèmes numériques architecture arch3 of cctsequentielex1 is type type_etat is (Etat0, Etat1, Etat2, Etat3); signal etat : type_etat := Etat0; begin process(CLK, reset) is begin if (reset = '0') then etat <= Etat0; elsif (rising_edge(CLK)) then case etat is when Etat0 => etat <= Etat1; when Etat1 => if x = '0' then etat <= Etat2; else etat <= Etat3; end if; when Etat2 => etat <= Etat3; when Etat3 => if x = '0' then etat <= Etat0; else etat <= Etat1; end if; end case; end if; end process; z <= '1' when etat = Etat0 else '0'; end arch3; Description dune machine à états en VHDL 2. ii. à partir dun diagramme détats, encodage symbolique Lors de la conception, on préfère souvent un encodage symbolique à lencodage numérique des états. 13 (notes, section 6.3) Type spécial pour létat. Ici: encodage symbolique avec un type énuméré.

14 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: types énumérés en VHDL Un type peut être défini avec une énumération déléments dans une liste. Lordre dénumération définit un indice pour chaque élément à partir de 0. Les opérateurs relationnels sappliquent entre les éléments selon cet ordre. Exemples: définitions dans le package standard, disponible dans le manuel de référence du langage VHDL, norme (section 14.2). 14 (notes, section 2.5.6) package STANDARD is type BOOLEAN is (FALSE, TRUE); type BIT is ('0', '1'); type CHARACTER is ( NUL, SOH, STX, ETX, EOT, ENQ, ACK, BEL, BS, HT, LF, VT, FF, CR, SO, SI, DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB, CAN, EM, SUB, ESC, FSP, GSP, RSP, USP, ' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', ' ', '?', --- etc.

15 INF3500 : Conception et implémentation de systèmes numériques Modélisation de machine à états - conclusion 15 (pas dans les notes) architecture arch1 of cctsequentielex1 is signal A : STD_LOGIC; -- bascule A (en haut) signal B : STD_LOGIC; -- bascule B (en bas) begin process(CLK, reset) is begin if (reset = '0') then A <= '0'; B <= '0'; elsif (rising_edge(CLK)) then A <= A xor B; B <= x or not(B); end if; end process; -- signal de sortie z <= not(A or B); end arch1; architecture arch3 of cctsequentielex1 is type type_etat is (Etat0, Etat1, Etat2, Etat3); signal etat : type_etat := Etat0; begin process(CLK, reset) is begin if (reset = '0') then etat <= Etat0; elsif (rising_edge(CLK)) then case etat is when Etat0 => etat <= Etat1; when Etat1 => if x = '0' then etat <= Etat2; else etat <= Etat3; end if; when Etat2 => etat <= Etat3; when Etat3 => if x = '0' then etat <= Etat0; else etat <= Etat1; end if; end case; end if; end process; z <= '1' when etat = Etat0 else '0'; end arch3;

16 INF3500 : Conception et implémentation de systèmes numériques Trois styles de description dune machine à états en VHDL Les trois parties dune machine à états sont : – les éléments à mémoire qui conservent létat présent de la machine; – un circuit combinatoire qui calcule le prochain état; et, – un circuit combinatoire qui calcule les sorties de Moore et de Mealy. Il y a trois styles principaux de description selon la répartition des trois parties de la machine sur un ou plusieurs processus. 16 (notes, section 6.3)

17 INF3500 : Conception et implémentation de systèmes numériques Trois styles de description dune machine à états en VHDL 1. Avec un seul processus Attention aux sorties: – inférence de registres pour les sorties – spécifier la sortie du prochain état étant donnés un état et une entrée présentes. – si plusieurs conditions résultent en un état donné, il faut spécifier la sortie de Moore de cet état à chaque fois. 17 (notes, section 6.3) architecture unprocessus of cctsequentielex2 is type type_etat is (S1, S2, S3, S4); signal etat : type_etat := S1; begin process(CLK, reset) is begin if (reset = '0') then etat <= S1; sortie <= '1'; elsif (rising_edge(CLK)) then case etat is when S1 => if x = '0' then etat <= S3; sortie <= '0'; else etat <= S2; sortie <= '1'; end if; when S2 | S3 => etat <= S4; sortie <= '0'; when S4 => etat <= S1; sortie <= '1'; end case; end if; end process; end unprocessus;

18 INF3500 : Conception et implémentation de systèmes numériques process(etat) begin case etat is when S1 | S2 => sortie <= '1'; when S3 | S4 => sortie <= '0'; end case; end process; end deuxprocessus; Trois styles de description dune machine à états en VHDL 2a. Avec deux processus Bon compromis entre la flexibilité et la lisibilité du code. Deux processus: – un pour le calcul et lentreposage de létat – un pour les sorties (peut être remplacé par des énoncés concurrents) 18 (notes, section 6.3) architecture deuxprocessus of cctsequentielex2 is type type_etat is (S1, S2, S3, S4); signal etat : type_etat := S1; begin process(CLK, reset) is begin if (reset = '0') then etat <= S1; elsif (rising_edge(CLK)) then case etat is when S1 => if x = '0' then etat <= S3; else etat <= S2; end if; when S2 | S3 => etat <= S4; when S4 => etat <= S1; end case; end if; end process; Machine de Moore …

19 INF3500 : Conception et implémentation de systèmes numériques Trois styles de description dune machine à états en VHDL 2b. Avec deux processus Bon compromis entre la flexibilité et la lisibilité du code. Deux processus: – un pour le calcul et lentreposage de létat – un pour les sorties (peut être remplacé par des énoncés concurrents) 19 (notes, section 6.3) architecture arch2 of cctsequentielex1 is type type_etat is range 0 to 3; signal etat : type_etat := 0; begin process(CLK, reset) is begin if (reset = '0') then etat <= 0; elsif (rising_edge(CLK)) then case etat is when 0 => etat <= 1; when 1 => if x = '0' then etat <= 2; else etat <= 3; end if; when 2 => etat <= 3; when 3 => if x = '0' then etat <= 0; else etat <= 1; end if; end case; end if; end process; z <= '1' when etat = 0 else '0'; end arch2;

20 INF3500 : Conception et implémentation de systèmes numériques Trois styles de description dune machine à états en VHDL 3. Avec trois processus Style qui correspondre exactement au modèle. Code est très lisible mais moins compact que la version à deux processus. La liste de sensibilité du processus qui calcule le prochain état inclut le signal qui entrepose létat courant ainsi que toutes les entrées. Le même principe sapplique au processus qui calcule les sorties (pour une machine de Mealy). 20 (notes, section 6.3)

21 INF3500 : Conception et implémentation de systèmes numériques Trois styles de description dune machine à états en VHDL 3. Avec trois processus 21 (notes, section 6.3) -- processus pour le calcul du prochain état process(etat, x) is begin case etat is when S1 => if x = '0' then etat_prochain <= S3; else etat_prochain <= S2; end if; when S2 | S3 => etat_prochain <= S4; when S4 => etat_prochain<= S1; end case; end process; end troisprocessus; architecture troisprocessus of cctsequentielex2 is type type_etat is (S1, S2, S3, S4); signal etat : type_etat := S1; signal etat_prochain : type_etat := S1; begin -- processus pour garder l'état actuel en mémoire process(CLK, reset) is begin if (reset = '0') then etat <= S1; elsif (rising_edge(CLK)) then etat <= etat_prochain; end if; end process; -- processus pour les sorties process(etat) begin case etat is when S1 | S2 => sortie <= '1'; when S3 | S4 => sortie <= '0'; end case; end process; Machine de Moore …

22 INF3500 : Conception et implémentation de systèmes numériques Trois styles de description dune machine à états en VHDL Conclusion Les trois styles ont chacun leurs mérites et inconvénients. Cette variété doptions illustre à nouveau la très grande richesse de VHDL. Cette richesse cause cependant des difficultés parce quil nexiste pas une norme unique pour la description de machines à états. Il est donc plus difficile de concevoir un synthétiseur qui puisse reconnaître de façon satisfaisante les intentions du concepteur. Il est nécessaire de consulter le manuel dutilisation du synthétiseur utilisé afin de connaître les styles dencodage de machines à états reconnus. 22 (notes, section 6.3)

23 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: résultats différents pour la synthèse et la simulation: comment les éviter Attention à la liste de sensitivité – labsence dun signal dans la liste de sensitivité est importante pour le simulateur – le synthétiseur suppose (en général) que le concepteur a fait une erreur:Declare asynchronous signals in the sensitivity list. Otherwise, XST issues a warning and adds them to the sensitivity list. In this case, the behavior of the synthesis result may be different from the initial specification. – XST User Guide, v. 11.3, Sept Énoncés after : pas tenus en compte par le synthétiseur. Quoi faire? – Surveiller les avertissements du synthétiseur … – Pour les processus décrivant des bascules: placer seulement clk et reset dans la liste de sensitivité – Pour les processus décrivant de la logique combinatoire: placer tous les signaux faisant partie dexpressions dans la liste de sensitivité 23 (pas dans les notes) process(A, B) begin T1 <= A and B; T2 <= not(T1); end process; process (A, B, T1) begin T1 <= A and B; T2 <= not(T1); end process; process(CLK, A) begin if rising_edge(CLK) then Z <= A; end if; end process; process(CLK) begin if rising_edge(CLK) then Z <= A; end if; end process;

24 INF3500 : Conception et implémentation de systèmes numériques Compétences à avoir en INF3500 concernant les circuits séquentiels synchrones 24 Code VHDL Schéma du circuit Implémentation sur FPGA Spécification textuelle Diagramme détats

25 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Principes de base La conception dune machine à états est un processus créatif similaire à la description dun algorithme dans un langage de programmation: – débuter avec une description de la relation désirée entre les entrées et les sorties; – faire des choix en faisant un compromis entre des contraintes qui ne peuvent toutes être satisfaites simultanément: performance, précision, complexité, lisibilité, la testabilité et la consommation de puissance; – considérer les cas spéciaux séparément; – pendant le processus de conception, on réalise souvent que la spécification est incomplète, ambigüe ou mal comprise; – le système une fois conçu se comporte exactement tel quil a été décrit, mais pas nécessairement comme on voudrait quil se comporte; – utiliser un processus itératif aide les choses; – bien documenter toutes les étapes. 25 (notes, section 6.4)

26 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Procédure traditionnelle et avec un HDL ÉtapeProcédure traditionnelleProcédure avec un HDL Bâtir un diagramme détats à partir des données du problème. oui Bâtir le tableau détats à partir du diagramme détats, en identifiant les états par des symboles. ouinon Réduire le nombre détats nécessaires en éliminant les états équivalents. oui pas obligatoire peut simplifier la documentation et la clarté du code Assigner un code binaire à chaque état, et ajouter cette information au tableau détat. ouipar loutil de synthèse À partir du tableau détat complet, obtenir les équations booléennes dentrée des bascules du type choisi ainsi que les équations booléennes des sorties du système, en simplifiant si possible. ouipar loutil de synthèse Donner le diagramme et/ou construire le circuit.ouipar loutil de synthèse Vérifier, vérifier, vérifier.oui 26 (notes, section 6.4)

27 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états « Algorithmic State Machines » Cette approche nest plus vraiment utilisée depuis ladoption des HDL. 27 (notes, section 6.4) J.M. Hill, Brief introduction to ASM charts, University of Hartford. Consulté le 5 octobre 2009, tiré de utilisé avec permission.

28 INF3500 : Conception et implémentation de systèmes numériques Diagrammes détats: notation Machine de Moore 28 (pas dans les notes) État de départ Condition pour quune transition ait lieu. Ici: une seule entrée. Machine de Moore: la valeur de la sortie est indiquée à lintérieur de létat. Condition sans importance (dont care): la transition se fait toujours Chaque état est identifié Les transitions entre états sont synchronisées avec lhorloge.

29 INF3500 : Conception et implémentation de systèmes numériques Diagrammes détats: notation Machine de Mealy 29 (pas dans les notes) Machine de Mealy: la valeur de la sortie est indiquée sur les transitions. Ici deux entrées et une sortie. Les transitions entre états sont synchronisées avec lhorloge.

30 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Bâtir le diagramme détats La représentation graphique offerte par un diagramme détats est très avantageuse. Certains outils de conception produisent automatiquement du code VHDL à partir dun diagramme détats. Les principes suivants peuvent grandement aider à obtenir le diagramme détat. – À partir des données du problème, simuler certaines combinaisons dentrée et de sortie pour bien comprendre la nature du problème. – Construire un diagramme partiel menant à une sortie désirée du système. – Ajouter au diagramme les autres chemins menant aux sorties désirées du système. – Vérifier le diagramme pour éviter les états équivalents (deux états qui mènent aux mêmes prochains états et qui ont les mêmes sorties pour les mêmes entrées). – Compléter le diagramme en ajoutant des transitions pour toutes les entrées possibles à partir de chaque état. – Identifier toute condition où le circuit doit être réinitialisé à un état de départ, et annoter le diagramme avec cette information. – Vérifier le diagramme en appliquant des combinaisons dentrées représentatives. 30 (notes, section 6.4)

31 INF3500 : Conception et implémentation de systèmes numériques Bâtir un diagramme détats Exemple: reconnaître une séquence Donner un diagramme détats pour une machine de Mealy qui doit reconnaître la séquence « 1101 ». Le circuit a une seule entrée sur laquelle la séquence est appliquée. Il a une seule sortie: 0 tant que la séquence nest pas détectée, et 1 dès que la séquence est détectée. 31 (notes, section 6.4)

32 INF3500 : Conception et implémentation de systèmes numériques Bâtir un diagramme détats Exemple: reconnaître une séquence Donner un diagramme détats pour une machine de Mealy qui doit reconnaître la séquence « 1101 ». Le circuit a une seule entrée sur laquelle la séquence est appliquée. Il a une seule sortie: 0 tant que la séquence nest pas détectée, et 1 dès que la séquence est détectée. 32 (notes, section 6.4) Solution 1: Machine de Mealy 4 états, donc 2 bascules

33 INF3500 : Conception et implémentation de systèmes numériques Bâtir un diagramme détats Exemple: reconnaître une séquence Donner un diagramme détats pour une machine de Moore qui doit reconnaître la séquence « 1101 » 33 (notes, section 6.4) Solution 2: Machine de Moore 5 états donc 3 bascules Les états F, G et H sont implicites avec 3 bascules – attention à la façon de les coder.

34 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: génération automatique de code VHDL à partir dun diagramme détats dans Active-HDL 34 (pas dans les notes)

35 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Décomposition de machines à états Les circuits séquentiels peuvent parfois être décomposés en blocs simples. La décomposition peut suivre une approche hiérarchique. Les différentes sous- machines à états doivent pouvoir communiquer entre elles à laide de signaux de contrôle et de données. 35 (notes, section 6.4)

36 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Décomposition de machines à états Exemple : donner un diagramme détats pour un circuit dont la sortie est 1 quand au moins deux 0 et deux 1 ont été reçus, dans nimporte quel ordre. 36 (notes, section 6.4) Solution 1: Une seule machine

37 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Décomposition de machines à états Exemple : donner un diagramme détats pour un circuit dont la sortie est 1 quand au moins deux 0 et deux 1 ont été reçus, dans nimporte quel ordre. 37 (notes, section 6.4) Solution 2: Décomposition en trois machines

38 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Circuits combinatoires itératifs et circuits séquentiels Un circuit combinatoire itératif est un circuit composé de n modules identiques connectés en cascade. Les modules ont des entrées principales EP, des sorties principales SP, des entrées de connexion en cascade EC et des sorties de connexion en cascade SC. 38 (notes, section 6.4)

39 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Circuits combinatoires itératifs et circuits séquentiels - 2 Exemple de circuit itératif: circuit qui compare légalité de deux nombres. 39 (notes, section 6.4)

40 INF3500 : Conception et implémentation de systèmes numériques Conception de machine à états Circuits combinatoires itératifs et circuits séquentiels - 3 Si les entrées sont disponibles en format série et que lon est prêt à accepter les sorties principales en format série aussi, alors il existe une version séquentielle du même circuit qui est très simple et qui nécessite très peu de matériel. Exemple pour un comparateur itératif: Les entrées X et Y sont des entrées série synchronisées avec le signal dhorloge CLK. Lentrée init doit être activée au début pour fixer le contenu de la bascule à la valeur 1, tel que montré à la Figure (notes, section 6.4) X et Y sont des entrées série synchronisées avec CLK. Lentrée init doit être activée au début pour fixer le contenu de la bascule à la valeur 1.

41 INF3500 : Conception et implémentation de systèmes numériques Communication entre machines à états Modèle producteur-consommateur 41 (pas dans les notes)

42 INF3500 : Conception et implémentation de systèmes numériques Conception de processeurs avec lapproche RTL - rappel Dans lapproche RTL, le concepteur spécifie les registres du processeur, les transferts de données entre ces registres, les opérations à effectuer et les signaux de contrôle pour gérer ces activités. Lapproche RTL peut être décomposée en quatre étapes : 1.Analyse du problème afin de comprendre le flot des données à travers le processeur. 2.Conception du chemin des données, identification des signaux de contrôle et détat. 3.Conception de lunité de contrôle du processeur à laide dune machine à états générant des signaux de contrôle. 4.Vérification que le processeur résultant rencontre les spécifications. 42 (notes, sections 5.2 et 6.5)

43 INF3500 : Conception et implémentation de systèmes numériques Exemple de conception de processeur Calcul de la Somme des Différences Absolues (SDA) Supposons deux blocs de 256 pixels entreposés dans deux mémoires distinctes. Chaque octet de chaque mémoire contient lintensité dun seul pixel sous la forme dun nombre non signé entre 0 et 255 inclusivement. Le signal SDAprete est activé par le module quand le calcul est terminé. Le signal contrôle go est activé par le reste du système quand les mémoires sont chargées et que les calculs peuvent débuter. 43 (pas dans les notes) SDA = 0; SDAprete = vrai; tantque(vrai) { si(go) { adresse = 255; SDA = 0; SDAprete = faux; tantque(adresse >= 0) { SDA = SDA + abs(A[adresse] – B[adresse]); adresse = adresse – 1; } SDAprete = vrai; }

44 INF3500 : Conception et implémentation de systèmes numériques Exemple de conception de processeur Calcul de la Somme des Différences Absolues (SDA) 44 Donnez un diagramme montrant le chemin des données du processeur. Indiquez clairement toutes les ressources requises, leur nombre, leur largeur en bits et leur signaux de contrôle. (pas dans les notes)

45 INF3500 : Conception et implémentation de systèmes numériques Exemple de conception de processeur Calcul de la Somme des Différences Absolues (SDA) 45 Donnez une machine à états du processeur. Identifiez bien chaque état, les actions à prendre dans chaque état, et les conditions pour les transitions entre les états. (pas dans les notes)

46 INF3500 : Conception et implémentation de systèmes numériques Exemple: joueur de blackjack Description du jeu de base Le jeu oppose des joueurs à un croupier qui joue pour le compte de la banque. Le but du jeu est daccumuler plus de points que la banque sans dépasser 21. Les cartes ont les valeurs suivantes : – les cartes numérotées ont leur propre valeur (2 à 10); – les figures valent 10; et, – las peut valoir 1 ou 11, selon ce qui est le plus avantageux – une main contenant un as qui peut prendre une des deux valeurs est dite facile. Le croupier distribue deux cartes visibles à chaque joueur, puis se donne une carte visible et une carte cachée. Chaque joueur peut alors tirer une carte ou arrêter, de façon à obtenir la meilleure main possible. Finalement, le croupier révèle sa carte cachée et tire sur un total de 16 ou moins. Un joueur gagne sa mise si sa main est meilleure que celle du croupier. Il récupère sa mise si sa main est égale à celle du croupier. Il perd sa mise si son total est supérieur à 21 ou inférieur au total du croupier. 46 (notes, section 6.7)

47 INF3500 : Conception et implémentation de systèmes numériques Exemple de conception dun processeur Joueur de blackjack Faire la conception dun processeur qui joue au blackjack en suivant les règles de base dun croupier. Le processeur doit minimiser les ressources utilisées – on spécifie que le traitement doit être fait en série. Il faut garder la largeur des opérandes variables. Donner le chemin des données sous la forme dun schéma et de code VHDL. Donner la machine à états de lunité de contrôle sous la forme dun diagramme et de code VHDL. 47 (notes, section 6.7)

48 INF3500 : Conception et implémentation de systèmes numériques Exemple: joueur de blackjack Interface library IEEE; use IEEE.std_logic_1164.all; entity blackjack is port ( clk: in std_logic; reset: in std_logic; carteValide : in std_logic; valeurCarte: in integer range 2 to 11; tirer: out std_logic; depasse: out std_logic; total: out integer range 0 to 31 ); end blackjack; 48 (notes, section 6.7)

49 INF3500 : Conception et implémentation de systèmes numériques Exemple: joueur de blackjack Chemin des données 49 (notes, section 6.7) cheminDonnees : process (clk) begin if rising_edge(clk) then if initSomme = '1' then somme <= 0; elsif calculeSomme = '1' then if moinsDix = '1' then somme <= somme - 10; else somme <= somme + valeurCarte; end if; end process;

50 INF3500 : Conception et implémentation de systèmes numériques Exemple: joueur de blackjack Machine à états 50 (notes, section 6.7) Conditions numérotées 1., 2., 3., … encodeur à priorité On peut aussi indiquer les conditions complètement, de façon exclusive.

51 INF3500 : Conception et implémentation de systèmes numériques Exemple: joueur de blackjack Code VHDL de lunité de contrôle 51 (notes, section 6.7) -- machine a etats de l'unité de contrôle controle : process (CLK, reset) variable n_asfacile : natural := 0; begin if rising_edge(CLK) then if reset = '1' then etat <= depart; else case etat is when depart => n_asfacile := 0; etat <= tire; when tire => if (carteValide = '1') then etat <= ajoute; end if; when ajoute => if valeurCarte = 11 then n_asfacile := n_asfacile + 1; end if; etat <= verifie; when verifie => if somme > 21 then if (n_asfacile > 0) then etat <= corrige; else etat <= fini; end if; elsif somme > 16 then etat <= fini; else etat <= tire; end if; when corrige => etat <= verifie; n_asfacile := n_asfacile - 1; when fini => etat <= fini; when others => etat <= depart; end case; end if; end process; -- signaux de sortie total <= somme; tirer <= '1' when etat = tire else '0'; depasse 21 else '0'; -- signaux de contrôle initSomme <= '1' when etat = depart else '0'; moinsDix <= '1' when etat = corrige else '0'; calculesomme <= '1' when etat = tire or etat = corrige else '0';

52 INF3500 : Conception et implémentation de systèmes numériques Exemple: joueur de blackjack Code VHDL – version RTL-implicite 52 (notes, section 6.7) architecture arch2 of blackjack is signal somme : integer range 0 to 31; signal calculeSomme : std_logic; signal initSomme : std_logic; signal moinsDix : std_logic; type type_etat is (depart, tire, ajoute, verifie, corrige, fini); signal etat : type_etat; begin process (CLK, reset) variable n_asfacile : natural := 0; begin if rising_edge(CLK) then if reset = '1' then etat <= depart; else case etat is when depart => n_asfacile := 0; somme <= 0; etat <= tire; when tire => if (carteValide = '1') then etat <= ajoute; end if; when ajoute => somme <= somme + valeurCarte; if valeurCarte = 11 then n_asfacile := n_asfacile + 1; end if; etat <= verifie; when verifie => if somme > 21 and n_asfacile > 0 then etat <= corrige; elsif somme > 16 then etat <= fini; else etat <= tire; end if; when corrige => somme <= somme - 10; etat <= verifie; n_asfacile := n_asfacile - 1; when fini => etat <= fini; when others => etat <= depart; end case; end if; end process; -- signaux de sortie total <= somme; tirer <= '1' when etat = tire else '0'; depasse 21 else '0'; end arch2;

53 INF3500 : Conception et implémentation de systèmes numériques Notions à retenir et maîtriser Importance relative 1. Analyser un circuit séquentiel synchrone à partir de son schéma. - Donner le diagramme détat qui lui correspond. - Donner son état et la valeur de ses sorties en fonction du temps Donner le code VHDL correspondant au schéma dun circuit séquentiel Donner le code VHDL correspondant à un diagramme détat. - utiliser un encodage numérique et symbolique - utiliser une représentation à 1, 2 ou 3 processus Expliquer pourquoi les résultats de la synthèse et de la simulation dun circuit séquentiel peuvent être différents, et comment écrire le code VHDL pour éviter cela À partir de la description dun problème, donner un diagramme détats correspondant. - problèmes de base - décomposition de machines à états - circuits combinatoires itératifs À partir de la description dun problème, donner le chemin des données et lunité de contrôle correspondants. 25 Total100 Résumé: conception dunités de contrôle 53


Télécharger ppt "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #6 Conception."

Présentations similaires


Annonces Google