Utilisé au début pour la modélisation et la simulation avant d être adopté pour la synthèse logique. Toute la syntaxe n est pas synthétisable!!!

Documents pareils
FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Représentation d un entier en base b

Le langage VHDL. Eduardo Sanchez EPFL

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

SIN-FPGA DESCRIPTION PAR SCHEMA

IFT1215 Introduction aux systèmes informatiques

QUESTION 1 {2 points}

Manipulations du laboratoire

GPA770 Microélectronique appliquée Exercices série A

T. BLOTIN Lycée Paul-Eluard SAINT-DENIS

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

V- Manipulations de nombres en binaire

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Informatique Générale

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

IV- Comment fonctionne un ordinateur?

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation


EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

UE Programmation Impérative Licence 2ème Année

VIII- Circuits séquentiels. Mémoires

Codage d information. Codage d information : -Définition-

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

ELP 304 : Électronique Numérique. Cours 1 Introduction

Licence Sciences et Technologies Examen janvier 2010

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Université de La Rochelle. Réseaux TD n 6

La mémoire. Un ordinateur. L'octet. Le bit

Algorithmique et Programmation, IMA

DM 1 : Montre Autoquartz ETA

Cours Informatique 1. Monsieur SADOUNI Salheddine

Logiciel de Base. I. Représentation des nombres

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Conception de circuits numériques et architecture des ordinateurs

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Conventions d écriture et outils de mise au point

Génie Logiciel avec Ada. 4 février 2013

Logique séquentielle

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Cours 1 : Qu est-ce que la programmation?

Présentation du PL/SQL

Représentation des Nombres

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

IRL : Simulation distribuée pour les systèmes embarqués

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

CONFIGURATION DE L AUTOMATE SIEMENS

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Éléments d'architecture des ordinateurs

Système binaire. Algèbre booléenne

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Conversion d un entier. Méthode par soustraction

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

ASR1 TD7 : Un microprocesseur RISC 16 bits

Algorithmique & programmation

Architecture des ordinateurs

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Organisation des Ordinateurs

Cours 1 : La compilation

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Chapitre VI- La validation de la composition.

Microprocesseur + Logiciel

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Conception Systèmes numériques VHDL et synthèse automatique des circuits

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Plan du cours. Historique du langage Nouveautés de Java 7

Initiation à la Programmation en Logique avec SISCtus Prolog

Conception Systèmes numériques VHDL et synthèse automatique des circuits

Compilation (INF 564)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Quoi de neuf en LabVIEW FPGA 2010?

TP1 : Initiation à Java et Eclipse

Algorithme. Table des matières

Les structures de données. Rajae El Ouazzani

Parallélisme et Répartition

Concept de machine virtuelle

Algorithmique et programmation : les bases (VBA) Corrigé

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Notions fondamentales du langage C# Version 1.0

Une version javascript sera disponible directement dans le cours prochainement.

Chapitre I Notions de base et outils de travail

Propagation sur réseau statique et dynamique

Programmation C. Apprendre à développer des programmes simples dans le langage C

TD Architecture des ordinateurs. Jean-Luc Dekeyser

I- Définitions des signaux.

Ordinateurs, Structure et Applications

TP 1. Prise en main du langage Python

Le multiplexage. Sommaire

Chapitre 1 I:\ Soyez courageux!

Cours Informatique Master STEP

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Cours 3 : L'ordinateur

ACTIVITÉ DE PROGRAMMATION

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

STAGE IREM 0- Premiers pas en Python

Transcription:

Le langage VHDL.. Présentation VhsicHardware Description Langage (Vhsic= VeryHigh Speed Integrated Circuit) est un langage de description de matériel et non un langage software comme le C. Standardisé en 987 par l IEEE (Institute Of Electricaland Electronics Engineers) sous la référence IEEE 76-87. Une mise à jour importante a été faite en 993 : IEEE 76-93 est supportée par tous les outils. Utilisé au début pour la modélisation et la simulation avant d être adopté pour la synthèse logique. Toute la syntaxe n est pas synthétisable!!! Permet de décrire un système avec un niveau d abstraction élevé «algorithmique» ou un niveau proche du matériel «gatelevel». Entre les deux se trouve le niveau RTL «RegisterTransfert Level» qui décrit le système sous forme de machine d états. C est le niveau RTL qui est utilisé pour la synthèse car il est moins lourd que le niveau «gatelevel» et il est indépendant de la cible. Le niveau «algorithmique» n est pas forcément synthétisable. 2

.2. La synthèse logique La synthèse logique est l opération qui consiste à traduire le code VHDL en fonctions logiques et bascules prêtes à être connectées dans le silicium. 3.3.. Simulation / synthèse On rencontre deux langages de description de matériel : VHDL (populaire en Europe, proche de Ada «pgmobjet») et Verilog(populaire aux US, proche du C). Le langage VHDL permet de :. Modéliser des circuits pour la simulation 2. Décrire des applications pour circuits ASIC ou programmables (FPGA) Modélisation pour la simulation Description de système matériel Norme IEEE 76 Norme IEEE 76 La totalité de la norme peut être utilisée pour la modélisation Une partie seulement peut être utilisée pour la synthèse X <= after ns; Wait for 2 ns; Signal ent_s : std_logic := Les instructions de gauche ne peuvent pas être utilisées pour la synthèse 4

.3.2. Behavioral/ RTL Une description comportementale «behavioral» décrit un algorithme sans rentrer dans les détails technologiques. Une description «RTL» donne les détails sur la connexion des registres avec la logique combinatoire. 5.4. Niveaux d abstraction Peu de détails, temps de développement court Détails technologiques, description et simulation fastidieuses 6

2.. Premier exemple commentaire Appel librairies a b c portes x y z entité architecture 7 2.2. Deuxième exemple clk reset Clk_div div_out La nouveauté dans cet exemple est le bloc «process». Ce bloc est très pratique pour décrire des unités cadencées par une horloge. On peut écrire plusieurs process, ils s exécutent tous en parallèle 8

2.3. Trois règles de base Les commentaires commencent par un double tiret «--» et se terminent à la fin de la ligne. VHDL ne distingue pas les majuscules des minuscules : inter et INTER désignent le même signal Une instruction se termine par un «;» les espaces ne sont pas significatifs 9 2.4. La librairie IEEE Le standard «IEEE.64» définit une librairie avec un certain nombre de packages dont certains sont indispensables pour tout programme VHDL. Les packages doivent être appelés avant la déclaration de l entité. L extension «.all» du nom de la librairie signifie qu on intègre tout le contenu.

2.4.. Le package std_logic_64 C est ici qu est défini le type «std_logic» qui est une extension du type «bit» Les opérations applicables à ce type sont : and,nand,or,nor,xor,xnor,not Le type «std_logic_vector» est un tableau de «std_logic» Agrégats, concaténation 2

La fonction «rising_edge» Cette fonction, définie dans «std_logic_64», est très utile pour détecter les fronts montants d une horloge. Elle vérifie bien que le signal part de avant de passer à. Il existe une fonction similaire qui teste les fronts descendants : «falling_edge» 3 2.4.2. Le package numeric_std C est ici que sont définis certains types pour représenter les entiers ainsi que les opérations arithmétiques. Std_logic_64 Numeric_std On y trouve aussi quelques fonctions de conversion de type comme celle-ci : 4

std_logic_unsigned/ std_logic_signed Ces deux packages sont des extensions du package «numeric_std». Il ne faut appeler qu un seul des deux à la fois!!! std_logic_unsigned: Dans ce package, les fonctions sont redéfinies pour traiter les nombres de type «std_logic_vector» comme des entiers non signés. std_logic_signed: Dans ce package, les fonctions sont redéfinies pour traiter les nombres de type «std_logic_vector» comme des entiers signés. Le complément à 2 est utilisée pour le représentation des nombres négatifs. 5 2.5. Le bloc «Entity» A B C circuit X Y L entité donne une vue externe du circuit. Les signaux d interface constituent dans la terminologie VHDL un «port». Chaque signal doit posséder: un nom(choisi par l utilisateur), un mode(in, out, inout) et un type(std_logic, std_logic_vector, integer, boolean, ). On peut déclarer un paramètre générique avec une valeur par défaut, si une architecture appelle cette entité elle pourra changer la valeur de N. 6

2.6. Le choix des noms Chaque élément manipulé par VHDL (signal, constante, bus, ) doit porter un nom. Celui-ci doit respecter les règles suivantes:. Caractères admis: les 26 lettres de l alphabet, les chiffres décimaux et le caractère _. 2. Le er caractère doit être une lettre. 3. Le caractère _ ne doit pas terminer un nom. 4. Un nom ne doit pas être un mot réservé. 5. La longueur d un nom ne doit pas dépasser une ligne. Il faut respecter une règle simple : un nom doit permettre de deviner le type d information représentée 7 2.7. Le bloc «Architecture» a b c portes x y z Le bloc architecture décrit le système matériel à concevoir, cela peut être un système combinatoire ou séquentiel, simple ou complexe. Il existe trois façons de décrire un circuit électronique en VHDL :. Description de bas niveau : on écrit des équations logiques 2. Description modulaire : il s agit d associer des blocs existants 3. Description comportementale : on décrit le comportement du circuit 8

2.8. Déclarations / instructions Avant «begin»déclaration : Types Signaux Variables composants Après«begin»code : affectations process 9 3.. Syntaxe hors «process» Affectation inconditionnelle Affectation inconditionnelle Affectation sélective 2

3.2. Syntaxe dans «process» Affectation inconditionnelle Affectation inconditionnelle Affectation sélective 2 3.3. Fonctionnement concurrent En dehors du PROCESS, toutes les instructions s exécutent en parallèle. On parle de fonctionnement concurrent, c est le principe des systèmes combinatoires. L ordre des instructions n a aucune importance. C E D B A Ces deux solutions donnent le même résultat après compilation, c est-à-dire le schéma ci-dessus. 22

3.4. Fonctionnement séquentiel Dans un «process», les instructions s exécutent de façon séquentielle. Le «process» s exécute à chaque changement d état d un des signaux de la liste de sensibilité. La mise à jour des variablesse fait au fur et à mesure que les instructions se déroulent. La mise à jour des signauxse fait à la fin du «process», après le «end». Tous les «process» se déroulent en parallèle. L ordre d écriture des process n a aucune importance. Le signal «count_temp» ne sera mis à jour qu à la fin du «process», à la lecture du «end process» 23 4.. Additionneur ( ère façon) c i b a c o s a b c i add2 s c o 24

25 4.2. Additionneur (2 ème façon) c i b a c o s On écrit la table de vérité des sorties de l additionneur, l outil de synthèse trouvera la logique nécessaire 26 4.3. Additionneur (3 ème façon) c i b a c o s Autre façon d écrire les tables de vérité des sorties, une table par sortie cette fois.

27 4.4. Additionneur (4 ème façon) c i b a c o s Encore une table de vérité écrite cette fois dans un process. Rappelez-vous! La syntaxe n est pas la même 28 4.5. Additionneur mots de 2 bits

Description modulaire = schéma Un composant déclaré est comme un circuit intégré placé sur une carte ci a b co s s() c_sig a() b() Les signaux agissent comme des pistes imprimées sur la carte : les broches du CI sont connectées aux pistes 29 4.6. Additionneur mots de N bits Voici un additionneur générique qui utilise l opération arithmétique «+» du package «numeric_std». 3

4.7. Compteur N bits Modulo variable Signal intermédiaire Liste de sensibilité Front montant Connexion de la sortie 3 4.8. Compteur avec reset asynchrone Liste de sensibilité complète Reset prioritaire = asynchrone Mise à de tous les bits 32

4.9. Compteur avec reset synchrone Liste de sensibilité réduite Front d horloge prioritaire = Reset synchrone 33 4.. Compteur avec validation «reset» prioritaire sur «ce» «ce» valide le comptage Pas de changement si ce = 34

À propos du «reset» ère règle : n utiliser de signal «reset» que si cela est nécessaire! De toute façon, toutes les bascules du FPGA sont remises à à la mise sous tension. Les bénéfice sont les suivants :. Moins de logique générée par le compilateur. 2. Moins de problème au moment du routage. 2 ème règle : le signal «reset» doit être synchrone! Les changements d états des bascules ne se font que sur front montant d horloge. Entre deux fronts actifs, on laisse le régime permanent s établir pour éviter les instabilités. 35 4.. Décodeur 2 vers 4 Système combinatoire décrit hors «process» en utilisant la structure «when else» 36

4.2. Multiplexeur Système combinatoire décrit hors «process» en utilisant la structure «when else» 37 4.3. Décodeur hexa 7 segments Système combinatoire décrit hors «process» en utilisant la structure «with select». C est une façon d écrire la table de vérité. 38

4.4. Encodeur de priorité Système combinatoire décrit dans un «process» en utilisant la structure «if then else». On peut décrire une fonction combinatoire dans un «process»! 39 4.5. Calcul de bit de parité Système combinatoire décrit dans un «process» en utilisant la structure «for loop». 4

4.6. Diviseur d horloge par 2 N La division d une fréquence se fait toujours avec un compteur synchrone. 4 4.7.. Conversion binaire vers BCD L algorithme de conversion utilise le fait que tous les chiffres compris entre et 4 produisent un résultat sur un chiffre lorsqu'ils sont multipliés par 2 Par contre tous les chiffres compris entre 5 et 9 donnent un résultat sur 2 chiffres lorsqu ils sont multipliés par 2 chiffre Chiffre*2 dizaines unités 2 2 2 4 4 3 6 6 4 8 8 5 6 2 2 7 4 4 8 6 6 9 8 8 42

4.7.2. Application de l algorithme 4 5 9 En décimal : Nb Nb*2 Exemple en décimal : 2 6=2 2 2 4 3 6 4 8 En BCD : un décalage à gauche Nb Nb*2 En BCD : ajouter 3 et décaler à gauche diz uni 6 +3 = X2 43 4.7.3. Algorithme complet Déclarer un registre de 2 bits : 4 + 4 + 4 + 8 Les 8 bits de poids faible représente le mot binaire à convertir Suivent ensuite 3 quartets dans l ordre : les unités, les dizaines puis les centaines du résultat en BCD Réaliser les étapes suivantes 8 fois. Si les unités sont 5, ajouter 3. Faire la même chose pour les dizaines et les centaines 2. Décaler tout le registre d un bit vers la gauche Operation Hundreds Tens Units Binary HEX F F Start 44

4.7.4. Conversion d un mot 8 bits Mot binaire décalage Opération CENT DIZ UNI 7654 32 START SHIFT 2 SHIFT 3 SHIFT + 3 4 SHIFT + 3 5 SHIFT 6 SHIFT + 3 7 SHIFT + 3 8 SHIFT 2 5 5 45 4.7.5. Code VHDL (binaire -> BCD) 46

5.. Machine d états Une machine d états est un séquenceur qui décrit le fonctionnement d un système séquentiel aussi complexe soit-il. On utilise des symboles : les bulles indiquent les états du système et les arcs orientés définissent les possibilités d évolution. Le passage d un état à un autre est régi par une condition (transition). Les sorties dépendent de l état présent. Etape Etat S= S2= a= S= S2= Etat 2 b= Transition b= Etat3 S= S2= Actions associées 47 5.2. Machines de Moore et Mealy État futur Machine de Moore État présent Entrées Combinatoire Combinatoire Bascule Sorties clk Machine de Mealy Entrées Combinatoire Combinatoire Bascule Sorties clk 48

5.3. Exemple d une perceuse Arret= Haut = et dcy= stop Rotation = Monte = Descend = Rotation = Monte = Descend = down Bas = Haut = up Rotation = Monte = Descend = 49 5.4. Code VHDL de la perceuse Processsynchrone sensible aux signaux clk et arret. C est ici qu évolue le système vers l état suivant 5

Suite code de la perceuse Processcombinatoire qui calcule le prochain état en fonction de l état actuel et active les sorties. 5 6.. Principe du «Testbench» Tester un circuit revient à lui imposer des signaux en entrée stimuli et de regarder comment évoluent les sorties. Si les réponses correspondent à ce que l on attend, le test est bon, sinon il y a erreur. Le testbench est un programme VHDL qui réalise toutes ces opérations. 52

6.2. Circuit combinatoire à tester Nous avons affaire à un circuit combinatoire à 3 entrées et 2 sorties, il s agit d un additionneur complet. 53 6.3. Testbench: déclarations En début de programme, on déclare le composant à tester ainsi que les différents signaux qui vont servir à connecter le composant. 54

6.4. Testbench: simulation La fin du programme sert à connecter le composant et lui imposer des «stimuli» en entrée pour savoir comment il réagit. 55 6.5. Circuit séquentiel à tester Il s agit de simuler un diviseur de fréquence par 8 qui utilise un compteur binaire sur 3 bits. 56

6.6. Testbench: déclarations En début de programme, on déclare le composant à tester ainsi que les différents signaux qui vont servir à connecter le composant. 57 6.7. Testbench: simulation La fin du programme sert à connecter le composant et lui imposer des «stimuli» en entrée pour savoir comment il réagit. 58

6.8. Contrôle des résultats 59