Partage
  • Partager sur Facebook
  • Partager sur Twitter

Circuits logiques

    30 août 2013 à 18:31:31

    Bonjour,

    Pendant ces vacs, je me suis intéressé aux circuits logiques, je viens d'ailleurs de finir une implémentation du jeu de la vie en logique http://www.youtube.com/watch?v=Wr2wRu28alU

    J'ai trouvé ça très intéressant alors je voulais savoir si vous connaissez des sites spécialisés, ou bien des concours/challenges plus ou moins dans ce domaine (je suis loin d'être un expert mais c'est un bon moyen de progresser)?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 septembre 2013 à 20:59:42

      regarde des vidéo YouTube de redstone car moi j'ai appris comme ça
      • Partager sur Facebook
      • Partager sur Twitter
        6 septembre 2013 à 21:08:19

        Ahah, la redstone pour apprendre l'électronique numérique, mortel !!!

        Bientôt, les profs de physique demanderont aux élèves de joué à Minecraft :D

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 septembre 2013 à 21:17:32

          je sais mais tu apprend les porte logique et ces mieux de jouer a des jeux éducatifs que a des jeux de gère excuser moi de la <déviation >

          et au U.S.A il utilise des jeux pour apprendre 

          • Partager sur Facebook
          • Partager sur Twitter
            7 septembre 2013 à 11:11:21

            Si ca vous intéresse j'ai fait un space invaders (toujours en logique sous logisim) http://www.youtube.com/watch?v=NTRNczisCWU

            n'hésitez pas à me dire si vous connaissez des concours ou des sites spécialisés dans la logique, vhdl ou elec :)

            • Partager sur Facebook
            • Partager sur Twitter
              7 septembre 2013 à 11:33:14

              "au U.S.A il utilise des jeux pour apprendre"

              C'est bon tant qu'on est enfant , ça; apres il faut décider d'apprendre

              • Partager sur Facebook
              • Partager sur Twitter
                7 septembre 2013 à 18:06:51

                Respect pour le space invaders, ça déchire.

                Je te conseille l'achat d'une carte FPGA avec une sortie vidéo, du genre port VGA, tu n'as pas l'air de manquer d'idées...

                • Partager sur Facebook
                • Partager sur Twitter
                  8 septembre 2013 à 15:02:29

                  Merci pour le space invaders :), bon il est loin d'être parfait mais c'était pour m’entraîner à implementer un petit jeu en logique

                  Ouais un fpga ca serait super mais j’hésite avec un kit de dev de microcontroleur, je sais que ce n'est pas la meme chose mais je pourrais faire des projets plus compliqués et plus rapidement... enfin bon je vais réfléchir et puis je suis pas sur d'avoir bcp de temps cette année en plus des cours (surtout que je vais déjà avoir des cours de vhdl au 2nd semestre...)

                  Sinon, est ce que tu connais des sites spécialisés, ou bien des concours/challenges plus ou moins dans ce domaine

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 septembre 2013 à 17:44:30

                    Des challenges, heu non, de temps en temps les fabricants en sortent...

                    > un fpga ca serait super mais j’hésite avec un kit de dev de microcontroleur, je sais

                    > que ce n'est pas la meme chose mais je pourrais faire des projets plus

                    > compliqués et plus rapidement...

                    ouais, ça dépend vraiment de ce que tu veux faire, le FPGA est intéressant pour faire du hard mais quand même plus difficile à mettre en oeuvre dans une réalisation amateur... 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 septembre 2013 à 20:00:23

                      Bon c'est bon je crois que je vais acheter un fpga :)

                      Est ce que tu sais combien coûterait une carte de dev? avec si possible une entrée et une sortie jack, un petit écran (2-3 lignes de 10 caractères), une sortie vidéo, des boutons et voir même un transmetteur bluetooth (sauf si c'est trop chère)?

                      Merci

                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 septembre 2013 à 7:44:45

                        Au niveau du fabricant de FPGA tu as plusieurs choix, les principaux sont Xilinx et Altera. Les logiciels sont des usines à gaz. Tu peux d'ailleurs télécharger les versions gratuites pour simuler un design et voir celui qui te plaît le plus.

                        http://www.origin.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm

                        http://www.altera.com/products/software/quartus-ii/web-edition/qts-we-index.html

                        La Nexys2 est une bonne carte mais le gros connecteur d'IO n'est pas compatible avec des cartes d'expé (les petits connecteurs sur le dessus, oui). Surtout il y a dessus une RAM facile à utiliser (pas besoin de controleur SDRAM) et un programmateur USB intégré très rapide (il faut éviter les cartes qui se programment uniquement par JTAG, c'est assez lent/pénible, et nécessite un adaptateur jtag).

                        Une grosse liste de cartes :

                        http://tristesse.org/FPGA/CheapFPGADevelopmentBoards

                        avec si possible une entrée et une sortie jack, un petit écran (2-3 lignes de 10 caractères),

                        > une sortie vidéo, des boutons et voir même un transmetteur bluetooth


                        En fait, il vaut mieux éviter de partir sur une liste trop "personnelle", tu risques de ne pas trouver. Ajouter des périphériques lents (LCD texte, boutons) est facile tant que la carte a des IO. Si tu veux un jack pour une entrée son, tu peux l'ajouter assez facilement aussi, il suffit de mettre un petit adc ou un codec stéréo. Si ta carte FPGA a un connecteur d'IO, disons "amical", tu mets tes accessoires sur un petit circuit imprimé perso à côté, et hop.

                        Par contre, tu ne peux pas vraiment ajouter des périphériques rapides, surtout la mémoire, il faut qu'elle soit directement sur la carte, parce que bon, envoyer des signaux à 133 MHz ou plus dans des connecteurs, c'est le fail. Ou bien, si tu veux une connection USB2 avec le PC, c'est mieux si la carte a le chip qu'il faut.

                        Attention les FPGA ont peu de mémoire embarquée. Par exemple Spartan-3E 500 : 40 kilo-octets. C'est de la SRAM double port, par blocs de 1 ou 2Ko utilisables séparément ou en groupes avec des performances monstrueuses, mais à dose homéopathique. Donc si tu as besoin de mémoire vidéo par exemple, pour un frame buffer, mets-le tout en haut de ta liste de shopping !

                        Après il faut considérer le contrôleur : pour de la SRAM c'est trivial (SRAM: plus chère et plus rapide en accès aléatoire), pour de la SDRAM ça va encore (il faut trouver un contrôleur opensource ou utiliser le coregen dans ISE et vérifier que le core est pas payant), pour de la DDR ou plus, la probabilité de ne pas trouver de contrôleur gratuit augmente. Donc il faut bien vérifier avant d'acheter la carte qu'on pourra effectivement utiliser ce qu'il y a dessus avec les outils gratuits (créé un projet et compile-le jusqu'au bitfile). Exemple : une superbe carte avec une PHY gigabit ethernet, c'est techniquement dans tes fesses puisque xilinx vend le core ethernet mac 10000$...



                        -
                        Edité par Lord Casque Noir 14 septembre 2013 à 7:48:50

                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 septembre 2013 à 9:54:30

                          Merci pour votre aide :), je pensais pas que ca serait aussi complexe pour choisir...

                          Comme je n'y connais grand chose, je vais acheter un modèle assez standard et polyvalent (à moins de 100€ si possible) et si un jour j'ai un projet qui en demande plus alors j’achèterais une carte plus spécifique. En fait je me rend compte que le plus important pour moi est d'avoir une carte avec un connecteur IO "amical" ;), un oscillateur rapide et une compatibilité 24 bits car j'aimerais faire du traitement audio (un petit projet de pédale à effet pour guitare se dessine...). Alors si jamais vous connaissez une carte avec une bonne réputation, un bon rapport qualité/prix, qui répond à mes besoins, n’hésitez pas :)

                          Et je voulais savoir, si un jour j'ai un projet que je voudrais industrialiser (on peut toujours rêver ^^) ou au moins fabriquer en quelques exemplaires, est ce qu'il existe des entreprises qui fabriques des circuits intégrés à partir d'un schéma logique pour pas trop chère et en petite quantité?

                          Merci

                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 septembre 2013 à 10:05:07

                            > fabrique des circuits intégrés à partir d'un schéma logique pour pas trop chère et en petite quantité?

                            des circuits intégrés custom non

                            des circuits imprimés oui

                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 septembre 2013 à 10:46:53

                              Désolé je suis pas très bon en elec... en gros ca veut dire qu'ils font juste la plaque avec les gravures et je dois souder les composants dessus? Mais pour les calculs est ce qu'ils peuvent faire un "processeur" basé sur mon fpga ou est ce que je devrais ajouter un fpga pour chaque produit?

                              Et juste pour revenir à ma carte : lorsqu'il est spécifié "18-bit multipliers" ca veut dire que je ne pourrais pas implémenter un processeur 24 bits? (je sais je suis un peu nul... désolé). Et j'ai trouvé cette carte dans mon budget avec de l'audio en 24 bits :) http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=83&PartNo=2 Est ce que vous pouvez me dire si vous pensez que c'est un bon produit et est ce que vous pensez qu'il y a un adc par connecteur jack ou alors un seul pour les 3 connecteurs?

                              Merci

                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 septembre 2013 à 18:53:04

                                Hm, c'est flou.

                                ca veut dire qu'ils font juste la plaque avec les gravures et je dois souder les composants dessus?

                                Bien sûr, tout est possible tant que tu paies... Par exemple :

                                - un circuit intégré custom : 100K à 1M$

                                - un ingénieur qui te conçoit ton schéma, circuit imprimé, etc, en fonction d'un cahier des charges : 1K à 20K$

                                - un tirage de circuit imprimé en chine sous 3 semaines d'après des fichiers gerber fournis et dessinés par toi : 5$ (ou, en europe de l'ouest livré après demain : multiplie le prix et la qualité par 10)

                                Tu peux faire à peu près n'importe quoi, par exemple si tu as un prototype qui marche, tu peux aller voir un assembleur et lui en demander 100 ou 1000 copies pour pas trop cher, mais bon, si tu n'es pas au point dans le domaine ce sera vraiment la galère.


                                Et juste pour revenir à ma carte

                                En fait, tu veux un truc pour faire quoi ? Je t'ai conseillé les FPGA parce que je pensais que t'avais envie de t'amuser à manipuler du hardware et de la logique, mais ce n'est pas forcément la bonne solution. Par exemple, si tu veux juste faire un traitement de son, il vaudrait mieux un DSP ou un ARM un peu puissant. Donc explique ton idée dans les détails.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 septembre 2013 à 19:24:46

                                  Merci, de toute facon c'est pas pour tout de suite l'industrialisation  ^^

                                  En fait oui je veux faire du fpga pour apprendre à manipuler la logique, le hard et bien comprendre comment fonctionne un ordi... j'ai trouvé un bon cours (enfin je crois) http://comelec.enst.fr/hdl/vhdl_exemples.html alors je me suis dit qu'une fois que je l'aurai lu, je pourrais l'appliquer dans un projet perso. Et comme je joue de la guitare, je me suis dit que je pourrais faire une pédale à effet connectée. Bon pour commencer elle numérisera l'entrée jack, lui appliquera un filtre numérique (pour l'effet) et analogisera (je pense pas que ca se dit ^^) vers une sortie jack. Puis, j'aimerais ajouter un petit ecran et des boutons pour modifier les reglages du filtres. Enfin, j'aimerais connecter cette pedale à un smartphone pour pouvoir tout regler depuis le tel, ajouter des filtres, et recuperer la sortie audio (mais cette partie "connectée" n'est pas pour tout de suite... peut-être qu'un reve :))

                                  Voila voila, je ne suis pas sur qu'un fpga soit la meilleur solution, mais bon c'est pour apprendre, et puis je me dis qu'au moins le fpga permettra de bien gérer le processeur de traitement du signal séparément de celui de l'interface utilisateur... Si vous connaissez un fpga pour commencer la partie entrée jack -> traitement -> sortie jack je suis preneur :) !

                                  Merci

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    15 septembre 2013 à 12:11:26

                                    En effet, pour faire un peu de traitement du son (DSP), le fpga sera inutilement compliqué.

                                    Tu devrais chercher une carte de dév avec un DSP (la plupart ont un adc/dac audio).

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      15 septembre 2013 à 13:03:04

                                      Comme l'a dit LCN, faire du traitement de signal sur FPGA c'est assez complexe a réaliser, surtout sur les FPGA bas de gamme qui ne comportent pas forcément d'unités de multiplication hardware et encore moins d'unités "DSP", or faire une multiplication en logique prend beaucoup de ressource. Pour obtenir des FPGA avec des multiplicateurs hardware voire des unités DSP il faut taper dans le milieu de gamme ou haut de gamme, ce qui est assez inaccessible pour un débutant et amateur (notamment niveau finances).

                                      Le mieux est donc de s'orienter vers une carte à base de microcontroleur type ARM (avec instructions NEON) ou dsPIC (qui comporte des unités de traitement de signal) ou encore vers un DSP.

                                      TI et Microchip proposent quelques cartes pas trop chères avec des DSP :

                                      - TI C5505 eZdsp USB Stick Development Tool, environ 50€, une entrée ligne et une sortie headphone. Petite carte que l'on branche au PC sur un port USB comme une clé.

                                      - MPLAB Starter Kit for dsPIC DSCs, environ 60€, 1 entrée ligne/ 1 sortie headphone. Port micro-usb pour la programmation avec le PC
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        15 septembre 2013 à 13:28:39

                                        Ah bon sur les kits comme celui la http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=83&PartNo=2 ont peut pas faire de multiplications???

                                        L'autre avantage du fpga c'est que je veux faire un système pour ajouter des filtres en wi-fi. Avec le fpga je vois a peut près comment faire : on réceptionné tout les filtres dans une grosse mémoire, ya un block qui permet de charge le filtre qu'on veut dans la mémoire où point le program counter. Mais avec un µcontroleurs, je vois pas trop comment faire pour charger du code à la voler, avez vous idée?

                                        Bon ben c'est dommage que ce projet ne correponde pas avec le HDL parce que les 2 m’intéressent. Je vais commencer par lire le cours que j'ai trouvé http://comelec.enst.fr/hdl/vhdl_exemples.html et si ca me plait j’essayerais de trouver une autre idée. Mais alors dans quel domaine un fpga est il nécessaire?

                                        Ah oui, et même si mon projet serait plus long à faire en fpga, serait il plus cher à industrialiser en fpga ou en µcontroleur? 

                                        Merci, franchement vous m'aider beaucoup parce que j'y connais rien en fpga...

                                        -
                                        Edité par far38 15 septembre 2013 à 13:46:01

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 septembre 2013 à 14:43:18

                                          La carte DE1 possède un Cyclone II EP2C20, qui comporte effectivement des "18x18 multipliers" au nombre de 26. Mais même si ton FPGA ne possède pas de blocs multiplicateurs hardware (ie implémentés dans le silicium) tu peux en réaliser avec des portes, c'est juste que cela prend de la place et que si tu peux les avoir en hardware, ca fait autant de place disponible pour d'autres choses.

                                          De même faire une FFT demande pas mal de ressource au niveau portes logiques, si tu peux avoir des blocs hardware qui permettent d'économiser des portes, c'est autant de place disponible pour ton algorithme.

                                          La carte DE1 te permettra de réaliser ton projet pour faire quelques effets, néanmoins je ne sais pas si tu auras assez de place pour faire tout ce que tu veux (si tant est que tu arrive au bout).

                                          raffi3438 a écrit:

                                          L'autre avantage du fpga c'est que je veux faire un système pour ajouter des filtres en wi-fi. Avec le fpga je vois a peut près comment faire : on réceptionné tout les filtres dans une grosse mémoire, ya un block qui permet de charge le filtre qu'on veut dans la mémoire où point le program counter. Mais avec un µcontroleurs, je vois pas trop comment faire pour charger du code à la voler, avez vous idée?

                                           Pourquoi parles-tu de mémoire et de program counter ?

                                          Charger un code pour changer de filtre ca peut se faire sur FPGA ou sur microcontrolleur, mais ca sera plus simple sur microcontroleur. Enfin tout dépend si tu veux pouvoir changer à la volée pendant le fonctionnement de la carte ou si tu accepte qu'il y ait un reset du FPGA (ou alors un système assez complexe).

                                          Pour de l'industrialisation, ca dépend du FPGA que tu prendra de ton type de boitier, etc. Pareil pour le microcontroleur. Il y a trop de paramètres inconnus pour te dire lequel est préférable.

                                          raffi3438 a écrit:

                                          Mais alors dans quel domaine un fpga est il nécessaire?

                                           Un FPGA n'est pas forcément nécessaire dans un domaine, maintenant il y a des domaines où il sera souvent la seule solution viable.

                                          Par exemple dans tout ce qui va être télécom, on peut utiliser des FPGA pour faire la partie "switch" (routage des paquets) avec des FPGA haut de gamme. Un FPGA haut de gamme pourra facilement router 32 ports gigabits ethernet.

                                          De même dans le domaine des radar et le traitement du signal on utilise des FPGA car les traitements à réaliser sont souvent parallèlisables : il y a plein de petites "cellules" et on applique plus ou moins le même traitement à chaque cellule, un FPGA va gérer un certain nombre de cellules, et les FPGA sont reliés ensemble sous forme de matrice, les données pré-traitées sont ensuite envoyées vers des unités de calcul qui peuvent être des processeur ou des FPGA

                                          On utilise aussi des FPGA pour des questions de sécurité et de fiabilité dans l'avionique. En effet les fabriquants d'équipement doivent montrer le fonctionnement des composants qu'ils utilisent. Or les fabriquants de puces ne sont pas forcément d'accord pour expliquer en détail le fonctionnement de leurs puces (secret industriel) on utilise alors des FPGA pour réaliser des fonctionnalités similaire mais dont on connait le fonctionnement.

                                          Sinon de manière plus simple, comme je le fais actuellement sur un projet, un petit FPGA sert d'IO expander pour un processeur : le processeur est relié au FPGA via un bus 16 bits rapide et via des registres peut récupérer des informations vers d'autres composants (des DSPs, des cartes filles, etc.). Le FPGA possède environ 300 pins, environ une 50aine est utilisée sur le processeur, le reste l'est pour les autres composants, cela permet de connecter au processeur pleins de composants alors qu'il n'a pas assez de pins. 





                                          -
                                          Edité par zeqL 15 septembre 2013 à 14:54:02

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            15 septembre 2013 à 14:51:58

                                            Ok merci :)

                                            Et juste est ce que tu peux m'expliquer comment faire pour charger un code pour changer un filtre sur un µcontroleur, parce que j'ai déjà fait un peu de PIC et je ne vois pas trop comment on peut faire ca.

                                            Merci

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              15 septembre 2013 à 16:04:45

                                              > pour charger un code

                                              Ça dépend du micro en question.

                                              Avec tous les kits de développement civilisés, tu auras un environnement de développement et une connection USB.

                                              J'ai l'impression que tu nages un peu, donc :

                                              Un FPGA c'est du hardware programmable, c'est-à-dire des blocs, par exemple :

                                              http://www.xilinx.com/support/documentation/user_guides/ug384.pdf (voir en page 9).

                                              il y en a de quelques centaines à des centaines de milliers dans les grosses FPGA. Ces blocs implémentent diverses fonctions logiques élémentaires de façon programmable (en gros, n'importe quelle fonction logique de 3 à 5 ou 6 entrées et 1 ou 2 sorties), plus des fonctions supplémentaires (genre une RAM de 1 bit x 32, etc). Suivant le modèle il y aura aussi des multiplieurs hard, de la mémoire hard, etc. Tout ça est relié ensemble par une montagne de fils et des switch programmables. Le code VHDL ou verilog se traduit par une programmation des blocs et des connections pour avoir la fonction voulue.

                                              Donc, si tu veux un processeur, il faut le créer. Idem si tu veux faire un filtre ou une convolution. On trouve des "core" tout faits, gratuits ou non.

                                              Les forces de la FPGA sont :

                                              - Les IO : évidemment comme la logique est programmable, chaque pin peut faire n'importe quoi et gérer n'importe quel protocole. Une FPGA bas de gamme à 10$ peut rentrer ou sortir plus de 100 Mbit/s par pin. Pour du routage ou de la commutation de signaux, c'est génial. Sur les très haut de gamme, c'est carrément du délire avec genre 20 ou 30 transmetteurs à 20 gigabit/s (totalement inutilisable pour un bricoleur).

                                              Comme c'est du hardware, si tu as un petit module qui a une certaine fonction (par exemple décoder un flux dans un certain protocole comme de l'I2S par exemple), rien ne t'empêche d'en instancier un par pin et d'avoir 50 canaux.

                                              - Le parallélisme : comme c'est du hardware, tant qu'il y a de la place dans la FPGA tu peux instancier plusieurs circuits et les faire travailler en parallèle. Par exemple, si tu veux avoir 50 (ou 1000) filtres en parallèle il suffit d'avoir une FPGA assez grosse.

                                              - La puissance : une FPGA à 10$ est déjà un monstre, et comme on peut optimiser le hard exactement pour la tâche à accomplir, on peut faire une seule chose, mais très vite. Par exemple du cryptage ou des filtres.

                                              Mais :

                                              - C'est compliqué (rien que coder une convolution est beaucoup plus compliqué que sur un cpu)

                                              - C'est assez cher

                                              - Il y a très peu de RAM dedans

                                              Pour ton traitement audio il vaut mieux un DSP. Ce qui distingue un DSP d'un processeur généraliste c'est juste une question d'optimisation.

                                              Dans un cpu il y a plusieurs axes d'optimisations possibles :

                                              - le débit (data flow) : vitesse pure en calculs répétitifs. Pour que le débit soit élevé on utilise des pipelines plus longs et on monte la fréquence. Comme on ne peut pas traiter une donnée avant qu'elle soit disponible, ça implique de pouvoir aller chercher la donnée en mémoire, réaliser le calcul, et utiliser le résultat, à la chaîne, sans temps d'attente. Donc, ça implique que l'avenir soit prévisible, d'où la notion de calcul répétitif, comme un filtre. On sait qu'il faut X cycles pour aller chercher la donnée en mémoire, on sait qu'on aura besoin aussi des N suivantes, on aura des transferts en rafale, etc.

                                              - le temps de réaction (control flow) : c'est disons l'agilité à négocier le compromis entre un avenir connu et inconnu. À chaque fois qu'il y a une condition (un if, for, while, etc quoi) il faut bien avoir le résultat du test avant de savoir quel chemin sera pris. Ça constipe les pipelines, en insérant des temps d'attente. C'est la principale raison pour laquelle les langages interprétés sont lents (dans un interpréteur il y a beaucoup de tests). 

                                              - le prix, bien sûr, les watts, etc.

                                              Donc :

                                              - Un microcontroleur est plutôt optimisé pour le contrôle, le prix, l'assortiment de périphériques...

                                              Par exemple, sur un Cortex M0, la mémoire est dans le même chip donc la latence est faible, l'horloge n'est pas élevée parce qu'on n'a pas besoin de performances extrêmes, donc le pipeline est très court, et un test donne une pénalité très faible (genre 1 ou 2 cycles), il n'y a pas de cache ni de prédicteur ni en fait rien du tout, ce truc fait moins de 1mm2 et coûte 1$ pour 30 MIPS...

                                              - Un cpu généraliste (mettons de PC) est optimisé pour un équilibre entre le contrôle et le débit.

                                              On exige des performances énormes, donc horloge élevée et pipeline long (pentium-4), mais la mémoire est très loin (genre, 1000 cycles l'accès aléatoire), donc on ajoute des caches, des prédicteurs de branchements et d'accès, pour prévoir l'avenir et aller chercher la donnée dont on aura besoin à l'avance pour ne pas avoir à attendre. On réordonne les instructions en fonction des données disponibles pour ne pas se tourner les pouces. Pour optimiser le débit, on utilise des transferts en rafale avec la mémoire, des unités de calcul en parallèle (SSE...), etc, etc. Et comme ça ne suffit pas, on rajoute des cores. Résultat, une usine à gaz.

                                              - Un DSP est optimisé pour le débit au détriment du contrôle.

                                              Par exemple, si tu fais un petit filtre en convolution, tu sais que tu vas faire toujours le même nombre de multiply-accumulate, que les données seront consécutives en mémoire, etc. Donc, il est facile de bourrer le pipeline, de ne pas avoir de temps d'attente, et de transférer les données en mémoire de façon optimum. On équipe le DSP d'instructions spéciales pour cet usage. 

                                              Un DSP peut avoir un très gros débit pour pas cher, puisqu'il fait toujours la même chose il n'a pas besoin de cache, prédicteur, réordonnanceur d'instructions et autres bidules. C'est un cpu basique, avec des instructions de boucle efficaces, des modes d'adressage genre "ring buffer" ou modulo 2^n pour les buffers tournants, une interface mémoire avec un gros débit, et une ou plusieurs unités mathématiques pipelinées et rapides.

                                              Par contre un DSP pur sera très con en contrôle : si il y a un if, il va s'arrêter et attendre que le test soit résolu. Donc si il y a beaucoup de tests, il sera pas performant du tout. Ça tombe bien, dans le traitement de signal il y a quasiment jamais de tests, ou alors des trucs genre valeur absolue ou min/max, qui sont implémentés par des instructions spéciales, pour éviter les tests justement.


                                              Après on a des mélanges, par exemple le un Cortex-M4 est-il un microcontroleur ? (oui, il y a une liste de périphériques longue comme un bottin, de la RAM dedans, etc), mais c'est aussi un cpu généraliste (200 Mips), et c'est aussi un peu un DSP pas trop pourri (instructions style SSE bien puissantes)... 

                                              Pour revenir à ton problème, commence par calculer le nombre d'opérations à la seconde que nécessite le truc. Par exemple :

                                              - on rentre ... samples/s x ... canaux x ... bits (genre 48kHz stéréo 24bits )

                                              - on fait un filtre (convolution ? combien de noeuds ? IIR ? autre ? combien de filtres ? y'a des tables ou des fonctions non linéaires ?) => nombre de MAC/s

                                              - combien il faut de RAM pour stocker le signal entrant (pour convolutions, par exemple pour une réverb, c'est "beaucoup") et les filtres, le code...

                                              - on choisit le cpu après

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                15 septembre 2013 à 16:37:43

                                                C'est incroyable ce que tu fais! Où as tu appris ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  16 septembre 2013 à 10:24:03

                                                  Merci beaucoup pour ton explication :), je comprend bien qu'un µcontroleur serait plus adapté mais comme je voulais apprendre à faire du HDL et que j'ai déjà réalisé plusieurs projets sur un PIC, je pense que vais commencer par un fpga est si ca devient trop dur je passerais sur un PIC (mais bon est plus d'apprendre que de terminer le projet). 

                                                  Par contre j'ai question concernant les codec audio, me sont-ils vraiment utiles? est ce qu'un CAN ne serait pas plus simple et pratique car pour mes algos il me faut simplement la valeur échantillonnée?

                                                  Merci

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    16 septembre 2013 à 10:32:18

                                                    Un "codec audio" c'est un chip qui contient un ou plusieurs ADC/DAC et généralement quelques circuits accessoires pratiques (spdif, réglages de volume, etc).

                                                    (le terme est le même, mais ça n'a rien à voir avec la compression)

                                                    > si ca devient trop dur je passerais sur un PIC

                                                    PIC c'est une famille étendue de microcontroleurs (du 8 au 32 bits), pour cette application je te conseille plutôt un DSP quelconque ou un ARM Cortex-M3 ou M4, ça dépend de ton besoin en puissance (MMAC/s principalement) et en mémoire que tu n'as toujours pas évalué... faire une maquette du code sur PC est un bon début...

                                                    Sinon perso je préfère le verilog au VHDL (moins verbeux).

                                                    > Où as tu appris ?

                                                    sur le tas principalement (enfin à l'école aussi, mais la différence entre la théorie et la pratique...)

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      20 septembre 2013 à 10:50:45

                                                      Dac merci :), je suis de m'acheter un fpga pour maitriser un HDL, mais je ne suis pas sur de faire mon projet de guitare sur un fpga.

                                                      Est tu sais s'il existe des DSP avec un chip wifi ou bluetooth intégré? Et si oui, est ce que le traitement du wifi ou du bluetooth ne risque pas de prendre trop de calcul au cpu? Parce qu'il ne faudrait pas que le wifi ou bluetooth empeche de faire mon traitement du signal correctement (parce que avec le fpga je pourrai gerer le wifi en paralelle du traitement audio)

                                                      Merci

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        20 septembre 2013 à 11:36:24

                                                        > avec le fpga je pourrai gerer le wifi en paralelle du traitement audio

                                                        gérer le wifi demande un processeur...

                                                        > 'il existe des DSP avec un chip wifi ou bluetooth intégré

                                                        sûrement... mais bon, tu peux prendre une carte genre raspberry pi aussi...

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          20 septembre 2013 à 12:34:02

                                                          Ah ouais, j'avais pas pensé à un raspberry :), mais est ce que tu penses que c'est assez rapide pour appliquer plusieurs filtres audio en même temps? Est ce que c'est sur (ca risque pas de boguer)? Et ca risque pas d'être compliqué pour ajouter une entrée jack ou un simple CAN suffit?

                                                          Merci

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            20 septembre 2013 à 14:30:03

                                                            Lord Casque Noir a écrit:

                                                            Sinon perso je préfère le verilog au VHDL (moins verbeux).

                                                            Je préfère avoir un truc verbeux mais qui me prévient quand j’essaye de mettre un vecteur dans un bit. Bon c’est vrai que la syntaxe est à vomir, mais honnêtement osef un peu non ?

                                                            raffi3438 a écrit : >Ah ouais, j'avais pas pensé à un raspberry :), mais est ce que tu penses que c'est assez rapide pour appliquer plusieurs filtres audio en même temps?

                                                            C’est pour répondre à ce genre de question autrement que au pif que Casque Noir te demande d’estimer quantitativement tes besoins. Pour rappel :

                                                            Lord Casque Noir a écrit:

                                                            Pour revenir à ton problème, commence par calculer le nombre d'opérations à la seconde que nécessite le truc. Par exemple :

                                                            >- on rentre ... samples/s x ... canaux x ... bits (genre 48kHz stéréo 24bits )

                                                            >- on fait un filtre (convolution ? combien de noeuds ? IIR ? autre ? combien de filtres ? y'a des tables ou des fonctions non linéaires ?) => nombre de MAC/s

                                                            >- combien il faut de RAM pour stocker le signal entrant (pour convolutions, par exemple pour une réverb, c'est "beaucoup") et les filtres, le code...

                                                            Sinon une architecture qui marche bien c’est d’avoir un μC pour le contrôle (gère le wifi/bluetooth/whatever, allume deux trois LED, enregistres tes préférences, etc… ), et le DSP qui applique le traitement voulu. La liaison entre les deux sera un petit bus série type I2C ou SPI. Mais j’ai le sentiment que c’est overkill, à voir une fois que tu auras dimensionné tes besoins.

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Zeste de Savoirbépocode minimal  — Ge0 <3

                                                            Circuits logiques

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown