1 / 72

2 - Introduction à VHDL-AMS (1 à 23 = 1h45)

2 - Introduction à VHDL-AMS (1 à 23 = 1h45). Structure générale d'un modèle Structuration en bibliothèques Indentificateurs, Objets et typage. Opérateurs Instructions séquentielles, concurrentes, simultanées Notion d ’attributs et Synchronisation des noyaux

loren
Download Presentation

2 - Introduction à VHDL-AMS (1 à 23 = 1h45)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2 - Introduction à VHDL-AMS(1 à 23 = 1h45) Structure générale d'un modèle Structuration en bibliothèques Indentificateurs, Objets et typage. Opérateurs Instructions séquentielles, concurrentes, simultanées Notion d ’attributs et Synchronisation des noyaux Critère de solvabilité et Exemples Yannick HERVE - ENSPS

  2. Structure générale d ’un modèle Interfaçage/netlist (port)signal : numériqueterminal : analogique, kirchoffquantity : analogique, signal flow Entity Déf. connexions Architecture Déclaration Body Inst.concurrentes Inst.simultanées Instanciations Vue interne du modèlediscret-eventcontinuous timestructurel/hiérarchie Entity Architecture Yannick HERVE - ENSPS

  3. Structure générale d ’un modèle : Exemple ENTITY exemple ISport (signal sig_ext:in real; terminal vp,vm : electrical); END exemple;LIBRARY ressource_lib; USE ressources_lib.ressources_package.ALL;ARCHITECTURE archi1 OF exemple ISTYPE list_ex IS (el1,el2,el2);CONSTANT cst1 : list_ex, k:REAL; SIGNAL sig1 : BIT, sig2 :INTEGER, sig3 : REAL; QUANTITY vbias ACROSS ibias THROUGH vp TO vm; QUANTITY free_quant : REAL; BEGIN u1:ENTITY model_externe(archi_du_modele) GENERIC MAP(100.0e3,5.0) PORT MAP(vp,vm,sig1); free_quant == 3.0*sinus( k * now ); ibias == free_quant’dot; p1:PROCESSvariable x : real := 5.5;BEGINwait on sig3 until sig2 > 3 for 25 ms; x := 2*x ; sig_ext <= sig3 after 1 ms; END PROCESS; END archi1; Exemple illustratif non compilable Yannick HERVE - ENSPS

  4. Structure générale d ’un modèle :Prise en charge par le simulateur Entity Sim anal. Sim num. Architecture Tsim {}Equa.DiffNL (SS) {}Equa.Log (CS) SS1SS2 SS3 ... CS1CS2 CS3 ... E+A E+A SS1 E+A E+A Produit des ASP{valeurs i(t),v(t)} Produit des événements CS1CS2 SS1SS2 SS3 ... CS1CS2 CS : concurrent statementSS : simultaneous statementE+A : Entity + Architecture Yannick HERVE - ENSPS

  5. Structuration en bibliothèques • Pas de longue description • Unités petites et hiérarchisées • Partie compilable = Unité de conception • Système complexe = équipe Besoin de méthodologie rigoureuse • Une compilation qui aboutit Mise à jour d ’une bibliothèque de travail (WORK) • Bibliothèque de ressources (de projet, d ’un fournisseur, de test, …) LIBRARY ressource_lib; USE ressource_lib.pack_lib.ALL; Yannick HERVE - ENSPS

  6. Structuration en bibliothèque :Les unités de conception • Modèle : ENTITY (UC) + ARCHITECTURE (UC) plusieurs ARCHITECTURE possibles par ENTITY • Code souvent utilisé et partagé : paquetage PACKAGE (UC) + PACKAGE BODY (UC) vue ext. : exportation vue interne : privé • Association effective d ’une instance et un modèle compilé : CONFIGURATION (UC) • Les bibliothèques contiennent des UC • Méthode : Un fichier = Une Unité de Conception Yannick HERVE - ENSPS

  7. Identificateurs • Noms des objets : identificateurs • Suite de lettres et de chiffres • Commence par une lettre, no case sensitive • Possible de poser des traits bas : Rdf_232 • Traits bas doubles, au début, à la fin : interdit • Commentaire : -- (jusqu’à la fin de la ligne) Yannick HERVE - ENSPS

  8. Littéraux (1) (Valeurs « dures » du langage) • Caractères : 95 des 128 ASCII (imprimables) ‘ a ’, ‘ b ’, ’Q ’, … • Chaînes de caractères «C ’est »& --(«  » = guillemets) «possible sur deux lignes» • Notations décimales 1345, 1_345, 1e6, 1E6 1345.3, 1_345.1, 1.0e2 (attention x.0) Yannick HERVE - ENSPS

  9. Littéraux (2) • Notations basées (entiers et réels exprimables) 2#01101# est un entier qui vaut 13 7#03630#, 16#FF3A# 2#01101.0# est un réel qui vaut 13.0 16#FF.4A#e12 • Notation par chaînes B«000110» = (‘0’, ‘0’, ‘0’, ‘1’, ‘1’, ‘0’) 0«06» = (‘0’, ‘0’, ‘0’, ‘1’, ‘1’, ‘0’) X«255» = (‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’) Yannick HERVE - ENSPS

  10. Typage • Tous les objets sont typés (strong typing) • Permet l’initialisation fiable et augmente le pouvoir de vérification du compilateur • Familles (définit les valeurs et opérations possibles): • scalaires (un seul élément porté à la fois, ordonnés) • integer, real, physical • énumérés • composites (plusieurs éléments portés à la fois) • array, record • access • fichiers • Types et sous-types utilisateurs possibles Yannick HERVE - ENSPS

  11. Typage :Déclaration scalaires type_declaration ::= TYPE type_name IS type_definition; Enuméré : TYPE enum_type IS (bleu, blanc, rouge) ; -- relation d ’ordre Entiers : TYPE index IS RANGE -3 TO 27 ; TYPE rev_index IS RANGE 27 DOWNTO -3 ; Flottants : TYPE ex_real IS RANGE -3.0 TO 27.0 ; Physique : TYPE distance IS RANGE 0 TO 1e16 UNITS A ; nm = 10 A ; -- espace obligatoire mil = 254_000 A ; inch = 1_000 mil ; ft = 12 inch ; yd = 3 ft , cm = 10e7 nm ; END UNITS ; -- facteurs conversion = integer !!!35 yd + 547 cm + 17 inch calculée en Angströms (35 yd + 547 cm)/mil sera calculé en mils. (103 nm) / nm est un entierA * nm transforme un entier en nm Yannick HERVE - ENSPS

  12. Typage :Déclaration composites Vecteur : rassembler plusieurs valeurs de même type index entier ou énuméré, ne peut contenir des fichiers TYPE int_vec IS ARRAY(3 to 45) of integer ; Tableau d’entier contraintTYPE real_vec IS ARRAY(natural range <>) of real ; Tableau non contraintTYPE enum_vec IS ARRAY(enum_type) of integer ; si A est de type enum_vec on a A(bleu),A(blanc) et A(rouge) Record : rassembler plusieurs valeurs de types différents (champs) accès par notation pointée, ne peut contenir des fichiers TYPE record_ex IS RECORD -- Record d’array ou de record possible champ_1 : bit ; champ_2 : real ; autre_champ : enum_type ;END RECORD; Si A est de type record_ex : A.champ_1,A.champ_2 et A.autre_champ existent Yannick HERVE - ENSPS

  13. Typage :Déclaration fichiers et pointeurs (notes) Fichiers : TYPE file_type IS file OF string ; Voir fonctions associées dans le paquetage STANDARD read / write /file_open / endfile / file_close Pointeurs : TYPE index IS natural RANGE 0 TO 15 ; TYPE index_ptr IS ACCESS index ; NEW index_ptr ; -- nouveau pointeurSi IPtr est de type index_ptr IPtr.all à la valeur de l’objet pointé Réservé aux variables Yannick HERVE - ENSPS

  14. Typage : Types prédéfinis (notes) • Types prédéfinis • integer TYPE integer IS RANGE integer’low to integer’high; • real TYPE real IS RANGE real’low to real’high ; • bit TYPE bit IS (‘0’, ’1’) ; • std_logic TYPE std_logic IS (‘U’,’0 ’,’1’,’Z’,’X’,’H’,’L’,’W’,’-’) ; (IEEE 1164) • bit_vector TYPE bit_vector IS ARRAY (natural RANGE<>) of bit ; • boolean TYPE boolean IS (false, true) • severity_level TYPE severity_level IS (NOTE,WARNING,ERROR,FAILURE) ; • character TYPE character IS (NUL, SOH,…, ’a’, ’b’, …, ‘~’,DEL) ; • string TYPE string IS ARRAY (positive range <>) of character ; • time TYPE time IS RANGE integer’low TO integer’high UNITS fs; ps = 1000 fs ; ns = 1000 ps ; us = 1000 ns ; ms = 1000 us ; sec = 1000 ms ; mn = 60 sec ; hr = 60 mn; END UNITS ; Yannick HERVE - ENSPS

  15. Typage : Sous-types subtype_declaration ::= SUBTYPE subtype_name IS type_names [constraints]; • Permet de définir des sous ensembles de valeurs en gardant la compatibilité avec le type de baseSUBTYPE signal_value IS real RANGE -15.0 to 15.0 ; • Permet de définir des fonctions de résolution (voir cours suivant)SUBTYPE resolved_bit IS resolution_function bit ; • Sous-types prédéfinis • natural SUBTYPE natural IS integer RANGE 0 to integer’high; • positive SUBTYPE positive IS integer RANGE 1 to integer’high; • Dynamique SUBTYPE mot IS bit_vector (1 to max) ;(MAX variable) Yannick HERVE - ENSPS

  16. Typage : Initialisation des objets • En VHDL-AMS tous les objets sont initialisés implicitement ou explicitement • Un objet prend la valeur la plus à gauche de son type signal A : bit ; -- A vaut ‘0’ signal A : bit := ‘1’; -- A vaut ‘1’ variable B : boolean ; -- B vaut false quantity Q : real ; -- Q vaut 0.0 • Un type peut être incomplètement défini TYPE cell ; -- type incomplètement défini TYPE link IS ACCESS cell ; TYPE cell is record -- définitions récursive de type value : index ; succ : link ; END RECORD ; Yannick HERVE - ENSPS

  17. Les 6 classes d’objets • Les classes d ’objets (transport de l ’information) CONSTANT (valeur fixe connue à l ’élaboration) VARIABLE (séquentiel / dynamique) modifiée par affectation ( := ) SIGNAL (concurrent / statique) modifié par affectation ( <= )TERMINAL permet les connexions analogiques branch/free QUANTITY participe aux simult.stat. ( == ) est toujours d ’un type issu des real FILE Yannick HERVE - ENSPS

  18. Classes d ’objets :Constantes • Permet de stocker des valeurs constantesCONSTANT pi : real := 3.141592 ;CONSTANT clock_period : time := 20 ns ;CONSTANT BV0 : bit_vector(15 DOWNTO 0) := (‘1’, ’0 ’,others=> ’0 ’) ;CONSTANT tt : truth_table := (other => (others => ‘ 0 ’)) ;CONSTANT mem_bus : memory_bus := (adrr =>X «00AA»,data=>X«FF», read => ‘0’, write => ’1 ’, enable => ’1 ’ ) ; • Peut être initialisée au moment de l ’utilisationCONSTANT cst_val : integer := 40 * N ; N ne peut être connu qu ’à l ’élaboration (paramètre générique)Si la déclaration de constante est dans une fonction N peut être un paramètre de celle-ci • Constante à valeur différéeCONSTANT cst_val : integer ; est valide (on ne connaît pas la valeur)déclaration dans la spécification paquetageaffectation dans le corps de paquetage (masquage d ’information) Yannick HERVE - ENSPS

  19. Classes d ’objets :Variables • Stockage et manipulation de valeurs VARIABLE phase : real := 124.0 ;VARIABLE clock_period : time := 20 ns ;VARIABLE var1: integer := function_d_init(…) ;Affectation et modification : A := B *C + 3.0; • N ’est utilisable que dans un contexte séquentiel PROCESS uniquement • Il existe des variables partagées (shared) !!! Programmes non déterministes !!! A manipuler avec circonspection Yannick HERVE - ENSPS

  20. Classes d ’objets :Signal signal_declaration ::= SIGNAL signal_name : [fonc_resolution] type [contraintes][REGISTER|BUS] [:= init_value]; • Transporte les valeurs du simulateur event-driven S <= 3 after 15 ns; • Modélise les fils entre les portes (symbolique) Inport <= Outport ; • Nom de fonction dans la déclaration: signal résolu plusieurs sources possible / résolution du conflit (voir cours suivant) • REGISTER ou BUS : signal gardé (guarded)ne pourra être affecté que si le signal GUARD est TRUE (vu plus loin) • Possède un passé, une valeur, un futur proposéle driver du signal Yannick HERVE - ENSPS

  21. Classes d ’objets :Terminal terminal_declaration ::= terminal identifier_list : subnature_indication ; • Permet de nommer des nœuds (ne porte pas de valeur !!!) • Une nature est définie par deux types réelsNATURE name IS acr ACROSS thr THROUGH ref REFERENCE ;Across = effort / through = fluxv-i, °C-W, m-N, rad.s-1-N.m, n.A-Wb, Pa-l/s, ...SUBTYPE v IS real ; SUBTYPE i IS real ;NATURE electrical IS v ACROSS i THROUGH gnd REFERENCE ;TERMINAL vp,vm : electrical ; • Vecteur de nature NATURE elec_vec IS ARRAY(natural RANGE <>) of electrical ; • Record de nature Yannick HERVE - ENSPS

  22. Classes d ’objets :Quantity • « Signaux continus » du simulateur analogique • Free Quantity (n ’est pas attachée à un TERMINAL)QUANTITY Q : real := expression; Valeur initiale implicite 0.0 (dépend de l’outil) • Branch Quantity QUANTITY [across_aspect] [through_aspect] terminal_aspect ;QUANTITY V12 across I1 through t1 to t2 ;QUANTITY V1,V2 across t1; -- aliasQUANTITY I1,I2 through t1; -- branches parallèles • Implicit QuantityQUANTITY Q : real := expression;Q’dot, Q’integ existent toujours et sont créées si besoinQUANTITY QV : real_vector (3  downto 0) ;QV’dot, QV’integ sont valides Yannick HERVE - ENSPS

  23. Classes d ’objets :Terminal/Quantity : exemples • terminal t1,t2 : electrical ;terminal t3, t4 : electrical_vector (1 to 5); • quantity v12 across i1, i2 through t1 to t2 ; définit une tension et deux courants • quantity v31 across i3 through t3 to t2 ; • quantity v24 across i4 through t2 to t4 ; • quantity v34 across i5 through t3 to t4 ; • Définir un système étoile,un système triangle(terminaux scalaires) • Définir un système N-phases étoile, N-triangle (N inconnu) Yannick HERVE - ENSPS

  24. Sémantique de connexion • Spécification d ’entité : PORTS : classe, type et mode des connexions (et valeurs par défaut) GENERIC : constantes passées à l ’élaborationENTITY exemple IS generic (par1,par2,par3:real;par4:time:= 3 ns) port (signal sig :{in|out|inout|linkage|buffer} real; quantity q: {in|out} real ; terminal vp,vm : electrical);BEGIN {instructions passives = pas d’affectations de signal}END exemple; • Les comportements possibles (par port)event driven : port de classe signalsignal flow : port quantity ou terminal à une seule quantitéconservatif : port terminal et deux quantités définies Yannick HERVE - ENSPS

  25. Sémantique de connexion : Event driven • ENTITY exemple IS port (signal sig :{in|out|inout|linkage|buffer} real);END exemple; • Un port de classe signal ne peut être branché que sur un signal ou sur un port de même type, les modes doivent être compatibles • Un port de mode OUT n ’est pas lisible dans l ’architecture • LINKAGE, BUFFER : modes inutilisés en pratique • Un port de mode INOUT est forcément résolu • Le mot clef OPEN permet de laisser ouvert Yannick HERVE - ENSPS

  26. Sémantique de connexion : Event driven : formal/actual port Avec : ENTITY source IS PORT (SIGNAL a : in real; b : out real);END; -- a et b sont les ports formels On a: ENTITY testdetector IS PORT (SIGNAL extin : IN real; extout : OUT real);END;LIBRARY disciplines; USE disciplines.Electromagnetic_system.ALL;ARCHITECTURE test OF testdetector IS SIGNAL pin,pout:real;BEGIN u1:ENTITY source(pulse_proba) PORT MAP (extin,extout); u2:ENTITY source(pulse_proba) PORT MAP (pin,pout); END; -- extin,extout,pin,pout sont des ports réels (actual) Yannick HERVE - ENSPS

  27. Sémantique de connexion : Signal Flow • ENTITY exemple IS port (QUANTITY Q1 : in real, Q2 : out real); END exemple; • Support de l ’interconnexion à temps continu • Permet de modéliser sous forme de schéma-blocsUne entrée n ’influence pas une sortie(impédance d ’entrée infinie, impédance de sortie nulle) • Les quantité connectées doivent être de même type • Les ports de classe Quantity connectés doivent être compatibles • Pas encore supporté par les outils Yannick HERVE - ENSPS

  28. Sémantique de connexion : Signal Flow : exemple Avec : ENTITY block1 IS PORT (QUANTITY a : in real; b : out real);END; On a: ENTITY black_boxes IS PORT (QUANTITY extin : IN real;QUANTITY extout : OUT real);END;LIBRARY disciplines; USE disciplines.Electromagnetic_system.ALL;ARCHITECTURE test OF black_boxes IS QUANTITY ploc:real; -- Free QuantityBEGIN u1:ENTITY block1(beh) PORT MAP (extin,ploc); u2:ENTITY block1(beh) PORT MAP (ploc,extout); END; Yannick HERVE - ENSPS

  29. Sémantique de connexion : Conservatif : Kirchoff généralisé • ENTITY exemple IS port (TERMINAL T1,T2 : electrical); --PAS DE MODE/VALEUREND exemple; • Interconnexions à temps continu conservatif • Permet de tenir compte influences Entrées/Sorties • TERMINAL connectés doivent être de même nature KIRCHOFF LAW : Si T1 est branché sur T2 et si les aspects ACROSS et THROUGH sont définis alors ACROSS( T1 ) = ACROSS( T2 ) et THROUGH( T1 ) + THROUGH( T2 ) = 0 Quelle que soit la nature : multidiscipline Yannick HERVE - ENSPS

  30. Sémantique de connexion : Conservatif : Netlist analogique • ENTITY R IS port (TERMINAL T1,T2 : electrical); END R;ENTITY C ISport (TERMINAL T1,T2 : electrical); END C; • ENTITY RC IS port (TERMINAL T1,T2 : electrical); END RC;ARCHITECTURE ONE OF RC IS TERMINAL LocalT:electricalBEGIN R:ENTITY R(beh) PORT MAP (T1 => T1,T2 => LocalT); C:ENTITY C(beh) PORT MAP (T1 => LocalT,T2 => T2);END ; • Association par nommage : Formal => Actual Yannick HERVE - ENSPS

  31. Opérateurs • 6 classes d ’opérateurs et niveaux de priorité(l ’évaluation d ’une expression commence par la priorité la plus haute) • logic : and, or, nand, nor, xor, xnor, sll, sla, sra, srl, rol, ror (s ’appliquent à boolean et bit, surcharge sur IEEE_1164-MVL9) • relationnels : =, /=, <, <=, >, >= (s ’appliquent à tout sauf fichiers, résultat de type BOOLEAN) • addition : +, -, & (& : concaténation sur type STRING) • signe : +, - • multiplication : *, /, mod, rem • divers : **, abs, not • Opérateurs surchargeables, pas de changement de priorités Priority Yannick HERVE - ENSPS

  32. Instructions du langage (les plus importantes) • Une architecture contientsimultaneous statements (doivent être évalués à chaque ASP) f == g / procedural / if use / case use / nullconcurrent statements (évalués si besoin à chaque LSP) process / affectation de signal instanciation break, assertion • Un process contient séquential statements (évalués en séquence dans le process) affectation signal, affectation variable wait if, case, loop ... Disponibles aussi en Procedural (sauf => et wait) Yannick HERVE - ENSPS

  33. Instructions séquentielles, concurrentes, simultanées :Instructions séquentielles • Permet de fabriquer des PROCESS (instruction concurrente utilisateur) • Flow control : test et boucles • Gestion du temps : Wait • Affectation variables • Affectation signal et mécanismes temporels associés • Auto test : Assert / report Yannick HERVE - ENSPS

  34. Instructions séquentielles, concurrentes, simultanées :Inst. Séqu. : affectations (1) • Affectation variables V := f (V|S|Q) (la valeur de l ’objet) tab1 := tab2; tableaux tab(3 to 5) := (1,2,4);Affectation signal : proposition de transaction[label :] target <= [transport | [reject time ] inertial] waveform ; avectarget ::= name | aggregateet waveform ::= wf_element {,wf_element} | unaffected lab1: S <= ’0’; -- affectation à délai deltaS <= ’0’ after 3 ns; -- transport par défautlab:(S1,S2)<= (’0’,’1’) after 3 ns, (’1’, ’0’) after 10 ns;S1 <= inertial s2 after 4 ns; -- anti-physiqueS1 <= reject 10 ns inertial S2 after 4 ns; -- mieux Yannick HERVE - ENSPS

  35. Instructions séquentielles, concurrentes, simultanées :Inst. Séqu. : affectations (2) • Notion de forme d ’onde (waveform) s <= a after ta, b after tb, …, x after tx ;la liste (ta, tb, tc, …, tx) doit être ordonnée • Mécanisme temporel : transport, inertiel, réjection • Sources possibles : constantes, variables, signaux, quantités S <= objet • Notion de transaction et d’événementsi S vaut x et y /= x : S <= y after 3 ns; événement S <= x after 3 ns; transaction sans event • Notion de pilote (driver)S <= x after 5 ns;ne modifie pas la valeur de SS sera éventuellement modifiée quand l ’horloge avancera à to+ 5 ns • Notion de source uniqueUn signal ne peut être affecté que par une seule source (sauf résolution : voir cours suivant) Yannick HERVE - ENSPS

  36. Instructions séquentielles, concurrentes, simultanées :Instructions séquentielles : WAIT • Instruction la plus importante de la partie numériquewait [on signal_list] [until bool_cond] [for time] ;Pour au plus timesi un événement survient sur un signal de la liste signal_listla condition booléenne bool_cond est évaluée : si elle est fausse on se remet en attente si elle est vraie on passe à la ligne suivante.Tous les PROCESS sont sur un WAIT : blocage On recherche le prochain event dans la liste d ’événement On avance l ’horloge de simulation, nouveau LSPFormes simplifiées : wait; wait on a; wait on a,b; wait for 10 ns; -- time out wait until a=‘1’; -- front; Yannick HERVE - ENSPS

  37. Instructions séquentielles, concurrentes, simultanées :Inst. Séqu. : flow control - test / sélection • Test[label:]if cond_bool then {séquence instructions séquentielles}elsif cond2 then {séquence instructions séquentielles}else {séquence instructions séquentielles}end if ; • Sélection [label:]case expression iswhen value_1 => {séq. Inst. Séqu. 1}when value_2 => {séq. Inst. Séqu. 2}when others => {séq. Inst. Séqu.}end case ; Yannick HERVE - ENSPS

  38. Instructions séquentielles, concurrentes, simultanées :Inst. Séqu. : flow control - boucles • [label:][schéma d ’itération] loop {séquence instructions séquentielles}end loop [label] ; • Infinie : loop N :=N+1; end loop;Conditionnelle : Itérative :while conditions loopfor i in 1 to 100 loop {séqu. Instr. Séqu.} {séqu. Instr. Séqu.} [exit;] [exit;][next[label]] end loop ; end loop ;Boucle : i déclaré de facto / «i in A’range» possiblenext [label] when cond_bool / exit [label] when cond_bool Yannick HERVE - ENSPS

  39. Instructions séquentielles, concurrentes, simultanées :Instructions séquentielles : auto-test • Envoi d ’un message à la console[lab:]report expr [severity note|warning|error|failure] ; • Surveillance d ’une condition[lab:] assert cond_bool [report expression] [severity note|warning|error|failure] ;Si cond_bool est fausse alors expression est envoyée à la console associé à un niveau d ’erreur.assert teff<tsetup report «Set up violé» severity error ; Yannick HERVE - ENSPS

  40. Instructions séquentielles, concurrentes, simultanées :Instructions concurrentes • Support de la modélisation/simulation à temps discretCes instructions sont évaluées, si besoin, à chaque LSP • Process • Affectation concurrente de signal • Instanciation de composant • Assertion concurrente • Break (voir synchronisation des noyaux) • Prochain cours • Block • Concurrent procedure • Generate Yannick HERVE - ENSPS

  41. Instructions séquentielles, concurrentes, simultanées :Instructions concurrentes : Process • Instruction concurrente « Utilisateur »[label :][postponed]process -- postponed: vu plus tard {zone de déclaration / pas de signaux}begin {sequ. Instr. Sequ.} end[postponed]process [label] ; • Un PROCESS vit toujours (il est global) éventuellement suspendu sur un wait • Un PROCESS est itératif (boucle sans arrêt) sauf si wait • Variante : ancienne méthode (issue de VHDL 7.2)[label :] Process(signal_liste) -- liste de sensisbilité {zone de déclaration}begin {sequ. Instr. Sequ. sans wait} end process [label] ; Yannick HERVE - ENSPS

  42. Instructions séquentielles, concurrentes, simultanées :Instructions concurrentes : Process (exemple) process variable sp_res : integer_vector(0 to c_nb-1) := (others=>0); variable index_tab : integer;beginwait on vtest'dot'above(0.0),watchdog;if watchdog'event thenfor i in sp_res’range loop spectre <= real(sp_res(i));wait for 1 us;end loop; spectre <= 0.0;end if;end process; processbegin wait for analysis_time;watchdog <= not watchdog;end process; Yannick HERVE - ENSPS

  43. Instructions séquentielles, concurrentes, simultanées :Instructions concurrentes : Affectation • Raccourci d’ écriture toujours remplaçable par : process + affectation séquentielle + tests • Forme simple :[label:]nom_ou_aggregat <= [options] waveform ;options ::= [guarded] [transport | [reject time ] inertial] • Forme conditionnelle : [label:]nom_ou_aggregat<=[options]waveform1 when cond1 else waveform2 when cond2 else . . . waveformN when condN ; • Forme sélective :[label:] With expression selectnom_ou_aggregat <= [options] waveform1 when list1, . . .waveformN when listN ; Yannick HERVE - ENSPS

  44. Instructions séquentielles, concurrentes, simultanées :Instructions concurrentes : Instanciation • Prendre une copie (une instance) d ’un modèle la personnaliser, la configurer, la brancher • label : entity nom_du_compo(archi_compo) [generic map (formal => actual)] [port map(formal => actual)];Recherche de l ’entité dans les « library » référencéessi archi_compo n ’apparaît pas : la dernière analysée (!!??outil) • Attention : label obligatoire (plusieurs instances d’un modèle) • Configuration : association composant / modèle de la base vue au cours suivant Yannick HERVE - ENSPS

  45. Instructions séquentielles, concurrentes, simultanées :Instr. Conc. : Instanciation (exemple) • entity RS isport (S,R : bit ; Q,Qb : out bit);end entity;architecture structural of RS issignal n1_out, n2_out : bit ;begin nand1: entity nandg port map(in1=>S, in2=>n2_out, outp=>n1_out); nand2: entity nandg generic map (5 ns) port map(R,n1_out, n2_out); Q <= n1_out; Qb <= n2_out;end structural; Yannick HERVE - ENSPS

  46. Instructions séquentielles, concurrentes, simultanées :Instructions concurrentes : Assertion • Permet de surveiller en permanence une condition • [lab:] [postponed]assert cond_bool [report expression] [severity note|warning|error|failure] ; • Process équivalent :[lab:][postponed]Process (signaux_de la conditions) begin assert cond_bool [report expression] [severity note|warning|error|failure] ; end process [lab] ; Yannick HERVE - ENSPS

  47. Instructions séquentielles, concurrentes, simultanées :Instructions simultanées • Support de la modélisation/simulation à temps continuCes instructions sont évaluées à chaque ASP • Simple simultaneous statement : == • Forme conditionelle : if cond use • Forme sélective : case cond when • Forme procédurale : Procedural Yannick HERVE - ENSPS

  48. Instructions séquentielles, concurrentes, simultanées :Instructions simultanées : Forme simple • Simple simultaneous statements (doivent être évalués à chaque ASP)f == gf et g deux fonctions NL contenant des quantités le simulateur s ’assure qu ’à chaque ASP f-g=0.0aux tolérances prêt (équation caractéristique) Ces équations sont explicites ou implicites Exemple : Q**2 + Y ’dot == sqr(Y) - Q ’integ ; C*U == Q ; Q == I’integ; • ENTITY R ISgeneric (R_value : real := 1_000.0)port (TERMINAL vp,vm:electrical);END;ARCHITECTURE equ OF R ISQUANTITY V ACROSS I THROUGH vp TO vm; BEGIN V == R_value * I;END; Yannick HERVE - ENSPS

  49. Instructions séquentielles, concurrentes, simultanées :Instructions simultanées : Choix • Choix du jeu d ’équations en fonction de conditions • La forme conditionelle :label :IF cond_1 USE -- ASP = evaluation condx {equations analogiques} -- !! BREAK ELSIF cond_2 USE {equations analogiques} … ELSE {equations analogiques}END USE label; • La forme sélective : label : CASE expr USE WHEN value1 => {equations analogiques} WHEN value2 => {equations analogiques} END CASE label Yannick HERVE - ENSPS

  50. Instructions séquentielles, concurrentes, simultanées :Instructions simultanées : Procedural • Fabriquer un « Simultaneous Statement » à partir de séquentiel[label :] PROCEDURAL [IS] {declaration_part} -- NORME : réévalués /exécutionBEGIN -- (pas de mémoire ?) {sequential_statement} -- sauf wait, break, and <=END PROCEDURAL [label] • Sommateur analogique pondéré Avec beta:real_vector et vp(i) ACROSS T(i) to GND (taille identique inconnue)ARCHITECTURE …BEGIN PROCEDURAL IS variable bvs : real := 0.0; BEGIN bvs := 0.0; -- si memorisation FOR i IN beta’range loop -- Quantités externes bvs := bvs + beta(i) * vp(i); -- sont vues comme des END LOOP; -- variables Qout := bvs; END PROCEDURAL;END; Yannick HERVE - ENSPS

More Related