760 likes | 1.41k Views
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
E N D
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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