Circuits logiques séquentiels 1 2 3 4 Circuits élémentaires de mémorisation : les bascules Verrou (latch) Bascule (ip-op) Registres Automates Notion d'automate ni Automate ni synchrone Banc de registres et RAM Banc de registres Généralités sur la RAM Mémoire SRAM Conclusion N. Louvet Circuits logiques séquentiels. 20 mars 2016 1 / 30 Introduction Dans cette partie, nous présentons certains circuits dits séquentiels, dans lesquels la notion de chronologie des événements joue un rôle central. Un tel circuit peut se trouver dans un nombre ni d'états, et les entrées du circuit provoquent des transitions à des instants précis. Pour respecter les relations temporelles requises, un circuit séquentiel reçoit un signal d'horloge : niveau temps un cycle Ce signal permet de synchroniser des événements, soit sur le front montant, soit sur le front descendant. N. Louvet Circuits logiques séquentiels. 20 mars 2016 2 / 30 Plan 1 2 3 4 Circuits élémentaires de mémorisation : les bascules Verrou (latch) Bascule (ip-op) Registres Automates Notion d'automate ni Automate ni synchrone Banc de registres et RAM Banc de registres Généralités sur la RAM Mémoire SRAM Conclusion N. Louvet Circuits logiques séquentiels. 20 mars 2016 3 / 30 L'idée de base vient du fait que l'on sait concevoir des circuits ressemblant au circuit suivant (qui n'est pas un circuit combinatoire bien formé) : Ce circuit présente deux états stables : 0 1 1 0 1 0 0 1 Le tout est de savoir comment passer d'un état à un autre. . . N. Louvet Circuits logiques séquentiels. 20 mars 2016 4 / 30 Bascule RS S Q R Q En résumé : si S (Set) prend momentanément la valeur 1, la bascule prend l'état Q=1 ; si R (Reset) passe momentanément à 1, la bascule prend l'état Q=0 ; La bascule se souvient donc qui de R ou de S a été activé pour la dernière fois : c'est tout ce dont on a besoin pour mémoriser un bit. Par contre, il faut éviter d'avoir R = S = N. Louvet Circuits logiques séquentiels. ... 20 mars 2016 5 / 30 Verrou (latch) On interdit la possibilité du S = R = 1, et on ajoute un signal de commande C : D Q C Q On obtient un verrou commandé par le signal C : si D=1 et que la commande C=1, la bascule passe à l'état Q=1, si D=0 et que la commande C=1, la bascule passe à l'état Q=0, quand C=0, le verrou ne peut plus changer d'état. Lorsque C est activé, la valeur D est stockée : mémoire 1 bit. N. Louvet Circuits logiques séquentiels. 20 mars 2016 6 / 30 Ce verrou stocke D lorsque C est à son niveau haut. Souvent C est un signal d'horloge : on dit qu'il s'agit d'un verrou régi par le niveau haut de l'horloge. signaux D Q C temps cycle 1 cycle 2 cycle 3 cycle 4 cycle 5 Il existe aussi des verrous régis par le niveau bas de l'horloge. D Q C latch niveau haut N. Louvet Circuits logiques séquentiels. D Q C latch niveau bas 20 mars 2016 7 / 30 Bascule (ip-op) La mémorisation se produit à la n d'un cycle, et le bit mémorisé est maintenu sur la sortie de la bascule pendant tout le cycle suivant. On peut mettre au point deux types de bascules. Bascule régie par le front descendant de l'horloge : signaux D Q D d0 d1 d2 d3 d0 d1 d2 d3 cycle 1 cycle 2 cycle 3 cycle 4 Q H C H temps cycle 0 Bascule régie par le front montant de l'horloge : signaux D Q D d0 Q H C d1 d2 d3 d0 d1 d2 d3 cycle 1 cycle 2 cycle 3 cycle 4 H temps cycle 0 On peut raisonner de la même manière avec les deux types de bascules : il sut d'aligner correctement la dénition des cycles d'horloge. N. Louvet Circuits logiques séquentiels. 20 mars 2016 8 / 30 En plaçant en série un verrou régi par le niveau bas de l'horloge, puis un autre régi par le niveau haut, on obtient une bascule : E D I Q D Q verrou niveau bas verrou niveau haut C C S H La bascule mémorise l'entrée E sur le front montant de l'horloge H : signaux E d0 I d1 d0 S d2 d1 d3 d2 d3 d0 d1 d2 d3 cycle 1 cycle 2 cycle 3 cycle 4 H temps cycle 0 On travaillera par la suite avec des bascules régies par le front montant. Rem : Avec en série un verrou régi par le niveau haut, puis un autre régi par le niveau bas, on a une bascule mémorisant sur le front descendant de l'horloge. N. Louvet Circuits logiques séquentiels. 20 mars 2016 9 / 30 Registres Nos registres sont fabriqués à partir de bascules régies par un front d'horloge. Cette convention xe la manière d'utiliser les bascules : sur un cycle d'horloge on calcule un résultat r , qui est mémorisé sur l'entrée D de la bascule à la n du cycle ; au cours du cycle suivant : i I I le résultat du cycle précédent r est disponible et constant sur la sortie Q ; on calcule un résultat r +1 , mémorisé à la n du cycle. i i Le résultat calculé au cycle i est typiquement la sortie d'un circuit combinatoire. signaux D Q C temps cycle 1 cycle 2 cycle 3 cycle 4 N. Louvet Circuits logiques séquentiels. cycle 5 20 mars 2016 10 / 30 Le registre le plus simple que l'on puisse imaginer consiste simplement à monter des ip-ops en parallèle, en les connectant au même signal d'horloge : E7 E6 E5 E4 E3 E2 E1 E0 D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop C C C C C C C C C S7 S6 S5 S4 S3 S2 S1 S0 On obtient le type de chronogramme suivant : signaux E data1 data2 data3 data4 data5 S data0 data1 data2 data3 data4 cycle 2 cycle 3 cycle 4 cycle 5 C temps cycle 1 A chaque n de cycle, l'entrée E est stockée et est disponible au cycle suivant. N. Louvet Circuits logiques séquentiels. 20 mars 2016 11 / 30 Pour mémoriser une donnée sur plusieurs cycles, on ajoute un signal W : E7 E6 E5 E4 E3 E2 E1 E0 D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop D Q flip−flop C C C C C C C C C W S7 S6 S5 S4 S3 S2 S1 S0 Voici un exemple de chronogramme : signaux E data1 S data0 data2 data1 data3 data4 data2 data3 cycle 4 cycle 5 W C temps cycle 1 cycle 2 cycle 3 A chaque n de cycle, soit W=1 et l'entrée E est stockée pour être disponible au cycle suivant ; soit W=0 et la sortie S conserve la même donnée au cycle suivant. N. Louvet Circuits logiques séquentiels. 20 mars 2016 12 / 30 Plan 1 2 3 4 Circuits élémentaires de mémorisation : les bascules Verrou (latch) Bascule (ip-op) Registres Automates Notion d'automate ni Automate ni synchrone Banc de registres et RAM Banc de registres Généralités sur la RAM Mémoire SRAM Conclusion N. Louvet Circuits logiques séquentiels. 20 mars 2016 13 / 30 Notion d'automate ni Il faut un formalisme prenant en compte le temps dans les circuits séquentiels. . . Exemples : Un passage à niveau doit réagir à l'événement un train approche en fermant ses barrières et en faisant passer des feux au rouge. . . Un processeur passe par les étapes du cycle d'instruction. Début de l’exécution Chargement d’une instruction Exécution de l’instrution chargée Fin de l’exécution Un automate ni est une abstraction du comportement d'un circuit séquentiel : c'est le pendant d'une fonction booléenne pour un circuit combinatoire. Cette abstraction est a priori asynchrone (l'automate réagit à des événements), mais on s'intéressera rapidement à des automates nis synchrones, dans lesquels les événements sont synchronisés par un signal d'horloge. N. Louvet Circuits logiques séquentiels. 20 mars 2016 14 / 30 Formellement, un automate ni est un quadruplet (S , E , T , s0 ) où S est un ensemble ni d'états (States) ; E est un ensemble ni d'événements (Events) ; T est une fonction de transition de S × E → S ; s0 ∈ S est un état spécial appelé état initial. Graphiquement, on fait des dessins avec un rond par état, et une èche pour indiquer l'état initial ; des èches d'un état s à un état s chaque fois qu'il existe une transition de s à s . On étiquette la èche avec l'événement qui déclenche la transition. i i j j N. Louvet Circuits logiques séquentiels. 20 mars 2016 15 / 30 un passage à niveaux a deux capteurs (CG et CD), à 300 m de chaque côté, qui sont normalement à 0, et sont à 1 lorsqu'un train pèse dessus. On suppose que les trains peuvent se croiser au passage à niveaux : Exemple : états : S = {barrière ouverte, barrière fermée GD, barrière fermée DG} ; événements : E = {CG 0 à 1, CD 0 à 1} ; état initial : s0 = barrière ouverte. CD passe de 0 à 1 barrière ouverte barrière fermée GD CD passe de 0 à 1 CG passe de 0 à 1 CG passe de 0 à 1 barrière fermée DG N. Louvet Circuits logiques séquentiels. 20 mars 2016 16 / 30 Automate ni synchrone Dans les d'automates nis, on considère qu'un événement peut se produire à n'importe quel instant : on prend surtout en compte la relation de cause à eet. Pour simplier, on introduit une horloge, et on suppose que les transitions ne peuvent intervenir que sur un front montant de l'horloge, se produisent susamment rapidement pour qu'on puisse les considérer comme instantanées. De plus, on remplace l'ensemble des événements E par un ensemble de valeurs d'entrées possibles I (Inputs). Un évènement est donc modélisé par le fait que l'entrée de l'automate a une certaine valeur lors d'un front montant de l'horloge. N. Louvet Circuits logiques séquentiels. 20 mars 2016 17 / 30 Un automate ni synchrone est un quadruplet (S , I , T , s0 ) où S est un ensemble ni d'états (States) ; I est un ensemble ni d'entrées (Inputs) ; T est une fonction de transition de S × I → S ; s0 ∈ S est un état spécial appelé état initial ; une transition se produit à chaque front montant d'une horloge. on aurait pu se baser sur le front descendant d'une horloge ; l'important est qu'une transition se produise à chaque n de cycle. Rem : N. Louvet Circuits logiques séquentiels. 20 mars 2016 18 / 30 on construit un compteur 2 bits modulo 4, qui s'incrémente si son entrée e = 1, et qui conserve sa valeur si e = 0. Notons (q1 q0 ) le registre d'état de l'automate que l'on cherche à construire. Exemple : e=0 01 e=1 e=1 00 e=0 10 e=1 e=0 e=1 11 e=0 q1 q0 e F1 (q1 , q0 , e ) F0 (q1 , q0 , e ) 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 N. Louvet Circuits logiques séquentiels. 20 mars 2016 19 / 30 q1 q0 e F1 (q1 , q0 , e ) F0 (q1 , q0 , e ) 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 fonction de transition e F registre d’état On trouve F0 (q1 , q0 , e ) = q0 ⊕ e , et F1 (q1 , q0 , e ) = q1 ⊕ (q0 e ). Bref, on sait construire un petit circuit combinatoire qui calcule F (q1 , q0 , e ). On pourra donc implanter facilement l'automate demandé : q0 q0 C N. Louvet Circuits logiques séquentiels. 20 mars 2016 20 / 30 Un automate ni synchrone peut être implanté en matériel de la façon suivante. Un registre à n bits stocke l'état courant de l'automate. La fonction de transition F est réalisée par un circuit combinatoire, qui prend en entrée : I I reçoit les n bits du registre d'état, et k signaux codant l'entrée courante ; ressort l'état suivant, qui sera stocké par le registre d'état en n de cycle. Un tel automate peut être implanté par le circuit suivant : fonction de entrée k transition F n registre d’état n n sortie C N. Louvet Circuits logiques séquentiels. 20 mars 2016 21 / 30 Si on est capable de décrire formellement un automate ni synchrone, on arrivera toujours à déduire de cette description un circuit séquentiel pour le réaliser. Il existe d'autres types d'automates que ceux décrits jusqu'à présent : dans un automate de Moore, la sortie n'est pas simplement l'état de courant de l'automate, mais une fonction (combinatoire) de cet état courant. On pourrait envisager de concevoir la totalité d'une UCT comme un automate : mais il serait impossible de s'y retrouver parmi tous les états possibles. Par contre, on peut concevoir l'unité de contrôle de l'UCT comme un automate, chargé d'activer de façon coordonnée les diérents circuits de l'UCT. N. Louvet Circuits logiques séquentiels. 20 mars 2016 22 / 30 Plan 1 2 3 4 Circuits élémentaires de mémorisation : les bascules Verrou (latch) Bascule (ip-op) Registres Automates Notion d'automate ni Automate ni synchrone Banc de registres et RAM Banc de registres Généralités sur la RAM Mémoire SRAM Conclusion N. Louvet Circuits logiques séquentiels. 20 mars 2016 23 / 30 Banc de registres Un banc de registre est un circuit qui regroupe un ensemble de registres, chacun identié par un numéro : chacun peut être lu ou écrit. Pour permettre les lectures, le banc prend en entrée un certain nombre de numéros de registres #rrX, un nombre identique de ports de lecture rdataX en sortie. Le banc de registre maintient en permanence sur son port de lecture rdataX la donnée contenue dans le registre dont l'indice est spécié sur l'entrée #rrX. Pour les écritures sur le front montant de l'horloge, le banc présente en entrée un numéro de registre #rw et un port d'écriture wdata, un signal d'horloge C et un signal d'écriture write. Si sur un front montant de l'horloge C le signal write est activé, la donnée présente sur le port d'écriture wdata est placée dans le registre #rw. N. Louvet Circuits logiques séquentiels. 20 mars 2016 24 / 30 Voici par exemple un banc de 8 registres 8 bits, avec deux ports de lecture : #rrA 3 #rrB 3 8 rdataA 8 rdataB 8 registres 8 bits #rw 3 wdata 8 write 1 1 C Pour implanter un tel banc de registres, on peut utiliser : 8 registres 8 bits ; 2 multiplexeurs 64 vers 8 pour sélectionner parmi les registres : I I rdataA en fonction de #rrA, rdataB en fonction de #rrB. un décodeur 3 vers 8 pour adresser le registre à écrire d'après #rw. N. Louvet Circuits logiques séquentiels. 20 mars 2016 25 / 30 3 décodeur 3 vers 8 #rw wdata register 0 8 register 1 8 register 2 8 register 3 8 register 4 8 register 5 8 register 6 8 register 7 8 mux 64 vers 8 3 8 rdataA mux 64 vers 8 #rrA #rrB 8 rdataB 3 8 1 C 1 write N. Louvet Circuits logiques séquentiels. 20 mars 2016 26 / 30 Généralités sur la RAM Les registres et les bancs de registres fournissent les éléments de base pour la construction de petites mémoires. Pour la construction de mémoire plus grandes, comme la mémoire centrale d'un ordinateur, on doit recourir à d'autres technologies. On distingue essentiellement deux types de mémoires RAM : Dans une SRAM (Static RAM), les bits sont stockés par des verrous : les données stockées se conservent tant que l'ordinateur est sous tension. Dans une DRAM (Dynamic RAM), les bits sont stockés à l'aide de condensateurs, dont il faut rafraîchir la charge à intervalles de temps réguliers : ils ne conservent leur charge que pendant quelques ms. N. Louvet Circuits logiques séquentiels. 20 mars 2016 27 / 30 Qu'est-ce qui distingue la SRAM et la DRAM ? A capacité équivalente : le temps d'accès à une DRAM est 5 à 10 fois plus long qu'avec une SRAM, une SRAM présente un coût beaucoup plus élevé qu'une DRAM. La SRAM et la DRAM jouent des rôles diérents dans la hiérarchie mémoire : la SRAM est utilisée pour les niveaux de cache du processeur (≈Mio), la DRAM compose la mémoire centrale (≈Gio). Certaines mémoires RAM sont asynchrones, ce qui signie qu'elles ne sont pas cadencées par une horloge. Mais il existe aussi des DRAM synchrones : SDRAM (Synchronous DRAM) : opérations sur un front d'horloge. DDR SDRAM (Double Data Rate SDRAM) : sur les deux fronts d'horloge. Dans la suite, on va s'intéresser brièvement à la SRAM. N. Louvet Circuits logiques séquentiels. 20 mars 2016 28 / 30 Mémoire SRAM Une SRAM de 2 mots de k bits de présente typiquement en entrée : m lignes d'adresse formant add, k lignes data pour l'écriture ou la lecture d'un mot de k bits en mémoire, un signal write qui doit être activé pour l'écriture depuis data, si write est à 0, alors on est en lecture, et la donnée est lue sur data. m add 15 SRAM 64 Ki 8 bits (64 Kio) 8 data write N. Louvet Circuits logiques séquentiels. 20 mars 2016 29 / 30 Conclusion Dans le cours précédent, nous avons fait des rappels sur les circuits logiques dont les sorties ne dépendent que des entrées. Ces circuits permettent d'eectuer les calculs pour les instructions arithmétiques ou logiques. combinatoires, Nous avons présenté les circuits séquentiels, dans lesquels les sorties dépendent de l'état courant et des entrées. Ces circuits permettent de mémoriser des données, et de gérer l'exécution des instructions dans un processeur. Les deux types de circuits seront utilisés dans les TP consacrés à la mise au point d'un processeur implantant l'architecture LC3. N. Louvet Circuits logiques séquentiels. 20 mars 2016 30 / 30