# Processador de senyals digitals

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 quals treballarà i el programa que executa.
El seu principal avantatge és la potència 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 quantitat més gran 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 al processament 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 processament 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 els analògics.

## Història

El 1978, Intel va llançar el 2920 com un processador de senyals analògics. 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, Bell Labs va introduir el primer xip DSP, el ''Mac 4 Microprocessor'', capaç de processar senyals un cop digitalitzades. Aquelll mateix any, AMI havia llançat el S2811, però dissenyat com un microprocessador perifèric, igual que el 2920 no va tenir gran èxit en el mercat.
El 1980 van ser presentats en el ISSCC80 els primers DSP complets: el PD7710 de NEC Corporation 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 potència d'execució.
El 1983 es va presentar el primer DSP produït per Texas Instruments, el TMS32010, va ser un dels que va tenir un major èxit. Actualment Texas Instrument, és un dels fabricants de PDSs més importants. 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 van 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.

## ASP (Processador analògic del senyal) vs. DSP (Processador digital del senyal)

El processament analògic de senyals (ASP) és generalment més simple que el processament digital, el qual requereix típicament un filtre analògic anti-aliasing, un conversor A/D, un processador de senyals digitals, 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 acomplir.
Alguns dels avantatges del processament digital respecte a l'analògic són:
* L'envelliment dels components i les derives tèrmiques no afecten el 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 a causa del 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 fins i tot d'anys (taques solars).
* El processament digital és capaç de dur a terme tasques molt complexes.
Alguns dels desavantatges del processament digital respecte a l'analògic són:
* Major limitació en freqüències altes, ja que normalment calen 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 aquest desavantatge en molts casos.
* El rang dinàmic en la freqüència també és més limitat.

## Arquitectura

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 fins i tot, é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 al 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

* 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 d'obtenir 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 d'un bus.
* Pipeline: Execució en cadena.
* Coma fixa/Coma flotant:

## Aplicacions DSP

Les aplicacions més habituals en què s'utilitzen els DSP són el processament d'àudio i vídeo, i qualsevol altra aplicació que requereix el processat en temps real. Amb aquestes aplicacions es pot eliminar l'eco en les línies de comunicacions, aconseguir fer más clares les imatges d'òrgans interns en els equips de diagnòstic mèdic, xifrar conversacions en telèfons cel·lulars per mantenir privacitat, analitzar dades sísmiques per trobar noves reserves de petroli, fer possible les comunicacions wireless LAN, el reconeixement de veu, els reproductors digitals d'àudio, els modems sense fils, les càmares digitals, i una llarga llista d'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 segons el soroll produït per ells.
* Medicina: reducció de soroll i diagnòstic automàtic d'electrocardiogrames i electroencefalogrames; formació d'imatges en tomografia axial assistida per ordinador (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 sismes submarins 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, sobre la base del moviment oscil·latori que indueixen en les estrelles al voltant de les quals orbiten.
* Radioastronomia: cerca de patrons en els senyals rebuts pels radiotelescopis, per detectar intel·ligència extraterrestre (SETI).
* Imatges: millora de la llum, contrast, color i nitidesa, restauració d'imatges borroses a causa del 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. 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 passa-baixos, passa-alts, 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 compressor d'imatges JPEG.

## Programació

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 d'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

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. Cal 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).

## Exemple

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é

* Senyal analògic
* Processament analògic del senyal (ASP)
* Processament digital de la llum (DLP)

### Pàgines amb programes d'exemple

* Analog Devices

## Enllaços externs

* The Scientist and Engineer's Guide to Digital Signal Processing" de Steven W. Smith