DISEÑO AVANZADO DE HARDWARE

Programa

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

(VER PROGRAMACION SEMANAL Y DIAPOSITIVAS)

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 de microprocesadores con FPGAs: PicoCtrl, Picoblaze

7.       Aplicaciones de FPGAs

 

Evaluación

Nota1

Nota2

Nota3

Nota4

Nota5

Q,T

P

Q,T

P

Laboratorio

15%

20%

15%

20%

30%

Q: Quices; T: Trabajos; P: Examen Parcial

B ibliografí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