Download DSP Lección 2
Document related concepts
no text concepts found
Transcript
DSP Parte 2 Tratamiento Digital de la Señal ETSI Telecomunicaciones Universidad de Valladolid TMS320C31 Arquitectura en detalle Registros CPU Organización memoria Modos de direccionamiento Grupos de direccionamiento Juego de instrucciones Periféricos E/S Interrupciones Formato de datos Ejemplos ASM 1 Familia Texas Instruments: C3X TMS320VC33 Punto flotante. Arquitectura 32 bits 34 K RAM (16K + 16K +1K +1K) on chip ALU 40 bits, 2 ARAU 24 bits (dir) Multiplicador 32x32 (40) Direccionamiento externo: 16M 2 Puerto serie (10 – 20 Mbps), DMA 150 MFLOPS (13 ns) 2 TMS320C31 Punto flotante. Arquitectura 32 bits 2 Kwords RAM (D+P) on chip doble acceso 0 ws ALU 40 bits, 2 ARAU 24 bits (dir) Multiplicador 32x32 (40) Direccionamiento externo: 16M 2 Puerto serie (10 – 20 Mbps), DMA 60 MFLOPS (60 ns) Diagrama de bloques 3 Buses de interconexión CPU Multiplicador Entero (24) , Flotante(32) Un ciclo de reloj Paralelo con ALU ALU 32/40 Desplazamientos lógicos Conversión entero/flotante 4 buses (producto + suma) ARAU’s Generan dos direcciones Direccionamiento relativo e indexado (IR0, IR1) Direccionamiento bitreversed 4 MEMORIA / Buses internos Registros CPU (I) R0-R7 (40) Registros de precisión extendida Enteros (32), Flotantes (40) AR0-AR7 (32) Registros auxiliares Generación de direcciones (24) Contadores de bucles Direccionamiento indirecto Modificados por las ARAU´s 5 Registros CPU (II) DP (32) Puntero de páginas de datos (“Data-page Pointer”) 8 bits LSB indican el número de página en uso (256 pag) Direccionamiento directo IR0, IR1 (32) Registros índices (“Index register”) Direccionamiento indexado BK (32) Registro bloque (“block size register”) Direccionamiento circular Registros CPU (III) SP (32) Puntero de la pila (“StackPointer”) Dirección alta de la pila Int, sub, pop, push RC (32) Contador (“Repeat counter”) Repetición de bloques de código PC (32) Contador de programa (“program counter”) Otros: ST, IE, IF, IOF ( gestión interrupciones, mascaras, etc.) 6 Organización de la memoria Boot : carga remota vía EPROM externa Modos de direccionamiento (I) REGISTRO Un registro de la CPU contiene el operando ABSF R1 “Valor absoluto en punto flotante” DIRECTO : dirección de memoria Dirección se obtiene mediante concatenación del registro DP y el desplazamiento indicado en la instrucción DP => 256 paginas 8 bit DP Pagina = 64 Kword 16 bit INS src, dst dst = dst + src dirección ADDI @0Fh, R7 >> R7=R7+(DP|0F) DP=80h, R7=05h, (80|000F)=10h ⇒ R7=15h 7 Modos de direccionamiento (II) INDIRECTO: dirección en registros ARn La dirección del dato se almacena en un registro auxiliar ARn + un desplazamiento, que se define en la instrucción ( 0-255) o bien esta en el registro IRn Permite modificar el valor de ARn tras la ejecución LDI ∗AR1, R5 Carga entera >> R5= (AR1) AR1=089C00h, LDI (089C00h)=25h, ⇒ R5=25h ∗+AR1(10), R5 carga con predesplazamiento AR1+10=089C10h, (089C10h)=45h, ⇒ R5=45h Modos de direccionamiento (III) INDIRECTO: ∗ARn ∗++AR1(10), carga con predesplazamiento y modificación AR1=089C00h , AR1+10=089C10h, (089C10h) = 45h, ⇒ R5=45h AR1=AR1+10, AR1=089C10h Si no se indica desplazamiento se asume la unidad LDI LDI ∗++AR1(1), R5 == LDI ∗++AR1, R5 LDI ∗AR1++(10), R5 carga con postesplazamiento y modificación AR1=089C00h, AR1=ARI+10, (089C00h)=25h, ⇒ R5=25h AR1=089C10h 8 Modos de direccionamiento (III bis) Modos de direccionamiento (IV) Elemento N-1 CIRCULAR: % Modo particular del direccionamiento indirecto Registro BK = Tamaño del buffer circular Elemento 1 Elemento 0 LDI ∗AR1++(1)%, R5 BK=04h AR1=089C00h, (089C00h)=30h ⇒ R5=30h AR1=circ(AR1+1), AR1=089C01h …. Cuando AR1=089C03h, AR1=circ(AR1+1), AR1=089C00h 9 Modos de direccionamiento (V) INMEDIATO CORTO INMEDIATO LARGO El dato se incluye en la propia instrucción 16 bits SUBI 4, R0 resta entera Antes: R0=14h, después: R0=10h El dato se incluye en la propia instrucción 24 bits BR 8000h salto incondicional RELATIVO AL PC Desplazamiento sobre la posición del contador de programa BU 05h Grupos de direccionamiento (I) General dst (operación) src-> dst Sintaxis: (operación) src, dst Tipo1 src = (registro, inmediato , directo, indirecto) dst = registro Ejemplos ADDI R3, R7 R7=R7+R3 ADDI 48, R7 ADDI @003F, R7 ADDI *AR1 ,R7 LDF @9800h, R2 R2= (DP| 9800) …. Tipo2 src = registro dst = (directo, indirecto) Ejemplos STF R2, @9800h (DP| 9800) = R2 STF R2, *AR1 (AR1 )= R2 10 Grupos de direccionamiento (II) 3 operandos src1(operación) src2 >> destino Sintaxis: (operación) src1, src2, destino src = registro, indirecto dst = registro, indirecto Ejemplos ADDI3 R4, R5, R7 ADDI3 ∗AR1, ∗AR2, R7 R7 = R4 + R5 R7 = (AR1) +(AR2) Grupos de direccionamiento (III) Paralelo Instruccion1 || instruccion2 Src = registro, indirecto Dst = registro, indirecto Ejemplos ADDF3 ∗+AR3(IR1), R2, R5 || STF R4, ∗AR2 MPYF3 *AR0++,*AR1++%,R0 || ADDF· R0,R2,R2 Nuevas versiones HW del procesador, se han ampliado los buses internos y por tanto permiten mas tipos de destinos 11 Juego de instrucciones (I) 113 instrucciones Carga y almacenamiento Aritmético-lógicas de dos operandos Aritmético-lógicas de tres operandos Control del programa Paralelo Juego de instrucciones (II) Carga y almacenamiento Intercambio entre memoria y registros 12 Juego de instrucciones (III) Aritmético-lógicas de 2 operandos Juego de instrucciones (IV) Aritmético-lógicas de 3 operandos 13 Juego de instrucciones (V) Control Juego de instrucciones (VI) Paralelo 14 Juego de instrucciones (VII) Paralelo Interrupciones hardware Dispositivos internos INT0-INT3 Timer Puerto serie DMA Software TRAP 15 Periféricos E/S (I) Puerto serie hand-shake Conexión A/D: DR0 Conexión D/A: DX0 Timer 1 Timer 2 DMA Periféricos E/S (II) Se controlan a través de registros mapeados en memoria 16 Formato de datos (I) Integer Short (16 bits) Single-precision (32 bits) Unsigned integer Short (16 bits) Single-precision (32 bits) Floating point Short (16 bits) Single-precision (32 bits) Extended precision (40 bits) Formato de datos (II) Short integer format 16 bit, complemento a dos <= valor <= 215-1 Direccionamiento inmediato -215 s 17 Formato de datos (III) Single Precision integer format 32 bit, complemento a dos <= valor <= 231-1 -231 s Short unsigned integer format 16 bit, binario 0 <= valor <= 216 Formato de datos (IV) Single Precision unsigned integer 32 bit, binario 0 <= valor <= 232 Punto flotante Exponente (complemento a dos) signo mantisa (complemento a dos fraccional) Pf = Mantisa*2exponente 18 Formato de datos (V) Short floating point Exponente = 4 Mantisa = 12 Max positivo: x = (2 – 2–11) × 27 = 2.5594 × 102 Min positivo: x = 1 × 2–7 = 7.8125 × 10–3 Single-precisión Floating point Exponente = 8 Mantisa = 24 Max positivo: x = (2 – 2–23) × 2127 = 3.402 × 1038 Min positivo: x = 1 × 2–127 = 5.877 × 10–39 Extended-precisión Floating point Exponente = 8 Mantisa = 32 Max positivo: x = (2 – 2–23) × 2127 = 3.4028234 × 1038 Min positivo: x = 1 × 2–127 = 5.8774717541 × 10–38 Formato de datos (VI) Complemento a dos S=0 positivo, S=1 negativo Ejemplo N=3 ( 4 bits ) Numero negativo = complementa cada bit y se suma 1 S b2 b1 b0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 k = N −1 v = −s ⋅ 2 N + ∑b ⋅ 2k b1 b0 k =0 S bN-1 … … … S b2 b1 b0 0 1 1 1 1 -1 1 1 1 1 1 0 -2 0 2 1 1 0 1 -3 1 1 3 1 1 0 0 -4 0 0 4 1 0 1 1 -5 1 0 1 5 1 0 1 0 -6 0 1 1 0 6 1 0 0 1 -7 0 1 1 1 7 1 0 0 0 -8 k 19 Formato de datos (VII) Complemento a dos fraccional (S).100101 S=0 positivo S=1 negativo Ejemplo N=2 ( 3 bits ) bN-1 bN-2 … b1 b0 0 0 0 0 0 0 1 0 1 S … … v = −S + k = N −1 ∑b k =0 k ⋅ 2( N − k ) b0 b1 S b1 b0 0 1 0 0 -1 1 0.25 1 0 1 -0.75 0 0.50 1 1 0 -0.50 1 0.75 1 1 1 -0.25 Ejemplos Programación ASM I Una tarjeta DSP dispone de dos codecs de 16 bits conectados a dos puertos serie del DSP. Programe en ensamblador una rutina que multiplique los dos canales de entrada y envíe el resultado por uno de los canales de salida utilizando exclusivamente: a) Modo de direccionamiento directo y registro b) Modo de direccionamiento indirecto Previo al inicio de la rutina, puede especificar los valores que tendrían los registros involucrados. 808040 Puerto serie 0 TX 808041 Puerto serie 0 RX 808050 Puerto serie 1 TX 808051 Puerto serie 1 RX 20 Ejemplos Programación ASM II Programe en ensamblador una rutina que rellene las posiciones de memoria 089C10h y 089C11h con los datos 01h y 02h respectivamente utilizando exclusivamente: a) Modo de direccionamiento inmediato y directo b) Modo de direccionamiento indirecto Previo al inicio de la rutina, puede especificar los valores que tendrían los registros involucrados y las posiciones de memoria que determine. 21