Cours VHDL Chap 3: sémantique VHDL

Slides:



Advertisements
Présentations similaires
Du Software au Hardware
Advertisements

Prmt For imbriqués.
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Sayada le 03 Mars 2009 Réalisé par : Mr. SOUISSI Chaouki
Les technologies 3D appliquées à la formation aéronautique ETAT DE L ART et PERSPECTIVES.
Liste générique dans Linux 2.6 Source : Understanding the Linux kernel Chap3 processes p.87.
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
LA COMPREHENSION EN LECTURE L'extension du lexique La compréhension des phrases La compréhension des textes Conclusion Introduction Le travail sur la compréhension.
Opérations sur les ouvrages électriques
Ing Mohamed MASMOUDI Cours VHDL Ing Mohamed MASMOUDI
Cours #9 Conception et réalisation de processeurs à usage général
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
Cours #6 Conception d’unités de contrôle
Le conditionnel. -ais-ions -ais-iez -ait-aient Les fins.
Les mots de liason.
2 - Introduction à VHDL-AMS (1 à 23 = 1h45)
Le VHDL De nos jours, les circuits numériques de haute performance sont habituellement créés à partir de descriptions en langages de haut niveau. Nous.
La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013.
Cours #8 Flot de conception d’un circuit numérique
La programmation objet Illustration de la POO en Pascal
Approche mémoire partagée Threads – Paradigme de lapproche – Objets exécutés par les processeurs threads vs processus, – un thread possède : Ses registres,
SEG 3601 Élaboration de cas d'utilisation avec UCEd
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Cours #4 Éléments à mémoire et circuits séquentiels synchrones de base
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
SCL S7-GRAPH SIEMENS vous souhaite la bienvenue 2.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Plan 1-Introduction. 2-Standard VHDL-AMS. Modélisations:
Cours #7 Vérification d’un modèle VHDL
Cours #5 Conception de chemins des données
Chapitre 9 Les sous-programmes.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
COMPOSANTS PROGRAMMABLES
LANGAGE PASCAL Introduction rapide….
Modélisation VHDL d’un chemin des données
Décodeurs et encodeurs : sujets de ce thème
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Représentation et opérations.
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
Banc d’essai pour un circuit combinatoire
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Synthèse d’un circuit.
Modélisation VHDL du chemin des données d’un processeur à usage général Sujets de ce thème
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse de machines.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Description d’un circuit.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Entrées et sorties par.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale.
Méthodologie de conception Outils de conception
3-Présentation d’un µP simple
Concepts intermédiaires de VHDL
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
Synthèse et implémentation d’un circuit combinatoire
Journées d'études Faible Tension Faible Consommation 14, 15, 16 mai Gwenolé CORRE, Nathalie JULIEN, Eric SENN, Eric MARTIN LESTER, Université de.
Les tests.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Banc d’essai pour un.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Objets des catégories.
Introduction au VHDL - R.WEBER - Polytech'Orleans
Cours n° 3 Traitements en Java
Architecture et technologie des ordinateurs II
Implémentation de la division sur FPGA
VHDL pour circuits séquentiels
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Le VHDL Programmation des CPLD et FPGA avec Quartus II ENSET d'Oran / IUFM Aix Marseille - mai
1 Cours 6 Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation.
Scripts et fonctions Instructions de contrôle
Les Instructions Itératives (Les Boucles)
Description d’un circuit combinatoire en VHDL
Chapitre 01: Structure d'un module VHDL
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Transcription de la présentation:

Cours VHDL Chap 3: sémantique VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

Toutes les unités sont concurrentes entre elles Sémantique Deux types d’expressions : Séquentielles Expressions dans un PROCESS Concurrentes Expressions à l’extérieur d’un PROCESS Les PROCESS sont évalués de manière concurrente Bus d ’adresses Toutes les unités sont concurrentes entre elles Bus de données Bus de contrôle et de commande CPU (Séquentiel) Interfaces d’E/S Mémoire (Séquentiel) (Séquentiel) Cours VHDL M. MASMOUDI

Les process Les processus constituent les éléments calculatoires de base du simulateur. Au niveau descriptif, ils peuvent être explicites (PROCESS) ou implicites (instructions concurrentes). Du point de vue de l’exécution, on peut affirmer que « tout est processus ». Un processus vit toujours depuis le chargement du code exécutable dans le simulateur. Il ne peut prendre fin qu’avec la simulation mais peut par contre être endormi pour une durée plus ou moins longue. L’instruction WAIT, obligatoire au moins une fois, synchronise le processus. Elle possède trois formes pouvant être combinées : WAIT ON événement; WAIT FOR durée; WAIT UNTIL condition; WAIT; Le processus s’exécute au moins une fois jusqu’à rencontrer le WAIT, puis la condition de réveil une fois validée, l’exécution continue de façon séquentielle et cyclique (après la fin, le début) Cours VHDL M. MASMOUDI

Exemple process En VHDL les instructions d’une architecture sont évaluées en permanence et toutes simultanément. Pour avoir un fonctionnement séquentiel il faut définir un processus. Library ieee; use ieee.std_logic_1164.all ; entity BASCULE_D is port(D, CLK: in std_logic; Q: OUT std_logic ); end BASCULE_D; architecture ACH_BASCULE_D of BASCULE_D is begin process (CLK) if (CLK=‘ 1 ’) then Q <= D ; endif ; end process; end ACH_BASCULE_D; Un processus (Process) est un groupe délimité d’instructions caractérisé par : Exécution du processus à chaque changement d’état d’un des signaux auxquels il est déclaré sensible Exécution séquentielle des instructions du processus Les modifications apportées aux valeurs de signaux par les instructions prennent effet à la fin du processus CLK D Q Cours VHDL M. MASMOUDI

Assignement Utilisables en mode concurrent (hors processus) Assignation inconditionnelle Forme générale : signal <= expression ; Assignation conditionnelle signal <= {expression when condition} else expression; Assignation sélective with selecteur select signal <= {expression when valeur selecteur,} {expression when others}; Utilisables en mode concurrent (hors processus) Bus_in <= “0000” ; A <= B when (C=‘1’) else D; A <= B when S=T else C when S=U else ‘0’; architecture ARCH_MUX of MUX is signal ETAT : std_logic_vector(1 downto 0); signal X, A, B, C, D : std_logic ; begin with ETAT select X <= A when “00”, B when “01”, C when “10”, D when others ; end ARCH_MUX ; Cours VHDL M. MASMOUDI

Génération Forme générale : Forme conditionnelle : etiquette : for variable_de_boucle in val_debut to val_fin generate {instruction concurrente}; end generate etiquette; Il est possible d’imbriquer plusieurs instructions generate, chacune possédant son étiquette et sa variable de boucle propres Forme conditionnelle : {if instruction then generate {instruction combinatoire} end generate; } Cours VHDL M. MASMOUDI

Exemple registre à décalage Library ieee; use ieee.std_logic_1164.all ; entity REG_SP is port(CLK,RESET,SI: in std_logic; PO: OUT std_logic_vector(0 to 31); end REG_SP; use work.RTLPKG.all ; -- accès aux comp. architecture ACRHREG_SP of REG_SP is signal TEMP: std_logic_vector(0 to 31); begin premier: DFF port map (SI, CLK, TEMP(0)); autres : for I in 0 to 30 generate boucle: DFF port map (TEMP(I),CLK,TEMP(I+1)); end generate PO <= TEMP; end ARCHREG_SP; CLK SI PO(0) PO(1) PO(31) DFF est la déclaration d ’un composant (bascule D) du paquetage RTLPKG Génération du 1er étage du registre à décalage Génération itérative des 31 étages suivants Cours VHDL M. MASMOUDI

Séquentielles Instruction de boucle « for…loop » : [label:] for variable_boucle in intervalle loop {instructions} end loop [label]; Instruction de boucle « while…loop » : [label:] while condition loop {instructions} Instructions « next » et « exit » : [label:] next [loop_label] [when condition]; [label:] exit [loop_label] [when condition]; Instruction de test « if » : [label:] if condition then instructions { elsif condition then instructions } else end if [label] ; Instruction de sélection « case» : [label:] case expression is { when choices} => {instructions } [ when others => {instructions } end case [label] ; Cours VHDL M. MASMOUDI

Exemples séquentiel IF a = ‘1’ THEN s := ‘1’; ELSIF b = ‘1’ THEN ELSE END IF; boucle1: -- étiquette optionnelle FOR i IN 0 TO 10 LOOP b := 2**i; - - calcul des puissances de 2 WAIT FOR 10 ns; -- toutes les 10 ns END LOOP; CASE entree IS WHEN ’11’ => s:= ‘1’; WHEN ’01’ => s:= ‘1; WHEN ‘10’ => s:= ‘1’; WHEN OTHERS => s :=‘0’; END CASE; Cours VHDL M. MASMOUDI

Concurrentes Entre le BEGIN et le END de l’ARCHITECTURE on est dans un contexte d’instructions concurrentes. Ce qui les caractérisent : L’ordre des instructions concurrentes est indifférent, Pour le compilateur, chaque objet concurrent est en fait un processus, Les objets concurrents (partie d’un circuit) sont reliés entre eux par des signaux. Cours VHDL M. MASMOUDI

Exemple équivaux à une instruction concurrente Affectation simple s <= a AND b AFTER 10 ns; Le processus équivalent demande cinq lignes au lieu d’une : P1: PROCESS BEGIN WAIT ON a, b ; END PROCESS Cours VHDL M. MASMOUDI

Exemple équivaux à une instruction concurrente Affectation conditionnelle Neuf <= ‘1’ WHEN etat = ‘1001’ ELSE ´0´ ; Le processus équivalent remplace le WHEN par une instruction IF : P2: PROCESS BEGIN WAIT ON etat ; IF etat = ’1001’ THEN neuf <= ´1´ ; ELSE neuf <= ´0´ ; END PROCESS; Cours VHDL M. MASMOUDI

Les sous programmes Ils sont des modules de code séquentiel qui n’utilisent pas l’instruction wait. Les 2 catégories de sous-programmes sont : in out inout a b c Procédure in F(a,b) a Fonction b Paramètres de classe : signal, constant, variable ou file Paramètres de classe : signal, constant ou file jamais variable Partie déclarative : définition des objets (données, types, …) Corps du sous-programme : suite d’instructions séquentielles Cours VHDL M. MASMOUDI

Syntaxe sous programme Description des sous-programmes Subprogram_body ::= procedure nom [(liste_des_paramètres_formels)] |function nom [(liste_des_paramètres_formels)] return type is zone déclarative begin zone d’instructions séquentielles end [procedure |function] [nom]; liste_paramètres_formels ::= [classe] liste_de_noms: [mode] sous_type [:=expression] Appel des sous-programmes Function_call ::= function_name [formal_part =>] actual_part; Procedure_call ::= [label:] procedure_name [formal_part =>] actual_part; Cours VHDL M. MASMOUDI

Exple function entity func is port (a: in bit_vector (0 to 2); m: out bit_vector (0 to 2)); end func; architecture example of func is function simple (w, x, y: bit) return bit is begin return (w and x) or y; end; process (a) m(0) <= simple(a(0), a(1), a(2)); m(1) <= simple(a(2), a(0), a(1)); m(2) <= simple(a(1), a(2), a(0)); end process; end example; Cours VHDL M. MASMOUDI

Exple procédure entity proc is port (a: in bit_vector (0 to 2); m: out bit_vector (0 to 2)); end proc; architecture example of subprograms is procedure simple (w, x, y: in bit; z: out bit) is begin z <= (w and x) or y; end; process (a) simple(a(0), a(1), a(2), m(0)); simple(a(2), a(0), a(1), m(1)); simple(a(1), a(2), a(0), m(2)); end process; end example; Cours VHDL M. MASMOUDI

Les fichiers procedure READLINE(F: in TEXT; L: out LINE); procedure WRITELINE(F: out TEXT; use STD.TEXTIO.all; type TEXT is file of STRING; type LINE is access STRING; procedure READ(L: inout LINE; VALUE: out BIT; GOOD: out BOOLEAN); VALUE: out BIT); procedure WRITE(L: inout LINE; VALUE: in BIT; JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0); file TOTO: TEXT is in “toto.txt”; file TITI: TEXT is out “titi.txt”; Cours VHDL M. MASMOUDI

Les attribues Cours VHDL M. MASMOUDI signal_name’event returns the Boolean value True if an event on the signal occurred, otherwise gives a False signal_name’active returns the Boolean value True there has been a transaction (assignment) on the signal, otherwise gives a False signal_name’transaction returns a signal of the type “bit” that toggles (0 to 1 or 1 to 0) every time there is a transaction on the signal. signal_name’last_event returns the time interval since the last event on the signal signal_name’last_active returns the time interval since the last transaction on the signal signal_name’last_value gives the value of the signal before the last event occurred on the signal signal_name’delayed(T) gives a signal that is the delayed version (by time T) of the original one. [T is optional, default T=0] signal_name’stable(T) returns a Boolean value, True, if no event has occurred on the signal during the interval T, otherwise returns a False. [T is optional, default T=0] signal_name’quiet(T) returns a Boolean value, True, if no transaction has occurred on the signal during the interval T, otherwise returns a False. [T is optional, default T=0] Cours VHDL M. MASMOUDI

Les attribues S<=« 010 »; Wait for 15 ns; Wait for 10 ns; Cours VHDL M. MASMOUDI