Foro no oficial de la UPCT

Versión completa: 2º Parcial Mayo 2023
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Como ví otro post parecido voy a subir las preguntas de este parcial, me las apunté justo cuando salí para que no se me olviden por si no aprobaba:

Teoría: Cinco preguntas.

-Explica la organización de la memoria en un microprocesador PIC16F y sus características
-Nombra dos tipos de direccionamiento de e/s y explícalos. (Entrada/salida)
-¿Qué es el vector de interrupción? ¿Y una interrupción vectorizada?
-Nombra dos parámetros del modulo A/D que modifican la resolución de una conversión (Esta era un poco rara)
-Explica la arquitectura de un FPGA. ¿Qué es un clb?

La puntuación de cada pregunta rondaba entre 1,7 y 2,2 puntos.

Parte de VHDL:

Este año, según Rafa, ha puesto el examen un poco más fácil ya que hemos tenido muy poco tiempo para prepararnos el parcial. 

Los puertos de entrada y salida que nos daban eran los siguientes:

Entrada

-Dial, de 4 bits, que determinará la operación de la cámara.
-a_reset, 1 bit, reset asíncrono.
-clk, 1 bit, el ciclo de reloj.
-dispara, 1 bit, sería como apretar el botón de hacer la foto.

Salida

-Obturador, 1 bit, la salida de la cámara.

El examen te pedía programar una cámara de fotos en VHDL. En la máquina de estados de Moore, tenemos 3 estados: Mantiene, captura, y reposo. El estado inicial, en caso de reset, será reposo. El valor de "Dial" se actualizará en cada flanco de reloj (conectado a reset) , donde, si es correcto su valor se guardará, si no, no se actualiza. Una vez actualizado el valor, Si se pulsa el botón de dispara se hará una captura. (En este caso tiene que ser un flanco, no solo que su valor sea 1). Cuando empiece la captura, se irá a ese estado, donde depende del valor de dial cambiará el tiempo que se estará haciéndose la captura. La salida obturador vale 0 en otros estados, 1 cuando se está haciendo la captura, y 0 cuando termine. (No me acuerdo si estos tres valores eran 0 1 0 o 1 0 1 pero es lo mismo básicamente). Cuando termina, obviamente va a reposo y en reposo no llegaría a mantiene hasta que dial tenga un valor válido. En mantiene, se quedará así hasta que se pulse dispara.

Los valores de dial son los siguientes:

-0010: La captura tarda en hacerse 250ms. (Decía algo de 1/4 pero también daba el tiempo 250ms que es lo que nos interesa)
-0100: La captura tarda en hacerse 8ms.
-1000: La captura tarda en hacerse 4ms.
-0001: No hace nada.
(Obviamente si dial no tiene estos valores pues no es válido y no se actualiza el estado)

El ciclo de reloj era de 1MHz. También se pide un testbench en el que se cubran las posibles combinaciones de botones y funcionamiento del programa. Es bueno reservarse un tiempo para hacer el testbench porque es importante. 

Adjunto el diagrama de estados, creo que no me dejo nada más:


[Para ver los enlaces debes registrate]