ARQUITECTURA DE DECODIFICACIÓN DE MPEG-4 PARA SISTEMAS PORTÁTILES INALÁMBRICOS Edison Manuel Hernández Ricardo Andrés Velásquez
ARQUITECTURA DE DECODIFICACIÓN DE MPEG-4 PARA SISTEMAS PORTÁTILES INALÁMBRICOS
Edison Manuel HernándezRicardo Andrés Velásquez
OBJETIVOS• Estudiar el estándar de codificación de video MPEG-4
especialmente las partes 2 y 10 que tratan los temas de video natural, identificando los puntos clave de su implementación en hardware.
• Seleccionar el perfil y nivel de MPEG-4 más adecuado para ser implementado en el ambiente de una red inalámbrica.
• Diseñar una arquitectura de hardware para la parte visual de un decodificador MPEG-4.
• Hacer la implementación de un decodificador MPEG-4 (Parte visual) en una FPGA.
• Modelamiento a alto nivel del decodificador de video MPEG-4 en SystemC.
• Completar los requisitos para obtener el titulo de Ingeniero Electrónico.
ANTECEDENTES
• Auge de las Aplicaciones de streaming de video en todo tipo de redes, entre ellas las redes inalámbricas.
• Proyecto de Acompañantes Móviles Digitales que actualmente desarrolla el Grupo Electrónica y control.
• No existía una experiencia previa del grupo en el área de compresión de video.
• Deseo de apropiar la tecnología de compresión de video y de asumir los desafíos que las redes inalámbricas imponen a la transmisión de video.
Características de las comunicaciones inalámbricas
Las conexiones inalámbricas tienen una calidadmenor a las conexiones alambradas: menorancho de banda, menor estabilidad en laconexión, tasas de error más altas, etc.
Existen tres problemas claves en la transmisiónmultimedia inalámbrica:
• La necesidad de mantener la calidad de servicio.• Operar con recursos limitados de energía.• Operar en ambientes heterogéneos.
Características Deseables para la Transmisión de Video en Redes
InalámbricasResiliencia al error
Debido a la pérdida de bits por desvanecimiento se afecta el bitstream.
Escalabilidad
Variar la potencia de procesamiento (enviando a cada usuario sólo lo necesario).
Baja Complejidad
Un CODEC de menor complejidad, implica menores recursos de software y hardware, y por lo tanto menor consumo de potencia.
• La tasa de bits más baja es de 5 kbps.
• Las técnicas de codificación de video escalable,
• Herramientas para la resiliencia de error.
• Codificación basada en objetos.
• Animación Facial para reducir el consumo de ancho de banda.
¿Por qué Utilizar MPEG-4?
¿Por Qué Comprimir Video?Dejemos que el siguiente ejemplo responda la pregunta …Se tiene una secuencia de video con las siguientes características: resolución QCIF, formato de color YCbCr, formato de muestreo 4:2:0, 8 bit por cada componente de color y 15 fps.
N. Píxeles por frame = 176 x 144(Y) + 88 x 72(Cb) + 88 x 72(Cr)= 38016
N. Bits por frame = 38.016 x 8bits= 304.128
N. Bits por segundo = 304.128 x 15= 4’561.920 bps
CODECLa compresión involucra dos sistemas complementarios:
• Por un lado esta el compresor o codificador (encoder), el cual convierte los datos originales a una forma comprimida que puede almacenarse o transmitirse.
• Del otro lado esta el decodificador (decoder) que se encarga de convertir la forma comprimida de los datos a su representación original.
Este par de sistemas se conocen normalmente como CODEC.
Tipos de CompresiónSin perdidas:• Los datos de salida del decodificador son una copia perfecta
de los originales.• Se utiliza sobre datos que contienen redundancia estadística• La compresión sin perdidas de un video o imagen solo
alcanza niveles de compresión moderados (reduce de 3 a 4 veces el tamaño original).
Con perdidas:• Los datos que salen del decodificador NO son iguales a los
datos originales.• Porcentaje de compresión superior a expensas de perdida en
la calidad de la imagen (puede reducir hasta más de 70 veces el tamaño original).
Modelo Temporal• El objetivo del modelo temporal es reducir la
redundancia entre frames.
• Esto se consigue formando una predicción del frame actual a partir de uno o mas frames anteriores o futuros.
• El método más sencillo de predicción temporal es usar el frame anterior como predicción del actual.
• La exactitud de la predicción puede mejorarse cuando se utilizan técnicas de estimación y compensación de movimiento entre el frame referencia y el frame actual.
Modelo Espacial• La objetivo del modelo espacial es decorrelacionar los
datos ya sea de la imagen original o de la imagen residual y convertirlos a una forma tal que puedan ser comprimidos eficientemente usando un decodificador de entropía.
• Los modelos espaciales tienen tres componentes principales: transformación, cuantización y reordenación.
• La transformada es el corazón de la mayoría de los estándares y sistemas de codificación de video.
• La etapa de cuantización introduce las perdidas en la compresión de video.
Estándares de Codificación de Video
Evolución histórica estándares de codificación de video
Estándares de Codificación de VideoEstándares de la ITU
• H.261 Primer estándar de compresión y decompresión de video para videoconferencia. Ratas de bits de 64kbps a 2Mbps
• H.263 Mejora la rata de compresión y la calidad de imagen comparado con H.261
• H.264 También conocido como MPEG-4 part 10 ó AVC. Mas que un importante avance H.264 incluye una gran variedad de herramientas para mejorar el desempeño
Estándares de la ISO/IEC
MPEG1 Desarrollado para el almacenamiento y distribución de audio y video. Utilizado en los primeros Video CDs VCD.
MPEG2 Extiende las aplicaciones de MPEG-1 principalmente en lo que se refiere a disusión de TV, TV digital y HDTV. Ratas de bits 1.5Mbps a 60 Mbps
MPEG4 MPEG-4 busca mayor flexibilidad, interactividad, soporte sobre nuevas redes, etc. Actualmente consiste de 19 partes.
Otros
VC1 Basado en el Microsoft Windows Media Video 9. Representa un competidor importante para H.264. Esta siendo desarrollado por SMPTE.
Eficiencia: Calidad vs. Tasa de Bits
Eficiencia: Calidad vs. Tasa de Bits
Eficiencia: Calidad vs. Tasa de Bits
Complejidad Computacional
• Hay algo claro, herramientas más sofisticadas de compresión, traen consigo un incremento en la complejidad computacional de codificadores y decodificadores.
• Algunos estudios muestran que H.264 tiene una complejidad de 2 a 3 veces superior que MPEG-4 Visual perfil simple.
• De otro lado se estima que VC-1 tiene una complejidad de 1.5 veces la de MPEG-4 perfil simple.
MPEG-4• MPEG 4 actualmente esta dividido en 18
partes:
Systems – ISO/IEC 14496-1 Visual – ISO/IEC 14496-2 Audio – ISO/IEC 14496-3 Conformance Testing – ISO/IEC 14496-4 Reference Software – ISO/IEC 14496-5 DMFI – ISO/IEC 14496-6 Reference Software – ISO/IEC 14496-7 Carriage over IP networks – ISO/IEC 14496-8 Reference hardware – ISO/IEC 14496-9
Scene description – ISO/IEC 14496-10 ISO file format – ISO/IEC 14496-11 IPMP extensions – ISO/IEC 14496-12 MP4 file format – ISO/IEC 14496-13 H.264 file format – ISO/IEC 14496-14 Animation extensión – ISO/IEC 14496-15 Streaming text format – ISO/IEC 14496-16 Font compression – ISO/IEC 14496-17 Synthesize texture stream – ISO/IEC 14496-18
MPEG-4 Visual
¿Por qué MPEG-4 Visual?• Es un estándar más maduro, bien documentado y
ampliamente utilizado en la actualidad.• Cuenta con una amplia variedad de perfiles,
muchos de los cuales son aptos para redes inalámbricas y dispositivos portátiles.
• Herramientas de codificación más simples, y por lo tanto CODECs de menor complejidad.
• Eficiencia de codificación intermedia, soporte para tasas de bits iguales o inferiores a los 64kbps.
Características de MPEG-4 Visual
• Codificación basada en objetos en lugar de frames.• Uso de objetos Naturales o sintéticos a partir de los
cuales se puede realizar la composición de una escena.
• Soporte para interactividad.• MPEG-4 es mas rehusable y flexible, con mayores
capacidades de protección de contenido.• Las bajas ratas de bits soportadas dan la
capacidad de disfrutar el contenido interactivo sobre redes DSL, inalámbricas y móviles.
Codificación Basada en Objetos
Escena MPEG-4 Visual
Objetos, Perfiles y Niveles• Los objetos visuales (CODECS de video) usan
combinaciones específicas de herramientas para representar eficientemente diferentes tipos de objetos visuales.
• Los perfiles usan combinaciones específicas de tipos de objetos visuales para servir eficientemente a un segmento específico del mercado.
• Los niveles especifican la cantidad de memoria, la tasa de bits y las limitaciones de complejidad dentro de un perfil para asegurar interoperabilidad.
Objetos, Perfiles y Niveles
MPEG-4 Visual proporciona soporte a las diversas aplicaciones a través de una estructura jerárquica conformada por Perfiles, Objetos, niveles, y las herramientas de codificación asociados a estos.
PERFIL
Objetotipo_1
Objetotipo_2
Objetotipo_n
…
Niveles
Herram
ienta 1
Herram
ienta 2
Herram
ienta 3
Herram
ienta 4 …
Herram
ienta n
Objetos Visuales de Interés• Simple
Es un objeto natural, de video rectangular de relación
arbitraria alto/ancho, desarrollado para baja rata de bits,
soporta las herramientas de resiliencia al error.
• Simple Escalable
Es una extensión escalable del tipo anterior, el cual da una
escalabilidad temporal y espacial, usando el tipo Simple como
capa base.
• Simple Avanzado de Tiempo RealEs un objeto de tipo simple al que se le han agregado dosherramientas para mejorar la resiliencia al error y flexibilidadde codificación: NEWPRED y Conversión dinámica de resolución
• Objeto Simple AvanzadoEs un objetos simple que solo soportan objetos rectangulares, al que se le ha agregado algunas herramientas para hacer la codificación mas eficiente. Entreestas herramientas tenemos: B-VOP, compensación demovimiento QPEL y compensación de movimiento global(GMC).
Objetos Visuales de Interés
• Objetos Escalables de Granularidad Fina Puede usar por encima de 8 capas de Escalabilidad paraque así la calidad de la imagen sea fácilmente adaptable aLas circunstancias de transmisión y decodificación.
Objetos Visuales de Interés
Visual Tools
Visual Object Types
SimpleSimple
ScalableAdvanced Real
Time SimpleAdvanced
SimpleFine Granularity
Scalable
Basic : I-VOP, P-VOP, Predicción AC/DC, 4-MV, Unresticted MV
X X X X X
Resiliencia al error: puntos de resincronización, particionamiento de datos, VLCs Reversibles
X X X X X
Short Header X X X X
B-VOP X X X
Cuantización métodos 1 y 2 X X
Entrelazado X X
Escalabilidad Temporal (Rectangular) X
Escalabilidad Espacial (Rectangular) X
Conversión dinámica de resolución X
NEWPRED X
Compensación de movimiento global X
Compensación de movimiento QPEL X
Escalabilidad de Granularidad Fina (FGS) X
Escalabilidad Temporal FGS X
• SimpleSolo acepta objetos de tipo simple y fue creado para aplicaciones de baja complejidad. Existen 4 niveles para elperfil simple con tasas de bits que van desde 64 hasta 384kbits/seg.
• Simple EscalablePuede proveer las herramientas de escalabilidad temporal y espacial en el mismo ambiente operacional previsto para el Perfil Simple.
Perfiles
• Simple Avanzado de Tiempo Real
Pensado para aplicaciones de Video Streaming para redes
como Internet, proporciona codificación robusta al error y
adaptable a las condiciones cambiantes de la red.
• Simple Avanzado
Es una versión mejorada del perfil simple, pensada para el
mismo rango de aplicaciones.
Perfiles
• Escalable de Granularidad Fina
Fue creado pensando en aplicaciones de video para correr
sobre Internet y multimedia inalámbrica. Posee objetos de
tipo simple, avanzado simple y FGS.
Perfiles
Bitstream
Marca de sincronismo
Numero de Macrobloque
Quant_scale HEC Información DC y de cabecera
Marca DC Información de Textura
Marca de sincronismo
CabeceraSecuencia Visual
de Objeto
CabeceraObjeto Visual
CabeceraCapa de Objeto
de VideoStream Elemental
Marca de sincronismo
Numero de Macrobloque
Quant_scale HEC Información de movimiento y
cabeceras
Marca de Movimiento
Información de Testuras
Marca de sincronismo
¿Por qué utilizar MPEG-4 Visual Perfil Simple?
• El perfil simple, a pesar de ser el perfil más básico, cuenta con las características necesarias para ser utilizado en aplicaciones inalámbricas y dispositivos móviles.
• Su baja complejidad respecto a los otros perfiles lo convierte en la elección predilecta de la industria.
• Proporciona una plataforma de partida para implementar perfiles más avanzados, como el avanzado simples, simple de tiempo real, etc.
• Muchos de los procesadores modernos de orientación a ambientes inalámbricos cuentan codificadores de perfil simple.
Arquitectura Decodificador
Compensación de Movimiento
VOPs PreviosDecodificación
Texturas
Decodificador Vectores
de Movimiento
PROCESAMIENTO BITSTREAM
Inform
ación
Te
xtura
Información
Movimiento
Reconstrucción de Movimiento
Post procesamiento
LCD
Unidad de contro
l
Compensación de Movimiento
Compensación de Movimiento
VOPs PreviosVOPs PreviosDecodificación
Texturas
Decodificador Vectores
de Movimiento
PROCESAMIENTO BITSTREAMPROCESAMIENTO BITSTREAM
Inform
ación
Te
xtura
Información
Movimiento
Reconstrucción de Movimiento
Reconstrucción de Movimiento
Post procesamientoPost procesamiento
LCDLCD
Unidad de contro
l
Procesamiento de Bitstream
Info
rmac
ión
Mov
imie
nto
Otros
VLCs
VLC
Decodificador
Movimiento
VLC
Decodificador
textura
Registros
Configuración
y Banderas
INTERPRETE BITSTREAM
Info
rmac
ión
Tex
tura
RVLC
Decodificador
Textura
Buffer
Bitstream
DEMUX
Info
rmac
ión
Mov
imie
nto
Otros
VLCs
VLC
Decodificador
Movimiento
VLC
Decodificador
textura
Registros
Configuración
y Banderas
Registros
Configuración
y Banderas
INTERPRETE BITSTREAM
Info
rmac
ión
Tex
tura
RVLC
Decodificador
Textura
RVLC
Decodificador
Textura
Buffer
Bitstream
DEMUX
Decodificador de Entropía
Shift
Register
Unidad
de búsqueda
VLCs
uno o
más bits
datos
errorbitstream
Decodificación Texturas
o
Decodificador
Last-Run-Level
Escaneo
Inverso
Predicción
DC y AC
Inversa Cuantización
Inversa
Cuantización
Inversa IDCT
PQF[v][u]QFS[n] QF[v][u] F[v][u]
Intra MBs
o
o
o
f[i][j]
o
Decodificador
Last-Run-Level
Escaneo
Inverso
Escaneo
Inverso
Predicción
DC y AC
Inversa Cuantización
Inversa
Cuantización
Inversa
Cuantización
Inversa IDCT
PQF[v][u]QFS[n] QF[v][u] F[v][u]
Intra MBs
o
o
o
f[i][j]
Decodificación Run-Level
M
U
X
UNIDAD DE
CONTROLContador Módulo 64
Datos
QFS[n]
Last
Run
Level
0
M
U
X
UNIDAD DE
CONTROLContador Módulo 64Contador Módulo 64
Datos
QFS[n]
Last
Run
Level
0
Escaneo Inverso
vop_type
Dirección arreglo
bidimensional
Entada arreglo
unidimensional
Dirección datos
salida
SCAN
ROM
Unidad de
ControlRAM
8x8
Buffer
Doble
ac_pred_flag
Dirección
arreglo
unidimensional
salida datos
en filas
vop_type
Dirección arreglo
bidimensional
Entada arreglo
unidimensional
Dirección datos
salida
SCAN
ROM
Unidad de
ControlRAM
8x8
Buffer
Doble
ac_pred_flag
Dirección
arreglo
unidimensional
salida datos
en filas
Cuantización Tipo 1
quant_type
+
x xROM
Cuantizador
Unidad de
Control
Saturación
>> 4
<< 1
QF[v][u]
K
quantize_scaler
Dire
cció
n
dc_scaler
M
U
X
M
U
X
M
U
X
short_video
quantizer_scaler
vop_type
quant_type
++
xx xxROM
Cuantizador
ROM
Cuantizador
Unidad de
Control
SaturaciónSaturación
>> 4
<< 1
QF[v][u]
K
quantize_scaler
Dire
cció
n
dc_scaler
M
U
X
M
U
X
M
U
X
short_video
quantizer_scaler
vop_type
Cuantización Tipo 2
quantizer_scaler
M
U
X
+
x
dc_scaler
Unidad de
Control
Saturación -1
<< 1
QF[v][u]
K
M
U
XM
U
X
quantizer_scaler
Quant_type
Intra_coded
short_video
DCT_2D
C0 C0 C0 C0 C0 C0 C0 C0
C1 C3 C4 C6 -C6 -C4 -C3 -C1
C2 C5 -C5 -C2 -C2 -C5 C5 C2
C3 -C6 -C1 -C4 C4 C1 C6 -C3
C0 -C0 -C0 C0 C0 -C0 -C0 C0
C4 -C1 C6 C3 C3 -C6 C1 -C4
C5 -C2 C2 C5 C5 C2 -C2 C5
C6 -C4 C3 -C1 C1 -C3 C4 -C6
C0
C0
C0
C0
C0
C0
C0
C0
C1
C3
C4
C6
-C6
-C4
-C3
-C1
C2
C5
-C5
-C2
-C2
-C5
C5
C2
C3
-C6
-C1
-C4
C4
C1
C6
-C3
C0
-C0
-C0
C0
C0
-C0
-C0
C0
C4
-C1
C6
C3
C3
-C6
C1
-C4
C5
-C2
C2
C5
C5
C2
-C2
C5
C6
-C4
C3
-C1
C1
-C3
C4
-C6
Z00 Z01 Z02 Z03 Z04 Z05 Z06 Z07
Z10 Z11 Z12 Z13 Z14 Z15 Z16 Z17
Z20 Z21 Z22 Z23 Z24 Z25 Z26 Z27
Z30 Z31 Z32 Z33 Z34 Z35 Z36 Z37
Z40 Z41 Z42 Z43 Z44 Z45 Z46 Z47
Z50 Z51 Z52 Z53 Z54 Z55 Z56 Z57
Z60 Z61 Z62 Z63 Z64 Z65 Z66 Z67
Z70 Z71 Z72 Z73 Z74 Z75 Z76 Z77
Y00 Y01 Y02 Y03 Y04 Y05 Y06 Y07
Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y17
Y20 Y21 Y22 Y23 Y24 Y25 Y26 Y27
Y30 Y31 Y32 Y33 Y34 Y35 Y36 Y37
Y40 Y41 Y42 Y43 Y44 Y45 Y46 Y47
Y50 Y51 Y52 Y53 Y54 Y55 Y56 Y57
Y60 Y61 Y62 Y63 Y64 Y65 Y66 Y67
Y70 Y71 Y72 Y73 Y74 Y75 Y76 Y77
Y A Z
Z00 Z01 Z02 Z03 Z04 Z05 Z06 Z07
Z10 Z11 Z12 Z13 Z14 Z15 Z16 Z17
Z20 Z21 Z22 Z23 Z24 Z25 Z26 Z27
Z30 Z31 Z32 Z33 Z34 Z35 Z36 Z37
Z40 Z41 Z42 Z43 Z44 Z45 Z46 Z47
Z50 Z51 Z52 Z53 Z54 Z55 Z56 Z57
Z60 Z61 Z62 Z63 Z64 Z65 Z66 Z67
Z70 Z71 Z72 Z73 Z74 Z75 Z76 Z77
ZA
X00 X01 X02 X03 X04 X05 X06 X07
X10 X11 X12 X13 X14 X15 X16 X17
X20 X21 X22 X23 X24 X25 X26 X27
X30 X31 X32 X33 X34 X35 X36 X37
X40 X41 X42 X43 X44 X45 X46 X47
X50 X51 X52 X53 X54 X55 X56 X57
X60 X61 X62 X63 X64 X65 X66 X67
X70 X71 X72 X73 X74 X75 X76 X77
T
X
C0 C0 C0 C0 C0 C0 C0 C0
C1 C3 C4 C6 -C6 -C4 -C3 -C1
C2 C5 -C5 -C2 -C2 -C5 C5 C2
C3 -C6 -C1 -C4 C4 C1 C6 -C3
C0 -C0 -C0 C0 C0 -C0 -C0 C0
C4 -C1 C6 C3 C3 -C6 C1 -C4
C5 -C2 C2 C5 C5 C2 -C2 C5
C6 -C4 C3 -C1 C1 -C3 C4 -C6
C0 C0 C0 C0 C0 C0 C0 C0
C1 C3 C4 C6 -C6 -C4 -C3 -C1
C2 C5 -C5 -C2 -C2 -C5 C5 C2
C3 -C6 -C1 -C4 C4 C1 C6 -C3
C0 -C0 -C0 C0 C0 -C0 -C0 C0
C4 -C1 C6 C3 C3 -C6 C1 -C4
C5 -C2 C2 C5 C5 C2 -C2 C5
C6 -C4 C3 -C1 C1 -C3 C4 -C6
C0
C0
C0
C0
C0
C0
C0
C0
C1
C3
C4
C6
-C6
-C4
-C3
-C1
C2
C5
-C5
-C2
-C2
-C5
C5
C2
C3
-C6
-C1
-C4
C4
C1
C6
-C3
C0
-C0
-C0
C0
C0
-C0
-C0
C0
C4
-C1
C6
C3
C3
-C6
C1
-C4
C5
-C2
C2
C5
C5
C2
-C2
C5
C6
-C4
C3
-C1
C1
-C3
C4
-C6
C0
C0
C0
C0
C0
C0
C0
C0
C1
C3
C4
C6
-C6
-C4
-C3
-C1
C2
C5
-C5
-C2
-C2
-C5
C5
C2
C3
-C6
-C1
-C4
C4
C1
C6
-C3
C0
-C0
-C0
C0
C0
-C0
-C0
C0
C4
-C1
C6
C3
C3
-C6
C1
-C4
C5
-C2
C2
C5
C5
C2
-C2
C5
C6
-C4
C3
-C1
C1
-C3
C4
-C6
Z00 Z01 Z02 Z03 Z04 Z05 Z06 Z07
Z10 Z11 Z12 Z13 Z14 Z15 Z16 Z17
Z20 Z21 Z22 Z23 Z24 Z25 Z26 Z27
Z30 Z31 Z32 Z33 Z34 Z35 Z36 Z37
Z40 Z41 Z42 Z43 Z44 Z45 Z46 Z47
Z50 Z51 Z52 Z53 Z54 Z55 Z56 Z57
Z60 Z61 Z62 Z63 Z64 Z65 Z66 Z67
Z70 Z71 Z72 Z73 Z74 Z75 Z76 Z77
Z00 Z01 Z02 Z03 Z04 Z05 Z06 Z07
Z10 Z11 Z12 Z13 Z14 Z15 Z16 Z17
Z20 Z21 Z22 Z23 Z24 Z25 Z26 Z27
Z30 Z31 Z32 Z33 Z34 Z35 Z36 Z37
Z40 Z41 Z42 Z43 Z44 Z45 Z46 Z47
Z50 Z51 Z52 Z53 Z54 Z55 Z56 Z57
Z60 Z61 Z62 Z63 Z64 Z65 Z66 Z67
Z70 Z71 Z72 Z73 Z74 Z75 Z76 Z77
Y00 Y01 Y02 Y03 Y04 Y05 Y06 Y07
Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y17
Y20 Y21 Y22 Y23 Y24 Y25 Y26 Y27
Y30 Y31 Y32 Y33 Y34 Y35 Y36 Y37
Y40 Y41 Y42 Y43 Y44 Y45 Y46 Y47
Y50 Y51 Y52 Y53 Y54 Y55 Y56 Y57
Y60 Y61 Y62 Y63 Y64 Y65 Y66 Y67
Y70 Y71 Y72 Y73 Y74 Y75 Y76 Y77
Y00 Y01 Y02 Y03 Y04 Y05 Y06 Y07
Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y17
Y20 Y21 Y22 Y23 Y24 Y25 Y26 Y27
Y30 Y31 Y32 Y33 Y34 Y35 Y36 Y37
Y40 Y41 Y42 Y43 Y44 Y45 Y46 Y47
Y50 Y51 Y52 Y53 Y54 Y55 Y56 Y57
Y60 Y61 Y62 Y63 Y64 Y65 Y66 Y67
Y70 Y71 Y72 Y73 Y74 Y75 Y76 Y77
Y A Z
Z00 Z01 Z02 Z03 Z04 Z05 Z06 Z07
Z10 Z11 Z12 Z13 Z14 Z15 Z16 Z17
Z20 Z21 Z22 Z23 Z24 Z25 Z26 Z27
Z30 Z31 Z32 Z33 Z34 Z35 Z36 Z37
Z40 Z41 Z42 Z43 Z44 Z45 Z46 Z47
Z50 Z51 Z52 Z53 Z54 Z55 Z56 Z57
Z60 Z61 Z62 Z63 Z64 Z65 Z66 Z67
Z70 Z71 Z72 Z73 Z74 Z75 Z76 Z77
Z00 Z01 Z02 Z03 Z04 Z05 Z06 Z07
Z10 Z11 Z12 Z13 Z14 Z15 Z16 Z17
Z20 Z21 Z22 Z23 Z24 Z25 Z26 Z27
Z30 Z31 Z32 Z33 Z34 Z35 Z36 Z37
Z40 Z41 Z42 Z43 Z44 Z45 Z46 Z47
Z50 Z51 Z52 Z53 Z54 Z55 Z56 Z57
Z60 Z61 Z62 Z63 Z64 Z65 Z66 Z67
Z70 Z71 Z72 Z73 Z74 Z75 Z76 Z77
ZA
X00 X01 X02 X03 X04 X05 X06 X07
X10 X11 X12 X13 X14 X15 X16 X17
X20 X21 X22 X23 X24 X25 X26 X27
X30 X31 X32 X33 X34 X35 X36 X37
X40 X41 X42 X43 X44 X45 X46 X47
X50 X51 X52 X53 X54 X55 X56 X57
X60 X61 X62 X63 X64 X65 X66 X67
X70 X71 X72 X73 X74 X75 X76 X77
X00 X01 X02 X03 X04 X05 X06 X07
X10 X11 X12 X13 X14 X15 X16 X17
X20 X21 X22 X23 X24 X25 X26 X27
X30 X31 X32 X33 X34 X35 X36 X37
X40 X41 X42 X43 X44 X45 X46 X47
X50 X51 X52 X53 X54 X55 X56 X57
X60 X61 X62 X63 X64 X65 X66 X67
X70 X71 X72 X73 X74 X75 X76 X77
T
X
DCT_2DBuffer
entrada
ROM
8x8
Constantes
AT
Unidad de Control
ROM
8x8
Constantes
A
Buffer
Doble IDCT_1D
IDCT_1DBuffer
Doble
IDCT_1D
C0 C0 C0 C0 C0 C0 C0 C0
C1 C3 C4 C6 –C6 –C4 –C3 –C1
C2 C5 –C5 –C2 –C2 –C5 C5 C2
C3 –C6 –C1 –C4 C4 C1 C6 –C3
C0 –C0 –C0 C0 C0 –C0 –C0 C0
C4 –C1 C6 C3 C3 –C6 C1 –C4
C5 –C2 C2 C5 C5 C2 –C2 C5
C6 –C4 C3 –C1 –C1 –C3 C4 –C6
ADDER
YK0
YK1
YK2
YK3
YK4
YK5
YK6
YK7
ZK (0 a 7)
C0 C0 C0 C0 C0 C0 C0 C0
C1 C3 C4 C6 –C6 –C4 –C3 –C1
C2 C5 –C5 –C2 –C2 –C5 C5 C2
C3 –C6 –C1 –C4 C4 C1 C6 –C3
C0 –C0 –C0 C0 C0 –C0 –C0 C0
C4 –C1 C6 C3 C3 –C6 C1 –C4
C5 –C2 C2 C5 C5 C2 –C2 C5
C6 –C4 C3 –C1 –C1 –C3 C4 –C6
ADDER
YK0
YK1
YK2
YK3
YK4
YK5
YK6
YK7
ZK (0 a 7)ROM
12
Acumulador
Sumador o restador
Muestras fx
8 bits desde las entradas F
ROM
12
Acumulador
Sumador o restador
Muestras fx
8 bits desde las entradas F
Multiplicador ParaleloAritmética Distribuido
Decodificación de MV
RAM (MV)
N vectores
Mediana
(MV1,MV2,MV3)
escalador
escaladorhorizontal_mv_data
vertical_mv_data
horizontal_mv_residual
vertical_mv_residual+
+
vop_fcode
vop_fcode
Unidad
de Control M
U
X
MVy
MVx
RAM (MV)
N vectores
Mediana
(MV1,MV2,MV3)
escalador
escaladorhorizontal_mv_data
vertical_mv_data
horizontal_mv_residual
vertical_mv_residual+
+
vop_fcode
vop_fcode
Unidad
de Control M
U
X
MVy
MVx
Compensación de Movimiento
Unidad de
Generación
de Direcciones
block_num
macroblock_num
MVx
MVy
Memoria
VOPs
Reconst.
Nuevo VOP
Reconstruido
RAM
Buffer Doble
Filtrado
Bilineal
RAM
Buffer Doble
Unidad
de
control
Predicción
Unidad de
Generación
de Direcciones
block_num
macroblock_num
MVx
MVy
Memoria
VOPs
Reconst.
Nuevo VOP
Reconstruido
RAM
Buffer Doble
Filtrado
Bilineal
RAM
Buffer Doble
Unidad
de
control
Predicción
Resultados Preliminares
Frecuencia CLK (MHz) Potencia Estática (mW) Potencia Dinámica (mW) Total Potencia (mW)
12,5 92 18,7 110,7
25 92 32,47 124,47
50 92 74,84 166,84
IDCT_2D
Potencia consumida por el módulo IDCT_2D
,,,,,,,,,,,,13020850
,,,,,,,,,,,,6510425
118805940148514853255212,5
L3 (MB/s)L2 (MB/s)L1 (MB/s)L0 (MB/s)MB/sFrecuencia clk (MHz)
,,,,,,,,,,,,13020850
,,,,,,,,,,,,6510425
118805940148514853255212,5
L3 (MB/s)L2 (MB/s)L1 (MB/s)L0 (MB/s)MB/sFrecuencia clk (MHz)
Desempeño Módulo IDCT_2D vs. Desempeño Requerido por Perfil
Resultados Preliminares
Frecuencia CLK (MHz) Potencia Estática (mW) Potencia Dinámica (mW) Total Potencia (mW)
12,5 92 0,56 92,56
25 92 1,38 93,38
50 92 2,85 94,85
VLC decoder
125,8933,899250
108,6716,679225
100,018,019212,5
Total Potencia (mW)Potencia Dinámica (mW)Potencia Estática (mW)Frecuencia clk (MHz)
125,8933,899250
108,6716,679225
100,018,019212,5
Total Potencia (mW)Potencia Dinámica (mW)Potencia Estática (mW)Frecuencia clk (MHz)
Conversor RGB2YCbCr
SystemC
Qué es SystemC ? SystemC es una librería de clases de C++, que
incluye cualquier librería, programa y encapsulación de C++
Es un lenguaje de diseño de sistemas que ha evolucionado, en respuesta a una necesidad general por un lenguaje que mejora la productividad para diseñadores de sistemas electrónicos.
Lenguajes como C/C++ y Java no fueron creados para كmodelar Hardware. Carencia de estos lenguajes en manejar un estilo de كmodelamiento uniforme.No existen herramientas de traducción (C/C++ a HDL) ك:Además C++ no soporta ك * Comunicación estilo Hardware (Señales, protocolos, etc.) * Noción del tiempo * Concurrencia (El hardware y los sistemas trabajan en paralelo)
¿ Por qué SystemC ?
Una de las ideas principales de SystemC es permitirle al programador de C/C++, realizar aquellos diseños que no son posibles con estos últimos.
SystemC también permite modelamiento a un alto nivel de abstracción ej: protocolos de comunicación representados en interfaces y canales.
SystemC no es otro dialecto de C++, es C++.
¿ Por qué SystemC ?
C/C++; Modelamiento a nivel de sistema
Resultados
VHDL/VerilogAnalisis
Síntesis
Simulación
Perfeccionar
Conversión Manual
Metodología Actual en el diseño de Sistemas
Resto del proceso
Modelo enSystemC
Mejoramiento
Simulación
Resto del proceso
Síntesis
Traducción con Software
Metodología con SystemC
Transistores
Compuertas
RTL
Test Bench
Verificación funcional
Comportamiento
Hardware/Software
Arquitectura
Requerimientos
Ve
rilo
g
VH
DL
Sys
tem
Ve
rilo
g
Ve
ra, e
Sys
tem
C
Mat
lab
SystemC en contraste con otros lenguajes
CODIGO ORIGINAL CODIGO MODIFICADO
int sc_main (int, char **){ sc_signal<bool> reset; contador top(“top”);
top.reset(reset); reset.write(1); sc_start(3, SC_NS); reset.write(0); sc_start(50, SC_NS); reset.write(1); sc_start(3, SC_NS); reset.write(0); sc_start(50, SC_NS); }
SC_MODULE (new_top){ sc_signal<bool> reset; contador top; void body_main();
SC_CTOR(new_top) : reset(“reset”), top(“top”) { top.reset(reset); SC_THREAD(body_main); }};
void new_top::main_body(){ reset.write(1); wait(3, SC_NS); reset.write(0); wait(50, SC_NS); reset.write(1); wait(3, SC_NS); reset.write(0); wait(50, SC_NS);}SC_MODULE_EXPORT(new_top);
TestbenchMacro para exportar el
módulo a ModelSim
Proceso para Simulación en ModelSim
Módulos diseñados en SystemC
IDCT
Decodificador de Entropía.
Decodificación Run-Level.
Escaneo inverso.
Cuantización Inversa.
ConclusionesLa eficiencia de un CODEC de video es una relación entre la tasa de bits que puede alcanzar y la calidad de imagen que logra a dicha tasa de bits. Un CODEC de video de alta eficiencia puede lograr tasas de bits iguales a las de uno menos eficientes pero con una calidad de imagen mucho mayor.
MPEG-4 Visual no es el estándar de codificación de video con el mejor desempeño (H.264 & VC-1), sin embargo la complejidad computacional limitada, las herramientas de resiliencia al error y escalabilidad le dan una ventaja estratégica frentes a sus competidores.
Se selecciono el perfil simple como el más adecuado para dispositivos móviles, puesto que de todos los perfiles soportados por MPEG-4 es el que más se adecua a los recursos de cómputo limitados y a las limitaciones de potencias de los mismos. Además se convierte en un muy buen primer paso para desarrollar otros perfiles más avanzados.
ConclusionesSe definió una arquitectura de hardware para un decodificador MPEG-4 perfil simple que puede ser adaptada a cualquiera de los niveles del perfil. La arquitectura soporta todas las herramientas asociadas a los objetos de tipo simple.
Se definieron las arquitecturas lógicas para los diferentes módulos de la arquitectura, en algunos módulos se hicieron implementaciones buscando medir la complejidad y el consumo de potencia.
SystemC se utilizo como una herramienta de modelamiento a nivel de sistema, para comprobar el funcionamiento de los diferentes módulos. Se comprobaron las ventajas de este lenguaje en cuanto a la rapidez para modelar sistemas digitales.
Conclusiones
SystemC es una herramienta adecuada para diseñar sistemas electrónicos a mucho más alto nivel que lenguajes como VHDL y Verilog. Como desventaja frente a los anteriores, SystemC no cuenta hasta ahora con herramientas de síntesis directa a dispositivos programables; teniendo que ser traducido a lenguajes como VHDL o Verilog que si cuentan con este tipo de herramientas.
Tener unos fundamentos adecuados en el lenguaje de programación C++, facilita enormemente realizar gran parte de la lógica requerida para el diseño, ya que se pueden utilizar la mayoría de la herramientas y librerías ofrecidas por C++, con la opción de realizar varios procesos en paralelo.