Voici un sujet dédié aux logiciels et algorithmes qui vont donner vie à notre DSPiy (système à base de DSP)
Le cœur est le DSP ADAU1701, il dispose d’une RAM interne pour le programme et variables ainsi que de registres de configurations.
Pour concevoir son programme le développeur utilise SigmaStudio .
Après compilation SigmaStudio nous fournis différents fichiers :
Le code programme à charger en RAM.
Un fichier de définitions avec toutes les variables utilisées dans le programme.
Ce sont ces variables qui après calculs vont définir par exemple les fréquences, facteur Q et gain d’un filtre.
Pour réaliser ces calculs, on va utiliser un soft sur PC.
Entre le PC et le DSP on utilise un µC (microcontrôleur) qui va assurer le dialogue, mais aussi de commander le DSP sans le PC pour le réglage de volume par exemple.
Le gros du chalenge est de réaliser un ensemble facilement modifiable en fonction des différentes applications finales.
|
Modérateurs: Modération Forum Installations, Modération Forum DIY, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités
DSPiy : logiciels et algorithmes
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
donnons la parole aux forumeurs.
alkasar a fait une feuille partagée (accès libre) pour vous écouter sur ce que vous avez envie de faire du DSPiy. Enfin si vous savez...
https://docs.google.com/spreadsheet/ccc?key=0AsOXGyAB2MTMdENhYm53M0U2cGk5ZGZHZlBSNGp6Tmc#gid=0
Interface d'entrée numérique :
http://www.homecinema-fr.com/forum/travail-de-groupe-diy/interface-d-entree-numerique-pour-dspiy-et-autre-t30030455.html
le site du DSPiy (en construction) :
https://googledrive.com/host/0B8OXGyAB2MTMX3p5Z3FzZG1YdlE/
Interface audio numérique sans fil et autres idées
http://www.homecinema-fr.com/forum/travail-de-groupe-diy/interface-audio-numerique-sans-fil-t30030990.html
autre liens :
calcul des filtres :
http://ez.analog.com/docs/DOC-1819
alkasar a fait une feuille partagée (accès libre) pour vous écouter sur ce que vous avez envie de faire du DSPiy. Enfin si vous savez...
https://docs.google.com/spreadsheet/ccc?key=0AsOXGyAB2MTMdENhYm53M0U2cGk5ZGZHZlBSNGp6Tmc#gid=0
Interface d'entrée numérique :
http://www.homecinema-fr.com/forum/travail-de-groupe-diy/interface-d-entree-numerique-pour-dspiy-et-autre-t30030455.html
le site du DSPiy (en construction) :
https://googledrive.com/host/0B8OXGyAB2MTMX3p5Z3FzZG1YdlE/
Interface audio numérique sans fil et autres idées
http://www.homecinema-fr.com/forum/travail-de-groupe-diy/interface-audio-numerique-sans-fil-t30030990.html
autre liens :
calcul des filtres :
http://ez.analog.com/docs/DOC-1819
Dernière édition par thierryvalk le 17 Jan 2013 13:49, édité 2 fois.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Dernière édition par thierryvalk le 17 Jan 2013 13:45, édité 1 fois.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Bonjour,
Beaucoup de documents sur ton lien !
As tu un candidat pour le µC ? Pour démarrer sur DSP ADAU1701 un kit EVAL-ADAU1701MINIZ à 195$ suffit ?
merci
Beaucoup de documents sur ton lien !
As tu un candidat pour le µC ? Pour démarrer sur DSP ADAU1701 un kit EVAL-ADAU1701MINIZ à 195$ suffit ?
merci
- stf_adonf
- Messages: 819
- Inscription Forum: 19 Fév 2006 20:38
- Localisation: Drômadaire (26)
Le µC sera un LPC1114 de NXP le cœur est un CORTEX-M0 d’ARM.
Les outils de développement LPCXPRESSO.
le kit EVAL-ADAU1701MINIZ donne accès à SigmaStudio , il est suffisant mais reste un kit d’évaluation, c’est mieux de patienter que notre carte soit opérationnelle.
Les outils de développement LPCXPRESSO.
le kit EVAL-ADAU1701MINIZ donne accès à SigmaStudio , il est suffisant mais reste un kit d’évaluation, c’est mieux de patienter que notre carte soit opérationnelle.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Juste par curiosité, pourquoi le NXP plutôt qu'un STM32F0 par exemple ?
- Tazz28
- Messages: 2802
- Inscription Forum: 03 Nov 2008 23:47
- Localisation: Dreux
Je ne connais pas le STM32F0 qui est de la même classe (cortex-M0) que le LPC1114 et je dispose des outils pour le LPC.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Voici une petite illustration d’un projet de filtra actif 2*3 + 2*10PEQ.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Explications :Je rappelle que SigmaStudio est uniquement disponible pour les développeurs.
Graphique du projet (de gauche à droite) :
Sélection des entrées
Inversion de phase 180°
Volume
PEQ -> le détail est donné dans la fenêtre fille de gauche.
10 filtres IIR sélection fréquence, facteur Q, boost et gain.
Crossover -> le détail est donné dans la fenêtre fille de droite.
3 voies sélection pente 12 ou 24db/octave (Linkwitz-Riley), polarité et gain.
Délais.
Sorties.
Après compilation, SigmaStudio va nous donner une série de fichiers +- prêts à l’emploi.
Le code .Hex et .H à charger dans la RAM du DSP.
Voici un extrait du .H
#ifndef __HCFR1_0_IC_1_H__
#define __HCFR1_0_IC_1_H__
#include "SigmaStudioFW.h"
#include "hcfr1-0_IC_1_REG.h"
#define DEVICE_ARCHITECTURE_IC_1 "ADAU1701"
#define DEVICE_ADDR_IC_1 0x68
/* DSP Program Data */
#define PROGRAM_SIZE_IC_1 5120
#define PROGRAM_ADDR_IC_1 1024
ADI_REG_TYPE Program_Data_IC_1[PROGRAM_SIZE_IC_1] = {
0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0xE8, 0x01,
0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x08, 0x00, 0xE8, 0x01,
0x00, 0x02, 0x00, 0x20, 0x01,
0x00, 0x10, 0x00, 0xE2, 0x01,
0x00, 0x0A, 0x01, 0x20, 0x01,
0x00, 0x18, 0x00, 0xE2, 0x01,
0x00, 0x12, 0x02, 0x20, 0x01,
0x00, 0x30, 0x00, 0xE2, 0x01,
…
Fichier de définitions .H de tous les paramètres modifiables :
Voici pour 1 filtre EQ
/* Module Param EQ1 - Parametric EQ*/
#define MOD_PARAMEQ1_COUNT 50
#define MOD_PARAMEQ1_DEVICE "IC1"
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_ADDR 4
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_FIXPT 0x007FFB6A
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.999860146545056)
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_ADDR 5
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_FIXPT 0xFF00092B
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-1.99972029309011)
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_ADDR 6
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_FIXPT 0x007FFB6A
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.999860146545056)
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_ADDR 7
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_FIXPT 0x00FFF6BD
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1.99971739292589)
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_ADDR 8
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_FIXPT 0xFF800913
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.999723193254333)
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_TYPE SIGMASTUDIOTYPE_FIXPOINT
Un fichier de définitions .H des registres
Ainsi que des ressources utilisées :
Number of instructions used (out of a possible 1024 ) = 440
Data RAM used (out of a possible 2048 ) = 562
Parameter RAM used (out of a possible 1024 ) = 194
On utilise donc 440 instructions pour notre projet. SigmaStudio nous indique une limite de 1024 ; erreur vu que l’on travaille en 96KHz on dispose que de la moitié soit 512.
Graphique du projet (de gauche à droite) :
Sélection des entrées
Inversion de phase 180°
Volume
PEQ -> le détail est donné dans la fenêtre fille de gauche.
10 filtres IIR sélection fréquence, facteur Q, boost et gain.
Crossover -> le détail est donné dans la fenêtre fille de droite.
3 voies sélection pente 12 ou 24db/octave (Linkwitz-Riley), polarité et gain.
Délais.
Sorties.
Après compilation, SigmaStudio va nous donner une série de fichiers +- prêts à l’emploi.
Le code .Hex et .H à charger dans la RAM du DSP.
Voici un extrait du .H
#ifndef __HCFR1_0_IC_1_H__
#define __HCFR1_0_IC_1_H__
#include "SigmaStudioFW.h"
#include "hcfr1-0_IC_1_REG.h"
#define DEVICE_ARCHITECTURE_IC_1 "ADAU1701"
#define DEVICE_ADDR_IC_1 0x68
/* DSP Program Data */
#define PROGRAM_SIZE_IC_1 5120
#define PROGRAM_ADDR_IC_1 1024
ADI_REG_TYPE Program_Data_IC_1[PROGRAM_SIZE_IC_1] = {
0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0xE8, 0x01,
0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x08, 0x00, 0xE8, 0x01,
0x00, 0x02, 0x00, 0x20, 0x01,
0x00, 0x10, 0x00, 0xE2, 0x01,
0x00, 0x0A, 0x01, 0x20, 0x01,
0x00, 0x18, 0x00, 0xE2, 0x01,
0x00, 0x12, 0x02, 0x20, 0x01,
0x00, 0x30, 0x00, 0xE2, 0x01,
…
Fichier de définitions .H de tous les paramètres modifiables :
Voici pour 1 filtre EQ
/* Module Param EQ1 - Parametric EQ*/
#define MOD_PARAMEQ1_COUNT 50
#define MOD_PARAMEQ1_DEVICE "IC1"
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_ADDR 4
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_FIXPT 0x007FFB6A
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.999860146545056)
#define MOD_PARAMEQ1_ALG0_STAGE0_B0_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_ADDR 5
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_FIXPT 0xFF00092B
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-1.99972029309011)
#define MOD_PARAMEQ1_ALG0_STAGE0_B1_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_ADDR 6
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_FIXPT 0x007FFB6A
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.999860146545056)
#define MOD_PARAMEQ1_ALG0_STAGE0_B2_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_ADDR 7
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_FIXPT 0x00FFF6BD
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1.99971739292589)
#define MOD_PARAMEQ1_ALG0_STAGE0_A0_TYPE SIGMASTUDIOTYPE_FIXPOINT
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_ADDR 8
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_FIXPT 0xFF800913
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_VALUE SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.999723193254333)
#define MOD_PARAMEQ1_ALG0_STAGE0_A1_TYPE SIGMASTUDIOTYPE_FIXPOINT
Un fichier de définitions .H des registres
Ainsi que des ressources utilisées :
Number of instructions used (out of a possible 1024 ) = 440
Data RAM used (out of a possible 2048 ) = 562
Parameter RAM used (out of a possible 1024 ) = 194
On utilise donc 440 instructions pour notre projet. SigmaStudio nous indique une limite de 1024 ; erreur vu que l’on travaille en 96KHz on dispose que de la moitié soit 512.
Dernière édition par thierryvalk le 19 Déc 2012 22:38, édité 2 fois.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
ha ok; je suis resté sur un PIC18F moi
Sinon je suis étonné de pas voir le Raspberry évoqué dans le poste du DSPiy. Avec les GPIO on doit pouvoir faire quel que chose de super
Sinon je suis étonné de pas voir le Raspberry évoqué dans le poste du DSPiy. Avec les GPIO on doit pouvoir faire quel que chose de super
- zai
- Messages: 413
- Inscription Forum: 08 Fév 2009 21:27
- Localisation: 31
zai a écrit:ha ok; je suis resté sur un PIC18F moi
Et tu as bien raison, je travaille avec des 8bits depuis de longues années, mais aujourd’hui un 32bits avec plein de flash coute moins qu’un simple et efficace 8bits.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Rahhhhh me parlez pas du R-PI
Une sombre bouze qui surfe sur le buzz.
Pour faire un truc qui marchote c'est rigolo puis quand on regarde de plus près pour passer de marchotter à fonctionner, on découvre l'arnaque et on fout le truc à la benne.
Et puis avec n'importe quel cortex M0, y en a à la pelle des GPIO, ça coute moins de 3€ et y a pas d'embrouille.
Une sombre bouze qui surfe sur le buzz.
Pour faire un truc qui marchote c'est rigolo puis quand on regarde de plus près pour passer de marchotter à fonctionner, on découvre l'arnaque et on fout le truc à la benne.
Et puis avec n'importe quel cortex M0, y en a à la pelle des GPIO, ça coute moins de 3€ et y a pas d'embrouille.
- Tazz28
- Messages: 2802
- Inscription Forum: 03 Nov 2008 23:47
- Localisation: Dreux
Suite des explications
Que faire avec tout ça ?
Le fichier .Hex peut être rentré dans une EEPROM et c’est fini, à sa mise sous tension le DSP lit l’EEPROM et effectue le travail demandé.
C’est simple, mais pas d’accès aux paramètres qui sont figés lors de la conception.
C’est là que l’on remplace l’EEPROM par un µC contenant le programme_DSP sous forme de data.
A la mise sous tension, il va charger le DSP comme pour l’EEPROM.
Grace aux fichiers de définitions, le logiciel_µC va connaître les adresses à modifier pour changer les paramètres.
C’est relativement simple, mais les paramètres doivent être calculés.
Dans l’exemple donné pour 1 filtre PEQ on dispose de 5 paramètres : B0 B1 B2 A0 et A1.
Alors que l’utilisateur veut modifier fréquence, facteur Q et boost.
C’est là que le logiciel_param sous PC va intervenir.
Soit via un soft dédié ou une feuille Excel bien remplie, on va calculer tout cela et les transmettre au µC qui va les sauvegarder et les renvoyer au DSP aux bonnes adresses.
Il restera quelques paramètres modifiables à la volée (cad sans que le PC soit branché) tels que volume, sélection d’entrée …
Reste à mettre tout cela en musique.
Que faire avec tout ça ?
Le fichier .Hex peut être rentré dans une EEPROM et c’est fini, à sa mise sous tension le DSP lit l’EEPROM et effectue le travail demandé.
C’est simple, mais pas d’accès aux paramètres qui sont figés lors de la conception.
C’est là que l’on remplace l’EEPROM par un µC contenant le programme_DSP sous forme de data.
A la mise sous tension, il va charger le DSP comme pour l’EEPROM.
Grace aux fichiers de définitions, le logiciel_µC va connaître les adresses à modifier pour changer les paramètres.
C’est relativement simple, mais les paramètres doivent être calculés.
Dans l’exemple donné pour 1 filtre PEQ on dispose de 5 paramètres : B0 B1 B2 A0 et A1.
Alors que l’utilisateur veut modifier fréquence, facteur Q et boost.
C’est là que le logiciel_param sous PC va intervenir.
Soit via un soft dédié ou une feuille Excel bien remplie, on va calculer tout cela et les transmettre au µC qui va les sauvegarder et les renvoyer au DSP aux bonnes adresses.
Il restera quelques paramètres modifiables à la volée (cad sans que le PC soit branché) tels que volume, sélection d’entrée …
Reste à mettre tout cela en musique.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Voici un embryon d’exemple de logiciel PC, plusieurs onglets selon les modules.
Ecrit en c#, communique(ra) avec le µC en USB via un port com virtuel.
A voir cette solution ou excel plus ouvert à tous ?
Ecrit en c#, communique(ra) avec le µC en USB via un port com virtuel.
A voir cette solution ou excel plus ouvert à tous ?
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
ben voilà qui devient super clair
Pour récupérer SigmaStudio il faut demander une clé. C'est une formalité ou compliqué ?
Pour récupérer SigmaStudio il faut demander une clé. C'est une formalité ou compliqué ?
- alkasar
- Messages: 11517
- Inscription Forum: 29 Nov 2005 22:47
- Localisation: Neuf deux
|
Retourner vers Filtrage actif, Equalisation et Processeurs
|