Processador de senyals digitals

De Viquipèdia
Dreceres ràpides: navegació, cerca
Un processador de senyals digitals en una guitarra elèctrica.

El processador de senyals digitals conegut en anglès com DSP (digital signal processor) és un processador o microprocessador que incorpora el maquinari capaç d'executar els algorismes pel processament digital d'un senyal d'entrada en temps real, com pot ser l'entrada del senyal d'un fitxer d'àudio, per obtenir les operacions corresponents i extreure'n la sortida. Com que treballa amb senyals digitals necessita un convertidor dels senyals analògics a digitals (ADC) a l'entrada, i un convertidor digital analògic (DAC) a la sortida, normalment. Com tots els sistemes basats en processadors programables necessita una memòria on guardar les dades amb les que treballarà i el programa que executa.

El seu principal avantatge és la potencia que li proporciona la seva estructura, la qual li permet treballar en paral·lel, amb una memòria de dades d'accés ràpid i gran capacitat, gran poder d'execució gràcies a les unitats MAC (en (anglès), Multiply–ACcumulate operation ) i ALU (en (anglès), Arithmetic Logic Unit ), i tot en temps real.

Els DSP posseeixen també diverses solucions via hardware i/o software per les instruccions de treball, variable de gran transcendència al moment de tractar un senyal mostrejat. Aquestes eines fan que els DSP s’imposin moltes vegades a la construcció d’un dispositiu especialitzat només per aquest procés en particular. S’observa llavors que l'avantatge principal d’aquest sistema és el ser dissenyat per treballar amb la major quantitat de contratemps possibles i en una determinada quantitat de temps. Si es té en compte que un DSP pot treballar amb diverses dades en paral·lel i un disseny i instruccions específiques per el processat digital es pot veure la seva gran potencialitat per aquest tipus d'aplicacions. Aquestes característiques constitueixen la principal diferència d'un DSP i d'altres tipus de processadors.

S'utilitzen en circuits relacionats amb la imatge, el so, les telecomunicacions i la regulació i control, com telèfons mòbils, reproductors MP3, càmeres digitals, sintonitzadors TDT, regulació de velocitat, posicionament de precisió, etc., per a les funcions de processat de senyal en temps real: reducció de soroll, filtratge en general, compressió, descompressió, detecció i correcció d'errors, etc.

S'han desenvolupat de forma sostinguda durant els últims 40 anys, des que la disponibilitat de computadors va fer possible l'aplicació pràctica d'algorismes que abans només podien ser avaluats de forma manual. Les contínues millores tecnològiques han permès substituir els circuits analògics per circuits digitals que ocupen un menor volum, i que estan lliures de problemes de tolerància dels components, calibratge, i deriva tèrmica que afecten als analògics.

Història[modifica | modifica el codi]

El 1978, Intel va llançar el 2920 com un processador analògic de senyals. Aquest posseïa un xip ADC/DAC amb un processador de senyals intern, però no posseïa un multiplicador de maquinari, el 2920 no va tenir èxit en el mercat.

El 1979, AMI llança el S2811, va ser dissenyat com un microprocessador perifèric, igual que el 2920 no va tenir gran èxit en el mercat. En el mateix any, Bell Labs introdueix el primer xip DSP, The Mac 4 Microprocessor, capaç de processar senyals digitals.

El 1980 van ser presentats en el ISSCC80 els primers DSP complets: el PD7710 de NEC i el DSP1 de AT&T, ambdós processadors van ser inspirats en les investigacions de PSTN Telecomunicacions. En aquest mateix any NEC va començar la producció del PD7710, la primera producció de DSP complets en el món. Un altre avanç en DSPs va ser l'Altamira DX-1, el qual treballava utilitzant pipelines(cadenes d'execucions amb retard entre elles) i que permetia una gran potencia d'execució.

El 1983 es va presentar el primer DSP produït per Texas Instruments, el TMS32010, va ser un gran èxit de vendes. La principal millora de la tercera generació va ser l'aparició d'unitats amb aplicacions específiques, amb les seves pròpies instruccions guardades. Aquestes unitats permeten un augment de velocitat en el hardware pel que fa a problemes matemàtics complexos, com la transformada de Fourier o operacions amb matrius. Alguns xips com el Motorola MC68356 fins i tot va incloure processadors de més d'un nucli per treballar en paral·lel.

Actualment el TMS320C4X dissenyat i produït per Texas Instruments, sorgeix amb certs avantatges enfront de la resta dels processadors, ja que aquest es dissenya per a ser escalable; és a dir, perquè pugui treballar en paral·lel amb altres dispositius similars. Molts dels processadors s'engloben dintre de la filosofia CISC, ( en (anglès), Complex Instruction Set Computers) Encara que es poden trobar en el mercat alguns que operin sota la filosofia RISC (en (anglès), Reduced Instruction Set Computers); aquests últims dedicats per a aplicacions concretes com la telefonia mòbil entre altres dispositius electrònics.

Arquitectura[modifica | modifica el codi]

Els DSP no utilitzen l'arquitectura de von Neumann, on les dades i els programes estan a la mateixa memòria, sinó que fan ús de l'arquitectura Harvard, on dades i programes estan a memòries diferents.

Cada memòria és adreçada amb diferents busos, i inclús, és possible que la memòria de dades tingui diferent amplada que la de programes.

Amb la tecnologia Harvard, com que tenim memòries diferents aconseguim accelerar l'execució de les instruccions, ja que mentre estem executant una instrucció (que fa servir la memòria de dades) podem començar a descodificar la següent instrucció (que fa servir la memòria de programa).

Normalment els DSP utilitzen una arquitectura Harvard modificada, fent servir 3 busos, un per el programa i dos de dades. Així, la CPU pot llegir una instrucció i dos operands alhora, d’aquesta manera es guanya en temps. Aquests busos poden ser com en els processadors convencionals de 16, 32 o 64 bits; o amplades de bus tan diferents com 24, 48 o 56 bits. Com en els processadors convencionals, també inclou un ‘program counter’ i un ‘stack pointer’.

Els elements bàsics d’un DSP a part de la memòria de dades i de programa com ja hem parlat són: convertidors A/D a les entrades i D/A a les sortides, i dins del processador DSP hi ha multiplicadors i acumuladors, una ALU i registres.

Estructura[modifica | modifica el codi]

  • ALU: La unitat lògica algorítmica (ALU), la qual s'encarrega de l'execució dels càlculs algorísmics.
  • DMA: Memòria d'accés directe que treballa a freqüència tan ràpida com el processador
  • MAC: Multiplicador Acumulador encarregat de realitzar el producte i acumular el resultat.
  • Busos de dades: En paral·lel per donar més potència.
  • Registres de desplaçament:
  • Estructura Harvard: Basada en l'emmagatzemament per separat usant més de un bus.
  • Pipeline: Execució en cadena.
  • Coma fixa/Coma flotant:

Aplicacions DSP[modifica | modifica el codi]

Les aplicacions més habituals en que s'utilitzen els DSP són el processament d'audio i vídeo, i qualsevol altra aplicació que requereix el processat en temps real. Amb aquestes aplicacions es pot eliminar el eco en las líneas de comunicacions, aconseguir fer más clares les imátges d'órgans interns en els equips de diagnóstic médic, xifrar conversacions en teléfons celulars per mantenir privacidad, analitzar dades sísmiques per trobar noves reserves de petroli, fer posible les comunicacions wireless LAN, el reconeixement de veu, els reproductors digitals d'audio, els modems sense fils, les cámaras digitals, i una llarga lista de elements que poden ser relacionats amb el procés de senyals.

més aplicacions dels DSP:

• Verificació de la qualitat del subministrament elèctric: mesura de valor efectiu, potència, factor de potència, contingut harmònic i ficker.

• Radars: mesura de la distància i de la velocitat dels contactes. Comprensió del pols, la qual cosa permet incrementar la longitud dels polsos per augmentar l’abast, mantenint la resolució en distància.

• Sonars: formació de feixos, per orientar electrònicament la reparació de transductors; en mode actiu, mesura de la distància, la demarcació i la velocitat dels contactes; en mode passiu, classificació dels contactes en base al soroll produït per ells.

• Medicina: reducció de soroll i diagnòstic automàtic de electrocardiogrames i electroencefalogrames; formació d’imatges en tomografia axial computeritzada (scanner), ressonància magnètica nuclear i ecografia (ultrasò).

• Anàlisi de vibracions en màquines: per detectar prematurament el desgast de rodaments o engranatges, comparant l’anàlisi espectral de les vibracions amb un espectre de referència obtingut quan la màquina no té defectes.

• Oceanografia: alerta prematura de maremotos o tsunamis quan es propaguen en l’oceà obert, basant-se en les característiques d’aquestes ones que les diferencien de les onades i de les marees; anàlisi harmònica i predicció de marees; mesura de l’energia de les onades amb l’objectiu de dimensionar molls i altres estructures submergides.

• Astronomia: detecció de planetes en estrelles llunyanes, en base al moviment oscil·latori que indueixen en les estrelles al voltant de les que orbiten.

• Radioastronomia: cerca de patrons en els senyals rebuts per els radiotelescopis, per detectar intel·ligència extraterrestre (SETI).

• Imatges: millora de la llum, contrast, color i nitidesa, restauració d’imatges borroses degut al moviment de la càmera o de l’element fotografiat. Compressió de la informació.

• Transformada de Fourier: Un dels principals beneficis del DSP, és que, les transformacions de senyals són més fàcils de realitzar. La Transformada Discreta de Fourier (DFT), és una de les més importants. Aquesta transformada ens permet convertir un senyal de domini de temps a un de domini de freqüència. La TFD permet una anàlisi més senzilla i eficaç de la freqüència, sobretot en aplicacions d'eliminació de soroll i en altres tipus de filtratge(filtres passabaixos, passaalts, passabanda...). Una altra de les transformades importants és la Transformada cosinus discreta, és similar a l'anterior quant als càlculs necessaris per poder obtenir-la, però aquesta converteix els senyals en components del cosinus trigonomètric. Aquesta transformada és una de les bases de l'algorisme del comprimidor d'imatges JPEG.

ASP (Processador analògic del senyal) o DSP (Processador digital del senyal)[modifica | modifica el codi]

El Processament Analògic de Senyals (ASP) és generalment més simple que el processament digital, el qual requereix típicament d'un filtre analògic anti-aliasing, un conversor A/D, un processador DSP, un conversor D/A, i un filtre analògic per suavitzar la sortida. Tot i això, el processament analògic és incapaç de fer moltes funcions que el digital sí que pot realitzar.

Algunes de les avantatges del processament digital respecte a l'analògic són:

  • L'envelliment dels components i les derives tèrmiques no afecten al resultat del procés.
  • Tots els dispositius fabricats es comporten de forma idèntica, ja que la tolerància dels components no influeix en el processament.
  • Es pot reconfigurar un dispositiu modificant els valors d'alguns coeficients; no és necessari ajustar potenciòmetres, o substituir components.
  • El processament analògic de senyals de molt baixa freqüència es dificulta degut al requeriment de condensadors de gran capacitat i molt baix corrent de fuga. En el cas del processament digital no existeixen limitacions; es poden processar senyals amb períodes d'hores (com les marees) o inclús d'anys (taques solars).
  • El processament digital és capaç de realitzar tasques molt complexes.

Algunes de les desavantatges del processament digital respecte a l'analògic són:

  • Major limitació en freqüències altes, ja que normalment es requereixen conversors A/D amb la capacitat de prendre mostres a una tassa diverses vegades major que la de la freqüència del senyal analògic, i processadors capaços d'efectuar moltes operacions per cada mostra rebuda. Per exemple, un filtre digital FIR amb una resposta impuls de 1000 coeficients, operant a una tassa de 10-106 mostres per segon, necessitaria un processador capaç de fer almenys 10-109 multiplicacions i sumes per segon.
  • El disseny és generalment més complex, ja que inclou aspectes de hardware i de software.
  • El rang dinàmic en l'amplitud (raó entre el senyal més gran i el més petit que poden ser processades) és més limitat, degut a la discretització en l'amplitud. Tot i això, la disponibilitat actual de conversors A/D d'alta resolució de pantalla (18 a 24 bits) i de processadors capaços d'efectuar càlculs en coma flotant amb un gran nombre de decimals, pot eliminar aquesta desavantatge en molts casos.
  • El rang dinàmic en la freqüència també és més limitat.

Programació[modifica | modifica el codi]

Per programar un DSP, s’utilitza un programa que es guarda com un codi màquina en l'interior del DSP. Si un programador escrivís un programa de DSP utilitzant codi màquina li seria molt difícil. Per això, es va desenvolupar un llenguatge assemblador per programar DSPs. Aquest és un C les quals les seves instruccions, mnemòniques són simbòliques i en correspondència una a una amb les instruccions de màquina. S’utilitzen un assemblador, un enllaçador i un compilador que tradueix els codis font. Tot això serveix per traduir el programa escrit en llenguatge assemblador en els codis de màquina del DSP. Són els casos de LabVIEW i Matlab.

Exemple d'un filtre amb script m compatible amb LabVIEW MathScript i amb Matlab.[modifica | modifica el codi]

En el següent exemple es presenta la programació d'un filtre digital en script m. El paràmetre "entrada" és un valor que cal donar-li al programa. Cap destacar que els coeficients del filtre estan en els arrays den i num. Totes les operacions són summes (o restes), multiplicacions i emmagatzematge en memòria (variable w).

w=[0 0 0 0 0];
y=zeros(1,length(entrada));
for i=1:length(entrada)
w(5)=entrada(i)-den(2)*w(4)-den(3)*w(3)-den(4)*w(2)-den(5)*w(1);
y(i)= num(1)*w(5)+num(2)*w(4)+num(3)*w(3)+num(4)*w(2);
w(1)=w(2);
w(2)=w(3);
w(3)=w(4);
w(4)=w(5);
end;

Exemple[modifica | modifica el codi]

Normalment es defineix el senyal d'entrada x com el que es vol processar, el senyal de sortida y com el senyal processat i una regla per obtenir la sortida com a funció de l'entrada.

Si prenem com les mostres d'un senyal digital x={...,1,3,2,6,5,2,1,...} i com a regla de processament la que pren la mitjana del nombre anterior x_{n-1}, el nombre actual x_n i el nombre següent x_{n+1} i el substituïm en la posició actual de sortida y_n, obtindrem per al senyal de l'exemple la sortida del processament següent y={...,1/3,4/3,2,11/3,13/3,13/3,8/3,1,1/3,...}

Vegeu també[modifica | modifica el codi]

Pàgines amb programes d'exemple[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]