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