Tecnicas Digitales 2:
Parciales:
1. Uno de los componentes de la data path es el Registro File. Describa la
función de este punto.
2. En Modulo Registro File. ¿Cuál es la función del conjunto de líneas
denominado R15?
El PC(R15), es un registro dentro del microprocesador que almacena la dirección
de memoria de la siguiente instrucción a ser ejecutada.
3. En una comunicación SPI ¿Cómo se realiza el procedimiento desde el
master para que el esclavo envié un dato?
Se habilita el chip al que hay que enviar la información mediante el CS
(Opcional).
Se carga en el buffer de salida el byte a enviar. La línea de Clock empieza a
generar la señal cuadrada donde normalmente por cada flanco de bajada se
pone un bit en MOSI. El receptor normalmente en cada flanco de subida captura
el bit de la linea MISO y lo incorpora en el buffer.
4. En una comunicación RS232 ¿Qué se denomina velocidad de transmisión,
cual es la diferencia de Bit Rate?
● Baudio mide la cantidad de símbolos enviados por segundo.
● Bit rate o tasa de bit, es la velocidad de bit de datos enviados por segundo.
● En RS-232 cada símbolo puede tener 2 niveles, esto representa a 1 bit.
● Otros medios de comunicación digital un símbolo puede tener 4 o más
● niveles, representando 2 o más bits
● ● Además se deben agregar el bit de start y bit de stop que no son datos.
● Se requiere entonces 10 símbolos para enviar 1 byte
5. ¿cuáles son los requerimientos necesarios para reconstruir una señal a
partir de sus muestras?
● Demuestra que una señal periódica continua en banda base, puede ser
reconstruida sin pérdida de información a partir de sus muestras.
● Esto es posible si:
● La señal está limitada en banda
● El muestreo se realiza a una tasa superior al doble del ancho de banda.
6. Detalle la diferencia entre un ADC Simple Rampa y Rampa ascendente.
¿Cuál es la principal ventaja del primero sobre el segundo?
Simple Rampa:
● La señal de entrada es integrada mejorando la inmunidad al ruido.
● Mantiene la problemática de su dependencia a RC
● La principal desventaja del rampa ascendente es su descalibración por variación
en el circuito RC.
● Una solución es utilizar un DAC como generador de rampa. (Ventaja)
7. Dibuje el esquema de un ADC Delta y Explique brevemente su principio de
funcionamiento
● Una señal analógica es cuantizada por medio de un ADC de 1 bit.
● La salida de este comparador es transformada a analógica con un DAC de
1 bit.
● La salida es integrada y restada a la señal de entrada.
● La resta es la señal analógica cuantizada por el ADC.
● La salida digital indica con “1” una diferencia positiva o un “0” una
diferencia negativa
8. Indique en un esquema de un ADC Sigma delta, cual es la principal
diferencia de un Delta y su ventaja
ADC Sigma-Delta
Cuando VIN se acerque a VREF aumentará la cantidad de “unos” con respecto a los
“ceros” y cuando se acerque a su valor inferior aumentarán los “ceros”. (Disminuye el
ruido “granular”)
Funcionamiento:
● La salida del comparador se retroalimenta a través del DAC hasta la entrada de
suma enB.
● De esta manera el bucle de realimentación negativa, forzará a que la tensión
promedio de B sea igual a V IN
● Luego la salida del DAC estará dada por la densidad de 1 de la salida del
comparador.
● Cuando V IN se acerque a V REF aumentará la cantidad de “unos” con respecto a
los “ceros” y cuando se acerque a su valor inferior aumentarán los “ceros
ADC Delta
Durante el período en que la señal permanece cte, se obtiene un patrón de 0 y 1 lo que
genera ruido granular.
9. Explique el principio de funcionamiento de un ADC de aproximación
sucesivas.
● La señal de Start coloca al circuito SHA en modo retención y borra todos los bits de la
SAR dejando el MSB en 1
● La salida de la SAR activa a el DAC interno. Si la salida del DAC es mayor a VIN se borra
este bit, sino permanece en 1.
● El siguiente bit se establece en 1.
● Si la salida del DAC es mayor a VIN se borra este bits, sino permanece en 1.
● El proceso se repite con todos los bits.
● Al finalizar el últimos bits, el contenido de la SAR es el valor digital de la entrada
analógica
10. ¿Cuál es la diferencia entre un compilador y un enlazador?
El COMPILADOR es básicamente un traductor que traducen un lenguaje a otro, en
general el COMPILADOR traduce un código escrito de alto nivel a ENSAMBLADOR, luego
un ENSAMBLADOR convierte el código ENSAMBLADOR en un “Archivo Objeto” que
contiene el código en lenguaje Maquina
ENLAZADOR: El trabajo del Enlazador, es juntar todos los archivos objeto que
componen un proyecto en un archivo en código máquina llamado ejecutable y asignar
las direcciones de variables globales.
11. ¿Cuál es la diferencia de un ADC Subrango y uno pipeline?
media chota la definicion esta.
Buscar otra
12. Item 2. ¿Dentro del mapa de memoria de un microcontrolador, se
encuentra una zona denominada? ¿Tabla de Vectores de Interrupción?,
describa su utilidad y que datos son guardados en ella.
13. ¿Qué características de los pines de la Raspberry permite configurar el
periférico GPIO?
● El BCM2835, posee 54 pines de GPIO.
● El dispositivo GPIO, permite configurar a estos pines de dos formas distintas.
● Como pines de E/S digital, permitiendo además configurar la dirección (E o S), la
lectura de las entradas y escribir los valores de salida. Toda la configuración se realiza
en la GPIO.
● Se configura los pines como parte de un dispositivo particular.
El resto de la configuración se realiza con el dispositivo
14. ¿Detalle una trama de RS232 con los componentes que la forman, ¿Cómo se
sincroniza este método de comunicación?
Se sincroniza con el bit de start
15. Describa como funciona un Muestreo y Retención (Sample and Hold) y su
utilidad.
Un circuito de muestreo y retención (Sample and Hold SH ) es un dispositivo
analógico que muestra el voltaje de una señal analógica que varía
continuamente y mantiene su valor a un nivel constante durante un período de
tiempo. Los SH se emplean en convertidores analógicos a digitales para eliminar
variaciones en la señal a convertir y mantener estable el valor de tensión a la
entrada del ADC durante el proceso de conversión.
16. Cuántas llaves son necesarias en un DAC Kelvin y en un DAC 2R2? (Se
considera ambos DAC de N bits).
DAC R2R: Requiere llaves=1N ; Resistores=2N y sí es corriente 2N+1
2N+1 en modo corriente
Kelvin : Requiere gran cantidad de llaves y Resistencias (2 ^N resistores y 2^N llaves).
17. ¿ Qué ventajas tiene sobremuestrear una señal ? y ¿Qué debo sumar al ADC
para que esa ventaja se pueda concretar ?
Mejor la figura de ruido
Para aumentar N bits de resolución debemos sobremuestrear en un factor de 2^(2N)
18. Para una entrada igual a 45, detalle los pasos intermedios que tomaría el
SAR en un ADC de 6 bits
19. Describa como realiza la conversión un ADC pipeline
20. Indique si las siguientes instrucciones usan los modos de direccionamiento
Pre o post indexado (SALE)
a) STR r6, [r4,#4] -> pre Indexado sin actualizar
b) LDR r3,[r12],#8 -> post indexado
c) LDRB r6,[r3,r2]! -> pre indexado qué se actualiza
d) LDRSH r12, [r6] -> pre Indexado sin actualiza -> STR r6, [r4,#0] equivalente
21. Indique Verdadero o Falso para diferentes formas de limpiar todos los bits
del registro R12 con ceros
22. Muestre dos diferentes formas para limpiar todos los bits en el r12 a cero,
no se debe usar ningún otro registro que no sea r12
● EOR R12,R12,R12
● Bic r12,r12,r12
● AND R12,R12,#0
● SUB R12,R12,R12
● RSB R12,R12,R12
23. Indique la diferencia entre ejecución normal y ejecución condicional de las
instrucciones del ARM. Ejemplifique [1P]
Ejecución normal: es cuando las instrucciones no están condicionadas, los
registros se operan mediante instrucciones add,sub, and, etc, sin estar
condicionadas x alguna variable
Mov r1,#4
Add r1,r1,#5
Ejecución condicional: es cuando una instrucción esta condicionadas por algún
resultado, se utilizan las banderas para imponer condiciones
Mov r1,#4
sub r1,r1,#5
cmp r1,#0
bmi salir
24. ¿Cómo está compuesta una unidad procesadora?
Está compuesta por :
● ALU (Realiza operaciones aritméticas y lógica )
● Registros (guardan los bits)
● Unidad de corrimiento
● Buses de conexión
La unidad procesadora sumada a una de control
se conoce como CPU
(Unidad central de Procesamiento)
25. ¿ Qué es un Registro ?
Un registro: es una unidad de memoria compuesta por flip flops. Un Registro de n bits
está compuesta por n Flip_Flops y pueden almacenar 2^n valores binarios.
26. Describa una unidad de corrimiento y la ubicación en el modelo clásico y
en el modelo ARM
Es un circuito de combinacional que permite realizar a un numero de n bits, una serie
de desplazamiento, como son:
● Clásicamente se encuentra en la salida de la ALU, lo cual permite desplazar el
resultado de una operación.
● En el modelo ARM se encuentra en una de las entradas de la ALU, esto permite
desplazar uno de los operando.
27. ¿Qué caracteriza una arquitectura load/store? Detalle algún ejemplo en
ARM
Arquitectura Load /Store, esto implica que para operar con datos almacenados en
memoria debemos leerlos de memoria, almacenan datos en los registros, operar
registros y luego almacenar estos datos en memoria.
No se puede operar directamente con datos de memoria.
Vect dcd 16
LDR R0,= vect
LDR R1,[R0],#0
Add R1,R1,#1
STR R1,[R0]
28. Describe las operaciones que posee las instrucciones de procesamiento de
datos para colocar como segundo operador (operando)(inmediato)
29. Nombre y describa brevemente las banderas que utiliza ARM y donde son
alojadas
ARM utiliza 4 banderas
● Z (cero) : se pone en 1 cuando todos los bits son cero
● C (carry): carry de una suma de números sin signo
● V (over flow): desbordamiento en operaciones de numero s con signo.
● N (signo): indica que el resultado es negativo
Las instrucciones de comparación “CMP” siempre modifican las banderas, las de
procesamiento lo hacen si lo agregamos el sufijo “S”.
Estas banderas se ubican en un registro especial CPSR (registro de estado).
30. ¿Cuál es el principio de pipeline?
Es un método usado por la CPU para su funcionamiento.
Implica que, en un mismo ciclo de reloj, se realizan 3 pasos distintos.
● Se fundamenta en paralelizar las acciones necesarias en la ejecución de una
instrucción.
● Permite acelerar una CPU
¿Cómo solucionar el problema del pipeline?
La solución más sencilla es tratar de evitar los branch pero en algún punto del
programa se vuelven imprescindibles.
31. Describa el direccionamiento post indexado, esto es : estados iniciales y
finales de Rd y Rn. Dar un ejemplo
La dirección empleada es únicamente el registro base, después del acceso a memoria,
el registro es actualizado a un valor equivalente al registro base ± offset.
LDR Rd,[Rn],Rm
32. Enumere los registros preservados y detalle la diferencia con los
denominados no preservados.
● Preservados: R4 al R11 ,SP y LR , una función debe guardar estos registros
antes de modificarlos y restaurar su valor antes de salir de la función
● No preservados: R0 al R3 y R12, pueden ser cambiados libremente, no se
puede asumir que no serán modificados luego de llamar a una función.
R12 es un registro temporal
33. ¿Cuáles son los tres formatos de instrucciones que posee el ARM ?. Detalle
dos ejemplos de cada formato.
● Procesamiento de datos: ADD, SUB, AND y ORR
● Instrucciones de acceso a memoria: LDR y STR (solo con inmediatos positivos
como offset).
● Branch: B y BL
34. ¿Qué son las microoperaciones ?
Operación elemental a un conjunto de bits en un ciclo de reloj
Tipos:
● transferencia: Consiste en transferir información desde un registro a otro
sin modificar el registro origen
● Aritmetica: (suma,resta , incremento ) = F = A+Y+Cin
● Logicas: (OR, AND, EOR,NOT)
35. Describa qué función cumple una señal de control.
Una señal de control cumple la función de elegir un proceso de la unidad procesadora.
Esta elección o control puede ser
ejemplo: elegir qué operación realizar, definir que registros ingresar a la ALU, que
desplazamiento realizar y que registro es el destino.
Estas señales controlan los buses de conexión de la unidad procesadora, ya sean estos
multiplexores o buffers de 3 estados
36. Desarrolle un módulo Sumador / Restador de 4bits
37. Que diferencia tiene los corrimientos lógicos de los aritméticos, cuales
posee ARM y como los faltantes
Al desplazar a la izquierda, tanto en el lógico como en el aritmético, se agregan “0” al bit
menos significativo ambos son iguales.
En el desplazamiento a la derecha sin embargo, en el lógico se agregan “0” en el bit mas
significativo, pero en la aritmética se agrega el signo (ultimo bit) , es decir que vuelve a
ingresar el bit más significativo.
ASL Y ASR mantienen signo
LSR Y LSL desprecian signo
ASL = LSL
No hay una instrucción ROL porque la rotación a la izquierda de n bits se puede realizar
con una rotación a la derecha de k − n bits, siendo k la cantidad de bits total del registro
38. defina y describa a las/os bandera/as de uso exclusivo para comparaciones
con signo y aquellos de uso exclusivo para comparaciones sin signo.
Nota: las banderas de uso exclusivo son aquellas que no se comparten
entre comparaciones con o sin signo.
Con signo Exclusivos -> N y V (Banderas)
Sin signo exclusivas -> C (Banderas)
Para ambos -> Z (Banderas)
En el punto 28 están descritas todas
39. ¿cuál es la diferencia entre ” B y BL ”?
● BL = guarda en LR (r14) el valor al que se debe asignar a PC(r15), para
llamar a funciones.
● B = se utiliza para saltos dentro de una función.
40. nombre los modos de direccionamiento y escriba un ejemplo de cada uno.
● Indexado sin actualizar -> LDR R0,[R1,#4]
● Pre-Indexado -> LDR R0,[R1,#4]!
● Post – Indexado -> LDR R0,[R1],#4
● El #4 es el offset, el valor es arbitrario
41. ¿Cuál es la diferencia entre una función leaf y no_leaf?
tipo leaf : cuando en su interior no llama a otras funciones
tipo nonleaf: cuando en su interior si llama a otras funciones. Las funciones de
nonleaf son algo más complicadas porque pueden necesitar guardar registros
no preservados en el stack antes de llamar a otra función y luego restaurar esos
registros
42. Cuando un dato de más de un byte es guardado en memoria, es posible
realizarlo de dos maneras. ¿Qué nombres reciben? y ¿Cuál es la
implementada en los micros de arquitectura ARM?
ARM por defecto implementa “Little – endian” pero también puede trabajar con
“big – endian”.
43. Los dos campos ubicados en los bits más significativos de una instrucción
ARM, son comunes cualquier tipo de instrucción. Describa las funciones de
cada uno de ellos.
● Condición: Tiene la función de determinar según el estado las banderas,
si se efectúa se ejecuta la instrucción o si PC (program counter) pasa a
otra función.
● Operación: indica si se trata de procesamiento de datos, acceso de
memoria o un branch.
44. Escriba el código asembly de ARM de las instrucciones necesarias para
comprobar si produce un desbordamiento (overflow) cuando se suman R2 y
R3. Use el número mínimo de instrucciones (VER DE NUEVO)
Adds r2,r2,r3
Movvs r0, #1 si hay desborde r0=1
45. Escriba una instrucción de ARM para invertir todos los bits en el registro R3.
Debe hacerlo en mayúscula y sin espacios innecesarios. Use la menor
cantidad de instrucciones posibles. supongamos que el registro de interés
es el R3.
● Mvn R3, R3
46. ARM incluye LDR con indexación posterior, que actualiza el registro
después de completar la carga. Indique las dos instrucciones que son
equivalente a :
“LDR Rd,[Rn],Rm”
● Ldr rd,[rn]
● Add rn,rn,rm
47. Dado el valor de 16 bits 0101101011000011 en R1 ¿Qué operación debe
efectuar?
a. ¿Para poner en cero los últimos o bits?
AND 1111111100000000
b. ¿Para iniciar a 1 los primeros 8 bits?
ORR 1111111100000000
c. ¿Para complementar los ocho bits de en medio?
XOR 0101111111110011
MOV R0,#0x5A00 ; es el numero binario pasado a hexa
orr R0,R0,#0xC3
and r0,r0,#0XFF00
MOV R0,#0x5A00 ; es el numero binario pasado a hexa
orr R0,R0,#0xC3
ORR R0,R0,#0XFF00
MOV R0,#0x5A00 ; es el numero binario pasado a hexa
orr R0,R0,#0xC3
EOR R0,R0,#0x0F00
EOR R0,R0,#0xF0
FINALES
48. Determine el número de bits necesarios para un conversor A/D simple
rampa si se desea realizar la conversión de una señal sinusoidal de 1V de
amplitud pico a pico y frecuencia de 1MHz siendo el máximo error tolerable
de 2mV. Indique claramente todas las fórmulas necesarias para emplear.
1
● El error es 𝑒 = 2
𝑙𝑠𝑏.
● ∆𝑣 rango de tensión de entrada a convertir.
1𝑣
∆𝑣 1𝑣 𝑙𝑜𝑔2( 4𝑚𝑣 )
● 𝑙𝑠𝑏 = 𝑛 → 2 * 2𝑚𝑣 = 𝑛 →𝑛 = 𝑙𝑜𝑔2(2)
= 7. 96
2 2
49. Dado un sistema de adquisición de datos de 8 canales analógicos, que
mediante un multiplexor se conecta a un filtro “antialiasing” cuya
frecuencia de corte es de 40 Khz , seguido por un “S/H” y un conversor A/D
de 8 bits de aproximaciones sucesivas: 2.a Indicar el ancho de banda
permitido para las señales de cada uno de los canales. 2.b Indicar la
frecuencia de muestreo mínima para el S/H. 2.c Indicar el tiempo de
conversión máximo para el conversor A/D
𝐹𝑐 40𝑘𝐻𝑧
A. 𝐵𝑊 = 𝑁◦𝑐𝑎𝑛𝑎𝑙𝑒𝑠
= 8
= 5000𝐻𝑧
B. fsmin=2fmax=2*5000Hz=10000Hz
C. 1
TmaxAD= 𝑓𝑠𝑚𝑖𝑛 =
1
10000𝐻𝑧
= 100µ𝑆
50. Trace el diagrama de bloques del conversor A/D tipo flash:
49.a Indicar el tiempo de conversión. Justifique su respuesta.
49.b Indicar la cantidad de comparadores necesarios para un conversor de
8 bits
funcionamiento: Cada comparador tiene una referencia 1 LSB más alta que el
comparador inferior. Para una entrada dada, todos los comparadores debajo de
cierto punto tendrán una Vref < Vin y salida “1” y todos los que estén por arriba
Vref> Vin y salida “0”. Estas salidas se decodifican a una salida binaria de N bits.
Las señales son aplicadas a todos los comparadores simultáneamente.
49.a ADC Flash = ADC paralelo, Es el conversor más rápido pero el de
mayor cantidad de comparadores. El tiempo de conversión tc está limitado
únicamente por el tiempo de respuesta de las puertas lógicas en el convertidor
de línea y el número de comparadores, pero por lo general está entre los 10[ns]
a 100[ns]. Tc=1*Tclk
8
49.b 8bits=2 − 1 = 255𝑐𝑜𝑚𝑝𝑎𝑟𝑎𝑑𝑜𝑟𝑒𝑠
51. Dibuje detalladamente la trama de comunicación serie del protocolo
RS-232-C:
a) Indique en el diagrama a lo que se denomina el tiempo de bit
“ζ”(tau).
b) cómo se define la velocidad de transmisión “v”? (baudio)
c) El protocolo RS-232-C es : a_simplex , b_half-duplex , c_full-duplex .
Justificar.
a)
b)
c) Debido a que el sistema tiene tres cables y dos canales de comunicación
distintos, se considera un sistema «Full Duplex». Los datos pueden
transmitirse al mismo tiempo que se reciben.
52. ¿Cuál es la diferencia entre las instrucciones ROR y RRX?
● ROR (rotación hacia la derecha) = proporciona el valor del contenido de
un registro rotado por un valor
● RRX (rotación extendida hacia la derecha 32bits + C) = rota a la derecha
extendido en 1 lugar. El bit 31 se llena con el valor de la bandera C y el
operando se desplaza un lugar a la derecha
Ejemplo:
ROR R4,R6,#12 (R4 = R6 rotado 12 bit a la derecha o lo que es lo mismo R4 = R6
rotado 20 bit a la izquierda)
53. Un compilador asocia a la variable A con R1 y asume que la dirección
de comienzo del arreglo está contenida en el registro R3. Traduzca la
siguiente sentencia del lenguaje C en instrucciones del lenguaje
assembly de ARM.
A= C[0] << 4 ;
● ldr r5,[r3]
● lsl r1,r5, #4
dato dcd 0b1
ldr r3,=dato
ldr r5,[r3]
lsl r1,r5,#4
El dato al qué apunta r3 (tiene su dirección del primer elemento
del vector) lo extrae y lo multiplica por 16 en decimal o es lo mismo
lo corre 4 lugares para la izquierda
54. Asuma los siguientes contenidos de registros:
● R0=0x0000AAAA
● R1=0x12345678
Para los valores de registros dados ¿Que contendrá el registro R2
después de ejecutar cada uno de las siguientes instrucciones
consideradas en forma independiente?
● a) LSL R2,R1,#4
● b) ORR R2,R0,R1
● c) LDRH R5,[R2],#8
● d) LDR R5,[R2,#16]!
a. LSL R2,R1,#4 desplaza 4 bits a la izquierda a R2 = 0x23456780
b. ORR R2,R0,R1 R2 = R0 (OR) R1 = 0x1234FEFA
c) LDRH R5,[R2],#8 copia en r5 en valor en la posición r2 y luego mueve 4 half
word ……………………………………………... de r2 hacia la izquierda (post-indexado)
La instrucción va a ser errónea si R2 no tiene la dirección de memoria de un
dato guardado en memoria.
Sí R2 esta cargado con la dirección de este dato, luego de ejecutar la instrucción
al número guardado se le sumara R2=&dato+8 lo que creará un espacio en la
memoria.
d. LDR R5,[R2,#16]! pre - indexado con actualización, avanza medio word o 1
half-word en r2 y luego se guarda su valor
Sí R2 está cargado con la dirección de este dato, luego de ejecutar la instrucción
al número guardado se le sumara R2=&dato+16 lo que creará un espacio en la
memoria.
en r5
VEC DCD 0X1
MOV R0,#0x00AA
ORR R0,R0,#0xAA00
MOV R1,#0X78
ORR R1,R1,#0X5600
ORR R1,R1,#0X340000
ORR R1,R1,#0X12000000
;A)
LSL R2,R1,#4
;B)
ORR R2,R0,R1
;C) para poder ver q pasa se le asigna a r0 la dirección de
memoria Q ES DE 0X100
LDR R2,=VEC
LDR R5,[R2],#8 ;se le suma 8 al número de R2
;D) para poder ver q pasa se le asigna a r0 la dirección de
memoria
LDR R2,=VEC
LDR R5,[R2,#16]! ; se le SUMA 16 Al número de R2
MOV R4,#0
55. Para la instrucción ADD R1,R2,R3 ¿Cuál es el rango de valores para R3
que resultará en overflow?
Si se usan n bits para representar números con signo, entonces el
32−1 32−1
resultado debe estar en el intervalo que va de [ − 2 ]a[2 − 1
]. Si el resultado no se halla en ese intervalo, entonces se dice que ocurrió
un desbordamiento aritmético
56. Usando un procesador basado en arquitectura ARM con un ADC
interno de 10 bits y tensión de referencia fija de 3,3V, utilizando un
transductor cuya función de transferencia es 20 µA/°C calcular:
a) Ganancia necesaria para poder medir una temperatura de 0°
hasta 80°C con una resolución de 0,1°C por cuenta.
Corrección, cuando calcula Msensor=I_fesensor/I_lsbsensor
57. Se dispone de un conversor A/D de aproximaciones sucesivas de 8
bits con un rango analógico de entrada de 0V a 10V. Responder:
a) ¿Qué valor tomará el registro SAR en el 6° Clk de conversión si el
valor de entrada al conversor Vin es 3,922V?
b) Si la frecuencia de Clk del conversor es de 15 Khz ¿Cuánto tiempo
debe permanecer el módulo S/H en estado hold?
a)
1 1
b) 𝑓𝑐𝑙𝑘 = 𝑇𝑐𝑙𝑘
→ 𝑇𝑐𝑙𝑘 = 𝑓𝑐𝑙𝑘
= 66. 66𝑢𝑆
𝑇𝑐 = (𝑁 + 1) * 𝑇𝑐𝑙𝑘 = (8 + 1) * 66. 66𝑢𝑆 = 600𝑢𝑆
58. Si se dispone de 8 canales analógicos a través de un multiplexor y la
frecuencia de corte del filtro antialiassing es de 10 Mhz.
Responder:
a) ¿Cuántas muestras mínimas por segundos deberá adquirir el
bloque S/H?
b) ¿Cuál será el tiempo máximo del conversor en ese caso?
a) fsmin=2fmax=2*10MHz=20M muestras/seg
𝐹𝑐 10𝑀𝐻𝑧
b) 𝐵𝑊 = 𝑁◦𝑐𝑎𝑛𝑎𝑙𝑒𝑠
= 8
= 1. 25𝑀𝐻𝑧
fsmin=2fmax=2*10MHz=20MHz
1 1
TmaxAD= 𝑓𝑠𝑚𝑖𝑛 = 20𝑀𝐻𝑧
= 50𝑛𝑆
59. el tiempo de conversión en ciclos de reloj 𝑡𝑐𝑙𝑜𝑐𝑘 de un A/D de n bits: a)
tipo flash.
b) tipo aproximaciones sucesivas.
c) tipo doble rampa.
a) tipo flash. (El tiempo de conversión está limitado únicamente por el
tiempo de respuesta de las puertas lógicas en el convertidor de
línea y el número de comparadores, pero por lo general está entre
los 10[ns] a 100[ns].). tconv = 1*tclk
b) tipo aproximaciones sucesivas. 𝑡𝑐𝑜𝑛𝑣 = (𝑛 + 1).T𝑐𝑙k
𝑛+1 𝑛+1
c) tipo doble rampa 𝑡𝑐 = 𝑡_1 + 𝑡_2.𝑡_𝑐𝑚𝑎𝑥 = 2. (2 .𝑡𝑐𝑙k) = (2 ) .𝑡𝑐𝑙k
60. ARM incluye LDR con varios modos, uno de los cuales actualiza el
registro base después de completar la carga. Indique verdadero o
falso: LDR Rd,[Rn,Rm]! ¿Es equivalente a las dos instrucciones
siguientes?
LDR Rd,[Rn,Rm]
ADD Rn,Rn,Rm
Respuesta:
LDR Rd,[Rn,Rm] sumo un offset a rn y lo guardo en Rd = [Rn+Rm]
ADD Rn,Rn,Rm sumo rm a rn y lo actualizo Rn=Rn+Rm
Es verdadero, siempre y cuando sea las 2 lineas juntas como 1 sola respuesta
61. registro r3 contiene 0x8000. ¿Que contendrá el registro después de
ejecutar las siguientes instrucciones?
a. STR r6,[r3,#12]
b. STRB r3,[r7],#4
c. LDRH r5,[r3],#8
d. LDR r12,[r3,#16]!
a. STR r6,[r3,#12] como no actualiza reg base r3 = 0x8000
b. STRB r3,[r7],#4 r3 = 0x8000
c. LDRH r5,[r3],#8 actualiza de a 4 halfword, 2 word ; r3 = 0x8008
d. LDR r12,[r3,#16]! muevo de a 16 byte r3=r3+16 =r3 = 0x8010
VEC DCD 0X8000
DI DCD 0X10101010
LDR R0,=VEC
LDR R3,[R0]
LDR R7,=DI
;a)
STR r6,[r3,#12]
;b)
STRB r3,[r7],#4
;c)
LDR r5,[r3],#8
;d)
LDR R3,[R0]
LDR r12,[r3,#16]!
62. Seleccione una instrucción que establezca a “1” los 3 bits menos
significativos de R0 sin modificar los restantes bits
rta ORR R1,R0,#0x7
63. Escriba una instrucción que establezca a uno los tres bits menos
significativos de R0 , sin modificar R0 y almacene el resultado en R1
ORR R1,R0,#0x7
64. La unidad de corrimiento en el ARM se conecta al operando 2 y
posee las siguientes funciones: desplazamiento lógico a la izquierda y
a la derecha, desplazamiento aritmético a la derecha y rotación a la
derecha. ¿Se puede afectar al operando dos con desplazamiento
aritmético a la izquierda y rotación a la izquierda? Justificar su
respuesta
Se puede desplazar a la izquierda con ROR si damos toda la vuelta, pero no se
puede desplazar a la izq con ASR porque conserva el dígito girarlo a la izq se
hace son LSL y cumple la misma función.
65. Determine el error de cuantificación de un conversor A/D de 8 bits
cuyo rango de entradas analógicas a convertir es 1V. Si se desea
disminuir a la mitad ese error ¿se debería duplicar el número de bits
del conversor para lograrlo? Justificar su respuesta.
V_adc = e (error) =½ vlsb. luego se calcula el nuevo error e’ =(½)e
otra forma es eq’=½ eq=½ *½ *vref/2^n=½ *vref/2^(n+1) }aumentamos un bit
Como muestra el resultado anterior , para disminuir a la mitad el error de
cuantización no se debe duplicar el número de bits del conversor , sino más bien
pasar de un ADC de 8 bits a uno de 9 bits.
66. Grafique una trama de comunicación serie RS-232. Indique claramente
cuales son cada uno de los bits que la componen. ¿Como se determina el
bit de paridad y para qué sirve?
La unidad transmitida en comunicaciones asíncronas se llama trama, y la
construcción de esta: tramado. La trama Asíncrona RS232C está compuesta por:
● Bit de arranque (start bit): Se produce cuando aparece un carácter
SPACE o voltaje (+) (0 lógico)
● Bits de datos (5, 6, 7, 8) : Va de 5 a 8 bits pero lo más común es 7 u 8 bits
. Viajan desde el bit menos significativo (LSB) al más significativo (MSB).
● Bit de Paridad (Parity bit) : luego de los bits de datos opcionalmente se
puede agregar un bit de paridad para detectar posibles errores en la
transmisión (N No Parity (Sin paridad) , O Odd (Impar) , E Even (Par) , M
Mark (Siempre uno) , S Space (Siempre cero)).
● Bit(s) de parada (stop Bits): Pueden ser 1, 1.5 ó 2 bits, que indican el
final del carácter.
Para determinar el bit de paridad se toma como convención lo siguiente:
● Paridad Par : controla que la cantidad de unos “1” en el caracter sean
pares . Por ejemplo si la palabra contiene cantidad pares de unos “1” el bit
de Paridad estará en “0”. En cambio si el caracter contiene cantidad de “1”
impares el bit de paridad estará en “1” para que la cantidad total de unos
transmitidos sean pares y de esta manera el receptor pueda chequear lo
mismo para detectar si durante la transmisión ha surgido algún error.
● Paridad impar: El concepto es el mismo que el anterior solo que esta vez
si la cantidad de unos “1” en el caracter son impares el bit de paridad
estará en “0” y si el caracter contiene cantidad de “1” pares el bit de
paridad estará en “1” para que la cantidad total de unos transmitidos sean
impares.
● Sin paridad : Es cuando directamente se omite en la trama este bitt de
paridad. Se debe tener en cuenta que si algún bit llegase con error al
receptor , este no tendrá manera de darse cuenta de lo sucedido.
● Siempre a uno: es cuando se deja en set el bit de paridad.
● Siempre a cero: es cuando se deja en reset el bit de paridad.
67. Seleccione las oraciones qué representan las principales
características de la arquitectura ARM:
68. Verdadero o Falso. (SALE)
Las principales características de la arquitectura ARM son:
a) un gran conjunto de registros, todos los cuales se pueden usar para la
mayoría de los propósitos.
b) una arquitectura de carga y almacenamiento.
c) Instrucciones de tres direcciones (es decir, los dos registros de operando
de origen y el registro de resultados se especifican de forma
independiente).
d) ejecución condicional de cada instrucción.
e) La inclusión de instrucciones poderosas de carga y almacenamiento de
múltiples registros.
f) la capacidad de realizar una operación de desplazamiento general y una
operación general de la ALU en una única instrucción que se ejecuta en un
solo ciclo de reloj.
g) Ampliar la extensión del conjunto de instrucciones a través del conjunto
de instrucciones del coprocesador, incluida la adición de nuevos registros y
tipos de datos al modelo del programador.
● a) verdadera; ya qué tiene 15 registros de 32 bit
● b) Verdadero; Arquitectura Load /Store, esto implica que para operar con datos
almacenados en memoria debemos leerlos de memoria, almacenan datos en los
registros, operar registros y luego almacenar estos datos en memoria. No se
puede operar directamente con datos de memoria.
● c) Verdadero: las instrucción poseen Rd, Rn, Op2 (dos registros de
operando de origen y un registro de resultado destino)
● d) verdadera: Los programas tendrían poco sentido si solo pueden
ejecutar las instrucciones en un orden predefinido y de la misma manera
todas las veces que son corridos. La ejecución condicional, significa que
una instrucción o grupo de ellas pueden ser ejecutadas o no en función
de una condición. Las condiciones en ARM son determinadas por los
valores de las banderas N, Z, C y V , estas son modificadas por la ALU y
son almacenadas en los 4 bits más significativos de los 32 bits del Current
Program Status Register CP SR o Registro de estado.
● e) Verdadero: posee la instrucción LDM y STM para carga y
almacenamiento de múltiples registros.
● f) Verdadero, el barrel shift y alu en una sola intruccion
● g) Verdadero: a través de Thumb. Los procesadores más recientes traen un
conjunto de instrucciones adicional llamado Thumb, de 16 bits (2 bytes) de longitud por
instrucción, en lugar de 32 bits (4 bytes) como el juego estándar de ARM. Thumb es un
subconjunto formado por las instrucciones que se usan con más frecuencia.
69. ¿Qué característica del ejer 65 no es compartida por la mayoría de
otros RISC?
Risc: es un grupo reducido de instrucciones para computadora (minimiza la
complejidad de hardware y codificación de de instrucciones necesarias
manteniendo pequeño el set de inst distintas)
● rta: la característica de inclusión de instrucciones poderosas de carga y
almacenamiento de múltiples registros en ARM
70. No existe ADC que no use al menos el bloque constructivo siguiente:
a) Alguna clase de Flip Flop.
b) Comparador de algún tipo. -----> Todos usan p/ obtener 1 y 0
(verdadero)
c) Multiplexor analógico de N canales.
71. En un conversor D/A tipo R-2R de N bits , la red de resistencias de
valor R-2R requiere:
a) 2N -1 resistencias.
b) 2N resistencias.
c) 2N resistencias.
Requiere 2N resistores en modo tensión y 2N+1 en modo corriente para
dar ganancia. La imagen es de 4 bits tiene 8 resistencias
MODO CORRIENTE MODO TENSIÓN
DAC R2R: Requiere llaves=1*N ; Resistores=2*N y sí es corriente 2*N+1
72. Indique si las siguientes instrucciones usan el modo de
direccionamiento [Link] 72
73. Indique si las siguientes instrucciones usan los modos de
direccionamientos pre- o post-indexado. (sale)
a. STR r6,[r4,#4]
b. LDR r3,[r12],#6.
c. LDRB r4,[r3,r2]!.
d. LDRSH r12,[r6]
a. STR r6,[r4,#4] pre-indexado. Sin actualizar pero con offset #4
b. LDR r3,[r12],#6 post-indexado.
c. LDRB r4,[r3,r2]! pre-indexado con actualización.
d. LDRSH r12,[r6] pre-indexado con offset #0 o sin offset
74. Un transductor cuya función de transferencia es 20uV/Kg es utilizado
para medir una carga de hasta 1Kg con una resolución exacta de 1gr
por cuenta. Calcular la ganancia necesaria para adaptar la señal a un
ADC con Vref de 5V y 13 bits.
𝒅𝒂𝒕𝒐𝒔
● 𝑃𝐹𝐸=1𝑘𝑔
● 𝑃𝐿𝑆𝐵=1𝑔𝑟=0,001𝑘𝑔
● 𝑉𝑅𝐸𝐹=5𝑉
● 𝑛=13𝑏𝑖𝑡𝑠
● 𝐺𝑠𝑒𝑛𝑠𝑜𝑟=20𝜇𝑉/𝑘𝑔
Solución:
Creo que tambien puede preguntar bits para 2kg
𝑁
2 = 2000𝑔/1𝑔
despejamos N con el log en base 2 y lo obtenemos
la ganacia la podemos sacar rapido como Vlsb_SEN=FT_SEN*RES vl
VLSB=VREF/2^N
G=Vlsb_sen/VLSB
75. Para un ADC de 8 bits y Vref=3V. Calcule error de ripple y error de
ganancia.
76. En una transmisión RS232 de 9600 baudios configurada en 8N1
determinar: a) tiempo de bits b) Máxima cantidad de bytes enviada
por segundos.
77. Dibuje cómo sería una trama RS232 en formato 8N1 , que transmita
el valor 0xAA (ver)
“8N1” significa: 8 bits de datos , N (no parity) es sin bit de paridad , 1 bit de
stop.
Nº total bits para la trama = 1 bit de start + 8 bits de datos + 1 bit de stop =
10[bits].
0xAA=10101010
78. Un vector de elementos debe ser accedido desde el ensamblador,
cada elemento de este vector es una estructura de 8 int32, si
tenemos al puntero del vector en R0 , resuelva en una sola línea de
código de lectura del primer int del elemento indicado en R1.
ldr r2, [r0,r1]
79. La instrucción PUSH{} y POP{} es un caso particular del STM y LDM ,
reemplace las siguientes instrucciones por su equivalente en STM y
LDM.
PUSH{R4,R5}
POP{R4,R5}
PUSH{R4,R5} --------> STMFD R13!,{R4,R5}
POP{R4,R5} ---------->LDMFD R13!,{R4,R5} no va LR, xq es cuando es non
leaf
80. Considere la instrucción : LDR r11,[r0] Complete lo que falta y asuma
que la dirección en el registro r0 es 0x8000 y antes que la instrucción
se ejecute , el dato aparece como sigue:
81. Indique:
a) el código nemotécnico de la instrucción que efectúe la operación
indicada en el siguiente esquema.
b) el modo de direccionamiento es pre- o post-indexado ?
pre indexado STRB r0,[r1,#12]
82. Determine el error de cuantificación de un conversor A/D de 8 bits
cuyo rango de entradas analógicas a convertir es de 1V . Si se desea
disminuir a la mitad ese error , se debería duplicar el número de bits
del conversor para lograrlo? Justifique su respuesta.
83. las instrucciones NOR y NAND no estan presentes en las
instrucciones de ARM,
Diseñe un algoritmo que respresente r0=r1 nor r2 en assembly
con nor , aplicamos or luego lo negamos con el
mvn orr r0,r1,r2
mvn r0,r0
con nand aplicamos and y lo negamos con el mvn
and r0,r1,r2
mvn r0,r0
84. Escriba el código assembly del ARM para intercambiar el contenido
de 2 registros r0 y r1 sin utilizar otro registro
MOV R0, #0B11110000
MOV R1, #0B00001111
EOR R0, R0, R1 ; R0 = R0 XOR R1
EOR R1, R0, R1 ;R1 = original value of R0
EOR R0, R0, R1 ; R0 = original value of R1
Otra forma
sub r0,r0,r1
add r1, r1,r0
sub r0,r1,r0
85. Muestre dos diferentes formas para limpiar todos los bits en el
registro r12 a cero. No se debe usar ningún otro registro que no sea
r12 ni tampoco un operando inmediato.
Otra forma
mov r0,#0b11110111
sub r0,r0,r0
86. Cuál es el valor de R2 después de la ejecución del fragmento de
código assembly del arm.
MOV R0, #0x11 ------------> R0=17
1
LSL R1, R0,#1 ;----------> R1 = R0*2 -----> 17*2 = 34
2
ADD R2,R1,R1 LSL #2 -----------> R2 = R1 + R1*22 R2 = 34 + 34*2 = 170
Respuesta : R2 = 170 10
87. Indique verdadero o falso. La unidad de corrimiento en el arm:
a) El desplazamiento aritmético a la izquierda y rotación a la
izquierda se pueden realizar a partir del desplazamiento aritmético a
la derecha y rotación a la derecha, respectivamente. [V/F].
Porque la rotación a la izq se puede hacer con el de la derecha, pero el
desplazamiento aritmético es igual al desplazamiento lógico a la
izquierda(No se realiza con el desplazamiento aritmético a la derecha).
b) Se conecta al operando 2 y posee las siguientes funciones:
desplazamiento lógico a la derecha y a la izquierda, desplazamiento
aritmético a la izquierda y rotación a la derecha. [V/F]
Porque: no existe desplazamiento aritmético a la izquierda (ya qué es
igual al logico). tiene el aritmético a la derecha y rox y ror
c) Se conecta a la salida de la ALU y posee las mismas funciones que
en el caso anterior a excepción del desplazamiento aritmético que es
a la derecha. [V/F].
Porque: la unidad de corrimiento en el ARM se conecta a la entrada de la
ALU
88. Indique verdadero o falso para las siguientes sentencias referidas al
procesador ARM (CPRS) (SALE)
Por defecto, las instrucciones de procesamiento de datos no afectan
las banderas del CPSR. FALSO es el current program status registrer
Pueden o no ser modificadas cuando una operación es realizada. Por ej
cuando se utiliza CMP Y TST se modifican las banderaS y son instrucciones
de procesamientos de datos.
Las operaciones que toman un valor de la memoria lo multiplican
por un coeficiente o lo suman a otro registro y luego almacenan el
resultado en la memoria como una sola intruccion no existe en ARM
verdadero
La unidad de corrimiento en el ARM se conecta operando 2 y posee
las siguientes funciones desplazamiento lógico a la izquierda y a la
derecha desplazamiento aritmético a la izquierda y rotación a la
derecha. FALSO ya que el desplazamiento aritmético a la izquierda
no existe en arm ya qué es lo mismo que el desplazamiento lógico, y
además existe el desplazamiento aritmético a la derecha ARS.
Las instrucciones simples de carga toman un solo valor de memoria y
lo escriben en un registro de propósito general. Las instrucciones
simples de almacenamiento leen un valor de un registro de
propósitos general y lo almacenan en la memoria. VERDADERO
89. Responda con verdadero o falso las siguientes afirmaciones:
a) El modelado de ruido significa desplazar el ruido a frecuencias más
elevadas, disminuyendo el ruido en baja frecuencia. Verdadero
b) La relación señal ruido de un ADC con sobre muestreo se define
como (6,02 N +1,769 dB). Falso
Primero porque la formula que da es para calcular bits en adc ideal
Y segundo porque se define con la formula, donde L es el numero de
orden
c) Cualquier ADC que trabaje con sobre muestreo puede mejorar la
cantidad de bits equivalentes. Verdadero
2𝑁
se debe sobremuestrear en un factor de 2
d) Aumentar el número de etapas en un ADC Sigma Delta implica
aumentar el sobre muestreo. Falso
Aumentar etapas mejora la SNR
e) El modelado de ruido significa filtrar el ruido en bajas frecuencias
Falso
Desplazar el ruido a altas frecuencias, logrando disminuir el ruido a bajas
frecuencias.
90. Dado el siguiente código: (lenguaje máquina)
0x10000 otro: ldr r1,[r2], #1
0x10004 add r0,r1
0x10008 subs r3,#1
0x1000C bne otro
¿Qué valor contendrá el código máquina del branch (bne)? Ingresar el
valor en base 10.
siempre es PC +8 con el branch siempre para abajo y ves cuántas
posiciones de memoria te moviste.
91. Indique verdadero o falso en el marco del siguiente contenido:
Ejecución normal y ejecución condicional de las instrucciones en el
ARM.
a) La ejecución condicional es una característica inusual pero
potente del conjunto de instrucciones ARM. Otras estructuras
normalmente solo tienen saltos condicionales. Verdadero
La ejecución condicional, es solo una vía para ejecutar una instrucción o
grupo de ellas en función de una condición.
Es sencillo y se obtiene código mas compacto cuando se debe ejecutar
pequeños grupos de instrucciones para una condición dada.
Tambien con esto evitamos un poco los branch, que ralentizan la
ejecucion del programa, pero de todos modos son un bien necesariom,
no se pueden evitar.
b) Los códigos de condición son simplemente una forma de probar
los indicadores o banderas de estado de la ALU. Verdadero
Las Instrucciones en ARM, pueden opcionalmente establecer banderas de
condición basadas en el resultado de esta instrucción: si es negativo, cero,
hubo desborde, etc.
Las instrucciones siguientes, se pueden ejecutar condicionadas a el
estado de esas banderas.
c) El “núcleo” (core) compara el campo de condición en la instrucción
con las banderas NZCV para determinar si la instrucción debe
ejecutarse. Verdadero
92. Un ADC de doble rampa, como su nombre lo indica posee dos
rampas, las cuales tendrán las siguientes características (acá hay
que elegir las opciones que da)
a) Referido a su pendiente la 2da rampa es PEND=Vref/RC ---->
Pendiente constante
b) Referido a su duración la 1er rampa es “ T “ -------> Tiempo constante
c) Referido a su pendiente la primera rampa es PEND= Vin/RC----->
Pendiente variable
𝑉𝑖𝑛
d) Referido a su duración la 2da rampa tiene 𝑡𝑥 = 𝑉𝑟𝑒𝑓 * 𝑇-------->T
variable
93. Indique Verdadero o Falso para diferentes formas de limpiar todos
los bits del registro R12 con ceros:
a) AND R12,R12,#0 Verdadero ---------> R12=R12x0
b) XOR R12,R12,R12 Falso , “Porque la instrucción es EOR R12,R12,R12”
c) RSR R12,R12,R12 Falso, Porque la instrucción es RSB R12,R12,R12 (es
R12= R12-R12)
d) MOV R12,#0 Verdadero--------->R12=0
94. Indique Verdadero o Falso a las sentencias respecto a la curva que se
muestra en la siguiente figura:
a) (59)hex de dato, paridad par y bit de parada Verdadero
10011010=0X59 ya qué se lee de izquierda a derecha
EL START ES CON 0 Y EL STOP CON 1 Y EL BIT ANTES DE ESTE ES EL DE
PARIDAD
b) dato transmitido (5A)hex falso
c) 8 bits de datos, paridad impar y 1 bit de parada falso
No es impar, es par
d) paridad par Verdadero
95. Seleccione una respuesta de acuerdo a la siguiente trama de una
transmisión serie asíncrona.
● Seleccione una:
● a. dato transmitido (9A)_16
● b. 7 bits de dato, paridad impar y 1 bit de stop.
● c. (59) de dato, paridad par y bit de parada.
96. Responda Verdadero o Falso. El tiempo de conversión en períodos de
ciclo de reloj Tclk de un ADC de n bits: (sale)
a) Tipo “Flash”, 1n Tclk Falso xq depende de la velocidad de propagación
de las compuertas [un ciclo de reloj] es Tc=1*t_clk
b) Tipo “Doble rampa”, 2n^2 Tclk Falso Porque el Tc=Tclk*2^(𝑛+1)
c) Tipo “aproximaciones sucesivas”, Tc= (1+n) Tclk Verdadero
97. Indicar si es Verdadero o Falso cada sentencia referida al uso del
siguiente programa ARM para determinar si una computadora es
big-endian o little-endian.
COMO RESOLVERLO ------> R2---->BIG ENDIAN ----> 0A BC D8 76
0 1 2 3
--------->R2----->LITLE ENDIAN--->76 D8 BC 0A
0 1 2 3
98. Analice determinadamente el siguiente código en assembly del ARM
para determinar si una computadora es big-endian o little-endian y
luego seleccione una opción.
99. Indicar si es verdadero o falso cada sentencia referida al uso del
siguiente programa ARM para determinar si una computadora es big
endian o little endian.
● MOV R0, #100
● LDR R1, =OxABCDE76
● STR R1, [R0]
● LDRB R2, [R0,#1]
Si R2 contiene 0x76 es big endian [V/F]
Si R2 contiene 0xA es little endian [V/F]
Si R2 contiene 0xBC es big endian [V/F]
Si R2 contiene 0xDE es little endian [V/F]
COMO RESOLVERLO ------> R2---->BIG ENDIAN ----> 0A BC DE 76
0 1 2 3
--------->R2----->LITLE ENDIAN--->76 DE BC 0A
0 1 2 3
100. En una función padre que llama a una hija, quien es el encargado
de guardar los registros no preservados.
Es así ya que es la misma función la que se encarga de guardar los
registros que va a utilizar. La hija tendrá que guardar el link register (sí es
no hoja) y los registros que va utilizar si es que va a llamar a otra función.
101. Determine cuáles de las siguientes instrucciones permite leer el
elemento de 4 de un vector de tipo word donde R1 es la dirección
base.
La a) puede llegar a ser si es qué la instrucción es ADD R1,R1,#16 y la b)
tienen operaciones no válidas ya que les falta el segundo operando.
la c) solo tiene un offset de 1, por lo tanto va a leer el segundo elemento
del word
la d) es la correcta ya que el desplazamiento del 4 dos veces lo lleva a que
su valor sea de 16 y llegar al 4to elemento.
102. Dado un código en C complete los condicionales necesarios, para
que el código ensamblador se comporte de la misma forma.
● GE mayor o igual
● GT mayor que
103. Un ADC de doble rampa, como su nombre lo indica posee dos
rampas, las cuales tendrán las siguientes características.
104. Seleccione las instrucciones adecuadas a fin de transformar un
fragmento de código en lenguaje C a un fragmento de código en
lenguaje Assembly del ARM. Suponga qué las variables enteras (con
signo) g y h están en los registros R0 y R1, respectivamente.
R0=G ; R1=H
CMP R0,R1------> Comparó G con H y actualizo las banderas
ADDGE R0,R0,R1 --------> Si R0 es mayor igual que R1, hago R0=R0+R1
SUBLT R0,R0,R1 ----------> Si R0 es menor que R1, HAGO R0=R0-R1
105. Dada la siguiente unidad procesadora de 4 bits con su respectivo
formato de palabra de control determine las mismas para
implementar las operaciones siguientes:
1) CLC R1(R1<-0000) 2) SET R1(R1<-1111)
La F es bits a la izq y al ultimo el bit de arriba
A B D op shif
0x2403 -----> 001 001 000 0000 011
R1 R1 - F=A Bus=0
0xD8A0------> 110 110 001 0100 000
R6 R6 R1 F=A+B’ no hay corrimiento
0x24B0-----> 001 001 001 0110 000
r1 r1 r1 F=A-1 no hay corrimiento
0XD8E0------> 110 110 001 1100 000
R6 R6 R1 A XOR B sin corrimiento
Demostración de los verdaderos
Ejemplo r6 xor r6= 1010
1010
resultado 0000
Ejemplo R6+R6’(NEGADO)
1010
0101
resultado 1111
106. Dada la Unidad Procesadora de la figura y su tabla de funciones:
(PALABRA DE CONTROL)
Determine la micro-operación que se ejecuta para cada palabra de
control: (PALABRA DE CONTROL)
A B D F E
1) 0x0000 000 000 000 0000 000
Entrada Entrada Ning F=A No corrimiento
INVALIDA (NO PODES TENER TODAS LAS ENTRADAS Y SALIDAS EN
0)
2) 0xFFFF 111 111 111 1111 111
R7 R7 R7 F=A ----
SALIDA <- ENTRADA
107. Dada la Unidad Procesadora de la figura y su tabla de
funciones:(PALABRA DE CONTROL)
a) RTA: R2 ←--- 4R1 Desplazamiento después de la función
001 001 010 0010 001 ------> 0X2511 respuesta
R1 R1 R2 F=A+B SHL
b)Determine la micro-operación qué se ejecuta para la siguiente
palabra de control 0xEC28 (CMP R7,R3) RESPUESTA CMP R7,R3
111 011 000 0101 000
R7 R3 NINGUNA F=A-B NO HAY
108. Palabra de control
00 1 001 111 0010 001 0X2791
R0 R0 R7 A+B SHL
000 100 010 0010 001 0X1111
NADA R4 R2 A+B SHL
001 001 000 0010 001 0X2411 CORRECTO
R1 R1 NING A+B SHL
001 001 000 0001 001 0X2409
R1 R1 NING A SHL
109. Palabra de control - Micro Operación – Multiple opción
110. Responda Verdadero o Falso las siguientes sentencias referidas al
conversor A/D tipo flash indicado en la figura: (adc flash)
a) y b) FALSO. El error de cuantificación en un ADC tipo flash es +-½
LSB en todos los niveles a excepcion del 1ero y ultimo, que tiene ½
y 1LSB respectivamente.
c) FALSO. El numero de bits es 3 ya qué tiene (2^n)-1 comparadores
entonces
𝑛 𝑁
𝑐𝑜𝑚𝑝 = 2 − 1→7 = 2 − 1 → 𝑙𝑜𝑔2(8)/𝑙𝑜𝑔2(2) = 𝑁 = 3𝐵𝑖𝑡𝑠
d) FALSO. Para disminuir a la mitad el error de cuantificación hay
1 1 1 ∆𝑣 1 ∆𝑣
que aumentar 1 bits al conversor 𝑒' = 2
𝑒 = 2 2
( 𝑁 )= 2
( 𝑁+1 )
2 2
111. Los saltos o bifurcaciones (branch) se pueden clasificar como:
absolutos o relativos, como así también de condicionales o
incondicionales. Según esto, ¿cómo clasificaría a la siguiente
instrucción? BEQ rótulo
Es salto condicional porque se hace si se cumple la condicion eq y es relativo
Una branch relativo es aquel en la que la dirección de destino se calcula en función del valor de la PC
actual (contador de programa). Dado el ejemplo anterior, un ensamblador calcularía que la etiqueta de
destino está ocho bytes por delante de la instrucción de destino b (en el código Arm) y luego generaría una
rama relativa que significa 'saltar ocho bytes hacia adelante'. Las ramas relativas son esenciales para el
código independiente de la posición, que se espera que se ejecute correctamente en cualquier ubicación de
la memoria. Las ramas relativas más comunes en Arm son instrucciones únicas y tienden a ser las ramas
más eficientes disponibles, aunque tienen un alcance limitado.
Una rama absoluta siempre saltará a la dirección especificada, independientemente de la PC actual. Las
ramas absolutas se utilizan cuando la dirección del destino se proporciona como un puntero de función,
por ejemplo. Sin embargo, debido a que una rama absoluta requiere una dirección de destino completa de
32 bits, las ramas absolutas generalmente requieren una carga o algún otro mecanismo de carga constante
además de la instrucción de rama en si
112. Guia lenguaje maquina
[Link]
Para convertir de máquina a hex usar la herramienta.
para la conversión inversa colocar los byts como si fuera big endian:
3 modos: procesamiento de datos, memoria y bifurcación
imp para la rot ejemplo un inmediato #FF0 es (32-4n) y a eso lo dividimos
por 2 ej; una rot a la izq es n=1, 28 y entonces rot=14.
Para el caso del branch usar las tablas..
113. El Segundo principio de Patterson, se refiere a hacer mas rápido el
caso mas común. Esta característica se materializa en un diseño RISC
por:
Seleccione una:
a. Diseñando el conjunto de instrucciones de manera que sea
lo mas regular posible, es decir que todas las instrucciones o al
menos un conjunto de ellas, tengan una estructura similar
b. Ninguna es correcta
c. Optimizando un pequeño conjunto de instrucciones para que
se ejecuten de manera rápida y el resto que tarde mas tiempo.
d. Dejando solo las instrucciones mas frecuente, descartando
aquellas que no es frecuente su uso.
La respuesta correcta es: Dejando solo las instrucciones mas frecuente,
descartando aquellas que no es frecuente su uso.
El conjunto de instrucciones ARM incluye solo instrucciones simples y de
uso común. El numero de instrucciones se mantiene bajo para que el hardware
necesario para decodificar la instrucción y sus operandos pueden ser simples,
pequeños y rápidos. Operaciones mas elaboradas pero menos comunes se
realizan usando secuencias de múltiples instrucciones simples. Por lo tanto,
ARM es un grupo reducido de instrucciones para computadoras (RISC). Una
arquitectura de tipo RISC minimiza la complejidad del hardware y la codificación
de instrucciones necesarias manteniendo pequeño el set de instrucciones
distintas
114. Asumiendo que Ud. tiene un sistema de memoria little-endian.
¿Que contendrá el registro R4 después de la ejecución de las
siguientes instrucciones? El registro R6 tiene el valor 0xBEEFFACE y el
registro R3 posee el valor 0x8000.
● STR R6, [R3]
● LDRB R4,[R3] Nota: Ingrese 0xDDDDDDDD donde D es un dígito
R3------------> CE FA EF BE-------->Litle endian
0 1 2 3
Por lo tanto el resultado es pos 0=0xCE
115. Escriba el código Assembly de ARM para invertir los bits en un registro.
Supongamos que el registro de interés es R3.
el a) Te da todos unos ya q la orr es uno siempre qué alguno de los dos
sea 1
el b) Es una and con todos unos por lo cual te va a dar el mismo registro
R3
el c) Es la CORRECTA ya que mvn hace un complemento a 1 de del
registro (niega todos los bits).
el d) Nos da un error ya que no existe /R3 en AR.M
el ) Hace una exor con el mismo número por lo cual nos daria todos los
bits en 0 como resultado.
116. TABLAS
117. Escriba en binario los últimos 12 bits del código máquina de esta
instrucción MOV R1,#0xFF0
Recuerde escribir sin ningún espacio ni puntuación y en binario
Lo que se utiliza es el primer caso de procesamiento de dato y como pide
los ultimos 12 bits es un rot y un inmediato
como es 0xFF0 no lo puedo ingresar de una, por lo tanto tengo que hacer
una rotacion de 32-cantidad a rotar=32-4=28 y esto lo divido 2 rotar =14 ,
por lo tanto Rot=14=1110 ; innm8=FF=1111 1111
los 12 bit quedan=111011111111=0xEFF
118. Indicar Verdadero o Falso.
El rango de entrada total (FS) en un ADC es independiente del
número de bits de resolución, N Verdadera
Existe un rango de voltaje de entrada analógica sobre el cual el
ADC producirá un código de salida dado; este rango es la
incertidumbre de cuantificación y es igual a 1/2 LSB. Falsa
No necesariamente es ½ de LSB, porque este no estaria
relacionado el el error de cuantificacion
¿Es equivalente el valor del LSB expresado en diferentes
formas para un ADC de 8 bits y FS de 10V? 1) 39.1mV 2) 3906
ppm FS 3) 0.39 % FS Verdadera
𝐹𝑆 10
VLS= 𝑁 = 8 = 39. 1𝑚𝑉=
2 2
𝐹𝑆 𝐹𝑆
=VLS= 𝑁 = 8 * 100 = 0. 39% * 𝐹𝑆
2 2
39𝑚𝑉 6
=VLS= 10𝑉
* 1𝑥10 = 3906𝑝𝑝𝑚
119. Si tuviéramos la siguiente comparación MOV R1,#10 MOV R2,#-10
CMP R1,R2 ¿ Cuáles de las siguientes instrucciones se ejecutarán si
son colocadas luego del CMP ?
Seleccione una o más de una:
a. MOVVS R1,#10
b. MOVLS R1,#10 ESTA SI
c. MOVPL R1,#10 ESTA SI
d. MOVHI R1,#10
Ya qué 10-(-10) es 20 entonces las banderas n=0 (No es negativo), z=0 (el
número no es 000..), v=0(no hay overflow ya qué no nos da una incongruencia
con el signo del número resultado de la resta ), c=0 (carry sí supera los 32 bits y
no lo hace)
LS ---> se cumple cuando C=0 o que Z=1. En este caso C=0 por lo cual se cumple
PL----> se cumple cuando N=0, En este caso N=0 por lo cual se cumple
120. Dada la siguiente trama de una comunicación serie asíncrona
correspondiente a una transmisión de caracteres ASCII
DATOS 0100101=0X25(%)
Esta mal la paridad, son 7 de datos, 1 de star, 1paridad y 1 stop: paridad
par
121. Indique Si o No para cada una de las siguientes preguntas
relacionadas a la interface SPI:
● ¿Es posible tener múltiples maestros en SPI? NO
Es posible tener múltiples esclavos, pero no más de un maestro por cada
uno.
● ¿SPI admite la comunicación full duplex? SI
SPI transmite y recibe en un clk al mismo tiempo es full duplex
● ¿Puedo conectar varios esclavos usando una sola línea de
selección de esclavos (SS) sí tengo más esclavos que líneas de
GPIO?SÍ
Conexion daisy-chain (margarita)
● Los datos se pueden transmitir de forma continua sin
interrupciones SI
Si, porque es sincronica
● El bit de inicio-parada es compatible con SPI NO
No, ya que es comunicacion sincrona, la UART admitebit de
inicio-parada
● ¿SPI es comunicación asíncrona? NO
Depende del clok
122. ADC Aprox. Sucesivas - Diagrama en bloques
123. Responda Verdadero o Falso de acuerdo al diagrama del
conversor A/D siguiente (adc aproximaciones sucesivas)
● Tipo aproximaciones sucesivas de 5 bits. FALSO
● Tipo de aproximaciones sucesivas de 5 bits. FALSO
Es de aproximacion sucesiva de 3 bit
● Tiempo de conversión: 5 clk VERDADERO
si NO se encuentra FFE --->Tc= (1+n) Tclk
si se encuentra FFE --->Tc= (2+n) Tclk COMO EN ESTE CASO
● Rango de señales analogicas a convertir a positivo VERDADERO
● Tipo doble rampa 3 de bits FALSO
Es aproximacion sucesiva
124. Dado el diagrama del conversor A/D de la figura,
responda las siguientes preguntas:
● 1)Si el rango de la señal analogica a convertir esta entre -2,5V y
+2,5V Qué valor debe tener Vref . RTA: 0V
Vref=(Vmax+Vmin)/2=0
● 2)Si la máxima frecuencia de la señal analógica a convertir es
de 20kHz Qué valor debe tener el Ck. RTA
● 3)De qué conversor se trata RTA: sigma delta
125. Se puede en código assembly del ARM intercambiar el contenido de
los registros R0 y R1 sin usar ningún otro registro o posición de memoria
MOV R0, #0B11110000
MOV R1, #0B00001111
EOR R0, R0, R1 ; R0 = R0 XOR R1
EOR R1, R0, R1 ;R1 = original value of R0
EOR R0, R0, R1 ; R0 = original value of R1
Otra forma
sub r0,r0,r1
add r1, r1,r0
sub r0,r1,r0F
Codigos
126. Se tiene los siguientes codigos en C, traducirlo a lenguaje assembler
Dado el siguiente código en C determine cual es el fragmento de assembly
que lo implementa.
R0=G ; R1=H
CMP R0,R1------> Comparó G con H y actualizo las banderas
ADDGE R0,R0,R1 --------> Si R0 es mayor igual que R1, hago R0=R0+R1
SUBLT R0,R0,R1 ----------> Si R0 es menor que R1, HAGO R0=R0-R1
127. Escriba una secuencia de instrucciones que recorra un bloque de
memoria de 250 elementos de tipo byte. El bloque comienza en la
dirección contenida [Link] programa debe contar todos los
números pares negativos y salvar dicha cuenta en el registro r7.
VECT dcb 2,-3,5,10,-2,-8,3,-1,-4,-6
mov R0,#0x200
LDR R1,=VECT
mov R2,#0
mov R3,#0
FOR
LDRB R3,[R1,R2] ;R3=[R1]+i
STRB R3,[R0,R2] ;EN MEMORIA EN R0 GUARDO EL CONTENIDO DE R3+i
ADD R2,R2,#1
CMP R2,#10
BNE FOR
STMFD SP!,{R4}
MOV R4,#0
MOV R5,#0
LOOP
CMP R4,#10
MOVEQ R0,R5
BEQ SALIR
LDRB R1,[R0],#1
TST R1,#0B1 ; DEVULVE LA BANDERA Z, SOLO CUANDO ES 0 SE CUMPLE
LO SIGUIENTE (ACTUALIZA LAS BANDERAS) TEQ(HACE UNA XOR ENTRE RN Y OPERANDO 2)
ADDNE R4,R4,#1
BNE LOOP
TST R1,#0B10000000
ADDNE R5,R5,#1
ADD R4,R4,#1
B LOOP
SALIR
END
128. Suponga que tenemos el siguiente código en C:
for(i=0;i<8,i++){
a[i]=b[7-i];
El índice i está declarado como un entero. Asuma que los arreglos a y b
contienen solamente datos de tamaño byte y están ubicados en memoria
RAM a partir de la dirección 0x40000000. Traducirlo en instrucciones del
lenguaje assembly del ARM.
Resuelto ejercicio, en carpeta. ejercicio 26
129. Escriba una subrutina que se invoque con BL strcmp la cual debe
ser capaz de comparar dos cadenas de caracteres y determinar si son
idénticas. Las cadenas se hallan en memoria, están apuntadas por
los registros r1 y r2 y finalizan con el carácter nulo (0x00). Este
procedimiento retornara en r0 con 0xFFFFFFFF en caso de igualdad y
con 0x00000000 en el supuesto de que las cadenas sean distintas.
Resuelto en carpeta, ejercicio 28. Esta de dos maneras
130. Convertir en lenguaje ensamblador de ARM el siguiente código:
R0=0; R1=0;
while(R0<200){
R1=R1+R0*2; R0 ++ ;
}
Hecho en carpeta, ejercicio 33
131. Suponga que tenemos una simple función en C que retorna 0 si
(x+y) < 0 y 1 de otro modo:
int foo(int x, int y)
if (x+y < 0) ;
return 0;
else
return 1 ;
Traducirlo en instrucciones del lenguaje assembly del ARM .
Indique los supuestos necesarios que usted asume.
Resuelto en carpeta, ejercicio 36
132. Escriba en código assembly del ARM una subrutina que debe
detectar la presencia del número 42 dentro de una tabla de 250
elementos de tipo byte sin signo cuya dirección de comienzo se
especifica en el registro R0. La subrutina debe retornar en R3 el
número índice de la primera posición de la tabla que contiene el
número 42 . Si ninguna posición de la tabla contiene 42 entonces R3
debe retornar el valor -1.
Hecho en carpeta, ejercicio 39
133. Se han tomado 4 lecturas del ADC y se guardaron de manera
simple en cuatro posiciones consecutivas de memoria. En R2 se
guardó la posición actual. Escriba el programa en assembler para
ARM , para que realice el promedio de las lecturas.
Hecho en carpeta, ejercicio 40
134. Se tiene los siguientes códigos en C, traducirlos a lenguaje
assembler:
if (g>h)
g=g+h;
else
g=g-h;
if (g<=h)
g=g+1;
else
h=h-1;
Hecho en carpeta, ejercicio 41
135. Diseñe un algoritmo para contar los unos en un registro R1
Hecho en carpeta, ejercicio 44
136. Escriba el código assembly del ARM para intercambiar el
contenido de 2 registros r0 y r1 sin utilizar otro registro
Hecho en carpeta, ejercicio 45
137. Implemente una secuencia de instrucciones que active los bits de
la dirección de memoria 0X8000. El orden de las posiciones del bit a
activar es 1,3,5,7,6,4 y 2 respectivamente . Entre la activación de un
bit y otro debe llamar a una subrutina denominada “delay”
Hecho en carpeta, ejercicio 47
138. Qué es lo incorrecto en la siguiente instrucción?
LDRSB R1,[R6] R3,LSL #4
a) El offset no puede ser un ser registro con desplazamiento
b) Sobra la letra S en el nemonico de la instrucción
c) No existe esa instrucción
d) El registro R3 y la operación LSL #4 deben estar dentro del corchete
rta: la instrucción con signo modifica el código máquina, reemplaza el
desplazamiento por el segundo campo de función, Por eso no podés usar un
registro desplazado Podés usar un inmediato de hasta 8 bits.