Arquitectura DSP
Un DSP está diseñado teniendo en cuenta las tareas más habituales del procesado digital: sumas, multiplicaciones y retrasos (almacenar en memoria).
Los DSP
abandonan la arquitectura clásica de Von Neumann, en la que datos y programas
están en la misma zona de memoria, y apuestan por la denominada Arquitectura
Harvard. En una arquitectura Harvard existen bloques de memoria físicamente
separados para datos y programas. Cada uno de estos bloques de memoria se
direcciona mediante buses separados (tanto de direcciones como de datos), e
incluso es posible que la memoria de datos tenga distinta anchura de palabra
que la memoria de programa (como ocurre en ciertos microcontroladores).
Los
elementos básicos que componen un DSP son:
- Conversores en las entradas
y salidas
- Memoria de datos, memoria de
programa y DMA.
- MACs: multiplicadores y
acumuladores.
- ALU: unidad
aritmético-lógica.
- Registros.
- PLL: bucles enganchados en
fase.
- PWM: módulos de control de
ancho de pulso.
Las
aplicaciones más habituales en las que se emplean DSP son el procesado de audio y vídeo;
y cualquier otra aplicación que requiera el procesado en tiempo real. Con
estas aplicaciones se puede eliminar el eco en las líneas de comunicaciones,
lograr hacer más claras imágenes de órganos internos en los equipos
de diagnóstico médico, cifrar conversaciones en teléfonos celulares para
mantener privacidad, analizar datos sísmicos para encontrar nuevas
reservas de petróleo, hace posible las comunicaciones wireless LAN,
el reconocimiento de voz, los reproductores digitales de audio, los módems
inalámbricos, las cámaras digitales, y una larga lista de elementos que
pueden ser relacionados con el proceso de señales.
Ejemplo
de un filtro con script m compatible con LabVIEW MathScript y
con Matlab
En el
siguiente ejemplo se presenta la programación de un filtro digital en script m.
El parámetro "entrada" es un valor que hay que darle al programa.
Cabe destacar que los coeficientes del filtro están en los arrays den y num.
Nótese que todas las operaciones son sumas (o restas), multiplicaciones y
almacenamiento en memoria (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;
Comentarios
Publicar un comentario