Laboratorio 1B

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. Jueves 29 de Enero. 10 - 24%

    2. Sabado 31 de Enero. 25 - 39%

    3. Lunes 2 de Febrero. 40- 64%

    4. Miercoles 4 de Febrero. 65 -79%

    5. Viernes 6 de Febrero. 80 - 89%

    6. Lunes 9 de Febrero. 90 - 99%

    7. Martes 10 de Febrero(Entrega Del Lab) 100%

    8. PAGINA DEL SEGUIMIENTO

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.

Laboratorio 1:

  • Para este laboratorio usted debio haber realizado la practica 1 completamente.

  • Los materiales necesarios

    • Los mismos materiales que uso en la practica 1.

    • Puede Usar la DE0-NANO o la DE2-115.

    1. Cree un google site y llamelo Bitacora"SU_ID"ece3128upb. 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. Vaya a la pagina de Terasic Corp, y registrese.

    4. Busque en esta pagina la board con la va a trabajar para este laboratorio.

    5. Descargue la version mas reciente del CD-ROM de la board(DE2-115 CD-ROM/DE0-Nano CD-ROM).

    6. Dentro del .zip que descargo, busque una carpeta que se llama "xxxx_tools" y extraiga las dos carpetas internas que deben tener el nombre xxxx_control_panel y xxxx_system_builder.

    7. Abra el archivo ejecutable del system_builder y seleccione para este laboratorio solo los siguientes componentes: SW, LED, CLOCK y GPIO.

    8. Como nombre del proyecto "Project Name", utilice Laboratorio_1(No usar espacios).

    9. Oprima Generar, y guarde lo que se genera en una carpeta sin espacios, en el disco C:\FPGAs\Lab1

    10. Ahora vaya a la carpeta Lab1 y abra el proyecto quartus.

    11. Una vez tenga abierto el proyecto Quartus, debe asegurarse de que el sistema compile correctamente, para esto asigne utilizando una linea en verilog el valor de los los SW directamente a los LEDs, y compile el proyecto.

    12. Una vez compilado el proyecto programe la FPGA y verifique que los LEDs cambian en variacion a los SW.

    13. Ahora puede empezar con el laboratorio.

    14. Descargue el diseño de este laboratorio.

    15. Como usted puede observar en esta imagen el laboratorio es la union modular de varios modulos que usted tendra que diseñar desde zero, el objetivo principal es que usted aprenda a solucionar problemas a la hora de describir hw usando Verilog, y observe lo que es un diseño modular. Es importante que siga paso a paso los puntos de instruccion de este laboratorio, ya que si no lo hace... tendra problemas serios. Recuerde que cada vez q se diseñe un modulo este se debera simular y documentar en su google site.

  1. Descripcion de cada modulo:

      1. Freq_gen1 & Freq_gen2: Estos son los modulos divisores de frecuencia usados en la practica 1 para generar diferentes tonos. Usted debera agregar a este modulo una entrada llamada "reset". Lo unico que debe hacer para esto es modificar el codigo verilog y agregar de forma adecuada el reset el cual sera activo bajo.

      2. Bit_ext: Este modulo usted lo debe diseñar desde zero. Es un modulo de logica combinacional y su funcion es replicar el bit de entrada que sale del Freq_gen1 cuantas veces sea necesario para convertir 1 bit a 8 bits(Para ver como se concatenan y replican bits puede ver 3.2.5 de el libro).

      3. SIN_ROM_INT_COUNTER: La funcion de este modulo es utilizar un reloj de entrada proveniente de Freq_gen2 para variar un contador interno que de 7 bits(0-127), a medida de que el reloj varia se contara de a 1 internamente y no importara si existe overflow. La salida de este contador interno ira conectado a una memoria ROM que usted tendra que diseñar en base a 12.4.3 de el libro. Esta memoria debera tener 7 bits de direccionamiento(el cual se conecta al contador interno) y una salida de 8 bits y sera del tipo "ROM with asynchronous read", los datos que contendra cada direccion de esta memoria seran los de un periodo de la señal SIN(x). Para obtener estos datos usted debera recurrir a matlab/python/c...etc para generar cada uno de los valores y posicionarlos en cada direccion de la ROM usando descripción de hw, de modo que cuando el contador interno varie, este varie la direccion de lectura y al mismo tiempo la salida que ira conectada a la salida del modulo SIN_ROM_INT_COUNTER.

      4. Tenga en cuenta que las muestras que genere para el periodo de la señal seno deben ser del tipo entero y deberan variar de 0 a 255.

      5. Para que tenga una idea de como deberia quedar la parte de la memoria ROM, mire la siguiente imagen

        1. Recuerde que para probar el funcionamiento de esta memoria usted tiene los LEDs para ver el valor al que este direccionando(tipo de debug).

        2. Tambien debe simular.

        3. Recuerde agregar un reset activo bajo.

      6. Mono_DAC: Este modulo hace la funcion de conversor Digital Analogico, y usa una modulación que se llama Delta-Sigma para funcionamiento que usted comprendera a medida de que describa este modulo en Verilog. Internamente este modulo esta compuesto por dos Modulos de Delta sigma instanciados, uno para el canal izquierdo de audio y otro para el canal derecho. Cada uno de estos modulos funcionara a 50MHz, cada uno sera de 8 bits de entrada y tendra un reset activo bajo.

        1. Para hacer la descripción del modulo delta-sigma, usted debe leer el siguiente manual. Para cuando haga la descripción de hardware tenga en cuenta que el codigo del manual tiene errores y si usted lo intenta copiar no le funcionara...(No tenga en cuenta lo que aparece en la siguiente imagen a la hora de hacer la descripción)

        2. Cuando tenga lista la descripcion de hw, usted podra instanciar dos delta sigma dentro del modulo Mono_DAC y conectarlo internamente a las salidas y entradas del sistema.

        3. Usted decide a que GPIOs estaran conectadas las salidas Auidio_L y Audio_R del modulo.

        4. Para probar Mono_DAC usted puede conectar el la señal de salida del modulo Bit_ext, el cual esta conectado al Freq_gen1 y variar tal cual como lo hizo en la practica 1.

      1. ROM1_Freq: Este modulo es sencillamente una ROM que varia su salida de 32 bits de acuerdo a sus entradas SW[2:0], cada posicion de esta ROM sera el valor que debe ir a el modulo Freq_gen2 para que varie a su salida de tal manera que afecte directamente el reloj de entrada del modulo(su contador interno) SIN_ROM_INT_COUNTER que debera variar a las frecuencias de una de un piano. Vea esto como una reaccion en cadena y preguntese, que valor debo poner en la salida del modulo ROM1_Freq para que por medio del modulo SIN_ROM_INT_COUNTER se genere una señal SIN con frecuencia de ejm:600Hz?. Cuando tenga esta respuesta haciendo calculos podra hacer correctamente la octava del piano.

      2. Freq_Gen_ROM_SONG: Este modulo esta compuesto internamente de 2 memorias ROM, una rom se activa cuando ROM_sel es 0 y contiene valores para que a la salida de Freq_gen1 se generen las frecuencias necesarias para que se escuche la siguiente cancion, las notas y los tiempos estan en el siguiente archivo. La otra rom se activa cuando ROM_sel es 1 y contiene la misma cancion pero esta esta adaptada para que los valores entren al modulo Freq_gen2 y se varien las frecuencias de variacion de la señal seno, para escuchar la misma canción.

        1. Recuerde conservar los entretiempos para que la canción se escuche bien.

      1. delayer: Este modulo es muy importante, ya que es el encargado de dar el toque de efectos de sonido a este laboratorio, su funcion es tomar la señal de salida del modulo SIN_ROM_INT_COUNTER y retrazarlar un tiempo especifico para que cuando se escuche la canción proveniente de este modulo se agregue un efecto de sonido que puede ser el efecto de Chorus o de ECHO.

        1. Para diseñar este modulo usted debe hacer la practica de generate y comprenderla, ya que utilizando generate es que se podria diseñar este modulo(no tiene que generar plantilla, puede diseñar sobre la que ya tiene para este lab).

        2. Una vez comprendida la practica de generate, usted debera ver el siguiente esquema que describe lo que usted tiene que hacer para agregar un efecto de sonido a la señal de salida del modulo SIN_ROM_INT_COUNTER.

      1. Aplique lo aprendido en la practica de generate para describir el esquema usando verilog y diseñe el modulo para hacer el efecto ECHO(como recomendación, recuerde que a la salida del esquema se suma la señal de entrada y la señal desplezada, tenga en cuenta que si llega a existir OVERFLOW en la suma esto podria afectar el efecto de audio... implemente una solucioón para evitar overflow).

      2. Recuerde que KEY[0] es el ENable de este chip y va al selector del mux que esta entra al Mono_Dac.

  1. A medida de que recorrio este laboratorio fue diseñando modulo a modulo, simulandolo y probandolo con la FPGA. Asegurese de unir todo el sistema de acuerdo al esquema general del laboratorio.

    1. Utilice el osciloscopio del laboratorio para revisar que la señal SIN(x) se genera correctamente a la salida del filtro pasivo que esta manejando segun el manual de delta_sigma, tome fotos/videos y documente los resultados(Si la señal sale extraña, recuerde que las señales que entran al delta sigma deben contar con signo, por lo que usted podria llegar a modificar algo a la señal que entra al delta-sigma... nota:¿Qué sucede cuando se niega el ultimo bit de una señal?).

      1. Si conecta bien el filtro pasa bajos tipo pasivo a la salida de cada componente de audio, vera que aunque el pin es digital... la salida parece Analogica ¿Por qué sucede esto?.

Felicidades, usted ha completado el laboratorio 1.