Está en la página 1de 16

UNIVERSIDAD AUTONOMA DE NUEVO LEÓN

FACULTAD DE INGENIERIA MECANICA Y ELECTRICA

Controladores y Microcontroladores Programables

Actividad 2

Síntesis “Tipos de memorias, Puertos E/S, Operadores Lógicos”

Equipo 4
Matricula Nombre Carrera
1894702 Gabriel Medardo Mendez Sierra ITS
1675010 Frida Sofia Sanchez Mercado ITS
1904590 Angel Gabriel Martinez Belmares ITS
1886121 Kevin Isaias Martinez Saucedo ITS
1961691 Leopoldo Ezequiel Suarez Sandoval ITS
1806092 Enrique Azahel Cruz Luna ITS
1895112 Jose Alejandro Sanchez Palacios ITS

Semestre: Agosto – diciembre 2023


Semestre a cursar: 7mo Semestre
Catedrático. MII. Andrés E. Rivas Cisneros
Grupo: 002 Aula: 2301
Hora clase: M2 Frecuencia: LMV

Fecha de entrega: 03 agosto del 2023


Pedro de Alba S/, Niños Héroes, Ciudad Universitaria, San Nicolás de los Garza, N.L
Índice
Actividad 2. Tipos de memorias, puertos E/S, Operadores Lógicos ........................................ 2
1. Tipos de memorias utilizados en los procesadores y microprocesadores ...................... 2
1.1 Memoria Cache ............................................................................................................. 2
1.2 Memoria RAM..................................................................................................................... 2
1.3 Memoria ROM .................................................................................................................... 3
1.4 Memoria de registro........................................................................................................... 4
1.5 Memoria de almacenamiento secundario ...................................................................... 5
2. Lenguajes utilizados en los microprocesadores y/o procesadores .................................. 5
2.1 Lenguaje de Máquina ........................................................................................................ 5
2.2 Lenguaje Assembly ........................................................................................................... 5
2.3 Lenguaje de Alto Nivel ...................................................................................................... 6
2.4 Lenguajes de Comunicación y Control ........................................................................... 6
3. Ejemplo práctico del funcionamiento de un procesador..................................................... 6
4. Tipo de puertos E/S de los microcontroladores y procesadores .......................................... 8
4.1 Puertos GPIO ..................................................................................................................... 8
4.2 Puertos de comunicación serial (UART, SPI, I2C) ....................................................... 8
4.3 Puertos PWM...................................................................................................................... 9
4.4 Puertos de interrupción ..................................................................................................... 9
4.5 Puertos analógicos ............................................................................................................ 9
4.6 Ejemplo practico............................................................................................................... 10
5.Operadores lógicos ..................................................................................................................... 10
a) Operadores algorítmicos .................................................................................................. 10
b) Operadores de asignación ............................................................................................... 10
c) Operadores de incremento y decremento ...................................................................... 10
d) Operadores relacionales ................................................................................................... 10
e) Operadores lógicos............................................................................................................ 11
f) Operadores de manejo de bits.......................................................................................... 11
Conclusiones ................................................................................................................................... 12
Referencias ..................................................................................................................................... 14

Página | 1
Actividad 2. Tipos de memorias, puertos E/S, Operadores
Lógicos
1. Tipos de memorias utilizados en los procesadores y microprocesadores

Los procesadores y microprocesadores utilizan diferentes tipos de memorias para


almacenar y acceder a datos e instrucciones de manera eficiente. A continuación,
anexamos una lista de los tipos de memorias más comunes utilizados en estos
dispositivos.

1.1 Memoria Cache

Es un tipo especial de memoria de alta velocidad que se encuentra dentro de una


CPU (Central Processing Unit) o cerca de ella en un sistema informático. Su
principal objetivo es mejorar el rendimiento de acceso a datos y programas
almacenados en la memoria principal (RAM) al proporcionar un almacenamiento
temporal de datos que se utilizan con frecuencia.

 Memoria caché L1: Es la memoria caché de nivel 1 y suele ser la más


pequeña y rápida. Está integrada en el núcleo del procesador y almacena
datos e instrucciones de uso frecuente para reducir la latencia de acceso.
 Memoria caché L2: Es la memoria caché de nivel 2, generalmente más
grande que la L1 y se encuentra cerca del núcleo del procesador. También
almacena datos e instrucciones para mejorar el rendimiento.
 Memoria caché L3: La memoria caché de nivel 3 es más grande que la L2 y
suele estar compartida entre varios núcleos de un procesador multinucleo.
Ayuda a mejorar el rendimiento global del procesador.

1.2 Memoria RAM


La memoria RAM (Random Access Memory) es un componente crucial en cualquier
sistema informático, ya que desempeña un papel fundamental en el rendimiento y
la capacidad de respuesta de una computadora.

 RAM: La memoria RAM dinámica es la forma más común de RAM utilizada


en sistemas informáticos. Es volátil y requiere refrescarse constantemente.

Página | 2
 DRAM: La DRAM es el tipo de memoria RAM más comúnmente utilizado en
computadoras personales y servidores. Es una memoria volátil que almacena
datos temporalmente mientras la computadora está en funcionamiento. Su
importancia radica en que es la principal fuente de almacenamiento temporal
para programas y datos activos, lo que permite un acceso rápido y la
ejecución fluida de aplicaciones.
 SRAM: Aunque más costosa y menos densa que la DRAM, la SRAM es más
rápida y consume menos energía. Se utiliza en cachés de alto nivel, como la
caché L1, L2 y L3 de una CPU. Su importancia radica en proporcionar una
memoria de acceso ultra rápido para almacenar datos y código que se utilizan
con frecuencia, mejorando así el rendimiento de la CPU.
 DDR SDRAM: La DDR SDRAM es una evolución de la DRAM que ha
mejorado significativamente la velocidad de transferencia de datos en
comparación con la DRAM convencional. Es ampliamente utilizada en
computadoras personales y servidores. Su importancia en la integración
radica en su capacidad para proporcionar un acceso rápido a datos para
procesadores y aplicaciones, lo que se traduce en un mejor rendimiento
general del sistema.
 ECC RAM: Es una variante de la RAM que incluye un mecanismo de
corrección de errores. Se utiliza comúnmente en servidores y estaciones de
trabajo que requieren una alta fiabilidad y estabilidad. Su importancia radica
en la capacidad de detectar y corregir errores de memoria, lo que evita
bloqueos y problemas de datos corruptos en aplicaciones críticas.
 LPDDR: Este tipo de RAM se utiliza en dispositivos móviles como teléfonos
inteligentes y tabletas debido a su eficiencia energética. Su importancia
radica en prolongar la duración de la batería en dispositivos móviles mientras
proporciona un rendimiento adecuado para aplicaciones y multitarea.

1.3 Memoria ROM


La memoria ROM (Read-Only Memory) es un tipo de memoria de almacenamiento
en una computadora u otro dispositivo electrónico que retiene datos de forma
permanente, incluso cuando se apaga la alimentación.

Página | 3
 ROM de máscara: Esencial para almacenar firmware o software fundamental
que no debe ser modificado durante la vida útil del dispositivo. Este tipo de
ROM se programa durante la fabricación y no puede cambiarse después. Por
lo tanto, se utiliza para almacenar el código de arranque de un sistema, el
BIOS de una computadora, o cualquier software crítico que no deba alterarse.
 PROM: A diferencia de la ROM de máscara, las PROM pueden programarse
por el usuario después de la fabricación utilizando dispositivos de
programación especializados. Esto permite la personalización de ciertas
partes del software o firmware en el dispositivo, lo que es útil para ajustar el
comportamiento de un sistema sin necesidad de reemplazar hardware.
 EPROM: La EPROM es similar a la PROM, pero con la capacidad de borrarse
y reprogramarse múltiples veces mediante la exposición a luz ultravioleta.
Esto proporciona flexibilidad en el desarrollo y actualización del software en
dispositivos y sistemas.
 EEPROM: La EEPROM permite la programación y borrado eléctricamente
sin necesidad de luz ultravioleta. Es ampliamente utilizada en dispositivos
para almacenar configuraciones, datos del usuario y ajustes personalizables,
lo que facilita las actualizaciones de firmware o la personalización del
dispositivo por parte del usuario.
 Flash ROM: La Flash ROM es un tipo de memoria ROM que es comúnmente
utilizada para almacenar firmware en dispositivos electrónicos modernos,
como teléfonos inteligentes, tabletas, unidades USB y tarjetas de memoria.
Ofrece la capacidad de lectura y escritura, lo que permite actualizaciones de
firmware y la capacidad de almacenar aplicaciones y datos en dispositivos
móviles.

1.4 Memoria de registro


 Los registros son ubicaciones de almacenamiento ultrarrápidas y de tamaño
muy reducido dentro del procesador. Se utilizan para almacenar datos
temporalmente durante la ejecución de instrucciones.

Página | 4
1.5 Memoria de almacenamiento secundario
 Disco duro: Aunque no está integrado en el procesador, el almacenamiento
en disco duro es crucial para el almacenamiento a largo plazo de datos y
programas.
 Unidades de estado sólido: Estas unidades ofrecen un acceso más rápido a
los datos que los discos duros tradicionales y se utilizan como unidades de
almacenamiento secundario o primario en muchos sistemas.

Estos son algunos de los tipos de memorias más comunes utilizados en


procesadores y microprocesadores. Cada uno tiene su función específica y
contribuye al rendimiento general del sistema.

2. Lenguajes utilizados en los microprocesadores y/o


procesadores

Los microprocesadores y procesadores utilizan diversos lenguajes a nivel de


programación para ejecutar instrucciones y realizar operaciones. Los lenguajes más
comunes incluyen:

2.1 Lenguaje de Máquina


Este es el lenguaje más básico y fundamental utilizado por los microprocesadores.
Consiste en códigos binarios que representan directamente las operaciones y datos
que la CPU puede ejecutar. Cada instrucción en lenguaje de máquina está asociada
con un valor binario específico que se interpreta como una operación particular,
como sumar dos números o mover datos de un lugar a otro en la memoria.

2.2 Lenguaje Assembly


El lenguaje Assembly es un lenguaje de bajo nivel que utiliza mnemónicos y códigos
mnemotécnicos para representar las instrucciones del lenguaje de máquina de
manera más legible para los programadores humanos. Cada instrucción de lenguaje
Assembly se traduce directamente a una instrucción de lenguaje de máquina. Los
programas escritos en lenguaje Assembly son específicos para la arquitectura del
procesador en el que se ejecutan.

Página | 5
2.3 Lenguaje de Alto Nivel
Los lenguajes de alto nivel, como C, C++, Java, Python, etc., son más legibles y
portables que el lenguaje de máquina y el Assembly. Los programas escritos en
estos lenguajes se traducen a lenguaje de máquina utilizando un compilador o
intérprete. Los lenguajes de alto nivel permiten a los programadores escribir código
más abstracto y expresivo, lo que facilita el desarrollo de software complejo.

2.4 Lenguajes de Comunicación y Control


Además de los lenguajes de programación tradicionales, los microprocesadores
también pueden utilizar protocolos de comunicación y lenguajes de control para
interactuar con otros dispositivos. Por ejemplo, el lenguaje de control para
dispositivos periféricos como impresoras o discos duros puede ser diferente del
lenguaje utilizado para la programación principal de la CPU. Los protocolos de
comunicación, como USB, SPI, I2C, etc., también se utilizan para la interacción
entre dispositivos.

En resumen, los microprocesadores y procesadores ejecutan instrucciones en


lenguaje de máquina, que es el nivel más bajo de programación. Sin embargo, los
programadores suelen utilizar lenguajes de alto nivel y lenguaje Assembly para
escribir software que se traduce a lenguaje de máquina. Además, los dispositivos
periféricos y la comunicación entre dispositivos pueden implicar lenguajes y
protocolos específicos para sus funciones particulares.

3. Ejemplo práctico del funcionamiento de un procesador

El funcionamiento de un procesador es una parte fundamental en la ejecución de


tareas en una computadora. Aunque es un componente complejo.

Tenemos una computadora personal con un procesador moderno. En esta


computadora está ejecutando un programa de procesamiento de texto como
Microsoft Word. Aquí hay una descripción simplificada de lo que sucede en el
procesador durante esta tarea.

Página | 6
1. Inicio del programa: Hacemos clic en el ícono de Microsoft Word para abrir el
programa. El sistema operativo carga el programa en la memoria RAM y
comienza a ejecutarlo.
2. Decodificación de instrucciones: El procesador empieza a leer y decodificar
las instrucciones del programa. Estas instrucciones están escritas en
lenguaje máquina, que es un conjunto de códigos binarios que el procesador
puede entender. Por ejemplo, una instrucción podría ser "cargar el archivo
'documento.doc' en memoria".
3. Ejecución de instrucciones: El procesador ejecuta cada instrucción en orden.
Por ejemplo, podría cargar el archivo 'documento.doc' desde el disco duro a
la memoria RAM.
4. Procesamiento de datos: A medida que se ejecutan las instrucciones, el
procesador realiza operaciones en los datos. Por ejemplo, mientras escribes
en el documento, el procesador actualiza el contenido en pantalla y en
memoria.
5. Interacción con la memoria: El procesador interactúa continuamente con la
memoria RAM para leer y escribir datos. Esto incluye acceder al documento
en memoria, guardar cambios en el archivo en el disco duro y cargar recursos
como fuentes y gráficos en la memoria.
6. Manejo de entrada y salida: Si imprimimos el documento o realizamos
cualquier otra acción de entrada/salida, el procesador coordina estas
operaciones. Por ejemplo, enviar la orden de imprimir a la impresora.
7. Gestión de interrupciones: El procesador también está atento a las
interrupciones, como las señales de hardware o las solicitudes de otros
programas. Puede detener temporalmente la ejecución actual para manejar
estas interrupciones y luego volver al programa original.
8. Finalización del programa: Cuando decides cerrar Microsoft Word, el
procesador finaliza la ejecución del programa. Esto implica liberar la memoria
utilizada por el programa, guardar cualquier cambio en los archivos y liberar
recursos.

Página | 7
9. Apagado del sistema: Si decides apagar la computadora, el procesador
coordina este proceso, asegurándose de que todos los programas se cierren
correctamente y que todos los datos importantes se guarden antes de apagar
el hardware.

Este es un ejemplo muy simplificado del funcionamiento de un procesador en una


computadora durante la ejecución de un programa. Los procesadores modernos
son extremadamente rápidos y eficientes, y pueden ejecutar millones de
instrucciones por segundo para realizar tareas complejas en un abrir y cerrar de ojo.

4. Tipo de puertos E/S de los microcontroladores y procesadores


Los microcontroladores y procesadores modernos cuentan con varios tipos de
puertos de entrada/salida (E/S) que desempeñan un papel fundamental en la
interacción entre el dispositivo y el mundo exterior. Estos puertos permiten la
comunicación con sensores, actuadores y otros dispositivos periféricos.

4.1 Puertos GPIO


 Importancia: Los puertos GPIO son esenciales en prácticamente todos los
microcontroladores y procesadores, ya que permiten la conexión a una
amplia variedad de dispositivos externos, como interruptores, sensores, LED
y otros dispositivos. Se utilizan para leer señales de entrada (por ejemplo,
estado de un botón) y para generar señales de salida (por ejemplo, encender
un LED).
 Funcionamiento: Los pines GPIO se pueden configurar como entrada o
salida según las necesidades del usuario. En modo entrada, se lee el estado
lógico del pin, mientras que, en modo salida, se establece el estado lógico
del pin.

4.2 Puertos de comunicación serial (UART, SPI, I2C)


 Importancia: Estos puertos son cruciales para la comunicación con otros
dispositivos, como sensores, módulos de comunicación y periféricos. Cada
uno de estos puertos tiene sus propias ventajas y se utiliza para diferentes
aplicaciones.

Página | 8
 Funcionamiento: Los puertos de comunicación serial permiten la
transferencia de datos entre el microcontrolador/procesador y otros
dispositivos de manera síncrona o asíncrona. Por ejemplo, UART se utiliza
para la comunicación serie asíncrona, SPI para comunicación síncrona de
alta velocidad y I2C para la comunicación en bus de dos hilos.

4.3 Puertos PWM


 Importancia: Los puertos PWM se utilizan para generar señales de salida que
varían en ancho de pulso, lo que es útil para controlar la velocidad de
motores, el brillo de LEDs y otras aplicaciones de control de potencia.
 Funcionamiento: El microcontrolador o procesador genera pulsos de ancho
variable en estos puertos, y la duración de los pulsos determina el nivel de
salida.

4.4 Puertos de interrupción


 Importancia: Estos puertos permiten que el microcontrolador o procesador
responda de manera rápida a eventos específicos sin tener que realizar una
lectura continua de los puertos. Son importantes en aplicaciones de tiempo
crítico.
 Funcionamiento: Cuando se produce un evento predefinido, se genera una
interrupción que detiene la ejecución normal del programa para atender el
evento. Esto permite una respuesta rápida a eventos importantes.

4.5 Puertos analógicos


 Importancia: Los puertos analógicos permiten la entrada y salida de señales
analógicas, lo que es esencial para la lectura de sensores analógicos, como
sensores de temperatura, voltaje y luz.
 Funcionamiento: Los puertos analógicos convierten señales analógicas en
valores digitales (ADC, conversor analógico-digital) o generan señales
analógicas a partir de valores digitales (DAC, conversor digital-analógico).

La elección y configuración adecuada de estos puertos E/S depende de la aplicación


específica y de los dispositivos periféricos utilizados.

Página | 9
4.6 Ejemplo practico

5.Operadores lógicos
Los operadores son símbolos o palabras reservadas que se utilizan en
programación para realizar operaciones en variables y valores

a) Operadores algorítmicos
Estos operadores se utilizan para realizar operaciones matemáticas y aritméticas
en programación. Algunos ejemplos comunes son:

 Suma (+): Se utiliza para sumar dos valores.


 Resta (-): Se utiliza para restar un valor de otro.
 Multiplicación (*): Se utiliza para multiplicar dos valores.
 División (/): Se utiliza para dividir un valor por otro.
 Módulo (%): Devuelve el resto de la división entre dos valores.

b) Operadores de asignación
Los operadores de asignación se utilizan para asignar un valor a una variable. El
operador más común es el operador de asignación simple (=), que asigna un valor
a una variable.

c) Operadores de incremento y decremento


Estos operadores se utilizan para aumentar o disminuir el valor de una variable en
una unidad. Algunos ejemplos son:

 Incremento (++): Aumenta el valor de una variable en 1 unidad.


 Decremento (--): Disminuye el valor de una variable en 1 unidad.

d) Operadores relacionales
Estos operadores se utilizan para comparar dos valores y devolver un valor
booleano (verdadero o falso) que indica si la relación es cierta o no. Algunos
ejemplos son:

 Igual (==): Compara si dos valores son iguales.


 No igual (!=): Compara si dos valores no son iguales.
 Mayor que (>): Compara si un valor es mayor que otro.

Página | 10
 Menor que (<): Compara si un valor es menor que otro.
 Mayor o igual que (>=): Compara si un valor es mayor o igual que otro.
 Menor o igual que (<=): Compara si un valor es menor o igual que otro.

e) Operadores lógicos
Los operadores lógicos se utilizan para realizar operaciones lógicas en valores
booleanos (verdadero o falso). Algunos ejemplos son:

 AND lógico (&&): Devuelve verdadero si ambas expresiones son verdaderas.


 OR lógico (||): Devuelve verdadero si al menos una de las expresiones es
verdadera.
 NOT lógico (!): Invierte el valor de una expresión booleana.

f) Operadores de manejo de bits


Estos operadores se utilizan para realizar operaciones a nivel de bits en valores
enteros. Algunos ejemplos son:

 AND a nivel de bits (&): Realiza una operación AND a nivel de bits entre dos
valores.
 OR a nivel de bits (|): Realiza una operación OR a nivel de bits entre dos
valores.
 XOR a nivel de bits (^): Realiza una operación XOR a nivel de bits entre dos
valores.
 Desplazamiento a la izquierda (<<): Desplaza los bits de un valor a la
izquierda.
 Desplazamiento a la derecha (>>): Desplaza los bits de un valor a la derecha.

Estos son algunos de los operadores más comunes en programación, y su uso


puede variar según el lenguaje de programación que estés utilizando.

Página | 11
Conclusiones
 1675010

En esta actividad hemos explorado diferentes tipos de memorias utilizadas en


procesadores y microprocesadores, lenguajes de programación comunes en estos
dispositivos, el funcionamiento básico de un procesador durante la ejecución de un
programa, los tipos de puertos E/S en microcontroladores y procesadores, y una
breve descripción de operadores lógicos utilizados en programación. Estos
conceptos son fundamentales para comprender el funcionamiento y la
programación de sistemas informáticos y electrónicos.

 1886121

Los tipos de memorias son esenciales para el almacenamiento de datos en sistemas


electrónicos, los puertos de entrada y salida facilitan la interacción entre dispositivos
y computadoras, y los operadores lógicos son herramientas fundamentales en la
programación y la lógica digital para la toma de decisiones y el procesamiento de
datos binarios. Estos conceptos son fundamentales en la informática y la electrónica
digital.

 1961691

Los controladores y procesadores son componentes imprescindibles que trabajan


en conjunto para permitir el funcionamiento adecuado de los dispositivos
electrónicos y las computadoras. Los controladores se enfocan en la gestión y
control de hardware específico, mientras que los procesadores realizan el
procesamiento de datos y ejecutan programas. Ambos son críticos para el
rendimiento y la funcionalidad de cualquier sistema informático.

 1806092

los microcontroladores son ideales para aplicaciones embebidas y sistemas


específicos donde la eficiencia energética y el tamaño compacto son cruciales. Por
otro lado, los microprocesadores son la base de las computadoras personales y
otros dispositivos de propósito general que requieren una amplia gama de

Página | 12
capacidades de procesamiento y ejecución de software complejo. Ambos
desempeñan un papel importante en la tecnología moderna y tienen sus propios
nichos de aplicación en la electrónica y la informática.

 1895112

En el mundo de la tecnología, la memoria y los puertos de entrada y salida


desempeñan papeles vitales. Los diferentes tipos de memoria, como la RAM y el
almacenamiento, colaboran para garantizar un funcionamiento eficiente de los
dispositivos, almacenando y proporcionando acceso a datos críticos. Mientras tanto,
los puertos de entrada y salida actúan como interfaces que conectan dispositivos a
computadoras y permiten la transferencia de información. La elección adecuada de
memoria y la gestión de puertos son cruciales para la funcionalidad y la
interoperabilidad de los sistemas tecnológicos, lo que los convierte en componentes
esenciales de la informática moderna y la conectividad.

 1904590

Los tipos de memorias, los puertos de entrada/salida y los operadores lógicos son
componentes muy importantes en el mundo digital. Nos permiten que los
dispositivos y sistemas funcionen de manera efectiva, almacenen y procesen
información, y se comuniquen con el entorno. Su presencia y aplicación se
encuentran en una amplia gama de campos, desde la electrónica de consumo hasta
la automatización industrial, desempeñando un papel fundamental en nuestra
sociedad cada vez más digitalizada.

 1894702

En resumen, los tipos de memorias, los puertos de entrada/salida y los operadores


lógicos son componentes cruciales en la informática y la electrónica. Las memorias,
como RAM, ROM y dispositivos de almacenamiento, son esenciales para el
almacenamiento y la recuperación de datos en sistemas informáticos. Los puertos
de entrada/salida facilitan la comunicación entre los dispositivos y las
computadoras, permitiendo la interacción con el mundo exterior. Por último, los
operadores lógicos son herramientas fundamentales para realizar operaciones de

Página | 13
comparación y toma de decisiones en la programación y la lógica digital. En
conjunto, estos elementos desempeñan un papel crítico en el funcionamiento y la
programación de sistemas informáticos y electrónicos, contribuyendo al desarrollo
de tecnologías cada vez más avanzadas y eficientes que moldean nuestra vida
cotidiana y el mundo moderno.

Referencias

s.f. (s.f). Area tecnologia. Obtenido de Tipos de memoria RAM:


https://www.areatecnologia.com/TECNOLOGIA%20EN%20IMAGENES/TIP
OS%20DE%20MEMORIAS%20RAM.html

s.f. (s.f). FileMakerPro18Advanced. Obtenido de Operadores lógicos:


https://help.claris.com/archive/help/18/fmp/es/index.html#page/FMP_Help/lo
gical-operators.html

s.f. (s.f). Memoria ROM. Obtenido de Concepto abc:


https://conceptoabc.com/memoria-rom/

S.f. (s.f). Universidad La Salle Mexico. Obtenido de La importancia y aplicaciones


de los microcontroladores en la Electronica: https://ingenieria.lasalle.mx/la-
importancia-y-aplicaciones-de-los-microcontroladores-en-la-electronica/

s.f. (s.f). Libros Digitales. Obtenido de Capitulo I Estructura de los microcontralodres:


https://librosdigitales.uce.edu.ec/index.php/PDU/catalog/download/8/14/428
?inline=1

Página | 14
Página | 15

También podría gustarte