Les appareils électroniques omniprésents, tels que les téléphones intelligents et les ordinateurs portables, reposent sur une architecture matérielle composée de microprocesseurs, de mémoires et de circuits d'entrée/sortie. Cet ensemble forme ce que l'on appelle un système informatique. Une compréhension approfondie de ces systèmes nécessite la maîtrise de leurs concepts de base.
Représentation des données numériques
Les systèmes informatiques manipulent l'information sous forme de données numériques. Plusieurs systèmes de numération sont fondamentaux.
Le système décimal (base 10) est courant dans la vie quotidienne. Une valeur comme 274.35 s'exprime ainsi :
\( 2 \times 10^2 + 7 \times 10^1 + 4 \times 10^0 + 3 \times 10^{-1} + 5 \times 10^{-2} \)
Le système binaire (base 2), utilisant uniquement les chiffres 0 et 1, est le langage natif des composants logiques. Par exemple, le nombre binaire 1101.101 vaut :
\( 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 + 1 \times 2^{-1} + 0 \times 2^{-2} + 1 \times 2^{-3} = 13.625_{10} \)
Le système hexadécimal (base 16), avec les symboles 0-9 et A-F, offre une notation compacte des valeurs binaires. Ainsi, 1C_{16} équivaut à :
\( 1 \times 16^1 + 12 \times 16^0 = 28_{10} \)
Le code BCD (Binary-Coded Decimal) représente chaque chiffre décimal par un groupe de 4 bits. Le nombre 92 en BCD s'écrit : 1001 0010.
Le code ASCII standardise la représentation des caractères alphanumériques et de contrôle, couvrant les plages 0-31 (non imprimables), 32-127 et 128-255 (étendue).
Techniques de conversion entre bases
La conversion d'un nombre d'une base vers une autre est une opération essentielle. Pour convertir une valeur de base \(b\) en décimal, on calcule la somme pondérée de ses chiffres par les puissances successives de \(b\).
Pour passer du décimal au binaire, on applique des divisions successives par 2 et on récupère les restes. Par exemple, 100_{10} en binaire s'obtient ainsi :
100 ÷ 2 = 50, reste 0 (bit de poids faible)
50 ÷ 2 = 25, reste 0
25 ÷ 2 = 12, reste 1
12 ÷ 2 = 6, reste 0
6 ÷ 2 = 3, reste 0
3 ÷ 2 = 1, reste 1
1 ÷ 2 = 0, reste 1 (bit de poids fort)
Le résultat est donc 01100100₂.
Le principe est identique pour la conversion décimale-hexadécimale (divisions par 16).
Pour convertir un nombre binaire en BCD, on le transforme d'abord en décimal, puis chaque chiffre décimal est codé en 4 bits. L'opération inverse (BCD vers binaire) procède de la même manière en deux étapes.
Unités de mémoire
La mémoire sert à stocker des données et des programmes sous forme binaire. On distingue deux catégories principales.
Les mémoires non volatiles conservent leur contenu sans alimentation électrique. Elles incluent la ROM masquée (MPROM), la PROM (programmable une fois), l'EPROM (effaçable par rayonnement UV), l'EEPROM (effaçable électriquement) et la mémoire Flash (type EEPROM à effacement par blocs).
Les mémoires volatiles perdent leur contenu à la coupure de courant. La SRAM (basée sur des bascules) est rapide mais plus volumineuse. La DRAM (basée sur des condensateurs) nécessite un rafraîchissement périodique mais offre une densité plus élevée.
L'accès à une mémoire s'effectue via trois bus : le bus d'adresse (sélection de la cellule), le bus de données (transport des bits) et le bus de contrôle (signaux de lecture/écriture).
Organisation d'un système informatique
Un oscillateur interne (ou horloge) génère un signal de synchronisation qui rythme l'ensemble des opérations, définissant ainsi la fréquence d'horloge du système.
Le circuit de réinitialisation (reset) place le système dans un état initial connu au démarrage, généralement en combinant un bouton poussoir et un circuit RC.
Périphériques d'entrée
Les dispositifs d'entrée permettent au système d'acquérir des informations du monde extérieur. Exemples :
- Interrupteurs mécaniques.
- Claviers matriciels, qui minimisent le nombre de broches d'E/S nécessaires grâce à un balayage des lignes et colonnes.
- Capteurs analogiques (température, luminosité) couplés à un convertisseur analogique-numérique (CAN).
- Encodeurs, boutons rotatifs, etc.
Périphériques de sortie
Les dispositifs de sortie permettent au système d'agir sur son environnement ou d'afficher des informations.
- Afficheurs : DEL simples, DELs en barregraph, afficheurs 7 segments, écrans LCD.
- Actionneurs : commandés via des techniques de modulation de largeur d'impulsion (MLI/PWM) pour un contrôle précis (vitesse de moteur, luminosité).
- Convertisseurs numérique-analogique (CNA) pour générer des signaux continus.
Microprocesseur et microcontrôleur
Le microprocesseur est l'unité centrael de traitement (CPU). Il comprend une unité arithmétique et logique (UAL), des registres et une unité de commande. Il exécute une séquence d'instructions (programme) stockées en mémoire.
Un microcontrôleur intègre sur une même puce un CPU, une mémoire (ROM/RAM) et des périphériques d'entrée/sortie. Il est conçu pour des applications embarquées spécifiques, offrant une solution compacte et économique. Ses domaines d'application sont vastes : automobile (injection, ABS), électroménager, automatisation industrielle (API), instrumentation médicale.
La firmware est un logiciel fortement lié au matériel, souvent stocké en mémoire non volatile, qui initialise et pilote directement les composants.
Représentation algorithmique
Les organigrammes (flowcharts) sont des outils graphiques standardisés pour décrire un processus ou un algorithme. Les symboles de base sont : l'ellipse (début/fin), le rectangle (traitement), le losange (décision) et la flèche (flux).
Exemple d'un organigramme de décision simple :
La programmation séquentielle exécute les instructions les unes après les autres. C'est la structure de base. Exemple en langage assembleur (syntaxe typique) :
; Calcul A + B et stockage en C
LOAD R1, [A] ; Charger la valeur de A dans R1
LOAD R2, [B] ; Charger la valeur de B dans R2
ADD R3, R1, R2 ; R3 = R1 + R2
STORE [C], R3 ; Stocker R3 à l'adresse C
La boucle permet de répéter un bloc d'instructions. Exemple d'une boucle comptant à rebours :
MOV R0, #10 ; Initialiser le compteur à 10
LOOP: DEC R0 ; Décrémenter le compteur
JNZ LOOP ; Sauter à LOOP si R0 n'est pas zéro
; Suite du programme...
La programmation structurée combine séquences, conditions et boucles de manière organisée et modulaire pour créer des programmes plus clairs et maintenables.