Objetivos
Al finalizar el curso, el estudiante debe:
- Describir qué es una FPGA y conocer sus principales aplicaciones.
- Describir los circuitos internos de una FPGA mediante un lenguaje de descripción de hardware.
- Entender y ejecutar el proceso de desarrollo de un proyecto con FPGAs (diseño con FSM, descripción en verilog, simulación, sintetización, pruebas del hardware)
- Desarrollar diseños de circuitos con FPGAs siguiendo pautas de diseño adecuadas
Contenido del curso
1. Introducción
a. Introducción a FPGAs
b. Comparación entre diseño con FPGAs y con ASICs
c. Tipos y fabricantes de FPGAs
d. Arquitectura de varios tipos de FPGAs
e. Idiomas HDL (Hardware Description Language): qué es un HDL, razones para usar un HDL, ventajas de un HDL, desventajas de un HDL.
2. Verilog: Lenguaje de descripción de Hardware
a. Introducción
b. Operadores: Operadores aritméticos, Operadores de corrimiento, Operadores relacionales, Operadores lógicos, operadores de bit y de reducción, Operadores de concatenación y replicación, Operadores condicionales.
c. Precedencia de los operadores
d. Ajuste de la longitud de bits
3. Circuitos combinacionales con Verilog
e. Operador ALWAYS para circuitos combinacionales: Sintaxis básica y comportamiento, asignación procedimental, tipos de datos y variables, ejemplos básicos.
f. Estructura IF: Sintaxis, ejemplos.
g. Estructura CASE: Sintaxis, ejemplos.
h. Circuitos equivalentes para estructuras de control condicional (Enrutamiento): circuito de enrutamiento con prioridades, circuito multiplexor
i. Lineamientos de codificación generales para un bloque ALWAYS: Errores comunes en códigos de circuitos combinacionales, Lineamientos, Parámetros y constantes.
j. Ejemplos de diseño: Decodificador Hexadecimal/7 segmentos, sumador con signo, registro de corrimiento
4. Circuitos secuenciales con Verilog
a. Introducción
b. Flip-Flop tipo D
c. Sistemas síncronos
d. Desarrollo de código
e. Código HDL del FF y registro
f. Ejemplos de diseño: Registro de corrimiento, contador binario, contador programable, circuito para multiplexar LEDs en el tiempo, cronómetro, buffer FIFO.
5. Diseño fiable de Hardware
a. Máquinas de estados finitos: Diagramas de transición de estados, Máquina de Mealy, Máquina de Moore, problemas con las máquinas de Mealy y Moore. Máquina de Estados Finitos mejorada.
b. Metaestabilidad: Problemas de sincronización, circuitos de sincronización
c. Desplazamiento de la señal de reloj (Clock Skew): El problema, métodos para solucionar el problema.
d. Cambio de dominios de reloj: el problema, soluciones al problema.
e. Routing delay y Fan out: el problema, soluciones al problema.
f. Pipelining (Paralelismo): Qué es el pipelining, cuándo usar pipelining, cómo se diseña un módulo con pipelining.
6. Construcción e implementación de softcores con FPGAs: PicoCtrl, Nios II(SOPC builder, Qsys).
a. Soft Cores(Nios II) Arquitectura de computadores y Herramientas para el prototipado Rapido
b. ¿Que son los SoftCores y los HardCopy?
c. Introduccion al procesador Nios II
d. Herramientas de prototipado rapido para la construccion de sistemas embebidos programables(SOPC)
e. Programando mi primer procesador sobre FPGAs(C/C++)
7. Co-Diseño Hardware Software
a. Importancias del Co-Diseño Hardware-Software
b. Acceleradores Hardware.
c. Los Sistemas Operativos y las FPGAs
d. Mi primer OS sobre un SoftCore
e. ¿Por qué un sistema Operativo?
f. Sistemas Multicore
8. Aplicaciones de FPGAs
Evaluación
Q: Quices; T: Trabajos; P: Examen Parcial
Bibliografía
·Maxfield, Clive "Max". The Design Warrior's Guide to FPGAs : Devices, Tools and Flows. -- Amsterdam : El Sevier, c2004, 542 p.
·Chu, Pong P. FPGA Prototyping by Verilog examples. Xilins Spartan – 3 Version. Wiley, 2008.
·The Verilog Hardware Description Language. Thomas & Moorby's, 2002
·Digital Design and Computer Architecture. David Harris and Sarah Harris, 2007.
·Embedded SoPC Design with Nios II Processor and Verilog Examples, 2012