1 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs IUT.

Slides:



Advertisements
Présentations similaires
LES MEMOIRES et le décodage d’adresses
Advertisements

CHAftITREI ARCHITECTURE de BASE. Modèle de Von Neumann Langage d’assemblage1 John Von Neumann est à l'origine d'un modèle de machine universelle de traitement.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 18/09/2016 Cours microprocesseurs.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 20/09/2016 Algorithmique & Langage.
Composants Matériels de l'Ordinateur Plan du cours : Ordinateurs et applications Types d'ordinateurs Représentation binaires des données Composants et.
L'image: Le codage des images BacPro SEN Lycée Condorcet.
Table ronde – Réseaux et recherche d'emploi Comment fonctionne le réseau professionnel, comment le mobiliser et le développer lorsqu’on est étudiant ?
Chapitre 4 la représentation des nombres. Chapitre 4 : La représentation des nombres 1 - Introduction 1.1 – Notion de mot 2 - La représentation des entiers.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Algorithmique & Langage.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Algorithmique & Langage.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 27/09/2016 Algorithmique & Langage.
A1 : SYSTEMES DE NUMÉRATION ET CODES. PLAN A- Systèmes de numération 1- Système décimal 2- Système binaire 3- Système hexadécimal 4- Conversion des nombres.
Adressage IP Page 1 L’adressage IP.
Algorithmique & Langage C IUT GEII S1
Les mémoires de l’ordinateur
Masques et opérateurs de décalage
La technologie des mémoires
L’ordinateur et ses composants
Architecture des ordinateurs, Environnement Numérique de Travail
Téléchargement de fichiers
TIC (Techniques de l’Information et de la Communication)
Rappels et présentation du réseau local
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Introduction au Langage Pascal
Architecture des microordinateurs
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Architecture de machines Codage des informations
Représentation des nombres réels
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
Logique Combinatoire.
Pointeurs et langage C.
Algorithmique & Langage C
Représentation de l’information en binaire:
Rappels et présentation des supports de stockage
Evaluation de l'UE TICE 1 TRANSMISSION DES DONNEES INFORMATIQUES SABATIER Fabienne 1ère année de sciences du langage/sciences de l’éducation.
Création JJ Pellé le 11 octobre 2009
Algorithmique & Langage C
Le moniteur Le clavier L'unité centrale (l'ordinateur proprement dit) Qui sont des périphériques DEFINITIONS DE BASE.
Détection et correction des erreurs
Algorithmique & Langage C
Codage et Représentation de l’Information
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Le système binaire Table des matières : -Présentation du binaire
Programmation en C++ C++ de base
Evaluation de l'UE TICE 1 TRANSMISSION DES DONNEES INFORMATIQUES SABATIER Fabienne 1ère année de sciences du langage/sciences de l’éducation.
Le moniteur Le clavier L'unité centrale (l'ordinateur proprement dit) Qui sont des périphériques DEFINITIONS DE BASE.
À l’intérieur de l’ordinateur
Réalisé par : akarne youssef.  Un microcontrôleur, est un composant électronique qui rassemble tous les éléments d'un "mini- ordinateur" et qui se présente.
TIC (Techniques de l’Information et de la Communication)
Bus et adressage GIF-1001: Ordinateurs: Structure et Applications
Qu’est-ce qu’un ordinateur ?. Ordinateur – calculateur Un ordinateur est une machine qui permet de réaliser, d’exécuter des opérations, des calculs, c’est.
Architecture des ordinateurs
Gestion des photos Organisation du disque dur, Navigation
ARCHITECTURE DES ORDINATEURS
1 Décodage d’adresses et mémoires Introduction Définition, Caractéristiques des mémoires Classification des mémoires La mémoire centrale Caractéristiques.
LES MEMOIRES.
Chapitre 7 : Les mémoires
1 PROJET D’INFORMATIQUE les composants de l'ordinateur Gammoudi Rayéne 7 B 2.
Les réseaux logiques programmables
Sylvie DELAËT 2002 Architecture des machines Bienvenus en Amphi d’Architecture des Machines.
Chapitre IV Protection contre les erreurs
Chapitre IV Chapitre IV Protection contre les erreurs Les Réseaux Informatiques 1.
Architecture d’un ordinateur
1 Architecture des ordinateurs Généralités. 2 Définition Informatique = Information + Automatique Ce terme a été introduit en France. Il est très répandu.
Flowchart Itération Cours 04.
Chapitre 2 : Représentation de l’information dans la machine Introduction Représentation des nombres négatifs –Signe / valeur absolue –Complément à 1 –Complément.
Dridi Lobna 1 Couche Réseau II Réseau : Gestion de l’accès.
Introduction aux Circuits Reconfigurables et FPGA.
Transcription de la présentation:

1 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs IUT GEII S2 Première partie : La mémoire

2 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Licence P aternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique 2.0 France Vous êtes libres : * de reproduire, distribuer et communiquer cette création au public * de modifier cette création, selon les conditions suivantes : Paternité. Vous devez citer le nom de l'auteur original. Pas d'Utilisation Commerciale. Vous n'avez pas le droit d'utiliser cette création à des fins commerciales. Partage des Conditions Initiales à l'Identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identiqueà celui-ci. * A chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les conditions contractuelles de mise à disposition de cette création. * Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits. Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...) voir le contrat complet sous :

3 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs Les différents types de mémoires Architecture des microprocesseurs Un système minimum Microcontrôleurs Le PIC 18F4520 Architecture / Périphériques Les instructions 18F Du C vers le code machine Principes de programmation Périphériques Outils de développement

4 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire Une mémoire est un circuit à semi-conducteur permettant d’enregistrer, de conserver et de restituer des informations Elle est utilisée pour stocker les instructions d'un programme ainsi que les données associées (variables, constantes). Une mémoire peut être représentée comme une armoire de rangement constituée de différents tiroirs. Chaque tiroir représente alors une case mémoire qui peut contenir un seul élément : des données. Chaque tiroir possède un numéro appelé adresse. Chaque donnée devient alors accessible grâce à son adresse.

5 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire Données Adresses

6 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire Données (ici 8bits) Adresses (16bits) 0xFFFC 0x0003 0x0002 0x0001 0x0000 0xFFFF 0xFFFE 0xFFFD

7 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Notation hexadécimale Quatre chiffres binaires = 1 chiffre hexa Pour écrire en hexadécimal un nombre binaire dont le nombre de chiffres n'est pas multiple de 4, on rajoute 1, 2 ou 3 zéros à gauche. Exemple : = = 0x209A Des nombres codés sur 14 bits ont donc des valeurs comprises entre 0x0000 (tous les bits à 0) et 0x3FFF (tous les bits à 1).

8 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Capacité d'une mémoire Le nombre de bits d'adresse fixe le nombre de cases possibles. n bits d'adresses permettent de référencer 2 n cases. Le nombre de bits d'une case est la taille des données. C'est souvent 8 bits (un octet). Capacité d'une mémoire Avec n bits d'adresses : en bits :2 n x (nombre de bits d'une donnée) en octets : capacité en bits / 8 Si la taille des données est 8 bits, la capacité en octets est 2 n

9 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Capacité d'une mémoire En informatique : 1 kilo = 2 10 = Mega = 2 10 k = 2 20 = = Giga = 2 10 M = 2 20 k = Tera = 2 10 G = 2 20 M = 2 30 k = 2 40 Comme 1024 est proche de 1000, dans les publicités ont trouve parfois l'approximation 1ko = 1000o, 1Mo = 1 million d'octets, etc... Remarque : en anglais octet = byte (kb,Mb,...)

10 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Capacité d'une mémoire Depuis 1998 des préfixes normalisés ont été introduits mais leur usage reste assez peu répandu : kibi pour « kilo binaire », mébi pour « méga binaire », gibi pour « giga binaire », tébi pour « téra binaire »,.... On devrait donc écrire : 1 kibioctet (Kio) = 2 10 octets = octets 1 mébioctet (Mio) = 2 20 octets = Kio = octets 1 gibioctet (Gio) = 2 30 octets = Mio = octets 1 tébioctet (Tio) = 2 40 octets = Gio = octets Et utiliser la signification traditionnelle pour k,M,G : 1ko = 1000o, 1Mo = 10 6 o, etc...

11 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ordres de grandeur Une page de texte brut (1octet par caractère) ≈1ko Une page de traitement de texte : ≈100 ko Une image : webcam : 640x480 pixels codés sur 32bits = 1200ko appareil photo : 4Mpixels en JPEG qualité moyenne ≈ 1Mo Du son : 1 minute de mp3 : 1Mo 1 minute de format brut : 48Khz, 16 bits stéréo = 11Mo On estime que le cerveau humain stockerait l'équivalent de 200Mo ( )

12 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ordre de grandeur Programmes d'applications à microcontrôleur : Pas ou peu de graphisme ni de réseau : 1ko à 10-30ko (clé de voiture, télécommande TV, souris,... ) Graphique, réseau, traitement du signal : 100ko à 1-16Mo (petit routeur, modem, téléphone, appareil photo,... ) PC : fichier exécutable ≈ 10 à 100ko + ressource (image,video,...)

13 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Little Endian / Big Endian Pour stocker une donnée comportant plusieurs octets dans une mémoire dont la taille des données sont des octets, il y a deux manière de procéder : Little Endian : le poids faible dans l'adresse de plus faible valeur (the little end comes first) Big Endian : le poids faible dans l'adresse de valeur la plus forte (the big end comes first)

14 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Little Endian / Big Endian 0xAA 0xBB 0x1235 0x1234 La valeur 0xAABB est stockée à partir de l'adresse 0x1234 : Little Endian : Big Endian : Little Endian : Intel, Microchip,.... Big Endian : Freescale (Motorola),... 0xBB 0xAA 0x1235 0x1234

15 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Little Endian / Big Endian 0x00 0x01 0x La valeur entière =0x0001AABB est stockée à partir de l'adresse 0x : Little Endian : Big Endian : 0xAA 0xBB 0x x x xBB 0xAA 0x x01 0x00 0x x x int i = ;

16 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateur ET bit à bit Opérateurs ET bit à bit : & (à ne pas confondre avec le ET logique déjà vu : &&) char a = 0x92, b = 0xF1, c ; c = a & b ; a b c

17 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateur OU bit à bit Opérateurs OU bit à bit : | (à ne pas confondre avec le OU logique déjà vu : ||) char a = 0xA2, b = 0x71, c ; c = a | b ; a b c

18 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateur OU Exclusif bit à bit Opérateurs OU Exclusif bit à bit : ^ char a = 0x82, b = 0xF1, c ; c = a ^ b ; a b c

19 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateur d'inversion bit à bit Opérateurs d'inversion bit à bit : ~ char a = 0x82 ; b= ~a ; Tous les bits de a sont inversés. b vaut donc ici 0x7D a b Attention à ne pas confondre avec la négation logique ! !(x) est vrai (et vaut 1) quand x est faux et inversement. Comme toute valeur non nulle est vraie, ici avec b=!a; On aurait b qui vaudrait 0x01.

20 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateur de décalage à gauche Décalage à gauche : << Tous les bits sont décalés vers la gauche, les bits qui "entrent" sont des zéros, les bits qui "sortent" sont perdus. char a=0x8A, b ; b = a << 3 ; // décalage de trois positions vers la gauche a b perdus Mathématiquement, un décalage à gauche de n revient à multiplier par 2 n. Si des bits non nuls sont perdus c'est que le résultat ne tient pas dans le format.

21 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateur de décalage à droite Décalage à droite : >> Tous les bits sont décalés vers la droite, les bits qui "sortent" sont perdus. Lorsque la valeur est non signée, les bits qui "rentrent" sont égaux à zéro. unsigned char a=0x96, b ; b = a >> 2 ; // décalage de deux positions vers la droite a b perdus a est non signé Le décalage à droite de n positions correspond à une division par 2 n. Les bits perdus correspondent à 0.5,0.25,0.125 etc...

22 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateur de décalage à droite En C, si on décale à droite une valeur signée, le résultat dépend du compilateur utilisé ! Les bits qui rentrent sont soit des zéros (décalage logique), soit la valeur du bit de signe (décalage arithmétique). Il vaut donc mieux éviter d'utiliser l'opérateur >> sur des valeurs signées pour conserver la portabilité. Ex : signed char a = -4 ; a a>>1 arithmétique a>>1 logique Dépend du Compilateur !

23 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Masque d'un bit Les masques de bits sont utilisés pour isoler un bit (ou un sous-ensemble de bit). Ce sont des quantités comportant tous les bits à zéros sauf celui (ou ceux) que l'on veut isoler. Les masques permettent de tester ou de modifier des bits sans influencer les autres. masque du bit 3 : masque des bits 1 à 4 : valeur : masque : Test d'un bit : La quantité valeur&masque est non nulle ssi le bit correspondant au masque vaut 1

24 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Tester un bit On fait un ET avec son masque : Ex : Si le bit 4 de x vaut mask = 0x10; // if ( x & mask ) { // le bit 4 de x vaut 1 } else { // le bit 4 de x vaut 0 }

25 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Tester un bit En C, le masque du bit n° i peut s'écrire simplement 1<<i Donc pour tester le bit i on peut écrire : if ( x & (1<<i) ) { }

26 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mettre un bit à 1 (sans modifier les autres) On fait un OU avec le masque du bit int x ; x = x | 0x10 ; // met le bit 4 de x à x masque x | masque Rappel de logique a+1=1 a+0=a

27 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mettre un bit à 0 (sans modifier les autres) On fait un ET avec l'inverse du masque du bit int x ; x = x & (~0x10) ; // met le bit 4 de x à x ~masque x & ~masque Rappel de logique a.1=a a.0=0

28 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Inverser un bit (sans modifier les autres) On fait un Ou exclusif avec le masque du bit int x ; x = x ^ 0x10 ; // inverse le bit 4 de x x masque x | masque Rappel de logique a ⊕ 1=a a ⊕ 0=a

29 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Opérateurs "condensés" En C un expression de la forme x = x op y ; peut s'écrire x op= y ; Pour op ∈ { +, -, *, /, %, &,|, ^, > } Ainsi : x = x + 3 ; x += 3 ; y = y – b ; y -= b ; t = z z <<= a ; t = t & 0x04; t &= 0x04 ; etc....

30 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Macros de modifications de bits Il est souvent pratique de définir les macros suivantes pour manipuler les bits : // Mise à un d'un bit d'un octet #define BIT_SET( octet, nbit ) ( octet |= (1<<(nbit)) ) // Mise à zéro d'un bit dans un octet #define BIT_CLEAR( octet, nbit ) ( octet &= ~(1<<(nbit)) ) // Test d'un bit dans un octet // (renvoie 1 si le bit est à 1 et 0 sinon) #define BIT_TEST( octet, nbit ) ( octet&(1<<(nbit))? 1:0 )

31 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Macros de modifications de bits Utilisation : Mettre le bit 4 de c à 1 : BIT_SET(c,4); Mettre le bit 3 de c à 0 : BIT_CLEAR(c,3); Tester le bit 7 de c : if ( BIT_TEST(c,7)==0 ) { // b7 de c vaut 0 } ou if ( BIT_TEST(c,7) ) { // b7 de c vaut 1 }

32 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Conversion big endian little endian Pour une valeur 32 bits ça revient à faire : v = ((v>>24)&0x000000ff) | // move byte 3 to byte 0 ((v >8)&0x0000ff00) | // move byte 2 to byte 1 ((v<<24)&0xff000000) ; // move byte 0 to byte 3 En pratique on utilise les fonctions : htons() host to network short htonl() host to network long ntohs() network to host short ntohl() network to host long

33 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Différents types de mémoire RAM "famille RAM" (random access memory) Mémoire volatile : alimentation nécessaire pour la rétention des données stockées. Accès rapide en lecture et en écriture : ( <10 ns ) ROM "famille ROM" (read only memory) Mémoire non volatile (permanente) : rétention des données après la coupure de l'alimentation Accès : rapide en lecture ( < 10 ns ) impossible ou lent en écriture ( ~ ms )

34 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire RAM RAM dynamique Grande capacité à faible coût (par rapport au statique) Gestion complexe car les données doivent être rafraîchies en permanence (stockage dans un "condensateur" qui se décharge) C'est la mémoire RAM principale des ordinateurs de bureau

35 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire RAM RAM statique Coût plus élevé que les RAM dynamique à capacité égale Accès facile et très rapide Utilisation : pour des petites tailles (jusqu'à quelques Mo) lorsque la gestion et l'accès doivent être simple et rapide. Mémoire cache des ordinateurs de bureau Mémoire cache des contrôleurs de disques durs Mémoire RAM des micro-contrôleurs. Registres internes des circuits électroniques (µP,UART,...)

36 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire famille "ROM" Masked ROM Programmée en usine à partir d'un masque. Non reprogrammable Utilisée uniquement dans les circuits intégrés et pour les application à très fort volume. OTP (One Time Programmable) Programmée par l'utilisateur une seule fois. Utilisée pour le stockage d'un programme dans des applications à fort volume. Faible coût.

37 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire famille ROM EEPROM (Electricaly Erasable Programmable Memory) Mémoire effaçable électriquement et donc reprogrammable. Lente en écriture (qq ms). Lecture assez rapide Utilisée pour stocker des données qui ne changent pas très souvent : programmes, constantes de calibration, codes d'accès,... ( à 1M d'écritures seulement) FLASH (flash rom) Mémoire effaçable électriquement et donc reprogrammable. Grande densité d'intégration à faible coût. Utilisation : mémoire programme micro-contrôleur (NOR), stockage de données : clé usb, appareil photo, carte SD, (NAND)... Autre caractéristiques voisines de l'EEPROM

38 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoires Flash Flash NOR Les temps d'effacement et d'écriture sont longs mais elle possède une interface d'adressage permettant un accès aléatoire et rapide à n'importe quelle position. (XIP : excute in place) Utilisée pour le stockage des programmes (microcontroleur, téléphone, box, etc...) : (XIP : excute in place) stockage très fiable. Flash NAND Plus rapide et produite à moindre cout que les NOR. Mais présente un taux d'erreur non négligeable. Un algorithme de correction d'erreur est nécessaire. Peu adaptée au boot direct. Utilisée pour le stockage de masse : Clé usb, carte SD, disque SSD.

39 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Et les MRAM ? La technologie MRAM (Magnetic RAM) permet de réaliser des mémoires qui cumulent certains avantages des Flash, des RAM dynamiques et des RAM statiques : Accès rapide en lecture et écriture (≈25ns) Non volatile Grande densité d'intégration Faible consommation Accès simple comme les RAM statiques Ex : Freescale MR2A16A 256k mots de 16bits (4Mb) Ces circuits devraient bientôt remplacer les DRAM de nos ordinateurs de bureau. Ils pourraient ainsi démarrer très rapidement.

40 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur En ajoutant des bits supplémentaires (redondance) on peut détecter, voire corriger des erreurs de lecture (ou de transmission). Le mécanisme le plus simple est la parité qui permet de détecteur une (seule) erreur. En parité paire : On ajoute un bit dit de parité calculé de manière à ce que la parité totale soit paire. (en parité impaire, on veut que la parité totale soit impaire) A la réception, on recalcule la parité et on peut détecter une erreur de transmission. (S'il y a plus d'une erreur le procédé est inopérant).

41 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Parité Exemple en parité paire : On veut transmettre les 7 bits : On rajoute un bit de parité : Si à la réception on reçoit : On recalcule la parité totale et on la trouve impaire. On détecte donc une erreur de transmission. Par contre on ne peut pas la corriger car on ne pas déterminer la position du bit erroné. 1

42 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur (Hamming) Il existe des codes qui permettent non seulement de détecter des erreurs mais aussi de les corriger. Le plus simple est le code de Hamming 7,4 qui permet de détecter et de corriger une seule erreur. Pour 4 bits à transmettre on rajoute 3 bits de parité (7,4) d1,d2,d3 et d4 sont les quatre bits à transmettre p1,p2 et p3 sont les parités rajoutées. p1 = parité de d1,d2,d4 p2 = parité de d1,d3,d4 p3 = parité de d2,d3,d4

43 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur (Hamming) Une erreur sur les parités n'affecte qu'un seul cercle. Une erreur sur une donnée affecte deux cercles sur trois. En recalculant les parités on retrouve la position de l'erreur. Images wikipedia.fr

44 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur (Hamming) 1101 Soit d1,d2,d3,d4 = On calcule p1=1,p2=0,p3=0 Et on transmet : Dans l'ordre p1,p2,d1,p3,d2,d3,d4

45 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur (Hamming) On reçoit p1,p2,d1,p3,d2,d3,d4: On recalcule les parités p1' = P(1,1,1) = 1 = p1 donc ok (0) p2' = P(1,1,1) = 1 # p2 donc erreur (1) p3' = P(1,1,1) = 1 # p3 donc erreur (1) e3e2e1 = 110 = 6 donc l'erreur est sur le 6ème bit transmit. Il faut donc corriger d3 ! et le message correct est : Et les données utiles sont donc : 1101

46 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur Reed Solomon On découpe les données utiles en blocs de taille fixe et on obtient un autre blocs de taille fixe (plus gros) qui est effectivement transmis. Par exemple, soit trois octets à transmettre : On calcule la somme Et la somme pondérée : Et on transmet : A la réception on recalcule s' et sp'. Si il y a une différence, c'est qu'il y a une erreur. La valeur de l'erreur est donnée par la différence s' – s La position de l'erreur est donnée par (sp'-sp)/(s' – s)

47 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur Reed Solomon Par exemple soit n1=23, n2 = 4 et n3 = 18 On calcule : s = = 45 sp = x4 + 3x18 = 85 Et on transmet : 23,4,18,45,85 A la réception si on reçoit : 23,56,18,45,85 On calcule s' = 97 donc l'erreur est e = s' – s = 97 – 45 = 52 On calcule sp' = 23+2x56+3x18= 189 donc ep=189 – 85 = 104 ep/e = 104/52 = 2 donc l'erreur est sur le deuxième octet. 56 – 52 = 4 donc le deuxième octet vaut 4. On a donc retrouvé n1=23, n2 = 4 et n3 = 18. NB : s et sp peuvent aussi être mal reçus : S'il y a une erreur sur s mais pas sur sp : n1,n2,n3 sont corrects S'il y a une erreur sur sp mais pas sur s : n1,n2,n3 sont corrects

48 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Code correcteur (entrelacement) Il existe bien sûr des codes plus compliqués qui permettent de corriger plus d'une erreur. Cependant en pratique les erreurs arrivent souvent en "paquets" : parasite, affaiblissement,.... Dans ce cas on étale (srambling) les bits d'un même groupe sur une grande durée et il y a alors de grande chance qu'un problème de transmission n'affecte qu'un seul bit d'un groupe. Le code correcteur permet alors de retrouver le message original Un affaiblissement durant 3 x temps d'un bit n'affecte qu'un seul bit de chaque groupe

49 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Le codage Reed-Solomon utilisé par LRO Cette image a été transmise en 2009 par laser à sonde lunaire LRO. La correction Reed-Solomon permet de reconstituer le signal reçu malgré les erreurs de transmission.

50 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Un circuit mémoire (ram statique) CY62256 A0-A14 : entrées adresses I/O0-I/O7 : entrées/sorties données (parfois notées D0-D7) /CE : chip enable (parfois noté /CS chip select) /WE : write enable (parfois R/W) 0 : écriture I/00-I/O7 sont des entrées 1 : lecture I/O0-I/O7 sont des sorties /OE : activation des sorties D0-D7

51 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ecriture CY62256 /CE=0 /OE=1 /WE=0 1) on applique l'adresse 2) /CE=0 /OE=1 /WE=0 3) on applique les données sur les broches I0-I7 qui sont alors des entrèes. données adresses

52 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Lecture CY62256 /CE=0 /OE=0 /WE=1 1) on applique l'adresse 2) /CE=0 et /OE=0 (/WE=1) 3) les données sont présentes sur les broches O0-O7 qui sont alors des sorties. données adresses

53 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Capacité d'un circuit mémoire On peut la déterminer à partir du nombre n de broches d'adresse : 2 n cases et du nombre de broches de données : taille des cases Exemple : CY A0-A14 donc 15 bits d'adresses = 2 15 cases I/O0-I/O7 donc 8 bits : un octet par case Capacité 2 15 o = o = 32ko 32k x 8bits = 256k bits (d'où CY62256)

54 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Notion de bus Un bus est un ensemble des lignes binaires. Bus d'adresses : ensemble des lignes d'adresses (unidirectionnel) Bus de données : ensemble des lignes de données (généralement bidirectionnel) Bus de contrôle : lignes /WE, horloges, etc... Plusieurs circuits peuvent être câblés en parallèle sur un bus. La logique trois états (0,1, Haute impédance) est utilisée pour éviter les conflits.

55 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Décodage d'adresses RAM1RAM2Flash Décodeur d'adresses Bus d'adresses Bus de données /CE Le décodeur d'adresse est un circuit combinatoire qui positionne les signaux /CE en fonction de la valeur présente sur le bus d'adresses

56 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Décodage d'adresses Exemple de partage : Avec un bus d'adresses sur 16 bits on dispose de 2 16 adresses = 64K adresses 0x0000 à 0xFFFF C'est l'espace adressable. Que l'on peut partager par exemple en : 0x0000 à 0x1FFF RAM1 0x2000 à 0x3FFF inutilisé 0x4000 à 0x7FFF RAM2 0x8000 à 0xFFFF Flash Dans ce cas l'équation pour /CEFlash est simplement /A15 Exercice : Ecrire les équations de /CSRAM1 et /CSRAM2

57 © Copyright 2005, Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Décodage d'adresses Capacité de l'espace d'adresses alloué à une zone : Nombre de cases = Adresse Haute – Adresse Basse + 1 Exemple : Taille Flash = 0xFFFF – 0x = 0x7FFF + 1 = 0x8000 cases 0x8000 = = 8. (2 4 ) 3 = = 2 15 = = 32ko Exercice : calculer les tailles des zones RAM1, libre et RAM2.