Laboratorio 4

Tema: Flip-Flops. LFSR y Divisores de Frecuencia.

Reglas para el laboratorio:

Las notas de los laboratorio se darán en la manera siguiente:

30%: Funcionalidad - el circuito hace lo que queríamos que hiciera, y han hecho lo que pido en el trabajo

15%: Simulaciones anotadas y RTL View - hay que entregar simulaciones anotadas y RTL view de todos los módulos nuevos

10%: Eficiencia - el código no utiliza más recursos del FPGA de lo que es necsario

10%: Fiabilidad - el código está escrito en manera fiable

10%: Modularidad - el código está escrito en manera modular

10%: Legibilidad - el código está escrito legiblemente y limpiamente,y es claro cual hardware sintetiza

15%: Presentación oral en la clase (todo el grupo debe estar presente y participar!)

-------

100%

+15% - Bono de creatividad - Hagan cosas originales más alla de lo requerido y reciban hasta 15% bono!

-------

115%

Obviamente, a pesar de que funcionalidad es 30% de la nota, si el laboratorio no tiene un mínimo de funcionalidad, la nota del laborotorio será 0.

Fechas de seguimiento del google site para este laboratorio (Este seguimiento se tendra en cuenta para calificar su laboratorio, si usted no tiene nada documentado en la pagina ó no ha agregado nuevo material, no muestra resultados.. o la documentación es mediocre... no se le tendra cuenta la fecha de seguimiento y su nota ira bajando):

    1. Viernes 27 de Febrero. 10 - 20%

    2. Sabado 28 de Enero. 20 - 30%

    3. Domingo 1 de Marzo. 30-40%

    4. Lunes 2 de Marzo. 50-60%

    5. Lunes 3 de Marzo. 60-80%

    6. Lunes 4 de Marzo. 80-90%

    7. Lunes 5 de Marzo. 90-100%

    8. Lunes 6 de Marzo. ==> ENTREGA

    9. PAGINA DEL SEGUIMIENTO (aqui un ejemplo de como hago seguimientos en otros curso)

Recuerde:

    1. Las consultas pueden ser por correo(Correos claros de las dudas), skype ó sabados de 8 am a 12 pm en el K314.

    2. No deje dudas, o no deje trabajar para lo ultimo, y arregle su horario de acuerdo a las necesidades que tenga de manera que el tiempo le alcance tanto para sus materias y para realizar este laboratorio.

Materiales:

Laboratorio 4:

    1. (De esta manera se evita entrega de informe impreso) Cree un google site y llamelo Bitacora"SU_ID"ece31235upb. En esta pagina hara todos los informes de laoratorio incluyendo el proyecto final. Todas las personas a nivel mundial tendran acceso a la solucion de lo que usted hizo para el laboratorio. Puede utilizar videos, imagenes, etc etc. Sienta lo que es hacer una bitacora y llenarla conscientemente(un ejemplo de una buena bitacora).

    2. Recuerde que una buena bitacora, ayuda bastante a mantener sus conocimientos a futuro, a compartir con otros su conocimiento y a su nota, por lo tanto, documente a medida de que hace el laboratorio, tome fotos videos, pantallazos, y escriba de una manera ordenada lo que va haciendo, de tal manera que si alguien quiere replicar lo que usted hizo, lo pueda hacer sin problemas.

    3. Este laboratorio consiste en dos partes, una parte software y otra parte Hardware. En este caso, la hardware sera dependiende de los resultados de la software.

    4. Parte Software:

    5. Este es el diseño de la parte software, usted tiene que escribir un algoritmo en C, Python, C++, perl, Java, ruby o cualquier otro para diseñar un encriptador de datos basado en un LFSR de 32 bits(La prueba de este Encriptador se hace en el punto 7).

      1. Como ejemplo mire este codificador de 8 bits diseñado en python.

      2. Nota: USTED DEBE USAR POR OBLIGACION UNA VARIABLE DE 32 bits para el LFSR(Tal cual como dice el algoritmo), y cada bit de la variable pienselo como un Flip_flop... No accepto el uso de mas de 1 variable para simular el comportamiento de flip-flops.

    6. Descargue el siguiente archivo, el cual contiene muestras de audio en bruto y usted debe abrir el Audacity e importar el archivo de la siguiente manera:

    7. File-> Import-> raw_data

    8. Encoding ==> Unsigned 8 bit PCM

    9. Byte Order ==> Little-Endian.

    10. Channels ==> 1 Channel(Mono)

    11. Start Offset ==> 0 Bytes

    12. Amount to Import ==> 100%

    13. Sample Rate 44100 Hz.

  1. Reproduzca el archivo , debe estar escuchando la cancion de" Fall Out Boys - Immortals", que esta muestreada a 44100 hz en Bytes sin signo.

  2. Pase este archivo(El mismo) "song.bin" por el Encriptador LFSR que usted diseño en el punto 4. Abra el nuevo archivo generado("Encrypted_song.bin") con Audacity. Como se dara cuenta la cancion que existia ya no existe y la pista es ruido.

  3. Pase el archivo encriptado("Encrypted_song.bin") de nuevo por el LFSR que usted diseño en el punto 4. Abra el nuevo archivo(Ahora el regenerado) con audacity. Si su LFSR esta bien diseñado, el ruido debio haber desaparecido y usted podra escuchar de nuevo la cancion.

  4. Felcidades ha completado el 50% del Lab 4 y ha conseguido aplicar una tecnica digital en algoritmos sofware(SIN HACER LA PARTE SOFTWARE.... NO PUEDE PASAR A LA HARDWARE).

  5. Ahora encripte de nuevo el archivo .bin de audio, pero esta vez debe encriptarlo con un valor inicial de LFRS = ID_integrante1 + ID_integrante2

    1. Ejemplo: Si el ID de compañero 1 es el 8597 y el de el segundo compañero es 5745, entonces el el Valor de inicializacion de LFSR debe ser = 32'd14342

  6. (En esta parte puede buscar al profesor para que grabe la cancion mas rapido que el software que esta utilizando)Este archivo encriptado lo vamos a grabar en una memoria(EPCS) que tiene la tarjeta DE0-NANO, usando algo llamado el Control Panel, para esto debe hacer lo siguiente:

      1. Tener conectada la DE0-NANO a su PC:

      2. Programe el archivo "DE0-NANO_ControlPanel.sof" a la FPGA.

      3. Cuando Abra el Control Panel, seleccione memorias, y luego seleccione memoria EPCS, borre su contenido, y despues en la casilla "Sequential Write", haga check la caja "File Lenght" y oprima el boton "Write a File to memory". Seleccione el archivo "Encrypted_song.bin"(El encriptado) y espere a que el control panel descargue este contenido a la memoria EPCS.

    1. Ahora tiene el archivo encriptado en la memoria EPCS de la tarjeta DE0-NANO.

    2. Descargue la plantilla para la parte Hardware y abrala.

    3. Genere el RTL de esta plantilla.

    4. Esta es una breve descripcion de lo que contiene la plantilla.

    5. Usted no debe modificar nada de la plantilla, ni nada del modulo principal, el objetivo de esta parte es que usted solo diseñe al modulo "LFSR32.v" y "div_freq.v" que se encuentran en la carpeta modules, y agregue la logica hardware necesaria, para completar este laboratorio.

    6. El objetivo de este diseño harware, es leer por medio de "Black-Box2" el archivo que se encuentra en la memoria EPCS, pasar byte a byte(leidos a una velocidad de 44100Hz) por los bloques XOR, y llevar este byte a la "Blackbox3" que hara algo para que a la salida del GPIO[0] se escuche la cancion decodificada.

      1. Los bloques blancos "Black_box2" y "Black_box3" ya se encuentran en la plantilla, mientras que los bloques Verdes son los modulos que usted debe diseñar, usando Verilog.

        1. Modulo Div_Freq: Este modulo usando Flip-Flops debe generar una frecuencia a la salida de 44100Hz, en base de un reloj de 50MHz, diseñelo con los conceptos vistos en clase. Este modulo debe tener un reset en flanco de subida.

        2. Modulo LFSR32: Este modulo contiene 32 flip-flops en serie, y al igual que el algoritmo en software diseñado en los puntos anteriores, debe cumplir el esquema hardware del funcionamiento del LFSR, Tome la retroalimentacion para la XOR de los taps que tomo para su diseño software.

          1. Estos 32 registros se mueven a una velocidad de 44100Hz proveniente del modulo Div_freq.

          2. Los flip-flops deben inicializarse en el valor de la entrada KEY_LFSR[31:0](La cual es el valor de la clave en este caso la misma clave con la que encripto su archivo). El flip-Flop0 tomaria el valor de KEY_LFSR[0], el flip-flop1 tomaria KEY_LFSR[1] y asi sucesivamente el flip-flop31 debe tomar el valor de el KEY_LFSR[31]. Esta parte es crucial, ya que si usted no tiene el valor de inicializacion de este modulo, no funcionara el diseño.

            1. Tip: Recuerde que en este caso el KEY_LFSR[0] contiene el bit mas significativo de la clave y el KEY_LFSR[31] el menos significativo... para que exista concordancia con el la codificacion sofware.

        3. Este modulo debe tener un reset en flanco de subida.

    7. Una vez completados los modulos, sintetice y programe la FPGA, puede hacer reset del sistema con la KEY[0].

    8. Si lo hizo bien escuhara la cancion decodificada.

    9. Si es asi, usted ha completado el Laboratorio 4 en un 100'%.

    10. Haga conclusiones, y comparaciones con respecto a la parte Software y Hardware:

      1. ¿Que ventajas, y desventajas encontro al hacer este diseño con Software?.

      2. ¿Que ventajas, y desventajas encontro al hacer este diseño con Hardware?.

      3. ¿Que aplicaciones tienen los LFSRs?.

      4. ¿Por qué fue necesario en el diseño hardware un divisor de frecuencia a 44100Hz?.

    1. ¿Que aplicaciones tienen los Divisores de frecuencia?

      1. ¿Podria utilizar el codigo en software para encriptar una imagen, video u otro tipo de archivo? Bonus 15%

        1. Este archivo es un video encriptado con un LFRS de 64 bits con taps en 63,38,37,33,23,16,0, desencriptelo modificando el codigo software que usted diseño, la clave inicial es 785123.

Como Extra Bonus del 20% implemente este esquema tanto en software como en hw.