Avant-propos
Ce livre s’adresse aux étudiants en informatique de licence et maîtrise, aux élèves
ingénieurs, ainsi qu’aux professionnels de l’informatique - programmeurs ou autres -
soucieux de comprendre le fonctionnement des systèmes logiques présents dans les
dispositifs électroniques qui nous entourent, et en particulier les microprocesseurs et les
microcontrôleurs. Il est basé sur le cours, les travaux dirigés et les travaux pratiques
d’architecture des ordinateurs dispensés en 1ère année du département informatique
de l’Ecole Nationale Supérieure d’Electronique, d’Informatique, d’Hydraulique et de
Télécommunications (ENSEEIHT) de Toulouse, et il est le fruit de plus de 15 ans
d’expérience dans ce domaine.
Le livre est organisé en deux grandes parties. La première (chapitres 1 à 3) présente
d’abord toutes les notions de base préalables à la compréhension : le système de
numération binaire et son utilisation dans le codage des nombres entiers naturels et relatifs,
des caractères et des nombres réels ; ses propriétés dans les opérations d’addition, de
comparaison, etc. On décrit ensuite les atomes de base des systèmes logiques que sont les
portes et les bascules, et on décrit les méthodes d’analyse et de synthèse qui permettent
d’assembler de tels éléments pour former des modules de complexité croissante. Le
lecteur est ainsi amené à créer des circuits combinatoires et séquentiels, en employant
des méthodes réutilisables dans des contextes variés. On construit des encodeurs et des
décodeurs, des compteurs, des séquenceurs de différents types pour automatismes, etc. On
examine également en détail des modules qui seront utilisés dans des microprocesseurs :
comparateurs, unités arithmétiques et logiques, multiplexeurs, mémoires, etc. Dans toute
cette partie,l’accent est missur la modularitéet la réutilisabilité,notion aussi importanteici
que dans les disciplines logicielles.
La deuxième partie (chapitres 4 à 6) décrit le fonctionnement des microprocesseurs
et des microcontrôleurs au travers d’un processeur 32 bits spécifique à ce livre appelé
CRAPS, dont tous les organes sont des modules qui auront été étudiés dans la première
partie. Son langage machine de type RISC est un sous-ensemble de celui du SPARC, et il
est suffisamment riche pour pouvoir être utilisé dans des applications concrètes, ou pour
qu’on y incorpore un système d’exploitation comme Linux. Le but de cette partie est de
dévoiler le mystère de l’exécution d’un programme,qu’on pourra observer jusqu’à l’échelle
du bit élémentaire. De nombreux programmes écrits en assembleur CRAPS/SPARC sont
fournis,quipermettent de mettreen oeuvredesaspectsimportantsde la vied’un processeur:
déclenchement et prise en compte d’une interruption, dialogue avec des périphériques
d’entrées-sorties,appels de sous-programmesrécursifs,etc.
Au delà de la simple compréhension, cet ouvrage a pour objectif de permettre la
conception de systèmes logiques digitaux, et il en fournit tous les moyens. De nombreuses
méthodes de conception sont présentées, parfois algébriques ou tabulaires, parfois
fonctionnelles ou intuitives ; pour chacune, plusieurs exemples détaillés sont fournis, qui
appliquent les techniques présentées à des problèmes concrets, et qui donnent au lecteur la
possibilité de se construire un véritable savoir-faire dans ce domaine. Un outil logiciel de
simulation appelé SHDL est présenté,libre et gratuit,à la fois basé sur un langage structurel