MASTER STIC EEA Mars 2008 VHDL TD2

Documents pareils
Le langage VHDL. Eduardo Sanchez EPFL

Manipulations du laboratoire

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

SIN-FPGA DESCRIPTION PAR SCHEMA

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Arbres binaires de recherche

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

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

IFT1215 Introduction aux systèmes informatiques

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Algorithmique & programmation

as Architecture des Systèmes d Information

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Cours Bases de données 2ème année IUT

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

France SMS+ MT Premium Description

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

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

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

SYSTEME DE TELESURVEILLANCE VIDEO

RÉALISATION ET MISE AU POINT D UN SYSTÈME DE TÉLÉSURVEILLANCE VIDÉO

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

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

Examen Médian - 1 heure 30

Logique séquentielle

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

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

Bases de données avancées

Configurer la supervision pour une base MS SQL Server Viadéis Services

Les fonctions logiques

SUR MODULE CAMÉRA C38A (OV7620)

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Exercices sur SQL server 2000

//////////////////////////////////////////////////////////////////// Administration bases de données

ACTIVITÉ DE PROGRAMMATION

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Projet Active Object

VIII- Circuits séquentiels. Mémoires

Architecture : Circuits numériques et éléments d architecture

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Corrigé des TD 1 à 5

Cours Informatique 1. Monsieur SADOUNI Salheddine

Algorithmes de recherche d itinéraires en transport multimodal

Diagrammes de Package, de déploiement et de composants UML

Cours Informatique Master STEP

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

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

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Architecture des ordinateurs

Once the installation is complete, you can delete the temporary Zip files..

La carte à puce. Jean-Philippe Babau

Problèmes liés à la concurrence

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

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

Présentation Windows Azure Hadoop Big Data - BI

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Compléments de documentation Scilab : affichage de texte et formatage de nombres

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

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Manuel Viadeis CRM Connecteur intégration L100 étendue.

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)

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

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Paris Airports - Web API Airports Path finding

Le No.1 de l économie d énergie pour patinoires.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Conversion d un entier. Méthode par soustraction

VERSION 64 BITS DE SAS ET VOS FICHIERS MICROSOFT OFFICE 32-BITS

Introduction à Eclipse

Rapport de Mini-Projet en ArcGIS Engine

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Utilitaires méconnus de StrataFrame

Application 1- VBA : Test de comportements d'investissements

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Création d installateurs pour Windows avec InnoSetup

Notice d'utilisation Afficheur multifonctions et système d'évaluation FX 360. Mode/Enter

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

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

MS SQL Express 2005 Sauvegarde des données

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Big data et données géospatiales : Enjeux et défis pour la géomatique. Thierry Badard, PhD, ing. jr Centre de Recherche en Géomatique

Licence Sciences et Technologies Examen janvier 2010

Le langage C. Séance n 4


Editing and managing Systems engineering processes at Snecma

Tests de performance du matériel

Transcription:

MASTER STIC EEA Mars 2008 1 Bascules VHDL TD2 1.1 Bascule D avec remise à zéro asynchrone. (DFF with asynchronous reset) Avec un process ayant une liste de sensibilité. (V.P 6-1) 1 -------------------------------------- 4 -------------------------------------- 5 ENTITY dff IS 6 PORT (d, clk, rst: IN STD_LOGIC; 7 q: OUT STD_LOGIC); 8 END dff; 9 -------------------------------------- 10 ARCHITECTURE behavior OF dff IS 11 12 PROCESS (clk, rst) 13 14 IF (rst='1') THEN 15 q <= '0'; 16 ELSIF (clk'event AND clk='1') THEN 17 q <= d; 18 END IF; 19 END PROCESS; 20 END behavior; 21 -------------------------------------- Avec un process ayant un WAIT. (V.P 6-4) 1 -------------------------------------- 4 -------------------------------------- 5 ENTITY dff IS 6 PORT (d, clk, rst: IN STD_LOGIC; 7 q: OUT STD_LOGIC); 8 END dff;

9 -------------------------------------- 10 ARCHITECTURE dff OF dff IS 11 12 PROCESS 13 14 WAIT ON rst, clk; 15 IF (rst='1') THEN 16 q <= '0'; 17 ELSIF (clk'event AND clk='1') THEN 18 q <= d; 19 END IF; 20 END PROCESS; 21 END dff; Avec un process incluant un CASE. (V.P 6-6) 1 ---------------------------------------------- -- Unnecessary declaration, 3 -- because 4 USE ieee.std_logic_1164.all; -- BIT was used instead of 5 -- STD_LOGIC 6 ---------------------------------------------- 7 ENTITY dff IS 8 PORT (d, clk, rst: IN BIT; 9 q: OUT BIT); 10 END dff; 11 ---------------------------------------------- 12 ARCHITECTURE dff3 OF dff IS 13 14 PROCESS (clk, rst) 15 16 CASE rst IS 17 WHEN '1' => q<='0'; 18 WHEN '0' => 19 IF (clk'event AND clk='1') THEN 20 q <= d; 21 END IF; 22 WHEN OTHERS => NULL; -- Unnecessary, rst is of type 23 -- BIT 24 END CASE; 25 END PROCESS; 26 END dff3; 1.2 Bascule D avec sorties q et qbar. (V.P 7-4) Expliquer pourquoi la solution suivante est incorrecte. Proposer une solution correcte. 1 ---- Solution 1: not OK --------------- 4 ---------------------------------------

Solution correcte (V.P 7-4) 5 ENTITY dff IS 6 PORT ( d, clk: IN STD_LOGIC; 7 q: BUFFER STD_LOGIC; 8 qbar: OUT STD_LOGIC); 9 END dff; 10 --------------------------------------- 11 ARCHITECTURE not_ok OF dff IS 12 13 PROCESS (clk) 14 15 IF (clk'event AND clk='1') THEN 16 q <= d; 17 qbar <= NOT q; 18 END IF; 19 END PROCESS; 20 END not_ok; 21 --------------------------------------- 1 ---- Solution 2: OK ------------------- 4 --------------------------------------- 5 ENTITY dff IS 6 PORT ( d, clk: IN STD_LOGIC; 7 q: BUFFER STD_LOGIC; 8 qbar: OUT STD_LOGIC); 9 END dff; 10 --------------------------------------- 11 ARCHITECTURE ok OF dff IS 12 13 PROCESS (clk) 14 15 IF (clk'event AND clk='1') THEN 16 q <= d; 17 END IF; 18 END PROCESS; 19 qbar <= NOT q; -- concurrent setting 20 END ok; 21 --------------------------------------- 1.3 Latch Le latch n est pas une bascule, c est une mémoire. Tant que clk est à 1, q prend les valeurs de d. Lorsque clk passe à 0, la dernière valeur de d est mémorisée. Programmer un Latch.

1 -------------------------------------- 4 -------------------------------------- 5 ENTITY latch IS 6 PORT (d, clk: IN STD_LOGIC; 7 q: OUT STD_LOGIC); 8 END dff; 9 -------------------------------------- 10 ARCHITECTURE behavior OF latch IS 11 12 PROCESS (clk, d) 13 14 IF (clk='1') THEN 15 q <= d; 16 END IF; 17 END PROCESS; 18 END behavior; 19 -------------------------------------- 2 Compteurs 2.1 Compteur décimal 1 chiffre (V.P 6-2) 1 --------------------------------------------- 4 --------------------------------------------- 5 ENTITY counter IS 6 PORT (clk : IN STD_LOGIC; 7 digit : OUT INTEGER RANGE 0 TO 9); 8 END counter; 9 --------------------------------------------- 10 ARCHITECTURE counter OF counter IS 11 12 count: PROCESS(clk) 13 VARIABLE temp : INTEGER RANGE 0 TO 10; 14 15 IF (clk'event AND clk='1') THEN 16 temp := temp + 1; 17 IF (temp=10) THEN temp := 0; 18 END IF; 19 END IF; 20 digit <= temp; 21 END PROCESS count; 22 END counter; 23 ---------------------------------------------

2.2 Compteur générique On crée un paquetage decimal défini par: PACKAGE decimal IS TYPE chiffre IS RANGE 0 TO 9; TYPE nombre IS ARRAY (INTEGER RANGE <>) OF chiffre; COMPONENT mod_cnt IS GENERIC(modulo: INTEGER:=16); PORT (clk, clear, cen: IN BIT; cout: OUT INTEGER RANGE 0 TO modulo-1; rco : OUT BIT); END COMPONENT mod_cnt; END DECIMAL; Le composant mod_cnt est un compteur modulo générique pour lequel on demande d écrire la spécification en VHDL. ENTITY mod_cnt IS GENERIC(modulo: INTEGER:=16); PORT (clk, clear, cen: IN BIT; cout: OUT INTEGER RANGE 0 TO modulo-1; rco : OUT BIT); END mod_cnt; --------------------------------------------------- ARCHITECTURE cnt_beh OF mod_cnt IS SIGNAL state: INTEGER RANGE 0 TO modulo-1; rco <= cen WHEN state = modulo-1 ELSE 0 ; cout <= state; cnt: PROCESS WAIT UNTIL clk = 1 ; IF clear = 1 THEN state <= 0; ELSIF cen = 1 THEN state <= (state + 1) mod modulo; END IF; END PROCESS cnt; END cnt_beh; Ce compteur est compilé dans une bibiothèque genlib. Expliquer comment l instancier pour obtenir un compteur modulo 10 (entité decade). USE work.decimal.all; ENTITY decade IS PORT (clk, raz, en: IN BIT; cout: OUT chiffre; dix : OUT BIT); END decade; LIBRARY genlib ;

ARCHITECTURE instance OF decade IS dec : mod_cnt GENERIC MAP (modulo=>10) PORT MAP (clk=>clk, clear=>raz, cen=>en, cout=> integer(count), rco=>dix); END instance; --------------------------------------------------- ARCHITECTURE cnt_beh OF mod_cnt IS SIGNAL state: INTEGER RANGE 0 TO modulo-1; rco <= cen WHEN state = modulo-1 ELSE 0 ; cout <= state; cnt: PROCESS WAIT UNTIL clk = 1 ; IF clear = 1 THEN state <= 0; ELSIF cen = 1 THEN state <= (state + 1) mod modulo; END IF; END PROCESS cnt; END cnt_beh; 3 Additionneurs 3.1 Additionneur avec propagation de retenue (Carry Ripple Adder) La solution doit être élaborée à partir d additionneurs complets 1 bit (1-bit full-adder). On demande une solution générique utilisant des STD_LOGIC_VECTORs et une solution non-générique utilisant les entiers. (V.P 6-8) 1 ----- Solution 1: Generic, with VECTORS -------- 4 ------------------------------------------------ 5 ENTITY adder IS 6 GENERIC (length : INTEGER := 8); 7 PORT ( a, b: IN STD_LOGIC_VECTOR (length-1 DOWNTO 0); 8 cin: IN STD_LOGIC; 9 s: OUT STD_LOGIC_VECTOR (length-1 DOWNTO 0); 10 cout: OUT STD_LOGIC); 11 END adder; 12 ------------------------------------------------ 13 ARCHITECTURE adder OF adder IS 14 15 PROCESS (a, b, cin) 16 VARIABLE carry : STD_LOGIC_VECTOR (length DOWNTO 0);

17 18 carry(0) := cin; 19 FOR i IN 0 TO length-1 LOOP 20 s(i) <= a(i) XOR b(i) XOR carry(i); 21 carry(i+1) := (a(i) AND b(i)) OR (a(i) AND 22 carry(i)) OR (b(i) AND carry(i)); 23 END LOOP; 24 cout <= carry(length); 25 END PROCESS; 26 END adder; 27 ------------------------------------------------ 1 ---- Solution 2: non-generic, with INTEGERS ---- 4 ------------------------------------------------ 5 ENTITY adder IS 6 PORT ( a, b: IN INTEGER RANGE 0 TO 255; 7 c0: IN STD_LOGIC; 8 s: OUT INTEGER RANGE 0 TO 255; 9 c8: OUT STD_LOGIC); 10 END adder; 11 ------------------------------------------------ 12 ARCHITECTURE adder OF adder IS 13 14 PROCESS (a, b, c0) 15 VARIABLE temp: INTEGER RANGE 0 TO 511; 16 17 IF (c0='1') THEN temp:=1; 18 ELSE temp:=0; 19 END IF; 20 temp:= a + b + temp; 21 IF (temp > 255) THEN 22 c8 <= '1'; 23 temp:= temp - 256; 24 ELSE c8 <= '0'; 25 END IF; 26 s <= temp; 27 END PROCESS; 28 END adder; 29 ------------------------------------------------ 4 RAM

La mémoire a un bus d entrée (data in), un bus d adresse (addr), une horloge (clk) et une validation d écriture (wr_en). Quand wr_en est activé, data in est rangé dans le mot d adresse addr lors du front suivant de clk. Quant à la sortie data out elle doit en permanence afficher le mot sélectionné par addr. Le schéma de droite résume ce comportement. Programmer une mémoire RAM générique de words mots de bits bits (défauts: bits=8 et words=16). 1 --------------------------------------------------- 4 --------------------------------------------------- 5 ENTITY ram IS 6 GENERIC ( bits: INTEGER:= 8; -- # of bits per word 7 words: INTEGER:= 16); -- # of words in the memory 8 PORT ( wr_ena, clk: IN STD_LOGIC; 9 addr: IN INTEGER RANGE 0 TO words-1; 10 data_in: IN STD_LOGIC_VECTOR (bits-1 DOWNTO 0); 11 data_out: OUT STD_LOGIC_VECTOR (bits-1 DOWNTO 0)); 12 END ram; 13 --------------------------------------------------- 14 ARCHITECTURE ram OF ram IS 15 TYPE vector_array IS ARRAY (0 TO words-1) OF 16 STD_LOGIC_VECTOR (bits-1 DOWNTO 0); 17 SIGNAL memory: vector_array; 18 19 PROCESS (clk, wr_ena) 20 21 IF (wr_ena='1') THEN 22 IF (clk'event AND clk='1') THEN 23 memory(addr) <= data_in; 24 END IF; 25 END IF; 26 END PROCESS; 27 data_out <= memory(addr); 28 END ram; 29 --------------------------------------------------- Cette RAM générique est compilée dans la bibliothèque mem. Expliquer comment instancier une RAM de 16 mots de 8 bits.

USE work.mem.all; ENTITY ram16x8 IS PORT ( wr_ena, clk: IN STD_LOGIC; addr: IN INTEGER RANGE 0 TO words-1; data_in: IN STD_LOGIC_VECTOR (bits-1 DOWNTO 0); data_out: OUT STD_LOGIC_VECTOR (bits-1 DOWNTO 0)); END ram; --------------------------------------------------- ARCHITECTURE ram16x8 OF ram IS Inst: ram GENERIC MAP ( words => 16, bits => 8 ) PORT MAP ( addr => addrbus, data_in => databus1, wr_en => w, clk => h, data_out => databus2 ); END ram16x8;