Le domaine des architectures reconfigurables est un domaine en extension il est nécessaire de faire des travaux de recherches sur :Architectures basse consommation de puissance (Low- Power)Architectures hétérogène (HARD + SOFT)Co-conception (Co-Design)Outils d’estimation de performances haut niveauOutils d’exploration de l’espace de conception
Formation d'initiation sur le développement sur microcontroleurs stm32 a base de microprocesseur ARM.
Elle présente tout les éléments de base nécessaire pour attaqué le domaine de développement sur cible embarqué.
Conception et réalisation d’un MINI SMART HOMESoukainawarach
Conception et réalisation d’un SMART HOME -IOT- using Arduino
By WARACH SOUKAINA et NACIRI Youness
BONUS ***
🎁 FREE Resume Template for recently graduated (in ENG & FR) 🎁
https://www.creativefabrica.com/product/free-resume-template-no-experience-enfr/ref/1594142/
Un cours bien détaillé qui traite les filtres analogiques 1er et 2ème ordres.
Pour plus d'informations je suis entièrement disponible.
Sabirhamzaa@gmail.com
Ce premier cours introduit la notion de système embarqué en commençant par en donner une définition. Il les caractérise ensuite sur base de plusieurs critères : type d'application, de fonction visé, taille, fiabilité, efficacité. Il présente ensuite plusieurs aspects hardware (unité de calcul, architecture matérielle, composants clés) et software (niveau de programmation, processus de développement). Enfin, il conclut en discutant sur ce qu'est un ingénieur en systèmes embarqués.
Cours dispensé à l'IUT de l'Indre sur la base des systèmes à microprocesseur
Objectif principal : démystifier le travail du compilateur en analysant le résultat de compilation d'un programme à l'issue de quelques séances de programmation en assembleur IA32.
Le domaine des architectures reconfigurables est un domaine en extension il est nécessaire de faire des travaux de recherches sur :Architectures basse consommation de puissance (Low- Power)Architectures hétérogène (HARD + SOFT)Co-conception (Co-Design)Outils d’estimation de performances haut niveauOutils d’exploration de l’espace de conception
Formation d'initiation sur le développement sur microcontroleurs stm32 a base de microprocesseur ARM.
Elle présente tout les éléments de base nécessaire pour attaqué le domaine de développement sur cible embarqué.
Conception et réalisation d’un MINI SMART HOMESoukainawarach
Conception et réalisation d’un SMART HOME -IOT- using Arduino
By WARACH SOUKAINA et NACIRI Youness
BONUS ***
🎁 FREE Resume Template for recently graduated (in ENG & FR) 🎁
https://www.creativefabrica.com/product/free-resume-template-no-experience-enfr/ref/1594142/
Un cours bien détaillé qui traite les filtres analogiques 1er et 2ème ordres.
Pour plus d'informations je suis entièrement disponible.
Sabirhamzaa@gmail.com
Ce premier cours introduit la notion de système embarqué en commençant par en donner une définition. Il les caractérise ensuite sur base de plusieurs critères : type d'application, de fonction visé, taille, fiabilité, efficacité. Il présente ensuite plusieurs aspects hardware (unité de calcul, architecture matérielle, composants clés) et software (niveau de programmation, processus de développement). Enfin, il conclut en discutant sur ce qu'est un ingénieur en systèmes embarqués.
Cours dispensé à l'IUT de l'Indre sur la base des systèmes à microprocesseur
Objectif principal : démystifier le travail du compilateur en analysant le résultat de compilation d'un programme à l'issue de quelques séances de programmation en assembleur IA32.
FPGA are a special form of Programmable logic devices(PLDs) with higher densities as compared to custom ICs and capable of implementing functionality in a short period of time using computer aided design (CAD) software....by mathewsubin3388@gmail.com
Complex Programmable Logic Device (CPLD) Architecture and Its Applicationselprocus
A CPLD (complex programmable logic device) chip includes several circuit blocks on a single chip with inside wiring resources to attach the circuit blocks. Each circuit block is comparable to a PLA or a PAL.
The mixed-signal modelling language VHDL-AMS and its semantics (ICNACSA 1999)Peter Breuer
Slides for the paper "The mixed-signal modelling language VHDL-AMS and its semantics", given at 8th International Colloquium NACSA, Plovidiv, Bulgaria, August 1999. A preprint of the paper is available at http://www.academia.edu/2493489/Denotational_semantics_for_core_VHDL-AMS .
La famille STM32 est une série de microcontrôleurs 32-bits en circuits intégrés réalisés par la société Franco-Italienne STMicroelectronics. Les puces STM32 sont regroupées dans différentes séries proches, basées sur les processeurs d'architecture ARM 32-bits, tels que le Cortex-M7F, le Cortex-M4F, le Cortex-M3, Cortex-M0+, ou le Cortex-M0. Chaque microcontrôleur est constitué d'un cœur de calcul, de mémoire vive (RAM) statique, de mémoire flash (pour le stockage), d'une interface de débogage et de différents périphériques1.
Le STM32 F4 comporte un Cortex-M4F, un DSP et un FPU. Il est notamment complètement géré par le système libre temps-réel ChibiOS/RT.
L'ensemble des microcontrôleurs peuvent également être programmés à l'aide de l'IDE d'Arduino.
l existe différents types de cartes compatibles Arduino basées sur le STM32. La série Nucleo a été conçue par STMicroelectronics à cet effet. D'autres constructeurs ont également fait des cartes compatibles utilisant ce SoC sous divers noms. Cela permet de l'utiliser comme contrôleur de machine-outil à commande numérique (CNC en anglais). des logiciels tels que Grbl permettent de contrôler des machines de fraisage2, auxquelles notamment les imprimantes 3D ou imprimantes de découpe laser se rapprochent. Permettant ainsi de rendre accessible ce type de machines traditionnellement très onéreuse à des fab lab et amateurs éclairés.
Les cartes Stm32 Nucleo, supportent une compatibilité avec les cartes Arduino, bien que basées sur des microcontrôleurs ARM Cortex-M (32 bits) et non Atmel AVR (8 bits) comme utilisés dans les cartes Arduino standard. Il ajoute ainsi à Arduino de bonnes performances graphiques en y ajoutant l'accélérateur graphique Chrom-ART (fourni avec une bibliothèque open source), orienté affichage TFT (ou plus généralement, écran à cristaux liquides), et comportant pour cela une interface MIPI DSI
Les STM32 F4 et supérieurs possédants un DSP, ils sont adaptés à l'usage pour le son. La carte synthétiseur Axoloti est un exemple d'application dans le domaine du son.
Le logiciel de synthétiseur analogique libre, Mozzi pour Arduino peut être utilisé directement sur les STM32, en particulier sur la carte à bas prix, STM32F103C8T6 blue pill board (dans les 2€), sans besoin d'un véritable DAC Ce processeur est utilisé comme processeur principal et contrôleur de vol dans les drones quadrirotors de course et acrobatiques utilisés en pilotage en immersion (FPV, généralement DIY (artisanaux). Il offre plus de puissance de calcul que les autres contrôleurs utilisés dans ce type de drone, tel que les Atmel AVR et le Microchip PIC, tous deux des processeurs 8 bits5,6. Les séries F1 F3 F4 et F7 peuvent en être utilisés dans ce domaine7. Les STM32 de la série F4 en particulier, ont un certain succès dans ce domaine (où il est généralement appelé F48), il est notamment utilisé par les drones de Quantum Systems9, mais également sur les « cartes de vol » (cartes contrôleur) de différents constructeurs
Dans cet exposé, on présentera OMicroB, une machine virtuelle OCaml pour microcontrôleurs à faibles ressources, inspirée des travaux précédents sur le projet OCaPIC. Cette machine virtuelle, destinée à être exécutée sur diverses architectures matérielles (AVR, PIC, ARM, ...) permet ainsi de factoriser le développement d’applications, mais aussi de généraliser l’analyse et le débogage du bytecode associé, tout en permettant un usage précautionneux de la mémoire. On cible alors des programmes ludiques ou de domotiques destinés à être exécutés sur des microcontrôleurs à faibles ressources, en insistant sur les particularités inhérentes à la programmation de systèmes embarqués.
L’équipe du projet BeBoP a proposé un webinaire le 30 mai 2024 pour découvrir comment la technologie vidéo, combinée à l’intelligence artificielle, se met au service de l’analyse du comportement des taurillons.
Architecture et programmation des circuits CPLD et des FPGA
1. Architecture etArchitecture et
programmation des circuitsprogrammation des circuits
CPLD et des FPGACPLD et des FPGA
Réalisé par : OUAGHLANI Chiheb
Année universitaire
2011/2012
2. Introduction
L’évolution des systèmes électroniques dans notre vie quotidienne est due à :
1- Evolution technologique:
La miniaturisation des transistors a permis d’augmenter considérablement la capacité d’intégration
dans ces systèmes.
2- Evolution applicative:
Des applications plus complexes avec un nombre important et varié de fonctionnalités.
On parle alors d’une grande variété de composants de calculs mais on peut les classer à 3
classes :
Les cibles matérielles, par exemple :
ASIC -Application Specific Integrate Circuit
Fonction complète ou coprocesseur (accélérateurs matérielle)
FPGA -Field Programmable Gate Array
Reconfigurable
Accélérateur de calculs (coprocesseur)
Les cibles logicielles, comme :
ASIP -Application Specific Instruction-set Processor
Processeur spécialisé pour quelques applications
Jeu d’instructions et architecture adaptée à l’application
Meilleurs rapports MIPS/mW et MIPS/mm2 que RISC et DSP
Mais coût de développement du compilateur
DSP, VLIW
Processeurs dédiés au traitement de signal, application multimédia
Microcontrôleurs
RISC/CISC: Superscalaires
ARM, PowerPC, Sparc, …
3. Les cibles mixtes :
Les SOCs(système sur puce) : L’intégration de plusieurs unités sur une même puce.
Comment choisir la cible à utiliser ?
Les principales raisons qui nous aident à choisir notre cible se sont :
L’application à faire (notre projet).
Les contraintes de conception et de réalisation : performance - cout- fiabilité - surface -
consommation, temps réel, etc.
Les outils et les ressources disponibles à la réalisation du projet.
Dans ce document on s’intéresse surtout sur des cibles matérielles : les CPLD et Les FPGA.
Les composants HARD (les cibles matérielles)
Intérêt des cibles matérielles
Performances : utilisation d'architectures optimales :
Pipeline
opérations câblées ou en mémoire (FPGA)
optimisation bits à bits : Taille des opérandes optimale
Protection industrielle
Outils de conception puissants:
Langages HDL
Bibliothèques de macro-fonctions paramétrables
compilation (synthèse logique + placement routage)
4. La figure ci-dessous représente Les différentes cibles matérielles :
Remarque :
La partie encadrée, ce sont les circuits configurables (PLD) et les autres composants matériels se sont
des circuits (ASIC) moins flexibles (que les PLD) et spécifiés pour une tache bien déterminée, même
leur configuration et composition sont plus basiques.
Les circuits configurables sont des composants standards programmables électriquement:
Une seule fois (fusibles, anti fusibles)
Ou
Plusieurs fois: reprogrammables
Le terme circuit configurable désigne l’ensemble de ressources logiques (portes, bascules,…etc.) qui
peuvent être interconnectées de différentes façons (cellules logiques librement assemblables). Comme
par exemple : la réalisation de fonctions booléennes sous forme d’une somme de produits (PAL, PLA)
ou un réseau de bloc logiques configurables (FPGA).
5. Ces ressources sont connectées de manière définitive ou réversible grâce à la reprogrammation, afin
de réaliser la ou les fonctions numériques voulues. L'intérêt est qu'un même circuit peut être utilisé
dans de nombreux systèmes électroniques différents.
Les types de programmation utilisés dans les circuits configurables
Les contraintes de conception des systèmes embarqués : (comment on choisit quelle cible on va
utiliser pour réaliser un système électronique)
Performance: puissance de calcul MIPS (Méga Instruction par seconde), temps d’exécution
Fiabilité: probabilité pour que le système fonctionne correctement si c’était satisfait à t =0
Surface et encombrement: GSM…
Consommation énergétique: lié à l’autonomie des batteries (PDA, téléphone mobile…)
Sûreté: aucun dommage (automobile, avionique…)
Coût et temps de développement: faible coût
temps réel: Un système temps réel doit réagir à un stimuli dans un intervalle de temps
dépendant de l’environnement
6. CPLD
CPLD: Complex Programmable Logic Device
Les CPLDs d’une conception plus ancienne regroupent plusieurs « Macrocellules » logiques
interconnectées par un réseau de connexions combinatoire de portes ET et OU programmables afin
d'implémenter des équations logiques. Des bascules sont disponibles seulement dans les blocs
d'entrée-sortie. Ce composant contient de quelques centaines à quelques milliers de macrocellules.
La technologie de programmation de ces connexions est généralement EEPROM ou Flash EPROM
(Peuvent être effacés et reprogrammés à volonté. Quelques-uns peuvent être programmés in
situ (souvent par une connexion JTAG) Technologie CMOS). Un seul point de connexion relie entre
eux les blocs logiques. Les temps de propagations des signaux sont constants et prédictibles (avant
routage) : ce n’est pas le cas des FPGA (voir plus tard).
On distingue les CPLD des autres PLD car ils contiennent l'équivalent de plusieurs composants PLD,
reliés par une matrice d'interconnexion.
7. Figure 1.1 Connexions de la famille 374i
Architecture des CPLD
La matrice d'interconnexion programmable (PIM) est constitué d'une matrice
de routage complète globale pour les signaux de broches d'E / S et le feedback des blocs logiques.
Elle offre une interconnexion robuste pour éviter les limitations de montage et de densité. Les
entrées de la PIM se composent de toutes les broches d'entrée I / O et dédié
et toutes les rétroactions des macrocellules à l'intérieur des blocs logiques. Les sorties de la PIM sont
des signaux acheminés vers les blocs logiques appropriés. Chaque bloc logique reçoit 36
entrées de la PIM et leurs compléments. Une caractéristique importante de la MIP est son
timing simple. Le délai de propagation à travers le PIM est représenté dans les spécifications de
temps pour chaque périphérique. Il n'ya pas d'autres délais pour parcourir à travers le PIM.
Le routage des signaux à travers le PIM est totalement invisible pour l’utilisateur. Tout routage
est réalisé par un logiciel de routage. Warp et les tiers paquets de développement
donnent automatiquement tous les parcours pour la famille Ultra37000 dans quelques minutes.
La famille des Ultra37000 ™ (CPLD de type CMOS) offre une gamme de solutions de haute
densité logique programmable avec de grandes performances du système. La famille Ultra37000 est
conçu parce qu’elle apporte la flexibilité, la facilité d'utilisation, et la performance du 22V10 à haute
densité CPLD. L'architecture est basée sur un certain nombre de blocs logiques qui sont reliés par
un programmable Interconnect Matrix (PIM). La PIM distribue les signaux des sorties de
blocs logiques et tous les broches d'entrée aux entrées du bloc logique.
8. Chaque bloc logique dispose de son propre Product Term Array, Product Term Allocator, et
16 macrocellules.
Chaque bloc logique possède 72 x 87 Product Term Array programmable.
Ces arrays (tableaux) acceptent 36 entrées de la PIM, qui proviennent des pins des rétroactions
des macrocellules et des périphériques. Pour chaque unes des ces entrées il y a 2 versions : activer
LOW et activer HIGH et elles sont générés pour créer le plein-champ de saisie 72. Les 87 product
terms dans le tableau peuvent être créés à partir de l'une des 72 entrées.
Sur les 87 product terms, 80 sont pour usage général pour les 16 macrocellules dans le
bloc logique. Quatre des autres sept product terms dans le bloc logique sont utilisés pour activer les
sorties (OE : Output Enable) des product terms.
La macrocellule dispose d'un registre qui peut être configuré en combinatoire, une bascule D, une
bascule T flip-flop, ou triggered latch. Le registre peut être asynchrone (1) ou asynchrone(0) au niveau
du bloc logique avec l'ensemble des produits séparés. Les sorties de tous ces macrocellules sont
envoyées directement à la PIM indépendamment de leur configuration.
La figure 2 montre un schéma d’un bloc de l’Ultra37000–3 :
10. Réseau ET-OU avec 8 products terms (termes produits) + Multiplexeur programmable
L’évolution des CPLD :
Les circuits CPLD basiques ne sont plus utilisés aujourd’hui car ils sont remplacés par les FPGAs, ils
étaient les prémisses des premiers FPGA.
MAX-II CPLD 2210 LE, FBGA256:
2210 LEs, Flash memory 8Kbits, 0 PLLs 44 Kgates 0 Multiplier 18x18, 80 I/O Prix: 32$ 0, 0007
$/gate.
MAX-II CPLD 240 LE, TQFP100 :
240 LEs, total Flash memory 8Kbits, 0 PLLs 4.8 Kgates 0 Multiplier 18x18, 212 I/O Prix: 6$ 0,001
$/gate. * Prix Aout 2009
12. FPGA
Le FPGA est inventée par Xilinx (fait partie des plus grandes entreprises spécialisées dans le
développement et la commercialisation de composants logiques programmables).
Les FPGA sont utilisés dans diverses applications nécessitant de l'électronique numérique
(télécommunications, aéronautique, transports…). Ils sont également utilisés pour le prototypage
d'ASIC.
Architecture du circuit FPGA
13. Le bloc logique configurable ou CLB
Un bloc logique configurable est de manière générale constitué d'une table de correspondance
(LUT ou Look-Up-Table) et d'une bascule (Flip-Flop en anglais). (il y en a des CLB basés sur des
multiplexeurs).
La LUT sert à implémenter des équations logiques ayant généralement 4 à 6 entrées et une sortie.
Elle peut toutefois être considérée comme une petite mémoire, un multiplexeur ou un registre à
décalage. Le registre permet de mémoriser un état (machine séquentielle) ou de synchroniser un signal
(pipeline).
Les blocs logiques, présents en grand nombre sur la puce (de quelques milliers à quelques millions en
2007) sont connectés entre eux par une matrice de routage configurable.
CLB à base de multiplexeurs
• Utilisée pour la technologie ANTIFUSIBLE équivaut à une LUT câblée
Cellule ACTEL ACT3
14. CLB à base de LUT
Choix configurable par bitstream
Comme on voit sur le schéma le CLB est constitué d’un LUT à 4 entrées, une bascule D et un
multiplexeur 2 vers 1.
Pour La LUT elle constituée comme on voit dans la figure d’une SRAM et des multiplexeurs.
Pour cet exemple, on va prendre la première ligne de la table :
C =0 > les sorties de tous les premiers multiplexeurs auront la valeur de leur première entrée
c'est-à-dire on a 1-1-1-1.
B = 0 > pareil on a sélectionné la première entrée pour, d’où on reçoit à la sortie 1-1.
Pour A =0 > notre sortie Z est égale à 1 (les 2 entrées sont à 1).
15. Les LUT sont de petits éléments de mémorisation, qui reflètent la table de vérité d’une fonction
logique. (Mémoriser le comportement des entrées).
Une LUT 4 = RAM 2 Octets
Après la configuration des blocs logiques CLB, on passe à la configuration des interconnexions entre
eux.
Blocs d’interconnexions programmables ou PSM
Types de connexions
Directes: relient deux CLBs adjacents.
Simples: relient deux PSMs (Programmable Switch Matrix) adjacentes.
Doubles: relient deux PSMs séparées par une PSM.
Quadruples: relient deux PSMs séparées par 3 PSMs.
Longs: traversent la puce de part en part, soit horizontalement ou verticalement (ils peuvent
toutefois être sépares en deux moities de longueur égale et indépendantes).
16. Connexions directes:
Relient deux CLB adjacents.
Ne passent pas par une matrice de connexion (PSM)
Connexions Simples:
Relient deux PSM adjacentes.
Offrent une grande flexibilité de parcours.
Le passage d'une connexion simple au travers d'une PSM entraîne un délai.
Ce type de connexion se prête surtout aux liens de nature locale.
17. Connexions doubles:
Relient deux PSMs séparées par une PSM:
Offrent une plus grande rapidité
Que les connexions simples pour les liens de longueur intermédiaire
Maintiennent une bonne flexibilité de parcours.
De la même manière, les connexions quadruples permettent des liens rapides un peu plus longs mais
entraînent une certaine pénalité dans la flexibilité du parcours.
Les longues lignes :
De longs segments métallisés parcourant toute la longueur et la largeur du composant
Transmettre avec un minimum de retard les signaux entre les différents éléments dans le but d'assurer
un synchronisme aussi parfait que possible.
18. Éviter la multiplicité des points d'interconnexion.
Le passage d’un bloc logique à un autre se fera par un nombre de point de connexion (responsable des
temps de propagation) fonction de la position relative des deux blocs logique et de l’état
d’encombrement de la matrice.
Ces délais ne sont donc pas prédictibles (contrairement au CPLD) avant le placement routage
De la phase de placement des blocs logiques dépendront donc beaucoup les performances du circuit en
termes de vitesse.
Les blocs Entrées/Sorties ou I/O Blocs
Les blocs d’entrée/sortie (IOBs) contrôlent le flot de données entre les broches du FPGA et la logique
interne utilisateur; les I/O sont:
Bidirectionnelles (entrée ou sortie)
3 états (haute impédance)
A retards programmables
Multi-standards (niveaux logiques)
19. Problème de faire communiquer les composants entre eux : il y a plusieurs codages en tension des
niveaux 1 et 0 (tension d'alimentation VDD, type de marges):
Les buffers permettent de résoudre ce problème
Xilinx IOB (Input Output Block):
20. La technologie actuelle des FPGA
Jusqu’à 200 000 cellules logiques élémentaires
Cellule = Look-up-Table + registre
Blocs mémoire configurables
Blocs de 18kbits, au total jusqu’à 1Mo
Structures dédiées pour les traitements arithmétiques
512 multiplieurs 18x18 bits embarqués
Processeurs embarqués
Jusqu’à 4 PowerPC en « dur »
Soft-Core : processeurs utilisant les cellules logiques
Liaisons séries haut débit
Jusqu’à 10 Gbits
MAC Ethernet intégrée
FPGA: et encore!!!