Está en la página 1de 3

Práctica 5 Microprocesadores Curso 2021/22

Programación con Entrada/Salida


(2 horas)

Objetivos
Durante el desarrollo de esta práctica se pretende alcanzar los siguientes objetivos:
• Acceso a los registros de los controladores de los dispositivos.
• Programación de drivers.
• Sincronización por encuesta.
Consideraciones
Para el desarrollo de la práctica en el tiempo de laboratorio estimado, se precisa analizar
con anterioridad los controladores de los dispositivos descritos en los anexos, además
de traer preparados los pseudo-códigos y tablas de uso de registros para los programas
que se van a implementar. Esta práctica será entregable de forma presencial con una
cita la semana del lunes 13 de Diciembre en horario asignado a la asignatura.
Desarrollo
Cronómetro
El simulador tiene un dispositivo muy sencillo basado en una pantalla de 7 segmentos,
descrito en el Anexo 1. Este dispositivo se maneja con dos registros de datos, en los
cuales se indica (a tamaño byte) qué segmentos se quiere encender de cada uno de los
bytes. En este desarrollo se pretende realizar un programa que use dicha pantalla para
implementar un cronómetro simplificado. Dicho cronómetro se iniciará cuando se pulse
el pulsador KEY_0 visto en el seminario y explicado en el Anexo 3. A continuación el
cronómetro va mostrando los segundos que pasan. Para medir el tiempo usa un timer
privado descrito en el Anexo 2. Finalmente, el programa termina cuando se pulsa KEY_1
o cuando se llega a los 60 segundos.

Tanto la sincronización del timer como del pulsador se hará mediante encuesta.
Además, la gestión de los diferentes dispositivos se implementará en funciones,
aplicando de esta manera la programación modular y facilitando la depuración.

De manera opcional, y que se valorará, se podrá realizar una versión del cronómetro que
cuente segundos y minutos. Además, el botón KEY_0 debe parar y poner a 0 el
cronómetro.

Anexo 1. 7-segment Display


La placa Altera DE1-SoC (en la que está basada el simulador) dispone de dos puertos
donde están conectados los displays de 7 segmentos de que dispone. Los accesos se
realizan mediante dos registros de datos de 32 bits de solo escritura. Como se ve en la
figura adjunta, el registro que se encuentra en la dirección de memoria 0xFF200020 se
utiliza para manejar los dígitos 3 a 0 (HEX3 a HEX0) y el registro que se encuentra en la
dirección de memoria 0xFF200030 los dígitos 5 y 4 (HEX5, HEX4).

Página 1 de 3
Práctica 5 Microprocesadores Curso 2021/22

El acceso a los mismos se realiza mediante escrituras/lecturas de tamaño palabra,


controlando de forma directa los segmentos de cada display, que se corresponden con
los bits individuales dentro de cada palabra, como se ve en la figura adjunta. La posición
de cada uno de los segmentos para cada uno de los displays se puede ver en la parte
derecha de la figura.

Anexo 2. Timer privado

A continuación, se describe el timer privado del core A9 en la placa correspondiente.


Tiene como dirección base 0xFFFEC600 y los registros del controlador se pueden leer o
escribir mediante accesos de tipo word. Para usar el timer, es necesario primero escribir
un valor inicial en el registro Load. Entonces, el timer se puede arrancar poniendo el bit
Enable (E) en el registro de Control a 1, y se puede parar poniéndolo a 0. Una vez que
esté arrancado, el timer decrementa su valor hasta llegar a 0. Cuando llega a 0, pone el
valor F a 1 en el Interrupts status. El bit F se puede comprobar mediante la técnica de
encuesta o polling. El bit F se puede resetear a 0, escribiendo un 1 en él.

Cuando llega a 0, el timer para si el bit Auto (A) del registro Control está a 0. En caso
contrario, el timer automáticamente recarga el valor en el registro Load y continúa
decrementando su valor. El valor actual se puede obtener leyendo el registro Counter.
El timer de la placa tiene una frecuencia de reloj de 200 MHz y se decrementa con cada
ciclo de reloj. El campo Prescaler del registro Control se puede usar para ralentizar la
cuenta atrás como sigue: el timer se decrementa cada Prescaler+A ciclos de reloj. Por
tanto, si Prescaler=0, entonces el timer se decrementa cada ciclo; si A=1 entonces cada
segundo ciclo, etc.

Página 2 de 3
Práctica 5 Microprocesadores Curso 2021/22

Anexo 3. Pulsadores
Los cuatro pulsadores KEY3 a KEY0 de que dispone la placa son accesibles mediante tres
registros de datos de 4 bits, como se muestran en la figura adjunta. Estos registros de
solo lectura se encuentran en la dirección base de memoria 0xFF200050 y se puede
acceder a ellos mediante accesos a tamaño word. Estos accesos de lectura proporcionan
el valor de los interruptores KEY3 a KEY0 en los cuatro bits menos significativos. Los
otros dos registros mostrados (interruptmask y edgecapture) son registros de control no
empleados en esta práctica.

Bibliografía

• Seminario Entrada/Salida. Trasparencias Asignatura. Curso 2020/21.


• DE1-SoC Computer System with ARM* Cortex* A9. Intel Corporation - FPGA
University Program. Noviembre 2017 [Figuras extraídas del documento].

Página 3 de 3

También podría gustarte