Architecture Matérielle et Logicielle (LIF6)

Documents pareils
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

VIII- Circuits séquentiels. Mémoires

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Architecture des ordinateurs

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Licence Sciences et Technologies Examen janvier 2010

Algorithme. Table des matières

IV- Comment fonctionne un ordinateur?


ASR1 TD7 : Un microprocesseur RISC 16 bits

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Conception de circuits numériques et architecture des ordinateurs

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

IFT1215 Introduction aux systèmes informatiques

GPA770 Microélectronique appliquée Exercices série A

Représentation d un entier en base b

V- Manipulations de nombres en binaire

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

1. Structure d'un programme FORTRAN 95

Informatique Générale

ELP 304 : Électronique Numérique. Cours 1 Introduction

Architecture Matérielle et Logicielle (LIF6) Cahier d'exercices, automne 2014

Cours 1 : Qu est-ce que la programmation?

Cours Informatique 1. Monsieur SADOUNI Salheddine

Logiciel de Base. I. Représentation des nombres

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Programmation linéaire

Microprocesseur + Logiciel

QUESTION 1 {2 points}

Définitions. Numéro à préciser. (Durée : )

Représentation des Nombres

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

UE Programmation Impérative Licence 2ème Année

La mémoire. Un ordinateur. L'octet. Le bit

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Temps Réel. Jérôme Pouiller Septembre 2011

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

TP : Gestion d une image au format PGM

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Architecture : Circuits numériques et éléments d architecture

Programmation C. Apprendre à développer des programmes simples dans le langage C

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

TD Architecture des ordinateurs. Jean-Luc Dekeyser

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

1 Recherche en table par balayage

Algèbre binaire et Circuits logiques ( )

Système binaire. Algèbre booléenne

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Chapitre VI- La validation de la composition.

Solutions du chapitre 4

Cours Informatique Master STEP

Cours 1 : La compilation

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Bases de programmation. Cours 5. Structurer les données

Cours d Informatique

Gé nié Logiciél Livré Blanc

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Conventions d écriture et outils de mise au point

DM 1 : Montre Autoquartz ETA

TD3: tableaux avancées, première classe et chaînes

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Tout savoir sur le matériel informatique

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Feuille TD n 1 Exercices d algorithmique éléments de correction

Logique séquentielle

Cours 3 : Python, les conditions

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Projet Matlab : un logiciel de cryptage

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Organisation des Ordinateurs

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

2.1 Le point mémoire statique Le point mémoire statique est fondé sur le bistable, dessiné de manière différente en Figure 1.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

I- Définitions des signaux.

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Le signal GPS. Les horloges atomiques à bord des satellites GPS produisent une fréquence fondamentale f o = Mhz

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Programmation assembleur : aperçu

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Quelques éléments de compilation en C et makefiles

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Programmation sous QT

Jeu d instructions NIOS II

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Projet Active Object

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Transcription:

Architecture Matérielle et Logicielle (LIF6) Exercice 1 : Détection de séquences spécifiques On souhaite implanter un circuit séquentiel qui reconnaît deux séquences spécifiques quand celles-ci sont reçues à l entrée. Ces séquences consistent en quatre 1 consécutifs ou quatre 0 consécutifs. Le circuit possède une sortie sur laquelle il génère le signal suivant : prend la valeur 1 sur un cycle si lors des quatre cycles précédents a conservé la valeur 1, ou a conservé la valeur 0 ; sinon, prend la valeur 0. Le chronogramme suivant illustre le fonctionnement du circuit ( désigne le signal d horloge) : Partie 1 : Avec un automate séquentiel classique 1) Donne un automate fini séquentiel permettant de modéliser le circuit demandé. Vous choisire un codage (simple et logique) des états de l automate, et vous indiquere la valeur de la sortie dans chacun des états de l automate. Établisse la table de transition de l automate en encodant les états en binaire, puis la table de vérité pour la sortie en fonction de l état courant. SOLUTION. On utilise 9 états : 1 état initial, 4 états pour détecter une séquence de quatre 0s consécutifs et encore 4 pour détecter une séquence de quatre 1 consécutifs. On code les états sur 4 bits : à partir de 0000 jusqu à 1000. 0000 0001 0101 0010 0110 0011 0111 0100 1000 =1 =1 Note bien que de cette façon, la sortie passe à 1 sur le cycle qui suit l arrivée du quatrième 0 dans une séquence de quatre 0, ou du quatrième 1 dans une séquence de quatre 1. La table des transitions est la suivante : Nicolas Louvet et Laure Gonnord 1/5

état courant entrée état suivant q 3 q 2 q 1 q 0 F 3 F 2 F 1 F 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 Table de vérité de la fonction de sortie (q 3, q 2, q 1, q 0 ) : état courant sortie q 3 q 2 q 1 q 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 2) Exprime la fonction de sortie, c est à dire en fonction de l état courant (q 3, q 2, q 1, q 0 ), par une formule booléenne. SOLUTION. = q 3 q 2 q 1 q 0 + q 3 q 2 q 1 q 0 = (q 3 q 2 + q 3 q 2 ) q 1 q 0 = (q 3 q 2 ) q 1 q 0. 3) Combien de termes comportent les formes normales disjonctives pour chaque fonction partielle de la fonction de transition F : (q 3, q 2, q 1, q 0 ) (F 3,F 2,F 1,F 0 ) Est-ce la bonne façon de concevoir notre circuit SOLUTION. Pour chaque fonction partielle F i : (q 3, q 2, q 1, q 0 ) F i, il suffit de compter le nombre d occurrences de 1 dans la colonne correspondant à F i dans le tableau de la question précédente pour avoir le nombre de termes l écriture de cette fonction sous forme normale disjonctive. Cela donne : pour F 3, 2 termes, pour F 2, 9 termes, pour F 1, 4 termes, pour F 0, 12 termes. Bref, les formes normales disjonctives de F 3 et F 1 sont «gérables à la main,» mais cela serait beaucoup plus difficile de simplifier F 2 ou F 0 (peut-être en essayant les tableaux de Karnaugh, mais cela donnerait de toute façon un circuit asse gros). Notons que pour F 0, on peut tenter d écrire sa forme normale conjonctive, qui comporte 6 facteurs (c est le nombre de 0 dans la colonne de F 0 ). Par contre, la forme normale conjonctive de F 2 comporte autant de facteurs que sa forme normale disjonctive comporte de termes (9 facteurs et 9 termes respectivement). On constate ici que le formalisme des automates finis peu vite conduire à des expressions logiques Nicolas Louvet et Laure Gonnord 2/5

asse lourdes à manipuler pour exprimer la fonction de transition : on proposera une solution plus directe dans la deuxième partie de l exercice.... Partie 2 : Avec des registres à décalage Au lieu d implanter le circuit considéré sous la forme d un automate, on va essayer d utiliser un registre à décalage. SIPO 4 bits E flip flop flip flop flip flop flip flop Q1 Q2 Q3 Q4 Un registre à décalage est un registre de taille fixe, fabriqué à l aide de bascules flip-flops, dans lequel les bits sont décalés à fin de cycle de l horloge. On considère un registre de type SIPO (serial in, paralel out) : l entrée est en série et la sortie est en parallèle. Prenons l exemple d une suite de 4 bits, 1101. Le fait que l entrée soit en série signifie qu on utilise un seul fil pour insérer l entrée dans le registre : on envoie 1, suivi de 0, puis de 1, et encore de 1 sur l entrée E. La sortie en parallèle permet de récupérer plusieurs bits en même temps. Donc, pour cet exemple après 4 périodes de l horloge du circuit on a 4 fils qui renvoient chacun un bit : Q 1 = 1, Q 2 = 1, Q 3 = 0, Q 4 = 1. Il peut être intéressant de dessiner un chronogramme pour illustrer cela. 1) Propose un circuit utilisant un registre à décalage pour détecter une suite de quatre 1 ou de quatre 0, comme dans la première partie de l exercice. Vous vérifiere le bon fonctionnement de votre circuit à l aide d un chronogramme, en prenant pour séquence d entrée : 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0 (c est le signal d entrée du chronogramme de la partie 1). SOLUTION. On peut utiliser un seul registre à décalage et calculer en fonction des sorties Q4, Q3, Q2 et Q1 du registre à décalage : = Q4 Q3 Q2 Q1 +Q4 Q3 Q2 Q1. Cela donne le circuit suivant : SIPO 4 bits Q1 Q2 Q3 Q4 On construit le chronogramme demandé en gardant bien à l esprit que le signal qu une bascule flipflop reçoit sur son entrée au cours d un cycle, elle le maintient sur sa sortie pendant tout le cycle suivant (on utilise des pour indiquer les valeurs que l on ne peut pas connaître) : 0 0 0 1 0 0 0 1 1 0 0 Q4 0 0 1 0 0 0 0 1 1 1 1 Q3 0 0 1 0 0 0 0 1 1 1 1 1 Q2 0 0 1 0 0 0 0 1 1 1 1 1 0 Q1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 On constate bien que le signal de sortie est le même que celui de l exemple initial. Notamment, on constate bien que passe à 1 sur un cycle lorsqu une séquence de quatre 0 ou quatre 1 était présente sur les quatre cycles précédents. Nicolas Louvet et Laure Gonnord 3/5

Exercice 2 : Nombre de chiffres dans une chaîne de caractères Le but est d écrire une routine pour compter le nombre de chiffres présents dans une chaîne de caractères se terminant par un '\0'. Par exemple, le nombre de chiffres dans la chaîne "2 fois 3 fait 6" est 3. On rappelle que le code ASCII de \0 est 0, celui de '0' est 48, et celui de '9' est 57. Pour la routine nbchiffres en question, il vous est demandé de traduire l algorithme suivant : paramètres d'entrée paramètre de sortie registres temporaires : R2, R3, R4 R1 <- 0 R2 <- R0 R3 <- mem[r2]; hile(r3!= '\0') { } if('0' <= R3) { } if(r3 <= '9') R1++; R2++; R3 <- mem[r2]; : R0 contient l'adresse du début de la chaîne : R1 le nombre de chiffres comptés Compléte le programme ci-dessous dans le langage d assemblage du LC3. Vous deve respecter les commentaires présents dans le code, et ajouter vos propres commentaires. N oublie pas de compléter le programme principal.... ; charge l'adresse ch dans R0... ; appel à la routine nbchiffres... ; range le résultat à l'adresse r ALT ; rend la main au système d'exploitation ; Partie dédiée aux données ch:.stringz "2 fois 3 fait 6" r:.blkw 1 ; réserve une case pour le résultat ero:.fill 48 ; code ASCII de '0' neuf:.fill 57 ; code ASCII de '9' ; Routine pour compter le nombre de chiffres dans une chaîne terminée par un '\0'. nbchiffres: ;######## à compléter ######## SOLUTION. La partie programme principal : LEA R0,ch ; charge l'adresse ch dans R0 JSR nbchiffres ST R1,r ALT Premier jet pour le programme : nbchiffres: ADD R1 R1 #0 ; R1 <- 0 ADD R2 R0 #0 ; R2 <-R0 LDR R3 R2 #0 ; R3 <- mem[r2] BR finboucle ; si R3=0 stop (code ascii 0) boucle: ADD R4 R3 #-48 ; R4 = R3 - '0' Nicolas Louvet et Laure Gonnord 4/5

BRn finsi ; si R3 - '0' < 0 on n'incrémente pas R1 ADD R4 R3 #-57 ; R4 <- R3 - '9' BRp finsi ; si R3 -'9' >0 on n'inc. pas R1 ADD R1 R1 #1 ; sinon, c'est un chiffre! finsi: ADD R2 R2 #1 LDR R3 R2 #0 BRp boucle finboucle: RET ; R3 <- mem[r2] ; si R3 >0 retour au début de boucle Les constantes -48 et -57 sont malheureusement trop grandes pour tenir sur 5 bits en complément à 2. On remplace alors ADD R4 R3 #-48 par : LD R4 ero NOT R4 R4 ADD R4 R4 R3 par exemple. Exercice 3 : Débogage... On considère le programme ci-dessous, qui s assemble sans message d erreur, est s exécute sur le LC3 ; par contre, l exécution n aboutit jamais au ALT : le programme boucle indéfiniment... LD R0, n ; R0 <- mem[n] JSR fois20 ; appel à la routine fois20 : R1 <- 20 * R0 ST R1, r ; mem[r] <- R1 ALT ; rend la main à l'os n:.fill 7 ; Donnée, entier 7 r:.blkw 1 ; Résultat ; Routine pour effectuer R1 <- 20 * R0 ; Attention, R2 est écrasé par l'appel. fois20: JSR fois10 ; R1 <- 10 * R0 ADD R1, R1, R1 ; R1 <- 2 * R1 = 20 * R0 RET ; retour à l'appelant ; Routine pour effectuer R1 <- 10 * R0 ; Attention, R2 est écrasé par l'appel. fois10: ADD R1, R0, R0 ;... ADD R2, R1, R1 ;... ADD R2, R2, R2 ;... ADD R1, R1, R2 ;... RET ; retour à l'appelant 1) Identifie la raison pour laquelle le programme entre dans une boucle infinie : explique clairement les raisons du problème. 2) Quelle solution classique permet de remédier à ce problème 3) fois10 effectue R1 <- 10 * R0 : ajouter des commentaires dans le programme pour justifier cela. Pour cet exo, vous avec des éléments de correction ici : http://perso.ens-lyon.fr/nicolas.louvet/lif6/annales/print2016_ccfcor.pdf Nicolas Louvet et Laure Gonnord 5/5