Skip to content

Latest commit

 

History

History
450 lines (399 loc) · 19.2 KB

cs173.md

File metadata and controls

450 lines (399 loc) · 19.2 KB

CS173

GNU General Public License v3.0 licensed. Source available on github.com/zifeo/EPFL.

Spring 2014: Systèmes Logiques

[TOC]

Introduction: Digital versus analogique

  • définitions
    • un système est une collection organisée d'objets qui interagissent pour former un tout
    • objets = composants du système
    • des interconnexions (liens) entre les objets sont nécessaires pour les interactions
    • structure = (composants, interconnexions), comment le système est fait
    • comportement = (entrées, sorties), ce que le système fait (comment il répond aux entrées)
    • analyse : déterminer le comportement d'un système à partir d’une description de sa structure
    • synthèse : déterminer la structure qui produit un comportement donné
    • plusieurs structures sont possibles pour un même comportement
    • un ordinateur est une machine électronique composée de plusieurs parties interconnectées par des fils
    • les fils ont un voltage haut (1) ou bas (0)
    • 4 grandes parties dans un ordinateur (dispositifs d'entrées et de sorties, processeur, mémoire)
    • un bus est un ensemble de fils électriques interconnectant les différents composants
    • l'information est codé en bit, 8 bits forme un byte
    • analogique : les valeurs ne sont pas séparées par des sauts: entre deux valeurs A et B il existe un nombre infini d'autres valeurs
    • digitale (numérique) : une valeur est représentée par une chaîne finie de symboles appelés digits, pas possible de représentée toutes les valeurs par rapport à l'analogique, pas pertubré par un bruit externe
    • information = bits + contexte
    • représentation du nombre $X$ sur un base $\beta$ est donné par l'équation $X=\sum_{i=0}^{N-1}\beta^ix_i$
    • $x_0$ est le chiffre de poids faile, ${x_N}_1$ celui de poids fort
    • les mots ont généralement une longueur de 32 ou 64 bits
    • les adresses de la mémoire ont une unique adresse par mot et dépend de leur premier byte
    • les bytes d'un mot peut être ordonnés de différentes façons
      • big endian : byte de poids fort est mis à l'adresse inférieur
      • little endian : l'inverse

Logique: Principes et opérateurs

  • système combinatoire
    • la valeur de la sortie dépend uniquement des entrées
    • table de vérité
    • pour $n$ entrée, la table compte $2^n$ entrées
  • système séquentiel
    • dépend des variations dans le temps
    • mémoire
  • fonctions logiques de base
    • not (triangle)
    • and (barre droit et arrondi de l'autre côté)
    • or (fer de lance arrondi)
    • xor (même chose mais avec une barre coupant les fils entrant)
  • algèbre de Boole pour $+$ et $\cdot$
    • commutativité $a\cdot b=b\cdot a$
    • idempotence $a\cdot a=a$
    • distributivité $a\cdot(b+c)=(a\cdot b)+(a\cdot c)$
    • associativité (parenthèses)
    • consensus $(a\cdot \bar x)+(b\cdot x)+(a\cdot b)=(a\cdot \bar x)+(b\cdot x)$
    • de Morgan $\bar{a\cdot b}=\bar a + \bar b$
  • fonctions complètes
    • nand $a\Uparrow b=\bar{a\cdot b}=\bar a + \bar b$
    • nor $a\Downarrow b=\bar{a+ b}=\bar a \cdot \bar b$
  • forme algébrique
    • minterme de $n$ variables est un monôme possédant les $n$ variables sous forme vraie ou inversée par état d'entrée
    • la forme canonique algérbrique est la somme des mintermes égal à $1$
    • forme canonique décimale est le numéro des entrées de la table pour lesquelles le minterme est égal à $1$

Synthèse combinatoire

  • méthodologie
    1. cachier des charges
    2. table de vérité
    3. équation logique
    4. logigramme
  • table de Karnaugh
    • impliquants d'une fonction : produit des variables de la fonction, en un nombre égal à une puissance de 2
    • impliquants premiers : non compris dans un impliquant plus grand
    • impliquants premiers essentiels : impliquant non inclus dans un autre premier et qui contient au moins un minterme

Technologie digitale

  • circuits
  • portes de circuits
  • semiconducteurs
    • silicium pur est isolant
    • silicium avec du bore devient récepteur d'électron (P)
    • silicium avec du phosphore devient donneur d'électron (N)
    • diode = P et N
    • transistor est comme une double diode à l'exception qu'il a besoin de courant pour en faire une porte
  • portes
    • NMOS : porte fermée (courant passe) quand courant appliqué (NPN)
    • PMOS : inverse (symbole avec un 0 inverteur) (PNP)
  • limitations
    • limite du nombres de connexion entré/sortie
    • retard de propagation
    • interdit de connecter deux sorties ensemble
    • interdit de faire de la rétroaction (feedback)
  • porte tri-state : état tri-state lorsqu'il n'y a aucune valeur de tension
  • circuit intégré : les composants sont fabriqués séparement et connectés ensuite
  • circuit imprimé

Dispositifs combinatoires

  • décodeur $n\to m$ ($n$ entrées et $m<2^n$ sorties) : au maximum un seul bit de sortie est $1$ à un moment donné
  • démultiplexeur $n\to m$ est un décodeur où chaque sortie réalise un minterme des $n$ variables d'entrée
  • multiplexeur $n\to 1$ est un dispositif combinatoire avec $m$ entrée de contrôle ($m=\log_2(n)$) : la valeur de la sortie est égale à l'entrée choisie par le contrôle
  • encodeur : inverse du décodeur avec $m\lceil\log_2(n)\rceil$
  • comparateur de deux entrées à $n$ bits : produit une sortie si les $n$ bits sont égaux entre eux
  • hasards (glitch) : problème de timing
    • glitch à 0 : si deux entrées se suivent et une seule change ou si deux entrées produisent une sortie 1
    • glitch à 1 : si deux entrées se suivent et une seule change ou si deux entrées produisent une sortie 0
    • on peut éviter les glitch en utilisant une réalisation avec tous les impliquants premiers

VHDL : introduction

  • langage formel pour la spécification des systèmes digitaux, autant comportemental que structurel

  • description à plusieurs niveaux

  • simulation activée par événements

  • modularité

  • extensibilité

  • général et très typé (comme le Ada)

  • entité (comme une boite noire, on ignore l’intérieur et on connait l’interface publique)

  • architecture (implémentation de la boite)

  • structure basique d’un programme VHDL library ieee; use ieee.std_logic_1164.all;

    entity toto is port( interface : déclaration des entrées sorties ); end toto;

    architecture test of toto is déclaration de l’architecture (par exemple signaux) begin **déclaration du corps de l’architecture (processus) end test;

  • les entrées/sorties sont les ports de l’entité

  • chaque composant interne du système est un ensemble de processus

  • les processus s’exécutent en parallèle

  • les processus de l’architecture sont connectés entre eux grâce aux signaux

  • VHDL : pas de casse, format libre, tout phrase se termine par « ; », double trait pour un commentaire de ligne library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

    entity exemple is port( a,b : in std_logic_vector(3 downto 0); op, clk, reset : in std_logic; c : out std_logic_vector(3 downto 0); ); end exemple;

    architecture test of exemple is signal moinsb, opb, aopb : std_logic_vector(3 downto 0); begin moinsb <= not b + « 0001 »; — processus implicite opb <= b when op=‹ 0 › else moinsb; nomProcesus : process (reset, clk) — liste de sensibilité d’un processus explicite begin — le nom est optionnel if reset=‹ 1 › then c <= « 0000 » elseif rising_edge(clk) then c <= aopb; endif; endif; end process; end test;

  • constant constant pi : réal := 3.1416;

  • variable variable stop : CodeDEtat := STO; (ne pas utiliser de variable)

  • signaux

  • types

    • scalaire (integer, real, enumerated, physical)
    • composé (array, record)
    • pointeur (acces)
    • I/O (file)
    • définir des types type CodeDEtat is (init, ST1, ST2, exit); ou type word is array (0 to 31) of bit;
  • on doit déclarer les deux libraires pour utiliser les deux std_logic

    • std_logic a plusieurs valeurs
      • U uninitialied
      • X forcing unknown
      • 0 forcing 0
      • 1 forcing 1
      • Z/W/L/H/- etc
  • opérateur

    • logique (and or nand nor xor xnor)
    • comparaison (= /= < <= > >=)
    • décalage (sll srl sla sra rol ror)
    • concaténation (&)
    • opération (+ - * / mod rem)
    • divers (not abs **)
  • évitez les initialisation (:=) lors d’une synthèse

Eléments de mémoire

  • introduction de l'horloge (séquentiel)
    • flanc montant de l'horloge
    • durée de l'horloge
  • latch : dispositif de mémoire combinatoire
    • D : entrée
    • LD : contrôle, si 1 load, sinon hold
    • Q : sortie
  • bascule bistable D (flip-flop)
    • CK : la sortie de la bascule peut changer seulement pendant la montée du signal CK
    • entrées asyncrhones PR (preset, sortie à 1) et CLR (clear, sortie à 0)
  • registre
    • ensemble de bascule partageant le même signal d'horloge
    • bit de contrôle L
  • registre à décalage
    • permet de décaler vers la droite ou la gauche selon les bits de contrôle

VHDL : processus

  • ordre des processus n’est pas important

  • implicite (concurrent) vs explicite (bloc de code impératif en boucle infinie)

  • la liste de sensibilité redémarre la boucle à chaque changement

  • ne pas oublié lors d’un graphe de signaux : le temps de delay de changement de valeur

  • structure if condition then phrases { elsif condition then phrases } [ else phrases ] end if;

    case opcode is when X"00" => add; when X"01" => subtract; when others => illegal_opcode; end case;

    loop faire; end loop;

    while toto < tata loop toto := toto + 1; end loop;

    for item in 1 to last_item loop table(item) := 0; end loop;

    next [ label ] [ when condition ]; exit [ label ] [ when condition ];

  • conception d’un programme

    • architecture comportementale (algorithme)
    • architecture structurelle (assemblage de sous-bloc)
    • architecture dataflow (équation logique)
    • déclaration d’entité + corps de l’architecture => entité de conception
  • port (in/out/inout)

  • l’assemblage de sous-bloc C1 : entity work.XNOR2(toto_arch) port map (0=> s3, I1 => A(3));

Représentation des nombres entiers

  • représentation signe-magnitude
    • bit de poids fort porte le signe : 0 si positif
    • le reste les bits de nombre
    • complément à 2 : inverse du nombre + 1 (on change tous les bits à gauche du bit blocher, le 1 le plus à droite)
    • permet de traiter l'addition de nombre négatif
    • attention aux overflows lors du même signe
  • extension de signe
    • on répète le bit de signe le nombre de fois qu'on veut

Représentation des nombres réels

  • en binaire, on ne peut représenter que les nombres fractionnaires de la forme $X/2^k$
  • codage binaire des nombres réels
    • bit de signe
    • mantisse
    • exposant
    • calcul arrondi (attention à la perte de précision)
    • on normalise la mantisse (notation scientifique)
    • $\text{signe }1.\text{mantisse}\cdot2^{\text{exposant}}$
    • 0 est représenté avec des 0 partout
    • par extension les nombres avec un exposant égal à 0 ne sont pas normalisé (pas de 1, mais un 0) $0\le x &lt; 1$
    • l'expost est biaisé (on lui ajoute toujours une constante $2^{k-1}-1$ ou $k$ est le nombre de bits du champ de l'exposant
    • les valeurs extrêmes de l'exposant sont spécifiques (0..0 non normalisé et 1..1 pour infini positif négatif et NaN not a number)
  • standard IEEE 754
    • simple
      • nombre de bits : 32
      • mantisse sur 23 bits
      • exposant sur 8 bits (biais de 127)
    • double
      • nombre de bits : 64
      • mantisse sur 52 bits
      • exposant sur 11 bits (biais de 1023)
    • valeurs particulières
      • deux valeurs pour 0, les deux signes avec exposant et mantisse à 0
      • infini positif/negatif, signe, exposant = 1..1 et mantisse = 0..0
      • NaN, signe indifférent, expostant = 1..1 et mantisse différent de 0..0

Méthodologie et exercices

  • passage d'une base à l'autre
    • 2 à 10 : $0101=0\cdot2^3+1\cdot2^2+0\cdot2^1+1\cdot2^0$
    • 16 à 10 : $A8CE=10\cdot16^3+8\cdot16^2+12\cdot16^1+14\cdot16^0$
    • 10 à 2 : division par 2, 1 s'il y a reste, 0 sinon, lecture dans le sens inverse
    • 10 à 16 : pareil même par 16
    • 2 à 16 : groupement par 4
  • passage à virgule
    • 10 à 2 : on multiplie à chaque fois, si ça dépasse 1, sinon 0

Modes de représentation et d'analyse des systèmes séquentiels

  • système séquentiel
    • l'état futur est le résultat de l'état présent et des variables d'entrées
    • au maximum $2^n$ états ou $n$ est le nombre de variable
    • la mémoire est nécessaire pour stocker l'état
  • machine de Mealy
    • l'état futur dépend de l'état présent et des variables d'entrée
    • changement des sorties n'est pas synchrone
  • machine de Moore
    • les variables de sortie dépendent uniquement de l'état présent
    • changements de sorties synchrone
    • demande généralement plus d'états qu'une machine de Mealy
  • analyse des machines séquentielles
    • déterminer les fonctions d'état futur et sortie et prévoir le comportement de la machine
    • équations du système (sorties, bascules)
    • table des états
      • chaque ligne représente un etat présent
      • chaque colonne représente une combinaison des entrées
      • a chaque case on introduit l'état futur et la sortie correspondante
    • graphe des états
      • chaque état est représenté par le sommet d'un graphe orienté
      • les changements d'état sont représentés par des arcs
      • sur les arcs, on indique les valeurs des entrées qui produisent le changement et les valeurs de sorties
    • chronogramme
      • les états changent au flanc montant de l'horloge
      • les sorties peuvent changer à tout moment

VHDL : écriture des systèmes logiques

  • élément de mémoire
    • process (en, d) begin if en='1' then q <= d; end if; end process genere un latch (plus lent et mauvais)
    • attention à spécifier toutes les branches d'une condition (else)
    • toutes les branches d'un cases doivent être définie
    • il est préférable de dresser une liste des valeurs par défaut au début du cases
    • process (clk) begin if rising_edge(clk) then q <= d; end if; end process; génère une bascule
    • reset
      • asynchrone process (clk, reset) begin if reset='1' then q <= '0'; elsif rising_edge(clk) then q <= d; end if; end process;
      • synchrone process (clk) begin if rising_edge(clk) then if reset='1' then q <= '0'; else q <= d; end if; end if; end process;
  • synthèse d'une machine séquentiel
    • processus qui gère les variables d'entrées et les changements d'états qui en découlent
    • processus de reset et d'état (state <= nextstate)
  • package (pour une réutilisation des fonctions)
    • bibliothèque std et work incluses par défaut
    • le package doit être compilé avant l'utilisation de ses fonctions (et ajouté à la bibliothèque de travail)
    • déclaration des composants package toto is ici end toto;

Synthèse des systèmes séquentiels

  1. cahier des charges
  2. représentation formelle
  3. graphe des états (facultatif)
  4. table d'tats
  5. réduction de la table d'états
  6. codage de la table d'états
  7. calcul des fonctions d'excitation des bascules et des fonctions de sortie
  8. logigramme
  • 3 exemples

Les mémoires

  • bits organisés en forme de matrice
  • chaque ligne de la mémoire est appelée mot identifié par une adresse
  • nombre de ligne est une puissance de 2
  • opération sur le mot complet (read/write)
  • mémoire RAM (random-access memory) : volatile
    • statique (SRAM) : information conservé tant qu'il y a de la tension (latch)
    • dynamique (DRAM) : rafraîchissement des données pour les conservés (8-16ms, condensateur, adresse = séquence de bit)
      • RAS : row address strobe
      • CAS : column address strobe
      • burst refresh : par lignes consécutives à chaque période (impossible d'écrire ou de lire)
      • distributed refresh : chaque ligne à son intervalle
  • mémoire ROM (read-only memory) : non volatile
    • mask : contenu initialisé non modifiable (par le fabriquant)
    • PROM (programmable ROM) : modifiable une fois à l'aide d'équipement spécialisé (fusible)
    • EPROM (erasable PROM) : modifiable
      • UV / électrique / flash (électrique mais plus rapide)
  • FIFO (first in first out) : non addressable (curseur qui bouge)
  • LIFO : non addressable (curseur qui bouge)

Les circuits programmables

  • ASIC : application-specific integrated circuits (demande particulière)
    • full custom / gate array (matrice) / standard cell (bibliothèque de gate) / structured (pré-fabriqué, plus grand, demande plus de puissance)
  • ASSP : application-specific standard products (demande générale)
  • PLD : programmable logic devices (assemblage de AND et OR, fusible)
    • somme d'impliquants = 1 matrice AND puis 1 matrice OR
    • PROM : matrice AND fixe, OR programmable
    • PAL : matrice AND programmable, OR fixe (plus courant)
    • PLA : matrice AND et OR programmable
    • SPLD : simple PLD
    • CPLD : complex PLD (matrice d'interconnexion entre des SPLD)
    • caractérisé par nombre entrées/sorties/termes par sortie, vitesse, retard, consommation et technologie
  • FPGA : field programmable gate array (modification chez soi)
    • fonction LUT : stocke la table de vérité
    • configuration par stream

Organisation d’un processeur : synthèse en VHDL

  • processeur : machine réalisant un traitement d'information
  • besoin d'un algo et des ressources pour l'executer (éléments de stockage)
  • décomposer en deux parties : unité de contrôle (chargée du séquencement de l'algorithme, machine séquentielle chargée de la génération des bits de contrôles des ressources à chaque coup d'horloge) et unité de traitement (ensemble d'éléments de stockage et de traitement

Multiplicateur de deux nombres réels : synthèse en VHDL

  • exemples

Introduction à l’architecture de von Neumann

  • les données traitées sont stockées dans la mémoire
  • le CPU (central processing unit) réalise les opérations de traitement
  • le CPU possède son stockage plus rapide, mais plus petit : les registres
  • le transfert des données entre processeur et mémoire se fait par le bus
  • l'architecture de von Neumann a permis de stocker les instructions dans la mémoire principale en utilisant aucune connexion spécifique (les mémoires d'instruction et de données ne font qu'une)
  • deux complexités de machine : processeurs CISC (complex instruction set computer) : pentium et processeurs RISC (reduced instruction set computer) : powerPC
  • 3 types d'instruction :
    • transfert de données
    • opérations arithmétiques/logiques
    • contrôle
  • le format d'instruction varie (LOAD, STORE, JUMP, DIV, STOP etc.)
  • processeur superscalaires peuvent chercher plusieurs instructions à la fois
  • le parallélisme utilise plusieurs unité de traitement