ETRS 811 « FPGA et processeurs reconfigurables » Emilie HERAULT [email protected] Bâtiment Chablais, bureau 212 04 79 75 94 68 1 Présentation du cours z z Organisation : z CM : 10.5 h en 7 séances z 6 TDs (M. Montagny) z 3 TPs (M. Montagny) Evaluation : z 1 exam théorique (75% ) z 1 exam de TP (25%) 2 Présentation du cours z Objectifs du cours : z z z z Concevoir et appréhender des systèmes complexes à base de FPGA Savoir utiliser des IPs et des processeurs reconfigurables Maitriser la conception de circuits numériques synchrones Prérequis : z VHDL, connaissances de base sur les FPGA 3 Matériel z Logiciels QUARTUS II et Nios II Embedded Design Suite Possibilité de télécharger sur le site d’Altera Quartus II Web Edition https://www.altera.com/download/software/quartus-ii-we z z Carte DE1 d’Altera 4 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. SOPC, design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 5 Plan global du cours z I. Rappels et introduction z Rappels FPGA et VHDL z Introduction : Co-design z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. SOPC, design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 6 Rappels : FPGA z Vidéo 7 Rappels : FPGA Virtex II (Xilinx) Pentium IV (Intel) 8 Rappels : FPGA 9 Rappels : FPGA 10 Rappels : FPGA Synthèse Placement, routage Téléchargement et tests Génération du bitstream 11 Rappels : FPGA z Des circuits flexibles permettant des évolutions z De meilleures performances qu’un logiciel z Moins chers que des ASICs pour de faibles volumes z Un temps de développement moins élevé Mais : z Plus chers que des circuits standards z Gourmands en énergie (sauf les « low power ») z Volatiles z Leur sûreté de fonctionnement est parfois considérée comme faible (à juste titre?) 12 Rappels : FPGA z Programmation z Par schématique z Par langage de programmation z HDL : Hardware Description Langage (AHDL, ABEL,…) z VHDL : Very High Speed Integrated Circuit Hardware Description Langage z Verilog : conception et simulation de circuits numérique z SystemC : modélisation de systèmes numériques matériels et logiciels à l'aide de C++ (systèmes matériels, mais aussi des systèmes logiciels, mixtes ou non-partitionnés) 13 Rappels : VHDL z Langage de modélisation et/ou de synthèse de systèmes électroniques z Langage généraliste x simulation z Langage près des portes logiques x VHDL de synthèse z Système de CAO : Schéma ou VHDL ou mixte 14 Rappels : VHDL 15 Rappels : VHDL z Instruction séquentielle : instruction à l’intérieur d’un process z Instruction concurrente : instruction à l’extérieur des process. Rappel : les instructions se placent toujours uniquement entre le begin et le end de l’architecture 16 Rappels : machine à états z Par essence la conception hardware est concurrente z Pour introduire du séquentiel, on utilise des séquenceurs, par exemple une machine à états. 17 Rappels : machine à états Entrée ≠ ‘1’ E0 Entrée ≠ ‘2’ P=0 Entrée = ‘1’ E1 1=1 P=0 Entrée ≠ ‘3’ Entrée = ‘2’ P=0 E2 Entrée = ‘3’ E3 P=1 18 Rappels : machine à états 19 Exercice z Concevoir une montre numérique z Un système qui compte les secondes de 0 à 9 et qui affiche le résultat sur un afficheur 7 segments z 3 groupes : une solution logicielle, une solution en vhdl, une solution en schématique 20 Exercice z Solution logicielle 21 Exercice z Solution schématique 22 Exercice z Solution vhdl 23 Plan global du cours z I. Rappels et introduction z Rappels FPGA et VHDL z Introduction : Co-design z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 24 Conception de systèmes 25 Définitions z Système z z Toute « chose » constituée de parties organisées pour assurer une fonction ou un ensemble de fonctions dans son environnement Architecture z Structure fondamentale et unifiante du système définie en termes de ses constituants, interfaces, liens, comportements et contraintes 26 Architectures z z z Logicielles (software) z Flexibilité, facilité de maintenance z Faible temps de conception z Faible coût de conception z Pas d’ajout de matériel Matérielles (hardware) z Performances z Consommation z Protection industrielle Mixtes z Objectif : prendre les avantages des 2 approches ¼ co-design 27 Flexibilité z 60 % environ des activités dans le domaine des systèmes embarqués se situent dans la maintenance et les mises à jour z Pour un logiciel : z z Si bug ou évolution du produit : modification du code Pour une carte : z Généralement remplacement du produit 28 Performance z Microprocesseur à 1 GHz ¬1 000 000 000 opérations par seconde z FPGA à 300 MHz avec 1000 multiplicateurs ¬300 000 000 000 opérations par seconde 29 Complémentarité soft/hard Soft Hard Performance Contraintes physiques Intégration Consommation Contraintes économiques du produit Contraintes économiques de développement Coût de production Flexibilité Protection industrielle Coût de développement Temps de développement Prise de risque 30 Choix d’une architecture 31 Qu’est ce que le co-design ? z Conception (spécifier + valider + synthétiser) concurrente (logicielle + matérielle) d’un circuit électronique complexe z Etapes clé : z Partitionnement hard/soft z Modélisation z Co-validation z Co-synthèse 32 Flot de conception 33 Flot de conception Microprocesseur Microcontrôleur DSP 34 Flot de conception Code compréhensible par et optimisé pour le matériel 35 Flot de conception Peut prendre 60 % à 70 % du cycle de conception 36 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z Méthodologie z Descriptions VHDL paramétrables z Conception Full synchrone - Signal d’horloge z III. Microprocesseurs z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 37 Méthodologie de conception synchrone z Méthodologie orientée FPGA et CPLD z Règle principale : conception FULL synchrone z Dans le cas de réalisations pour un ASIC, de design asynchrone, … les méthodologies et les règles peuvent être différentes 38 Complexité d’un système z Complexité ≠ densité z Facteurs aggravants sur la complexité : z Asynchronisme z Spécification incomplète z Proximité des limites technologiques z Traitements numériques complexes 39 Les clés du succès z Analyse détaillée z Simplicité z z z Décomposer un système complexe en blocs simples z Simplicité = clareté Modularité z Augmente le rendement z Permet la réutilisation Abstraction z Imaginer l’interaction entre les blocs 40 Les clés du succès 41 Méthodologie z Analyse du cahier des charges z Décomposition du système z Description et validation de chaque bloc z Rassemblement des blocs élémentaires du système 42 Méthodologie z Analyse du cahier des charges z Elle n’est jamais trop détaillée z Déterminer les contraintes des E/S z Timing z Liaison asynchrone z … 43 Méthodologie z Décomposition du système z Etudier plusieurs architectures z Un choix judicieux d’architecture permet d’optimiser la quantité de logique ¼ souvent solution plus rapide z Eventuellement faire plusieurs décompositions (hiérarchie) z Obtenir des blocs simples avec une seule fonction 44 Méthodologie z Description des blocs z z z Elle doit être SIMPLE et commentée z Matériel optimum z Si c’est plus lisible, la maintenance est plus facile z Le dépannage est plus facile Faire preuve de rigueur et de méthode Validation des blocs z De bas en haut z Simuler chaque bloc séparément 45 Méthodologie z z Rassemblement des blocs élémentaires z A chaque hiérarchie : vérification des interconnexions z Au top level : Vérification de la fonctionnalité globale Un outil : le cahier méthodologique z Il définit des règles pour la description de systèmes numériques z Rigueur indispensable z Description uniforme au sein d’une équipe 46 Exemple de cahier méthodologique 47 Exemple de cahier méthodologique 48 Exemple de cahier méthodologique 49 Exemple de cahier méthodologique 50 Fichiers VHDL z Un fichier ne contient qu’une seule entité z Nom du fichier = nom de l’entité z Fichier de simulation : <nom_fichier>_tb.vhd z Ecrire un entête z Société, auteur z Logiciels utilisés (nom, version, …) z Explication du fonctionnement du module z Liste des fichiers utilisés (hiérarchie) z Liste des modifications z Description des entrées/sorties 51 Top Level z Adapter la polarité des signaux z z z A l’extérieur la logique peut être mixte (positive ou négative) A l’intérieur, uniquement logique positive Signaux bidirectionnels uniquement au Top Level z Instanciation de buffer 3 états au top level z Exemple : data_in <= donnee_souris; donnee_souris <= data_out WHEN direction_donnee ELSE 'Z'; z Signaux unidirectionnels dans les blocs 52 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z Méthodologie z Descriptions VHDL paramétrables z Conception Full synchrone - Signal d’horloge z III. Microprocesseurs z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 53 Descriptions VHDL paramétrables z Objectif : Décrire un circuit dont la taille des bus est un paramètre z Plusieurs solutions : z Taille des bus définie par les déclarations dans l’entité z Taille des bus définie dans un package z Utilisation de constantes génériques 54 Descriptions VHDL paramétrables z Signaux internes basés sur la taille des bus déclarés dans l’entité : ’range 55 Descriptions VHDL paramétrables Exemple : compteur 4 bits 56 Descriptions VHDL paramétrables z Déclaration d’un package z z Par défaut le package est placé dans la bibliothèque work Déclaration d’une constante dans un package 57 Descriptions VHDL paramétrables 58 Descriptions VHDL paramétrables z Utilisation d’un paramètre generic z Valeur du paramètre fixée lors de l’instanciation ¼ Penser à définir une valeur par défaut 59 Descriptions VHDL paramétrables z Exemple 60 Descriptions VHDL paramétrables 61 Descriptions VHDL paramétrables 62 Descriptions VHDL paramétrables 63 Exercice z Décrire un comparateur dont la sortie vaut 1 si les deux bus en entrée ont la même valeur, la taille des bus étant un paramètre générique 64 Exercice z Instancier dans un circuit TopLevel un comparateur ayant en entrée 2 bus de 8 bits. Pour cela, utiliser le comparateur de l’exercice précédant. 65 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z Méthodologie z Descriptions VHDL paramétrables z Conception Full synchrone - Signal d’horloge z III. Microprocesseurs z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 66 Pourquoi Full synchrone? z Pseudo - synchrone : le signal d’horloge d’une bascule dépend de bascules précédentes z Full - synchrone : toutes les bascules sont synchronisées sur le même signal d’horloge z Avantages du full synchrone z Facilite la conception z Evolution des signaux est prédictible z Retard identique pour chaque sortie de bascule z Une analyse statique permet de déterminer la fréquence max de fonctionnement z Arbre d’horloge prévu dans les FPGA 67 Pourquoi Full synchrone? z Compteur pseudo - synchrone 68 Pourquoi Full synchrone? z z Décompteur pseudo - synchrone Retard = N . Tp 69 Pourquoi Full synchrone? z Compteur full - synchrone 70 Pourquoi Full synchrone? z Compteur full - synchrone z Retard identique pour chaque bascule z Fmax < 1/(Tpbascule + TpET) 71 Propagation de l’horloge z Problème si on fait de la logique combinatoire avec l’horloge 72 Propagation de l’horloge z Problème si on fait de la logique combinatoire avec l’horloge ERREUR!! Q2 risque de s’activer une période d’horloge trop tôt 73 Propagation de l’horloge z z Analyse bascule Q1 : z Q0 changera d’état toujours après le front montant de clock z Q1 sera mis à jour lors du prochain front montant de clock ¼ Fonctionnement indépendant du temps de propagation des bascules Analyse bascule Q2 : z Q0 changera d’état toujours après le front montant de clock z Mais le front montant de clk_Gated est retardé z Il y a risque que Q2 soit mis à jour avant le prochain front montant de clock ¼ Fonctionnement dépendant du temps de propagation dans les portes 74 Analyse temporelle statique Tb z TSLC TFH Fmaxhorloge = 1/( Tb + TSLC + TFH ) 75 Analyse temporelle statique z Avec Quartus : dans le rapport de compilation 76 Analyse temporelle statique z Tsu (clock setup time) : z The length of time for which data that feeds a register via its data or enable input(s) must be present at an input pin before the clock signal that clocks the register is asserted at the clock pin. z z tSU = <pin to register delay> + <micro setup delay> - <clock to destination register delay> Tco (clock to output delay) : z Time from a clock edge to the output of the register actually changing z tCO = <shortest clock to source register delay> + <micro clock to output delay> + <shortest register to pin delay> z Th (clock hold time) : z The minimum length of time for which data that feeds a register via its data or enable input(s) must be retained at an input pin after the clock signal that clocks the register is asserted at the clock pin. z tH = <clock to destination register delay> + <micro hold delay of destination register> - <pin to register delay> 77 Arbre d’horloge z Même si on prend des précautions, il peut y avoir un décalage d’horloge (clock skew) lié au temps de propagation ¼ Utilisation d’un arbre d’horloge z Pré cablé dans le FPGA z Garantit que toutes les bascules voient l’horloge au même instant z Clock skew le plus faible possible z Clock skew inférieur aux temps de propagation internes 78 Arbre d’horloge z Pour les Cyclones II d’Altera 79 Arbre d’horloge z L’arbre doit être équilibré pour garantir un temps de propagation uniforme Entrée d’horloge 80 Arbre d’horloge z Pour les Cyclones II 81 Arbre d’horloge z Pour les Cyclones II 82 Modifier la fréquence d’horloge z Pour réduire la fréquence d’horloge z z Diviseur de fréquence + utilisation des entrées clock enable Pour augmenter la fréquence d’horloge z PLL 83 PLL z z z z Phase Locked Loop : Boucle à verrouillage de phase Permet d’asservir la phase instantanée de la sortie sur la phase instantanée de l’entrée Permet d’asservir la fréquence de sortie sur la fréquence d’entrée Permet de générer une fréquence quelconque avec la même précision que celle de l’oscillateur à quartz qui génère l’horloge 84 PLL z Avec Quartus : dans la bibliothèque de composants http://www.altera.com/literature/ug/ug_altpll.pdf 85 PLL 86 Système multi clocks z Pour être sûr de bien réussir son circuit synchrone : UNE seule horloge! z Parfois il peut être utile de diviser un système en sous systèmes utilisant des horloges différentes z Permet de réduire les contraintes de synthèse des systèmes les moins rapides z Le meilleur moyen de créer plusieurs horloges est d’utiliser des PLL 87 Système multi clocks z Quand plusieurs horloges dans un même circuit sont totalement indépendantes, on parle de Systèmes Localement synchrones, Globalement Asynchrones GALS z A l’intérieur de chaque sous-circuit, le fonctionnement est synchrone z Conception habituelle z Problèmes aux interfaces… 88 Métastabilité 89 Métastabilité z Violation du Tsetup ¼ Métastabilité z Tr : temps de résolution de la métastabilité 90 Métastabilité z Les interfaces sont traitées comme des liaisons entre circuits différents z On peut prévoir des détecteurs d’erreurs (bit de parité) pour s’assurer que la transmission s’est bien passée z En revanche, une métastabilité peut de propager dans l’ensemble des bascules du système z Surtout si les temps de propagation dans les parties combinatoires sont longs 91 Métastabilité z MTBF : Mean Time Between Faillure Temps moyen entre 2 pannes 92 Synchroniseur simple z Objectif : Confiner l’état intermédiaire dans le synchroniseur jusqu’à ce qu’il prenne une valeur 93 Synchroniseur simple z Tr = Tc – (Tcomb + Tsetup) z Si Tc = 20 ns et Tsetup = 2.5 ns ¼ Tr = 17.5 – Tcomb Si Tcomb = 1 ns, Tr = 16.5 ns ¼ MTBF = 272 ans Si Tcomb = 12.5 ns, Tr = 5 ns ¼ MTBF = 0.88 s 94 Synchroniseur double z Synchroniseur le plus utilisé z Tcomb = 0 ns ¼ Tr = Tc – Tsetup = 17.5 ns ¼ MTBF = 2000 ans 95 Synchroniseur z Le synchroniseur assure seulement que le système recevant le signal n’entre pas dans un état métastable z Il ne garantit pas la bonne transmission du signal 96 Transmission d’un système lent vers un système rapide z Système lent : 1 MHz z Système rapide : 10 MHz 97 Transmission d’un système lent vers un système rapide z Système lent : 1 MHz z Système rapide : 10 MHz z Problème : l’impulsion enable risque d’être trop étroite pour être détectée 98 Transmission d’un système lent vers un système rapide z Procédé handshake 99 Transmission d’un système lent vers un système rapide z Côté émetteur 100 Transmission d’un système lent vers un système rapide z Côté récepteur 101 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z Architecture d’un microprocesseur z Amélioration des performances z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 102 Microprocesseur 103 Programme z z C’est une suite d’instructions Une instruction est codée en code machine 11001000 0000 0010 Instruction Opérande ou registre de l’opérande 104 Fonctions du processeur z Mettre a jour l’adresse de la prochaine instruction z Récupérer le code de l’instruction en mémoire programme z Décoder l’instruction z Aller chercher l’opérande en mémoire donnée z Exécuter l’instruction z Mettre à jour le registre d’état z Eventuellement stocker le résultat de l’instruction en mémoire donnée 105 L’unité de commande 106 L’unité de commande z Le compteur de programme (PC : programme Counter) appelé aussi Compteur Ordinal (CO) constitué par un registre dont le contenu est initialisé avec l'adresse de la première instruction du programme. Il contient toujours l’adresse de la prochaine instruction à exécuter. ¼ Compteur mis à jour par le bloc logique de commande 107 L’unité de commande z Le registre d'instruction et le décodeur d'instruction : chacune des instructions à exécuter est transférée depuis la mémoire dans le registre instruction puis est décodée par le décodeur d’instruction. z Bloc logique de commande (ou séquenceur) : Il organise l'exécution des instructions au rythme d’une horloge. Il élabore tous les signaux de synchronisation internes ou externes (bus de commande) du microprocesseur en fonction des divers signaux de commande provenant du décodeur d’instruction ou du registre d’état par exemple. ¼ Machine à états 108 L’unité de traitement 109 L’unité de traitement z z Les accumulateurs sont des registres de travail qui servent à stocker une opérande au début d'une opération arithmétique et le résultat à la fin de l'opération. Le registre d'état. Chacun de ces bits est un indicateur dont l'état dépend du résultat de la dernière opération effectuée par l’UAL. On peut citer par exemple les indicateurs de : z z z z z z Retenue (carry : C) Retenue intermédiaire (Auxiliary-Carry : AC) Signe (Sign : S) Débordement (overflow : OV ou V) Zéro (Z) Parité (Parity : P) ¼ Registres 110 L’unité de traitement z L’Unité Arithmétique et Logique (UAL) est un circuit complexe qui assure les fonctions logiques (ET, OU, Comparaison, Décalage, etc…) ou arithmétique (Addition, soustraction). ¼ Plusieurs circuits en parallèles, chacun réalisant une des fonctions du jeu d’instruction + des multiplexeurs en entrée et en sortie 111 Exemple UAL : 74181 (TTL) 112 Exemple UAL : 74181 (TTL) 113 Exercice z Concevoir une UAL réalisant ces fonctions : f S 00 A and B 01 A or B 10 A+B 11 A-B Les entrées A et B sont sur 8 bits 114 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z Architecture d’un microprocesseur z Amélioration des performances z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 115 Amélioration des performances z Conception en « pipeline » z Sans pipeline : z Temps de traitement d’un programme de m instructions de n étapes 116 Amélioration des performances z Avec pipeline : z Temps de traitement d’un programme de m instructions de n étapes 117 Amélioration des performances z Différents types de pipeline z 3 niveaux z z 5 niveaux (ARM 9, MIPS) z z Fetch, Decode, Execute Instruction Fetch, Instruction Decode, Execution, Memory,Write Back Jusqu’à 25 niveaux! (20 pour le pentium IV) 118 Amélioration des performances z Pipeline 5 niveaux 119 Amélioration des performances z Pipeline 5 niveaux 120 Deux types d’architecture z CISC : z Microcode ou microprogramme d’instruction z Nombre d’instructions élevé avec multiples modes d’adressage z Avantages : z z Code compact z Instructions très complexes et très rapides Inconvénients z Surface importante de silicium ¼ Consommation élevée z Mauvaise utilisation des instructions complexes par les compilateurs 121 Deux types d’architecture z RISC : z Instructions de taille fixe z Limitation des modes d’adressage z Avantages : z z Architecture moins complexe z Interruptions plus rapides z Compilateur plus simple et efficace Inconvénients z Taille du programme plus importante z Traitements avec accès multiples à la mémoire pénalisés 122 Exercice z Concevoir un processeur RISC 32 bits en utilisant 5 niveaux de pipeline 123 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. Design re-use z IP z Exemples de processeurs z Bus d’interfaçage z Operating System / Real Time Operating System z V. Processeur NIOS II z VII. Initiation au langage Tcl 124 Design re-use z La complexité des circuits augmente plus vite que la productivité par ingénieur ¼ Il devient difficile de concevoir un SoC entièrement ¼ Il faut réutiliser des parties déjà conçues 125 Design re-use z Exemples de complexité de projets 126 Design re-use z Il faut concevoir des composants « virtuels » réutilisables z z Démarche qualité, méthodologie, paramètres génériques, … Mais une entreprise seule ne peut pas toujours concevoir tous les composants dont elle a besoin z Echange de composants « virtuels » z Instauration d’une protection juridique : « Intellectual Property » z Nécessité d’utiliser un même formalisme pour l’utilisation et la modélisation pour une adaptation rapide au système 127 Différents types d’IP matérielles z « Soft » IP z z z z z « Firm » IP z z z z Modèle de description de matériel. Peut être non synthétisable pour la validation purement fonctionnelle Flexible, paramétrable Indépendant de la technologie Difficile à protéger Liste d’équipotentielles post synthèse logique Dépend de la technologie Assez difficile à protéger « Hard » IP z z z Liste d’équipotentielles placées et routées Contient les temps de propagation Facile à protéger (boite noire avec des entrées/sorties 128 Usage et format des IP z Remarque : il faut toujours valider les IPs en simulation et en environnement de test de production 129 Les fournisseurs d’IP z Sociétés d’études et de conception z Sociétés sans fonderie dont le profit vient des droits sur les licences z z z Offre incluant des IPs Soft, de simulation et synthèse Sociétés de semi-conducteurs z Peuvent fournir des IPs Hard en plus des IPs Soft z z Alcatel, Adaptec Fournisseurs d’outils de CAO z IPs soft uniquement z z TI, Motorola, Lucent, Altera, Xilinx, LSI Logic, STM Equipementiers z z DSP Group (IP pour les télécoms), ARM (processeurs RISCs) Mentor Graphics, Cadence, Synopsys, … Des passionnés : open source 130 Les types d’IP z Processeurs z DSPs z Composants de traitement spécialisés z z Contrôleurs de mémoire et de bus z z Cryptographie, traitement d’images, multimédia, … SDRAM, USB, PCI, UART, AMBA, … Réseaux z ATM, Ethernet z IP commerciales : http://www.design-reuse.com/ z IP libres : http://opencores.org/ 131 Exemple d’IP z Mega functions d’Altera 132 Exemple d’IP z Cœur de processeur libre : LEON z Processeur 32 bits compatible SPARC (Scalable Processor Architecture) conçu à l’ESA (European Spatial Agency) z 5 étages de pipeline z Cache instruction et cache données z MAC (multiplier-accumulator) et division câblées z Contrôleur mémoire SRAM ou ROM z Périphériques : uarts, timers, contrôleur d’interruption, port E/S 16 bits z Bus AMBA AHB et APB z Interface co-processeur z Mode veille z 133 Cœur sous licence « Lesser GPL », testbench vhdl sous licence GPL http://www.leox.org/ Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. Design re-use z IP z Exemples de processeurs z Bus d’interfaçage z Operating System / Real Time Operating System z V. Processeur NIOS II z VII. Initiation au langage Tcl 134 Spécifications des processeurs embarqués z Développeur (nom, année) z Fabricant de FPGA (optimisations) z Type de licence (GPL, commerciales,…) z Architecture z Niveaux de pipeline, nombre de registres z MMU Memory Management Unit, FPU Floating Point Unit, caches z Multiprocesseur (SMP Symmetric Multiprocessing, AMP Asymmetric Multiprocessing) z Multithreading 135 Spécifications des processeurs embarqués z Performances (Fmax, Dhrystone MIPS/MHz) z Dhrystone = Nb itérations par seconde z Dhrystone MIPS=DMIPS = Dhrystone/1757 z 1757 = Dhrystone d’une machine de référence à 1 MIPS z DMIPS/MHz = DMIPS / Freqprocesseur z Ressources z Langage de description (VHDL, Verilog) z Bus (Amba, Avalon, …) z OS/RTOS Real Time Operating System (uLinux,…) 136 Exemples de processeur z MicroBlaze (Xilinx) z Code source non accessible z RISC 32 bits (Harvard) z 3 ou 5 étages de pipeline, 32 registres, MMU z 235 MHz, 1.2 Dhrystone MIPS/MHz z Non orienté multiprocesseur z Bus CoreConnect 137 Exemples de processeur 138 Exemples de processeur z MICO32 (Lattice) z 2006 z Open source Verilog z RISC 32 bits (Harvard) z 6 étages de pipeline, 32 registres z ??? Dhrystone MIPS/MHz z Non orienté multiprocesseur z Bus Wishbone 139 Exemples de processeur 140 Exemples de processeur z ARM CORTEX M1 z Conception ARM/Actel pour FPGA optimisé pour Actel, Xilinx et Altera z Licence commerciale z RISC 32 bits z 180 MHz, 0.8 Dhrystone MIPS/MHz z Instructions Thumb2 z 3 étages de pipeline z Bus Amba 141 Exemples de processeur 142 Exemples de processeur z OpenRisc 1200 z Open source développé par OpenCores z Verilog z Architecture 32 bits (Harvard) z 5 étages de pipeline, 32 registres, MMU, caches z 250 MHz, 1 Dhrystone MIPS/MHz z Bus Wishbone 143 Exemples de processeur 144 Exemples de processeur z NIOS II (Altera) z Code source non accessible z RISC 32 bits z 6 étages de pipeline, 32 registres, MMU z 200 MHz, 1.16 Dhrystone MIPS/MHz z Non orienté multiprocesseur z Bus Avalon 145 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. Design re-use z IP z Exemples de processeurs z Bus d’interfaçage z Operating System / Real Time Operating System z V. Processeur NIOS II z VII. Initiation au langage Tcl 146 Bus d’interfaçage z Bus Amba z 1996 – spécifié par ARM z Advanced High-performance Bus (AHB) z z Nouvelle génération (supporte les bursts) z Bus haute performance / haute vitesse / 64-128 bits Advanced System Bus (ASB) z z Bus microcontrôleur 16-32 bits Advanced Peripheral Bus (APB) z Bus pour périphériques basse consommation 147 Bus d’interfaçage z Bus Wishbone z Développé par Silicores et distribué en open source par OpenCores z Interconnection souple : z Point à point z En chaîne (data flow) z Par bus (avec arbitre si multimaitre) z Par crossbar switch 148 Bus d’interfaçage 149 Bus d’interfaçage z Bus Avalon z Bus propriétaire Altera z Interfaces : z Avalon Memory Mapped Interface (Avalon-MM) z z Avalon Streaming Interface (Avalon-ST) z z Interface classique maitre/esclave Interface de streaming Avalon Memory Mapped Tristate z Bus tristate pour connexion avec l’extérieur du FPGA z Avalon clock z Avalon Interrupt 150 Bus d’interfaçage 151 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. Design re-use z IP z Exemples de processeurs z Bus d’interfaçage z Operating System / Real Time Operating System z V. Processeur NIOS II z VII. Initiation au langage Tcl 152 OS/RTOS pour processeur embarqué z uC-Linux (Système Linux sans MMU) z z FreeRTOS (RTOS open source) z z Altera NiosII, Xilinx MicroBlaze Micriµm µC/OS-II RTOS z z Altera NiosII, Xilinx MicroBlaze, Mico32, Leon Altera NiosII, Xilinx MicroBlaze, Mico32 eCos (RTOS open source) z Leon 153 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 154 Processeur NIOS II z Présentation Altera z Datasheet 155 Processeur NIOS II Comment utiliser dans la partie software du projet des données issues des périphériques définis dans la partie hardware? z En utilisant directement les registres qui leur ont été attribués z Noter les adresses des registres attribués sous SoPC Builder z Dans le programme, définir des variables qui pointent sur ces registres #define switches (volatile char *) 0x01000000 #define leds (volatile char *) 0x01000010 z Définition en volatile pour éviter des optimisations non voulues de compilateur 156 Processeur NIOS II z En utilisant l’interface Avalon z Utiliser les fonctions définies dans altera_avalon_pio_regs.h z Par exemple IORD_ALTERA_AVALON_PIO_DATA(base) et IOWR_ALTERA_AVALON_PIO_DATA(base, data) permettent de lire ou d’écrire des données dans le registre base z Le registre attribué à un périphérique est noté PERIPHERIQUE_BASE z Le nom du périphérique est celui qu’on lui a donné dans SoPCBuilder z Le lien se fait grâce au fichier system.h 157 Processeur NIOS II z Exemple : #include <stdio.h> #include "altera_avalon_pio_regs.h" #include "system.h" int main(void) { int led = 0x01; IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE,led); return 0; } Ce programme écrit la valeur 0x01 dans le registre attribué au périphérique LEDS. Il allume donc une led. 158 Processeur NIOS II z Ecrire un programme permettant d’allumer des leds avec des interrupteurs en utilisant l’interface Avalon #include <stdio.h> #include "altera_avalon_pio_regs.h" #include "system.h" int main(void) { int led = 0x0F; printf("ca tourne\n"); while(1) { led = IORD_ALTERA_AVALON_PIO_DATA(ENTREE_BASE); IOWR_ALTERA_AVALON_PIO_DATA(SORTIE_BASE,led); } return 0; } 159 Plan global du cours z I. Rappels et introduction z II. Méthodologie de conception synchrone z III. Microprocesseurs z IV. Design re-use z V. Processeur NIOS II z VII. Initiation au langage Tcl 160 Pourquoi utiliser des scripts ? z Pour lier des outils de conception entre eux z Par exemple, modelsim + quartus z Pour automatiser des tâches z Pour diminuer la taille mémoire d’un projet z Pour faciliter la maintenance d’un projet z Pour créer des outils z Par exemple, un désassembleur dans modelsim 161 Le langage Tcl/Tk z Tcl = Tool Command Langage (Prononcer « Tickle ») z Tk = graphical ToolKit : Extension pour la gestion des interfaces graphiques (Prononcer « Ticket ») z Fonctionne sur tous types de machine z Langage interprété (pas besoin de le compiler) z Langage de script utilisé par Quartus II et Modelsim z Editeur dédié dans Quartus 162 Syntaxe Tcl z Sensible à la casse (majuscules-minuscules) z Syntaxe courante : z Le premier mot d’une commande est toujours la commande z Commande arg1 arg2 arg3 … z Exemple : set var 3 Affecte à var la valeur 3 z Pour passer d’une commande à une autre, soit on saute une ligne, soit on place un ; entre les commandes z Les arguments sont séparés par des espaces z Les arguments contenant des espaces sont écrits entre " "argument avec des espaces" 163 Syntaxe Tcl z Commentaires : z Ils sont précédés de # # ceci est un commentaire z z Variables z Pas besoin de déclarer les variables, elles sont créés quand une valeur leur est affectée avec la commande set z Les variables n’ont pas de type Substitution de variable z Si une variable a pour nom a, sa valeur est $a z Exemple : set var 3 puts "La valeur de la variable est $var" Affiche dans la console : La valeur de la variable est 3 164 Syntaxe Tcl z Substitution de commande z L’interprétation d’une ligne se fait en 2 temps z Substitution des variables par leur valeur et substitution du code entre [ ] z Exécution de la commande Exemple : set var 3 puts « La valeur de la variable est [expr $var + $var] » Affiche dans la console : La valeur de la variable est 6 z 165 Syntaxe Tcl z Arithmétique z On passe par la commande expr z z z Tout ce qui suit expr est considéré comme une opération arithmétique Exemple : expr 10 + 20 Affiche dans la console : 30 Liste z z z set a {1 2 3} donne à a 3 valeurs : a[0] = 1, a[1] = 2, a[2] = 3 set b [llength $a] b est égal à la longueur de a set c [lindex $a 2] c est égal à a[2], soit 3 166 Syntaxe Tcl z if-elseif-else if {condition} {code si vraie} elseif {condition2} {code si vraie} else {code} z Boucles while while {condition} {code à executer} z Boucles for for {code d’initialisation} {condition} {type d’incrémentation} {code} z Boucles foreach : permet de boucler sur les éléments d’une liste foreach element $liste {code} 167 Exemples z Que va-t-il s’afficher sur la console après le lancement de ce script? (attention à bien mettre des espaces au bon endroit) for {set i 1} {$i<10} {incr i} {if {$i==1} {set pluriel ""} else {set pluriel "s"} puts "$i mouton${pluriel}"} 168 Exemples z Que va-t-il s’afficher sur la console après le lancement de ce script? set l [list 1 2 3 4 5] foreach nombre $l {puts $nombre*2} z Que faut-il modifier pour que ça affiche 2 4 6 8 10 ? 169 Paquetages Tcl z Un paquetage (package) regroupe plusieurs fonctions proches z Exemples de packages dans Quartus z z ::quartus::project pour projets et affectations z ::quartus::flow pour compilation et run z ::quartus::report pour créer des rapports particuliers z ::quartus::timing_report pour les chemins critiques Pour charger un package : package require ou load_package package require ::quartus::project load_package ::quartus::project ou load_package project 170 Commandes utiles z Vérifier le répertoire de travail pwd z Changer le répertoire de travail cd repertoire exemple : cd "D:/Mes documents/projet" z Lancer le script contenu dans un fichier source fichierscript.tcl z Ouvrir un projet : project_open nomduprojet z Fermer un projet : project_close z Pour lancer la compilation execute_flow -compile 171 Exemple de script Tcl 172 Exemple de script Tcl 173 Exercice z Que va faire Quartus à l’exécution de ce script? load_package project load_package flow project_close cd "D:/Mes documents/Enseignement/2011-2012/semestre 2/ETRS 811/vhdl/" pwd project_open proj execute_flow -compile 174 Pour aller plus loin z http://www.tcl.tk Site en anglais de la communauté Tcl/Tk z http://wiki.tcl.tk/ Site en anglais contenant beaucoup d’informations z http://www.linbox.com/ucome.rvt/any/fr/Ressources/Cours/tcl Cours en français pour programmer en Tcl et Tk z http://www.altera.com/support/examples/tcl/tcl.html Site d’Altera sur les commandes Tcl qui peuvent être utiles. On y trouve des exemples et la description des package Quartus 175