I. INTRODUCTION - PRESENTATION

Documents pareils
Le langage VHDL. Eduardo Sanchez EPFL

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

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

SIN-FPGA DESCRIPTION PAR SCHEMA

QUESTION 1 {2 points}

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

Annexe : La Programmation Informatique

MAC-TC: programmation d un plate forme DSP-FPGA

Conception et Intégration de Systèmes Critiques

Synergies entre Artisan Studio et outils PLM

NORME INTERNATIONALE INTERNATIONAL STANDARD. Dispositifs à semiconducteurs Dispositifs discrets. Semiconductor devices Discrete devices

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Système binaire. Algèbre booléenne

Manipulations du laboratoire

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

Plan. Department of Informatics

Préparer un état de l art

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

PACKZ System Requirements. Version: Version: Copyright 2015, PACKZ Software GmbH. 1

SNMP for cloud Jean Parpaillon. SNMP4cloud - 1

Présenté par : Sous la direction de :

Introduction au projet ebxml. Alain Dechamps

L ABC de l acquisition de petites entreprises

Quoi de neuf en LabVIEW FPGA 2010?

Master (filière Réseau) Parcours Recherche: Systèmes Informatiques et Réseaux (RTS)

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

Les systèmes embarqués Introduction. Richard Grisel Professeur des Universités Université de Rouen Nacer Abouchi Professeur ESCPE Lyon

CONTEC CO., LTD. Novembre 2010

Monitor LRD. Table des matières

Moteur DC: Comment faire varier sa vitesse?

physicien diplômé EPFZ originaire de France présentée acceptée sur proposition Thèse no. 7178

Thème 3 Conception et vérification d architectures de systèmes sur puce

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

SERVEUR DÉDIÉ DOCUMENTATION

03/2013. Mod: WOKI-60IP/TR. Production code: DTWIC 6000

IFT2255 : Génie logiciel

Anticiper et prédire les sinistres avec une approche Big Data

Deadline(s): Assignment: in week 8 of block C Exam: in week 7 (oral exam) and in the exam week (written exam) of block D

Profil UML pour TLM: contribution à la formalisation et à l automatisation du flot de conception et vérification des systèmes-sur-puce.

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Software and Hardware Datasheet / Fiche technique du logiciel et du matériel

Programmation de services en téléphonie sur IP

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Extrait des Exploitations Pédagogiques

2015 // des formations. programme. Retrouvez toutes ces informations sur enseirb-matmeca.bordeaux-inp.fr

Algorithmique des Systèmes Répartis Protocoles de Communications

Cedric Dumoulin (C) The Java EE 7 Tutorial

Cours 7 : Programmation d une chaîne d acquisition

Formation. Mastère Spécialisé en Sécurité des Systèmes Intégrés & Applications. Post-master s degree in Security of Integrated Systems & Applications

Aiguilleurs de courant intégrés monolithiquement sur silicium et leurs associations pour des applications de conversion d'énergie

Instructions Mozilla Thunderbird Page 1

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

Usine Numérique Intégration Produit Production

Mentions légales (non traduites) Introduction Légendes Schémas de raccordement Configuration de la S16...

Informatique Générale

[ Rencontres Mondiales du Logiciel Libre 2011 Lundi 11 juillet 2011 ] Introduction à l'open Hardware Auteur : Dr Ir Robert Viseur

Outils de CAO. Ecole de microélectronique IN2P octobre 2009, La Londe Les Maures. C. Colledani

Improving the breakdown of the Central Credit Register data by category of enterprises

WINDEV MOBILE. ios SMARTPHONE SUPPORT: IOS, ANDROID, WINDOWS PHONE 8.

PLM 2.0 : Mise à niveau et introduction à l'offre version 6 de Dassault systèmes

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Fiche produit ifinance v4

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

Prise en compte des ressources dans les composants logiciels parallèles

CATALOGUE FORMATION. Product Lifecycle Management. Juin 2013

Topologies et Outils d Alertesd

Projet Active Object

Gouvernance IT : par où commencer? Hubert Lalanne DE, Chief Architect for Industries IBM Software France

Installation de VirtualPOPC-1 sur Ubuntu Server LTS 64bits

Concepts clés associés aux outils logiciels, exemples

Quelle souveraineté numérique à l âge du Cloud Computing? Didier DANET Pôle Action globale et forces terrestres Ecoles de Saint-Cyr Coëtquidan

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Maximum Capacity / Capacité maximal: 10 kg/min

Les marchés Security La méthode The markets The approach

Le multiplexage. Sommaire

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Le développement d'applications informatiques

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Une version javascript sera disponible directement dans le cours prochainement.

Règlement sur les baux visés à la Loi no 1 de 1977 portant affectation de crédits. Appropriation Act No. 1, 1977, Leasing Regulations CODIFICATION

Chapitre 1 : Introduction aux méthodologies de conception et de vérification pour SE

Aspects de droit anglais

Composants Logiciels. Le modèle de composant de CORBA. Plan

Tier 1 / Tier 2 relations: Are the roles changing?

Symantec Protection Center 2.1 Sizing and Scalability Guide

Chapitre 1: Introduction générale

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Quoi de neuf en contrôle/commande et systèmes embarqués (RIO, WSN...)?

OSIATISBIZ UN SERVICE DESK HORS DU COMMUN EQUANT SOLUTIONBIZ PARTAGEONS NOS SAVOIRS EXTRAIT DU Nº9

Le cadre des Web Services Partie 1 : Introduction

IPSAS 32 «Service concession arrangements» (SCA) Marie-Pierre Cordier Baudouin Griton, IPSAS Board

RTDS G3. Emmanuel Gaudin

Language requirement: Bilingual non-mandatory - Level 222/222. Chosen candidate will be required to undertake second language training.

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Transcription:

Université Joseph Fourier Polytech 3i5 / Master 2 NENT Année 2015-2016 I. INTRODUCTION - PRESENTATION Contexte - Conception des systèmes numériques Electronic design automation (EDA) is a category of software tools for designing electronic systems such as printed circuit boards and integrated circuits. The tools work together in a design flow that chip designers use to design and analyze entire semiconductor chips. EDA is also referred to as "Electronic Computer-Aided Design" (ECAD). Wikipedia Cours VHDL Laurence PIERRE (Laurence.Pierre@imag.fr) IP block: In electronic design a semiconductor intellectual property core, IP core, or IP block is a reusable unit of logic, cell, or chip layout design that is the intellectual property of one party. The IP core can be described as being for chip design what a library is for computer programming or a discrete integrated circuit component is for printed circuit board design. Synthesizable cores are delivered in a hardware description language such as Verilog or VHDL. COTS: Un composant pris sur étagère (commercial off-the-shelf ou COTS) désigne un composant fabriqué en grande série et non pour un projet en particulier. La conception et la mise au point d'un circuit digital (e.g., bloc IP), depuis http://users-tima.imag.fr/amfors/lpierre/vhdl son cahier des charges jusqu'à son ultime niveau de description, mettent 2

en oeuvre une panoplie de méthodes. o A partir d'une spécification informelle du système à construire, une formalisation à l'aide d'un langage ad hoc (langage spécialisé pour la description de systèmes matériels, comme VHDL, Verilog,...) pourra servir d'entrée aux divers outils offerts par un environnement de CAO de circuits. o Les outils de synthèse permettent de produire des descriptions du système de plus en plus concrètes, en vue de la réalisation matérielle. o A toutes les étapes, les simulateurs permettent une analyse du comportement du système, en fournissant des chronogrammes traduisant son évolution dans le temps suivant diverses séquences d'entrées. Nous étudierons les techniques utilisées lors de la spécification comportementale d'un système digital (en nous concentrant sur les systèmes de contrôle) et nous verrons comment réaliser la synthèse ASIC de cette spécification (sous forme d'une interconnexion de portes logiques et de registres), et nous évoquerons la synthèse FPGA. A ces deux niveaux de description (avant et après synthèse), des simulations peuvent être réalisées pour obtenir un certain niveau de confiance sur la bonne conception du circuit. Ces simulations peuvent aussi servir à vérifier l'équivalence des comportements avant et après synthèse. Chacun de ces niveaux de spécification peut être associé à une description dans le langage VHDL (une machine d'états est décrite en VHDL au niveau de description dit RTL, et un circuit synthétisé sous forme d'une interconnexion de portes logiques et de registres correspond à une description VHDL dite structurelle). Nous proposerons également une introduction à ces aspects du langage VHDL (standard IEEE 1076) et aux outils associés. Spécification Codage Validation Circuit Spécification comportementale Organisation : - 10 séances de cours VHDL Simulation + contraintes liées au matériel (fréquence, surface, consommation,...) - TP (au CIME-Nanotech - http://www.cime.inpg.fr/) : o 3i5 : 4 séances de TP VHDL suivies de 3 séances de projet o NENT : 4 séances de TP VHDL 3 4

II. VHDL. ENTITES ET ARCHITECTURES II.1 Langages de description de matériel Les langages de description de matériel (Hardware Description Languages) ont vu le jour à la fin des années 1960, dans le but de décrire et simuler les circuits. Entre 1968 et 1975, il y a eu prolifération de langages (et simulateurs), couvrant divers niveaux d'abstraction. Une première tentative de standardisation a eu lieu à partir de 1973, avec le projet CONLAN (CONsensus LANguage). A l'heure actuelle, il existe deux standards IEEE : Verilog et VHDL. De façon générale, les langages de description de matériel peuvent offrir plusieurs des niveaux de description suivants : - algorithmique : modélisation de l'algorithme que le circuit doit réaliser - comportemental (ou système) : modélisation du comportement du circuit (automate, réseau de Pétri,...) - transfert de registres (RTL) : modélisation du circuit par des équations (qui expriment la mise à jour des registres) - portes logiques : modélisation comme une interconnexion de portes logiques (peut être hiérarchique : interconnexion de composants euxmêmes interconnexions de portes logiques) - transistors Verilog (http://www.verilog.com/) est né au début des années 1980 (Gateway Design Automation), avec le simulateur logique Verilog-XL. Il a été mis dans le domaine public en 1990 par Cadence (acquéreur de Gateway Design Automation), puis standardisé par l'ieee en 1995 (IEEE Std. 1364-1995). Il propose les niveaux de description algorithmique, RTL, portes logiques et transistors. Le développement de VHDL a été entrepris en 1981 par le Département de la Défense des USA (DoD), des industriels ont été largement impliqués dans le processus de standardisation. Le premier manuel de référence a été rédigé fin 1984, et les premiers outils ont été proposés en 1986 (vraiment disponibles en 1988). Il a été standardisé par l'ieee en 1987 (IEEE Std. 1076-1987), et des révisions significatives ont eu lieu en 1993, 2000 et 2008. Il propose les niveaux de description algorithmique, RTL et portes logiques. Remarque : Verilog-AMS et VHDL-AMS sont des dérivés de Verilog et VHDL, pour la description de systèmes à signaux analogiques et mixtes. II.2 VHDL - Premières notions VHDL signifie VHSIC (Very High Speed Integrated Circuits) Hardware Description Language. Sa sémantique est décrite en termes du moteur de simulation dirigée par événements, diverses constructions ne sont pas synthétisables. Nous étudions ci-dessous une partie de VHDL'87. Une description VHDL se compose d'une déclaration d'entité et d'une ou plusieurs architectures (généralement à différents niveaux d'abstraction). La déclaration d'entité décrit essentiellement l'interface (les ports d'entrée/sortie). Elle peut aussi spécifier des paramètres génériques qui permettent de modéliser des familles de circuits (paramètres de temps, taille des ports, nombre de composants utilisés, ). Sa forme, légèrement simplifiée, est la suivante : entity nom is generic (paramètres-génériques); port (ports d'entrées/sorties); déclarations diverses: types, constantes ; end nom; 5 6

Les ports d'entrées/sorties peuvent être spécifiés : - in : ports d'entrée, ne peuvent pas être modifiés - out : ports de sortie, ne peuvent pas être lus - inout : ports bidirectionnels, servant en entrée et en sortie - buffer : ports de sortie pouvant être lus Exemple : additionneur 1 bit entity full_adder is port(x,y,cin : in Bit; -- ports d'entrée Sum,Cout : out Bit); -- ports de sortie end full_adder; Les paramètres génériques peuvent être de n'importe quel type, avoir une valeur par défaut, et ils sont considérés comme des constantes. Exemples : entity Add_N_bit is generic(n: Natural); port(a,b: in Bit_vector(N downto 1); Cin: in Bit; S: out Bit_vector(N downto 1); Cout: out Bit); end Add_N_bit; entity async_transmitter is generic(bit_time: time := 20 ms); port(parallel_in: in bit_vector (7 downto 0); load: in bit; serial_out : out bit := '0'; done : out bit := '1'); end async_transmitter; Les architectures permettent de décrire le comportement ou la structure des composants représentés par les entités. Plusieurs architectures, éventuellement données à différents niveaux d'abstraction, peuvent être associées à une même entité. Trois styles de description peuvent être utilisés en VHDL : - le style "structurel" : interconnexion de composants, chacun d'eux étant une instance de couple entité/architecture - le style "dataflow" (s'apparente au niveau d'abstraction RTL) : ensemble d'instructions sur signaux qui décrivent les connexions entre portes logiques et les chargements de registres - le style "comportemental" : ensemble de processus qui expriment le comportement du système Une définition d'architecture a la forme suivante : architecture nom of nom-entité is déclarations instructions-concurrentes end nom; Dans la partie déclarations peuvent se trouver des déclarations de types, de constantes, de fonctions et procédures, de composants, et de signaux. On ne peut pas trouver de déclarations de variables (VHDL'87). Attention, Les instructions se trouvant dans une architecture sont toutes des instructions concurrentes. Dans le style structurel, on décrit une hiérarchie de composants interconnectés. Les communications se font par les interfaces (ports d'e/s), les interconnexions sont exprimées par les port map. Les composants utilisés doivent faire l'objet d'une configuration (voir plus bas). Exemple : architecture Structure_view of full_adder is -- déclaration des composants utilisés : component Half_adder port(i1,i2: in Bit; Carry,Sum: out Bit); 7 8

component Or_gate port(i1,i2: in Bit; O: out Bit); -- déclaration des "signaux" internes : signal A,B,C : Bit; U1: Half_adder port map(x,y,a,b); U2: Half_adder port map(cin,b,c,sum); U3: Or_gate port map(a,c,cout); end Structure_view; cin x y B A C sum cout Dans le style dataflow, la description traduit les équations caractéristiques du circuit, les temps de traversée des portes correspondant aux opérateurs utilisés peuvent être explicités. Exemple : cin x y S sum cout! II.3 Configurations Nous reviendrons plus loin sur l'instruction d'instanciation de composant, utilisée dans le style structurel. Voyons les configurations, qui permettent de spécifier les couples entités/architectures choisis pour instancier des composants. Une spécification de configuration peut être simplement placée dans l'architecture même. Elle a la forme suivante : for instance(s)_de_composant : nom_composant use entity nom_library.nom_entité(nom_architecture); De préférence, on fera appel à une unité de conception configuration, qui a la forme ci-dessous : configuration nom of nom_entité is for nom_arch for instance(s)_de_composant : nom_composant use entity nom_library.nom_entité(nom_architecture);...... end nom; architecture Dataflow_view of full_adder is signal S : Bit; -- pas indispensable ici S <= X xor Y after 5 ns; Sum <= S xor Cin after 5 ns; Cout <= (X and Y) or (S and Cin) after 20 ns; end Dataflow_view;! Cela est utile si l'on souhaite retarder le choix de configuration et/ou avoir plusieurs configurations pour une même architecture; nom_arch est généralement un nom d'architecture (mais peut être une étiquette de block ou de generate, voir plus loin). 9 10

Exemple : prenons le petit exemple illustratif ci-dessous A B 2ns S1 5ns S2 L'entité correspondante est la suivante : 4ns entity Exemple is port(a,b: in Bit; s: out Bit); end Exemple; Une description totalement dataflow ne nécessite pas de configuration : architecture RTL of Exemple is signal s1,s2: Bit; s1 <= not a after 2 ns; s2 <= s1 nand b after 5 ns; s <= s1 and s2 after 4 ns; end RTL; Voyons maintenant une description mixte structurelle/dataflow, avec configuration incorporée : entity porteet is port(x,y: in bit; s: out bit); end porteet; architecture RTL of porteet is s <= x and y after 4 ns; end RTL; entity portenand is port(x,y: in bit; s: out bit); end portenand; architecture RTL of portenand is s <= x nand y after 5 ns; end RTL; architecture Struct of Exemple is -- déclaration des composants utilisés : component porteet port(x,y: in bit; s: out bit); S component portenand port(x,y: in bit; s: out bit); -- configuration : for P1:porteET use entity work.porteet(rtl); for P2:porteNAND use entity work.portenand(rtl); -- déclaration des "signaux" internes : signal s1,s2: Bit; s1 <= not a after 2 ns; P1: porteet port map(s1, s2, s); P2: portenand port map(s1, b, s2); end Struct; Alternativement, une unité de conception spécifique peut être utilisée (il est d'ailleurs préférable de procéder ainsi) : architecture Struct of Exemple is component porteet port(x,y: in bit; s: out bit); component portenand port(x,y: in bit; s: out bit); signal s1,s2: Bit; s1 <= not a after 2 ns; P1: porteet port map(s1, s2, s); P2: portenand port map(s1, b, s2); end Struct; configuration Config1 of Exemple is for Struct -- pour l'architecture Struct de Exemple for P1: porteet use entity work.porteet(rtl); for P2: portenand use entity work.portenand(rtl); end Config1; Dans ce second cas, lorsqu'une instance de Exemple sera à son tour utilisée, la configuration mettra en jeu use configuration au lieu de use entity : 11 12

au lieu de for E:Exemple use configuration work.config1; for E:Exemple use entity work.exemple(struct); Remarque : les packages peuvent être utilisés pour rassembler des déclarations (types, constantes,...) et des définitions de sous-programmes. Les déclarations de composants peuvent également être placées dans un package, nous n'aborderons pas cette possibilité ici. 13