Skip to content

Capítulo 10: Registro de desplazamiento

Juan Gonzalez-Gomez edited this page Aug 20, 2015 · 25 revisions

Imagen 1 Ejemplos de este capítulo en github

Introducción

Los registros de desplazamiento almacenan un valor y nos pemiten desplazarlo. Son extremadamente útiles. Se utilizan para convertir la información de paralelo a serie (y vice-versa) para usar en las comunicaciones síncronas. Las comunicaciones a través de SPI, I2C, etc, se implementan con estos registros. También nos permiten realizar las operaciones de multiplicar por 2 y dividir entre 2 para número enteros.

En este capítulo los utilizaremos para generar una secuencia de 4 estados en los leds de la placa iCEstick, moviendo las luces en sentido horario

Descripción del registro

El registro de desplazamiento que usaremos es como el siguiente:

Imagen 1

La salida del registro es de N bits (en nuestro ejemplo usaremos un registro de 4 bits). Tiene una entrada en paralelo de N bits, que nos permite cargar en el registro con un valor nuevo. La señal load_shift nos permite determinar el modo de funcionamiento: cuando está a 0 se realiza la carga de un valor nuevo al llegar un flanco de subida de reloj. Cuando está a 1 se realiza un desplazamiento hacia la izquierda en el flanco de subida del reloj.

En este desplazamiento el bit más significativo se pierde, y el nuevo se lee de la entrada serin (serial input). Si tenemos almacenado el valor inicial 1001, la señal load_shift está a 1, serin está a 0 y llega un flanco de subida de reloj, obtendremos el valor: 0010. En el siguiente flanco (si serin sigue a 0) obtendremos 0100, luego 1000 y luego 0000.

Descripción del hardware

Imagen 1

Síntesis en la FPGA

Imagen 2

Simulación

Imagen 3

Imagen 4

Ejercicios propuestos

  • Ej1
  • Ej2

Conclusiones

TODO

Clone this wiki locally