Bonjour à tous ,
Je suis débutant en informatique , je souhaiterais savoir la différence entre un fpga et un microcontrôleur ,
c'est qui le plus puissant : un microcontrôleur ou un processeur ?
merci à tous
-----
Bonjour à tous ,
Je suis débutant en informatique , je souhaiterais savoir la différence entre un fpga et un microcontrôleur ,
c'est qui le plus puissant : un microcontrôleur ou un processeur ?
merci à tous
Bonjour newbie_be et bienvenue sur FUTURA - Un FPGA, c'est de la logique câblée (les interconnexions entre les blocs logiques étant programmables)
- Un µC ou un µP, c'est piloté par un programme qui exécute des instructions
C'est quoi pour toi un microcontrôleur ? exemple ?c'est qui le plus puissant : un microcontrôleur ou un processeur ?
C'est quoi pour toi un processeur ? exemple ?
DAUDET78 ,
Pour moi un microcontrôleur et un microprocesseur c'est pareil , c'est un bloc UAL , mémoire ram + mémoire rom pour enregistrer le programme qui gère le circuit , des pins pour intéragir avec d'autres composants :capteurs ou autre blocs .
un fpga c'est une carte qui peut être reconfigurée , elle peut avoir son propre microprocesseur dans le même bloc ou pas .
donc pour charger un programme de reconfiguration de la fpga , il faut un bloc mémoire non volatile par exemple (rom...) propre à la fpga , ensuite pour charger le programme dans processeur lié à la fpga il lui faut aussi sa propre mémoire non volatile (rom ou eeprom) .
--> bcp de bloc mémoire !?
S'il vous plait , corrigez moi si possible .
Merci
Bonjour,
Un FPGA c'est en effet de la logique programmable , et on peut y implementer un cœur de traitement qui sera au choix nommé µprocesseur ou µcontroleur ou processeur suivant des critères éminemment variables suivant les personnes.
La configuration du FPGA est soit définitive (ACTEL par exemple) soit obtenue par une mémoire de type flash prom interne au FPGA, soit par une mémoire du même type externe au FPGA soit par un téléchargement distant.
Les ressources propres au µC pourront pour une partie de la RAM au moins être fournies par le FPGA mais le programme sera stocké dans une mémoire externe.
Donc en résumé :
la configuration du FPGA ne consomme aucun des blocs mémoires offerts à l'utilisateur
ces blocs mémoire ne seront utilisés par le µC pour une partie de sa mémoire vive(en général au moins le(s) cache(s)) mais pas pour le programme (sauf réalisation exotique).
nota: il existe aussi des FPGA contenant un processeur câblé intégré
JR
l'électronique c'est pas du vaudou!
Non
Oui, plus des tas de choses, en vrac et non exhaustif :, c'est un bloc UAL
- Gestion adresse mémoire programme
- Gestion adresse mémoire vive
- Pile d'adresse
- mémoire microcode
- décodeur microcode
- registres
- Etc
Ca c'est commun au µC et au µP
Ca, c'est externe au µP et interne au µC . Le µC a , en plus, beaucoup de chose en interne :, mémoire ram + mémoire rom pour enregistrer le programme qui gère le circuit , des pins pour intéragir avec d'autres composants :capteurs ou autre blocs .
- Timer
- Memoire EEPROM
- USART
- Gestion bus I²C , SPI etc
- Convertisseur ADC
- PWM
- Etc
Oui, c'est ce que j'ai déjà ditun fpga c'est une carte qui peut être reconfigurée ,là, tu vas plus loin que l'usage classique du circuit câblé configurable. Comme c'est un circuit câblé, on peut le câbler pour en faire un µC (avec un coeur qui se trouve en bibliothèque). On se réalise donc un µC "customisé" avec les gadgets que l'on veutelle peut avoir son propre microprocesseur dans le même bloc ou pas .
Ou une EEPROM (et anciennement une mémoire morte externe qui rechargeait la RAM interne de configuration )donc pour charger un programme de reconfiguration de la fpga , il faut un bloc mémoire non volatile par exemple (rom...) propre à la fpga
Tu es dans un cas spécifique . Mais ces deux mémoires se chargent en même temps que la configuration du coeur et des périphériquesensuite pour charger le programme dans processeur lié à la fpga il lui faut aussi sa propre mémoire non volatile
PS : J'ai fait pas mal de simplifications et d'oublies .... mais je ne pense pas avoir raconté de bêtises
Merci messieurs ,
peut-on par ailleurs combiner un fpga et un microcontroleur sur une même carte ? ça me semble logique
Bonjour
oui pourquoi pas, c'est meme souvent le cas.
JR
l'électronique c'est pas du vaudou!
Vous me conseillez quoi comme exercices pour bien assimiler le fpga + programmation pour embarqué en C ?
Merci cher messieurs
Re
vaste sujet vaste programme !
D'où parts tu ?
JR
l'électronique c'est pas du vaudou!
Bonjour
Dans l'industrie les métiers sont généralement bien séparés sauf peut être dans des entreprises où ils veulent qqn qui sachent tout faire, le mouton à 5 pattes.
Il vous faut réfléchir si vous souhaitez évoluer vers un métier plutôt hardware ou software embarqué, ou plutôt sur une fonction du style savoir faire faire.
Votre niveau d'étude l'école en l'ocurence dessine d'hors et déja votre route professionnelle et vous n'aurez peut être pas besoin de vous interessez à ces considérations. Ouf !!
Il est bon dans tous les cas de connaître le C au minimum.
Pour le hardware il vous faudra savoir choisir, concevoir et coder un fpga, voire utiliser les bibliothèques qui incluent un microprocesseur. Savoir éventuellement coder le bas niveau sauf si vous êtes dans une structure ou les métiers sont séparés. Pour coder des fpga l'usage intensif du vhdl, de moyen de simulation sera au programme. Si vous vous vous spécialisez dans le hardware programmés style fpga vous verrez de plus loin le hardware conception de cartes numériques, analogiques ou autres.
Pour le software il vous faudra savoir utiliser un moniteur temps réel dans le logiciel. En tant qu'informaticien embarqué vous verrez le hardware de loin. En codage de bas niveau (là où se dépose la poussière ce qui salit...) vous aurez au plus à développez des routines qui permettent par exemple de charger la configuration du fpga à partir des mots de configuration qui sont mis dans la mémoire flash qui sert au microprocesseur. L'aspect hardware sera nécessaire quand vous devrez coder les accès bas niveaux à des composants.
cdlt
Les deux ensemble, c'est le codesign sur soc (System On Chip)
http://2008.rmll.info/IMG/pdf/patrice_kadionik.pdf
http://perso-etis.ensea.fr/miramond/...2_HWDesign.pdf
Vaste programme.
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
Bonsoir,
çà c'est fini je suis en retraite!Dans l'industrie les métiers sont généralement bien séparés sauf peut être dans des entreprises où ils veulent qqn qui sachent tout faire, le mouton à 5 pattes.
JR
l'électronique c'est pas du vaudou!
En fait, tu peux souvent mettre un microprocesseur ou un microcontroleur dans un FPGA.
Par exemple chez Altera tu as le processeur Nios II.
Il y a des petits processeurs et des très gros.
Et c'est pareil avec les FPGA, il y en a des petits et des gros.
Coté micro-contrôleurs il y en a aussi des petits et des gros.
Dans un FPGA tu peux mettre plusieurs processeurs aussi.
Par contre faire une carte avec un FPGA et un µC et un FPGA c'est plutôt difficile.
Des cartes cheap existent : http://www.aliexpress.com/cheap/cheap-fpga-arm.html
Mais je ne sais pas si c'est une bonne carte.
Ensuite, même si tu as la carte, il faut mettre des trucs autours.
Je les achète ici : http://www.waveshare.com/
A+
Hervé
Bonsoir,
pour un amateur c'est vrai pour un pro c'est un minimum!Par contre faire une carte avec un FPGA et un µC et un FPGA c'est plutôt difficile.
JR
l'électronique c'est pas du vaudou!
Pourquoi faire avec deux composants si on peut passer avec un seul?
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
Pour des raisons de coût, de consommation, et surement des tonnes d'autres encore.
Not only is it not right, it's not even wrong!
bonjour
Un moniteur temps réel type psos c'est pour des gros logiciels embarqués afin de gérer du logciel à temps contraint, éviter les bug. c'est le cas dans l'avionique par exemple. Vous y trouverez des notions de drapeau de tâche, de boîte aux lettres de liste d'attente de debugger temps réel.
C'est une couche logiciel qui est rajoutée sous forme de librairie avec le logiciel bas niveau, le bas niveau (hors moniteur) étant chargé d'initialiser les différents registres des composants. Ensuite l'applicatif en logiciel C par exemple contrairement au bas niveau qui peut être en assembleur s'interface avec des fonctions sans avoir connaissances des détails des nombreux registres à programmer.
L'arduino est en quelquesorte fourni avec un logiciel applicatif, le bas niveau personne ne l'utilise sauf à tout court-circuité coté logiciel pour être rapide. Mais en aucun cas on ne parle de moniteur temps réel pour l'arduino en tout cas le nano par exemple.
Dans un gsm il doit je pense par exemple y avoir une tâche temps réel qui est associée à la réception de sms, une autre pour le bluetooth, ensuite le moniteur gère la priorité des tâches évitant tout bug et plantage. Il ne faut pas qu'une tâche mis en sommeil parce qu'elle attend une entrée dans sa boîte aux lettres reste prioritaire et empêche les autres tâches de se réveiller et de devenir active.
Le moniteur temps réel permet de partager le temps, mais ce n'est pas indispensable pour faire un automate logiciel.
Cf google "le temps réel et l'industrie"
cdlt
En revenant à la discussion initiale , comme je suis un new_bie , je me demande à quoi ça sert le fait d'utiliser une fréquence particulière pour chaque composant électronique : je m'explique ,par exemple , une horloge externe qui livre une fréquence de 1MHz , un timer ui fonctionne avec 200 Khz , un diviseur de fréquence pour un composant x ... à quoi ça sert physiquement toutes ces fréquences ?
Supposant qu'on ait alimenté une carte , quel est la relation entre un coup d'horloge et la fréquence de l'horloge ? ensuite la relation entre un coup d'horloge et la fréquence d'un bloque x1 , x2 ?
Pourquoi on voit des diagrammes temporelles sur des front montant lors de la création de fpga ?
Quel est la référence à prendre pour bien comprendre les valeurs attendues ?
J'arrive pas à trouver la réponse à mes question tout seul .
merci
Bonjour
Utiliser une fréquence particulière pour chaque composant cela dépend tout simplement de la doc du composant et ses caractéristiques , sa fréquence optimale d'utilisation. Fournir une fréquence trop grande , même s'il peut la diviser cela peut générer de la consommation excessive., je me demande à quoi ça sert le fait d'utiliser une fréquence particulière pour chaque composant électronique : je m'explique ,par exemple , une horloge externe qui livre une fréquence de 1MHz , un timer ui fonctionne avec 200 Khz , un diviseur de fréquence pour un composant x ... à quoi ça sert physiquement toutes ces fréquences ?
Supposant qu'on ait alimenté une carte , quel est la relation entre un coup d'horloge et la fréquence de l'horloge ? ensuite la relation entre un coup d'horloge et la fréquence d'un bloque x1 , x2 ?
Pourquoi on voit des diagrammes temporelles sur des front montant lors de la création de fpga ?
Quel est la référence à prendre pour bien comprendre les valeurs attendues ?
Pour la fourniture des horloges, plus y en a sur une carte plus il y a le risque de rayonnement avec des mélanges des raies et un spectre compliqué qui va rayonner de l'information parasite. Par exemple pour concevoir une carte traitant des informations sensibles on se doit :
-de gérer le hardware comme du logiciel avec des gros documents de spécifications. On y décrit notamment quelles sont les horloges qui sont présentes, si elles sont bien séparées,
-comment sont chargés les composants programmables par le logiciel et comment sont ils modifiables ou pas pour la sécurité ou pour la maintenance chez le client,
-des parties électroniques peuvent traiter des informations banales d'une moindre importance elles seront cloisonnées dans une zone spécifique de la carte avec sa propre horloge, d'autres zones bien délimitées auront une horloge ou des horloges et seront dans une autre zone. Si les zones doivent communiquer les signaux seront bien filtrés pour ne pas contenir ou limiter à un seuil très bas le niveau d'informations sensibles que l'on pourrait retrouver dans leur spectre.
-en fin de conception aidés des documents détaillés des experts qui sont intervenus au début de conception (validation du synoptique , des horloges, du découpage de zone) reviennent (enfin leur exécutants !) pour valider le système et vérifier que la partie d'information sensible que l'on peut retrouver comprises dans les signaux qui ne sont sensibles pas ne dépasse pas un seuil. C'est en quelquesorte de la cem mais ce qui importe c'est surtout de ne pas rayonner des informations sensibles décodables par recoupement d'information plus que de rayonner ! Bien entendu il faut aussi ne pas être susceptible au rayonnement et faire un reset à la moindre pertubation...
Concernant le front montant beaucoup de logique fonctionne comme cela en ce qui concerne la génération. Par contre pour acquérir des données générées sur un front montant il faut être sûr de les échantillonner en respectant les temps de "set_up" et de "hold". On peut échantillonner avec un front descendant et regénérer sur un front montant, voire en détail la métastabilité dans les fpga . Il faut assurer le respect de ces temps même si la fréquence des horloges augmentent un peu voire dérive en entrée de carte dans certaines conceptions.
Si les signaux en entrée sont asynchrones liés à aucune horloge il faut alors les échantillonner en étant sûr de les avoir stable, un système de double bascules en entrée pour les échantillonner, voire également la métastabilité, doit être prévu. Je décris rapidement cela en logique, mais cela se traduit ensuite par du VHDL par exemple.
Dans les fpga au moins initialement il y avait un nombre limité de "global clock" qu'il faut voire comme des autoroutes prioritaires garantissant le passage sans retard exagéré des signaux qui y transitent vers les bascules élémentaires des block logiques CLb de mémoire ou les bascules présentes sur chaque entrée/ sortie d'un fpga. Mais même s'ils sont plus nombreux il vaut mieux limiter le nombre d'horloge pour les raisons évoqués, après cela dépend aussi des circuits. Dans certains domaines que je ne peux connaître il en faut peut être de nombreuses ou différents blocs de logique dans le fpga qui tournent avec des multiples ou des sous multiples d'une horloge initiale distribués en "global clock" dans le fpga.
cdlt
merci pour ton poste , j'admet que je ne suis pas en mesure encore de tout comprendre .
faisons simple : Une horloge travaille avec une fréquence particulière , génère des impulsion , donc une impulsion en terme de fréquence égale à quoi (prenons par exemple 1MHz ?
Un front montant physiquement c'est quoi ? et pourquoi spécialement montant ?
le diagramme correspondant aux impulsions , celui ou on voit des entrées (in , clk , registresx...) correspond à quoi en vhdl ?
une bascule , a t-elle besoin de la même fréquence que celle de l'horloge pour travailler ? supposons qu'elle ait besoin d'une fréquence inférieure , ça peut causer quoi le fait qu'elle ait en entrée une grande fréquence ? est ce similaire que si on applique une tension N sur un composant qui support une tension N-10 et du coup risque de le griller ?
Merci
Bonjour
Un front montant : C'est par exemple le passage de 0 à 3V3 pour de la logique simple qui à 2 états logiques 0 ou 1, l'inverse pour un front descendant.
J'ai parlé de front car la logique séquentielle par exemple une bascule D fonctionne sur des changements d'états à chaque front de l'horloge. Généralement c'est le front à moins d'intercaler un inverseur sur l'entrée d'horloge.
Physiquement un front montant c'est la transition de l'état logique 0 à 1 dans mon exemple, c'est souvent accompagné de rebonds , mais c'est surtout caractérisé par le temps de montée entre 10 et 90 % de la valeur. Regardez des databook de logique vous en verrez.
Une bascule en interne d'une conception peut très bien travailler selon les besoins à partir d'une division d'une horloge initiale.
Si on diminue la fréquence d'entrée de l'horloge d'une bascule D alors qu'on maintient un rythme très rapide sur son entrée de donnée on risque de perdre des états puisque on échantillonne plus les données assez rapidement !
Si vous augmentez la fréquence vous augmenterez la puissance dynamique de votre circuit, elle est proportionnelle à la fréquence du signal "1/2 cV*V*F".
Revoir la notion de temps de maintient et d'établissement d'une donnée par rapport au front de l'horloge.
http://wiki.jelectronique.com/doku.p...illes_logiques
cdlt
merci à vous ,
vous savez ou je peux travailler sur un projet en langage c , genre contribuer en local sur ma machine , je voudrais me perfectionner en systèmes embarqué .
Si vous pourriez m'envoyer un lien ou je peux m'inscrire .
merci