Parallel In Serial Out Vhdl Code

Un Parallel-In Serial-Out (PISO) en VHDL es un circuito que toma datos en paralelo (varios bits a la vez) y los convierte en una salida serial (un bit a la vez).
¿Qué significa "Parallel-In Serial-Out"?
Desglosemos esto paso a paso:
- Parallel-In: Imagina que tienes 8 interruptores (bits) que puedes encender o apagar simultáneamente. Todos esos interruptores representan un número. Un PISO toma el estado de todos estos interruptores a la vez. Piensa en una votación simultánea donde cada persona vota (enciende o apaga su interruptor) al mismo tiempo.
- Serial-Out: En lugar de mostrar el resultado de los interruptores (bits) todos juntos, el PISO los muestra uno por uno. Es como si alguien leyera el estado de cada interruptor, un interruptor a la vez, en un orden específico. Piensa en una impresora que imprime letra por letra, en lugar de la página entera a la vez.
En resumen, un PISO convierte información que llega en paralelo en información que sale en serie.
Must Read
¿Por qué usar un PISO en VHDL?
Los PISO son útiles en situaciones donde necesitas transmitir datos a través de un solo cable o canal. Algunos ejemplos:

- Comunicación: Enviar datos a través de un puerto serial, como un puerto USB o UART.
- Memoria: Acceder a la memoria que almacena datos en paralelo, pero necesita enviarlos en serie.
- Reducción de pines: En un circuito integrado (chip), tener menos pines es deseable para reducir el tamaño y el costo. Usar un PISO permite enviar muchos bits de datos usando solo un pin de salida.
Implementación en VHDL
El código VHDL para un PISO normalmente incluye lo siguiente:
- Entradas: Un vector de entrada para los datos paralelos (ej: `data_in : in std_logic_vector(7 downto 0)`), una señal de reloj (`clk : in std_logic`), una señal de carga (`load : in std_logic`) que indica cuándo se deben cargar los datos paralelos, y posiblemente una señal de habilitación (`enable : in std_logic`).
- Salida: Una salida serial (`data_out : out std_logic`).
- Registros: Uno o más registros para almacenar los datos paralelos temporalmente. Un registro de desplazamiento es común para PISOs.
- Lógica: Lógica para cargar los datos paralelos en el registro cuando la señal `load` está activa, y para desplazar los bits del registro uno por uno en cada ciclo de reloj cuando la señal `load` está inactiva.
El funcionamiento básico es así: Cuando la señal `load` está activa, los datos paralelos se cargan en el registro. Luego, la señal `load` se desactiva. En cada flanco del reloj (`clk`), el bit más significativo (o menos significativo, dependiendo del diseño) del registro se desplaza hacia la salida `data_out`. El resto de los bits del registro se desplazan una posición.

Un PISO efectivo requiere una cuidadosa consideración del timing (tiempo de los eventos) para asegurar que los datos se carguen y transmitan correctamente. El uso de un reloj (clock) estable y bien definido es crucial.
En resumen, el Parallel-In Serial-Out (PISO) es un componente fundamental en el diseño digital, especialmente cuando se busca transmitir datos eficientemente a través de un número limitado de canales.
