objetivo del curso - rodrigotec.files.wordpress.com · mc.$rodrigo$lucio$mayaramirez $ diseño...

114
MC. RODRIGO LUCIO MAYA RAMIREZ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos, estructurar sistemas digitales utilizando lenguaje VHDL, conocer y desarrollar los componentes que conforman las arquitecturas básicas de un procesador.

Upload: doanphuc

Post on 04-Oct-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Diseño Digital con VHDL

OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos, estructurar sistemas digitales utilizando lenguaje VHDL, conocer y desarrollar los componentes que conforman las arquitecturas básicas de un procesador.

Page 2: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Lenguajes  de  descripción  de  hardware  (HDLs)  

Estos  lenguajes  fueron  desarrollados  para  hacer  frente  a  la  creciente  complejidad  de  los  diseños.  Se  puede  hacer  una  analogía  con  los  que  se  pueden  llamar  lenguajes  de  descripción  de  so;ware.  Los  HDLs  son  usados  para  modelar  la  arquitectura  y  comportamiento  de  sistemas  electrónicos  discretos.    

•   Se  uAlizan  en  la  fase  de  diseño  •   Necesidad  de  Simulador  lógico  

Herramienta  necesaria  para  reproducir  el  comportamiento  del  sistema  modelado  

Permite  la  verificación  del  sistema  diseñado.  

Actualmente  existen  herramientas  so;ware  que  permiten  pasar  de  dichas  descripciones  a  diseños  a  nivel  de  compuertas:  SÍNTESIS  

Page 3: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Dominios  descripDvos  y  niveles  de  abstracción  

Dominios  descripDvos:  Comportamiento  Se  realiza  la  función  sin  información  de  cómo  se  hace  Estructural  Los  bloques  se  conectan  mediante  interconexiones  (netlist  o  esquemas)    Físico  Localización  y  propiedades  Psicas  reales    

Page 4: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Dominios  descripDvos  y  niveles  de  abstracción    

Niveles  de  abstracción:  Circuito  Valores  conAnuos,  todo  es  electrónica,  Aempo  conAnuo  Lógico  Valores  lógicos  (T,F),  sólo  computación,  Aempo  conAnuo  RT  (RegisterTransfer)  Palabras  con  valores  discretos,  control  y  procesamiento,  Aempo  discreto  Algorítmico  Estructuras  abstractas,  dependencias  en  lugar  de  Aempo  Sistema  Relaciones  entre  subsistemas,  síncronos  y  protocolos    

Page 5: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Dominios  descripDvos  y  niveles  de  abstracción  

Medidas:    Circuito  Tiempo  de  subida  y  bajada,  consumos  área  Lógico    Tiempo  de  conmutación,  skew,  área  equivalente  RT  Tiempo  de  ciclo,  márgenes,  compuertas  equivalentes  Algorítmico  Latencia,  cadencia  de  datos,  número  de  módulos  Sistema  Ancho  de  banda,  MIPS.      

Page 6: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Dominios  descripDvos  y  niveles  de  abstracción  

Transiciones:    Síntesis/Análisis  Comportamiento  ⇔  estructural    OpDmización    Mejora  de  una  descripción  sin  variar  el  nivel  de  abstracción      Generación/Extracción  Estructural  ⇔  Psico    Refinamiento/Abstracción  Bajar/Subir  el  nivel  de  abstracción  en  el  mismo  dominio    

Page 7: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Niveles  de  diseño  y    dominios  de  representación    

 VHDL:  VHSIC,  Hardware  DescripAon  Language  VHSIC:  Very  High  Speed  Integrated  Circuits    

Page 8: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Lenguajes  de  descripción  de  hardware  (HDLs).  Síntesis  lógica    

Síntesis  lógica:  Convierte  una  descripción  de  un  sistema  digital  mediante  un    HDL  en  una  implementación    tecnologíca.    Descripción  HDL:    library ieee; use ieee.std_logic_1164.all; entity puertas is port ( A, B, C : in std_logic; Y: out std_logic ); end puertas; ARCHITECTURE a of puertas is begin Y <= (A and B) or C; end a;  

El  hecho  de  realizar  una  síntesis  lógica  obliga  a  ciertas  restricciones  en   la  tarea  de  realizar   las  descripciones  con  HDLs.  

Page 9: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ventajas  del  uso  de  HLDs  

•  Soportan  tres  esAlos  de  descripción  básicos:    

–  DESCRIPCIÓN  COMPORTAMENTAL    (behavioral)    

–  DESCRIPCIÓN  DE  FLUJO  DE  DATOS    (data-­‐flow)  

–  DESCRIPCIÓN  ESTRUCTURAL          (estructural)                    

 Un  diseño  puede  ser  descrito  con  una  combinación  de  los  tres  esAlos.    

El  lenguaje  es  independiente  de  la  tecnología:    

El  mismo  modelo  puede  ser  sinteAzado  en  librerías  de  disAntos  vendedores.    

Reducción  de  la  dependencia  con  el  fabricante  de  ASICs,  ya  que  la  portabilidad  a  otra  tecnología  es  mucho  más  rápida.  

ReuAlizar  el  diseño  en  componentes  tan  disAntos  como  ASICs  o  FPGAs  con  un  esfuerzo  mínimo.    

 

 

 

Page 10: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ventajas  del  uso  de  HLDs  

Se  puede  verificar  la  funcionalidad  del  diseño  muy  pronto  en  el  proceso  de  diseño.  La  simulación  del  diseño  a  tan  alto  nivel,  antes  de  la   implementación  a  nivel  de  compuertas,  permite  probar  la  arquitectura  y  recAficar  decisiones  en  las  primeras   fases   de  diseño,   con  un  esfuerzo  mucho  menor  que  si  se  realizase  en  fases  posteriores.      Sencillez  Como   la   descripción   se   centra   más   en   la  funcionalidad   que   en   la   implementación,   resulta  más   sencillo   para   una   persona   comprender   qué  función  realiza  el  diseño  a  parAr  de  una  descripción  HDL   que   a   parAr   de   un   esquemáAco   de  interconexión  de  compuertas    Ahorro  de  Dempo    Facilita   las   correcciones   en   el   diseño   debidas   a  fallos  de  diseño  o  cambio  de  especificaciones.    La   existencia   de   herramientas   comerciales  automáAcas   (sinteAzadores   RTL)   que   permiten  crear   descripciones   gate-­‐level   a   parAr   de   los  modelos  a  nivel  RTL      

begin

Y <= (A and B) or C;

end a;

El  lenguaje  también  puede  ser  usado  como  medio  de  comunicación  entre  diferentes  herramientas  CAD  y  CAE.    Un  programa  de  captura  de  esquemáAcos  puede  ser  uAlizado  para  generar  descripciones  HDL  del  diseño,  lo  cual  puede  ser  usado  como  entrada  a  un  simulador.    

Page 11: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ventajas  del  uso  de  HLDs  

Los  HDL  Aenen  elementos  que  permiten  el  diseño  a  gran  escala,  de  forma  fácil;  por  ejemplo,  componentes,  funciones,  procedimientos,  paquetes.    

                       El  lenguaje  soporta  metodologías  de  diseño  

diferentes:  top-­‐down,  bo`om-­‐up,  o  mixtas.    

La  propia  descripción  en  el   lenguaje  de  alto  nivel   sirve   como   especificación   del  comportamiento   del   sistema   a   diseñar  (tanto   a   nivel   funcional   como   las  restricciones  temporales),  y  la  interface  con  el  resto  del  sistema.    Los  modelos   descritos   con   estos   lenguajes,  pueden   ser   verificados   fácilmente   y   de  forma  precisa  por  simuladores  definidos  en  base  a  estos  HDL.  El  lenguaje  puede  ser  usado  como  un  medio  de   intercambio   entre   los   fabricantes   de  ASICs  y  los  usuarios  de  herramientas  CAD.      El  lenguaje  soporta  jerarquía  Un   sistema   digital   puede   ser   modelado  como   un   conjunto   de   componentes  interconectados.  A   su   vez   cada   componente   puede   ser  mode l ado   como   un   con j un to   de  subcomponentes.    

Page 12: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ventajas  del  uso  de  HLDs  

               El  modelo,  a  través  de  los  atributos,  puede  contener  información   del   diseño   en   sí  mismo,   no   solo   de   la  funcionalidad:   por   ejemplo,   informaciones   tales  como  el  área  y  velocidad.  

 

Soporta   modelos   de   Aempos   síncronos   y  asíncronos.      Posibilidad   de   implementar   disAntas   técnicas   de  modelado   digital   (descripciones   de  máquinas   de  estados  finitos  (FSM),  descripciones  algorítmicas,  redes  de  Petri,  y  ecuaciones  Booleanas    E l   l e n g u a j e   e s   p ú b l i c o   y   " n o t  propietary"  (especialmente  en  el  caso  del  VHDL).      Es   un   estándar   ANSI   e   IEEE;   por   lo   tanto,   los  modelos   descritos   en   estos   lenguajes   (VHDL   o  VERILOG)  son  totalmente  portables.      La   capacidad   de   definir   Apos   de   datos  sofisAcados,  suministra  la  potencia  de  describir  y  simular  nuevos  diseños  a  un  nivel  de  abstracción  en   el   cual   aún   no   se   barajan   detalles   de   la  implementación    Los  genéricos  y  atributos  facilitan  la  descripción  de  modelos  parametrizables.    

Page 13: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Inconvenientes  del  uso  de  HDLs  

Supone  un  esfuerzo  de  aprendizaje,  ya  que   p r á cAcamen te   s e   puede  considerar  como  nueva  metodología.    Necesaria   la   adquisición   de   nuevas  herramientas:    Simuladores  SinteDzadores   de   HDL,   teniendo   que  mantener  el  resto  de  las  herramientas  para  otras  fases  del  diseño.  El   uso   de   estos   lenguajes   hace   que  involuntariamente   se   pierda   un   poco  de   control   sobre   el   aspecto   Psico   del  d i s e ñ o ,   d á n d o l e   u n a   m a y o r  importancia   a   la   funcionalidad   de  dicho  diseño.    

Page 14: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Lenguajes  de  Descripción  de  Hardware.  

            En   la  actualidad  se  uAlizan   fundamentalmente  VHDL,  Verilog   y   SystemC     .   Otro   HDL,   el   UDI/L   se   uAliza  exclusivamente  en  Japón.  

                  VHDL   (Very  High   Speed   Integrated   Circuit   Hardware  

DescripAon   Language).   Nace   como   proyecto   del  Departamento   de  Defensa   (DoD)   de   EEUU   (año   82)   para  disponer   de   una   herramienta   estándar,   independiente  para   la   especificación   (modelado   y/o   descripción)   y  documentación   de   los   sistemas   electrónicos.   El   IEEE   lo  adopta  y  estandariza.  

                 Verilog:  So;ware  de  la  firma  Gateway  y  posteriormente  

de   Cadence.   Estándar   industrial   hasta   que   apareció   el  VHDL   como   estándar   IEEE.   En   1990   Cadence   lo   hace  público  y  el  IEEE  lo  estandariza  en  1995.  

                 SystemC:   es   una   extensión   del   C++,   que   uAliza   unas  

bibliotecas   de   clase   para   describir   y   simular   circuitos  digitales.  Se  publicó  en  1.999  .  

Diversos   grupos   de   invesAgadores  empiezan   a   crear   y   desarrollar   los  llamados  "lenguajes  de  descripción  de  hardware"   cada   uno   con   sus  peculiaridades,  buscando  una  solución  a   los   problemas   que   presentaba   el  diseño  de  los  sistemas  complejos.    Ejemplos:  IDL  desarrollado  por  IBM  ,    TI  -­‐  HDL  de  Texas  Instruments,  ZEUS  de  General  Electric,  protoApos  de  universidades      

Page 15: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

En  resumen:  ¿Para  qué  sirven  los  HDL?  

 Sirven  para  modelar  circuitos,  para  expresar  ideas    Los  modelos  se  pueden  simular  para  comprobar  que  se  corresponden  con  la  funcionalidad  deseada      

Page 16: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

¿Para  qué  sirven  los  HDL?  

 Para  generar  documentación,  siempre  y  cuando  los  modelos  de  los  circuitos  estén  bien  comentados.    En?ty  bit8tobcd  is  Port(  clk:  in  std_logic;-­‐-­‐reloj  del  sistema,  para  dividir                      rst:  in  std_logic;                    cuenta:  out  std_logic_vector(1  downto0);-­‐-­‐para  depurar                    bi?n:  in  std_logic_vector(7  downto0);  -­‐-­‐8  bits  de  entrada                    seg:  out  std_logic_vector(6  downto0);-­‐-­‐?empo  a  iluminar                    ctrlD:  out  std_logic_vector(3  downto0;  -­‐-­‐ctrl  de  los  ánodos                    bcd:  out  std_logic_vector(15  downto0)-­‐-­‐para  depurar  );  End  bit8tobcd;    Para  crear  bancos  de  prueba  (test-­‐  bench),  es  decir,  crear  los  es2mulos  y  ver  los  resultados  durante  la  simulación.    

Page 17: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

¿Para  qué  sirven  los  HDL?  

Los   "Test   Bench"   pueden   ser   escritos  en   el  mismo   lenguaje   que   con   el   que  han  sido  modelados  los  diseños  (HDL).      Esto   permite   un   mejor   manejo   del  modelo,   ya   que   se   puede   asociar   el  modelo  a  sus  eslmulos  de  simulación.      No   limitamos   el   uso   de   dichos  e slmu l o s   a   u n   d e t e rm i n ado  simulador,   pudiendo   ser   reuAlizados  dichos   eslmulos   aunque   se   use   un  simulador  disAnto.      Los   retardos   de   propagación   y  limitaciones   temporales,   pueden   ser  descritos  con  estos  HDL    

Page 18: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

DisposiDvos  Lógicos  Programables    

                        Los   disposiAvos   actuales   (CPLD   y   FPGAs)   Aenen   una  

capacidad   lógica   de   hasta   millones   de   compuertas,  incluyen  interfaces  programables  para  varios  estándares  de  interface  eléctrica  y  Aenen  bloques  de  funciones  especiales  embebidos   entre   la   lógica   programable   tales   como  memoria,  mulAplicadores  o  CPUs  completas  

                   Esta  gran  capacidad  y  variedad  de  los  disposiAvos  los  hace  

sumamente  úAles  a  la  hora  de  crear  protoApos,  desarrollo  rápido  de  nuevos  productos,  para  los  productos  que  deben  ser   reconfigurables   por   naturaleza   o   productos   que   se  producen   en   bajos   volúmenes   y   para   los   cuales   no   es  económicamente  viable  crear  un  integrado  a  medida.    

 

Los  disposiAvos  lógicos  programables  son  circuitos   integrados   digitales   que   no  Aenen   una   función   predefinida   por   el  fabricante.  Su  función  puede  ser  definida  (o  programada)  por  el  usuario.         Debido   a   la   gran   capacidad   lógica   que  Aenen   los   disposiAvos   modernos,  sistemas  completos  pueden  desarrollarse  sobre  un  solo  circuito  integrado.        Esto   da   lugar   a   las   denominaciones  System–on–a-­‐Programmable   Chip,   o  SoPC   (s istema   sobre   un   circuito  integrado   programable)   y   System-­‐on-­‐a-­‐  Reprogammable  Chip  (SoRC).      

Page 19: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Evolución  de  los  Primeros  DisposiDvos  Lógicos  Programables    

 L o s   p r ime r o s   d i s p o s i A v o s   l ó g i c o s  programables  fueron  las  memorias  PROM.    Para  ello  se  uAlizan  como  entradas   las   líneas  de  dirección  a  la  memoria.  De  esta  manera  la  memoria   provee   una   tabla   de   decodificación  completa   de   las   entradas,   y   puede   uAlizarse  para   implementar   cualquier   función   lógica  combinacional.      Los   pr imeros   disposiAvos   diseñados  específicamente   para   implementar   funciones  digitales   programables   fueron   los   PLA,  introducidos  al  mercado  en  la  década  de  1970  por  Philips.      La   base   teórica   de   estos   disposiAvos   es   que  cualquier   ecuación   lógica   puede   reducirse   a  una  suma  de  productos.  El   corazón   electrónico   de   estos   disposiAvos  consiste   en   un  bloque  que  permite   negar   las  entradas   y   dos   niveles   de   compuertas:   un  nivel   de   compuertas   AND   y   un   nivel   OR.  Mediante   fusibles   pueden   programarse   las  interconexiones  entre  las  entradas  y  la  lógica.      

Esquema  básico  de  un  lpico  disposiAvo  PLA.    

Page 20: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

PAL  

     

Debido   a   las   limitaciones   en   la   velocidad  de   las   conexiones   programables   y   los  problemas   en   el   proceso   de  manufactura  de   las   PLA,   surgieron   disposiAvos   con   un  solo   nivel   de   lógica   programable  denominados  PAL  .    Los  PAL  se  basan  en  el  mismo  principio  que  las  PLA,  pero  Aenen  un  nivel  de  lógica  AND  programable  mientras  el  nivel  de  lógica  OR  es  fijo.       Esto   limita   la   canAdad   de   funciones   que  pueden  definirse  con  un  disposiAvo    dado,   así   que   los   fabricantes   de   PAL   los  o f r e c í a n   e n   u n a   v a r i e d a d   d e  configuraciones   para   adecuarlos   a   las  necesidades  del  usuario.      Muchos   PAL   además   incorporaron  registros  sobre  las  salidas  y  realimentación  para  implementar  circuitos  secuenciales.    

Esquema  de  una  posible  configuración  de  un  PAL.    

Page 21: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

GAL  

Los  disposiAvos  denominados  GAL  son  un   poco   mas   complejos   que   los   PAL  mencionados  anteriormente.      Incluyen   un   nivel   de   lógica   AND   a   la  entrada   y   luego   un   bloque   lógico  denominado  macrocelda  a  la  salida,  en  reemplazo  del  nivel  OR.      La   denominación  GAL   fue   uAlizada   en  principio  por  Laoce,  y  luego  licenciada  a  otros  fabricantes.    La   macrocelda   de   estas   GAL   se  denomina   OLMC,   por   "Output   Logic  Macro  Cell".    

Diagrama  funcional  de  una  GAL  completa  y  de  una  macrocelda  de  un  disposiAvo  GAL22V10  de  Laoce  Semiconductors.  

Page 22: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

CPLDs    

 Los   CPLDs   son   disposiAvos   que  combinan   varios   bloques   lógicos  similares   a   las   PAL   o   GAL   con   una  matriz  de  interconexión  programable.    Estos   disposiAvos   se   fabrican   con  disAntas   capacidades   para   adaptarlos  a   las   necesidades   del   usuario.   Como  ejemplo,   la   familia   MAX7000   de   alto  rendimiento  de  Altera  se  manufactura  en   versiones   desde   32   hasta   512  macroceldas,   con   36   a   212   entradas/sal idas   según   el   d isposiAvo   y  empaquetamiento  que  se  elija.    

Estructura  general  CPLD  Altera  

Page 23: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

CPLDs  

Como  se  de  las  figura,  estos  disposiAvos  incluyen  además  de  las  macroceldas,  un  arreglo  de  interconexión  programable   (PIA),  una  red  de  distribución  de  reloj  dedicada  y  bloques  de  entrada  salida  que  permiten  interfaces  compaAbles  con  diferentes  estándares  eléctricos.      Los  bloques  lógicos  AND  y  OR  están  ambos  incluidos  en  la  macrocelda  del  disposiAvo.  

Macrocelda  CPLD.    

Page 24: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

FPGAs    

 La  arquitectura  de  una  FPGA  consiste  en  arreglos  de  bloques  lógicos  que  se  comunican  entre  si  a  través  de  canales  de  conexión  verAcales  y  horizontales.    La  principal  diferencia  entre  las  FPGA  y  CPLDs  es  que  en  general  los  bloques  lógicos  de  las  FPGA  no  implementan  la  lógica  usando  compuertas  sino  con  generadores  de  funciones.        En  la  siguiente  sección  se  estudiará  en  mayor  detalle  la  arquitectura  de  una  FPGA  lpica.      

Estructura  básica  FPGA  

Page 25: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Elementos  del  FPGA  

   

Esta  FPGA  conAene  cinco  elementos  principales:      •   Bloque   de   entrada-­‐salida   (IOB   o   Input-­‐Output  Block):  estos  bloques  proveen  la  interface  entre  las  paAtas  o  "pines"  del  integrado  y  la  lógica  interna.      •   Bloque   lógico   configurable   (CLB   o   Configurable  Logic   Block):   Estos   son   los   bloques   básicos   que   se  uAlizarán   en   la   implementación   de   un   circuito  digital.      •  Bloque  de  distribución  y  compensación  de  reloj  (DLL  o  Delay  Locked  Loop):  Estos  bloques  controlan  los   dominios   de   reloj   dentro   del   integrado   y  compensan  por  retardos  que  pueda  haber  entre  el  reloj  externo  y  el  interno.      •  Bloque  de  memoria  (BLOCK  RAM):  Estos  bloques  son   memorias   dedicadas   integradas   dentro   de   la  lógica  programable.      •   Estructura   de   interconexión:   Es   una   estructura  versáAl   y   mulA-­‐nivel   de   interconexión   entre   los  otros  componentes  de  la  FPGA.      

Diagrama  en  bloques  de  una  FPGA  Spartan  IIe  de  Xilinx    

Page 26: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Bloque  Lógico  Programable    

Todas  las  FPGA  Aenen  algún  Apo  de  bloque  lógico   programable.   Este   es   el   corazón   de  la   FPGA,   y   permite   implementar   las  diferentes  funciones  lógicas.      Cada  CLB  esta  compuesto  por  dos  bloques  iguales   denominados   “slices”.   Cada   "slice"  conAene   dos   generadores   de   funciones   y  un   mulAplexor   MUXF5.   El   mulAplexor  combina  los  resultados  de  los  generadores  de   funciones   dentro   de   cada   "slice"   del  CLB.      Las   dos   "slices"   están   unidas   por   un  mulAplexor  MUXF6,  que  puede  seleccionar  la  salida  de  una  u  otra  “slice”  hacia  la  salida  del   CLB.   Esto   permite   implementar  cualquier   función   de   6   entradas,   un  mulAplexor   de   8:1   o   determinadas  funciones   lógicas   de   hasta   19   entradas.  Además   de   poder   implementarse   lógica  combinacional,   cada   “slice”   conAene  recursos   para   implementar   circuitos  secuenciales   y   operaciones   aritméAcas  eficientes.      

Esquema  del  bloque  lógico  programable  (CLB)  de  una  FPGA  de  la  familia  Spartan  IIe  de  Xilinx.    

Page 27: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

CLBs  

   

En   esta   figura   se   ven   los   generadores   de  funciones,   compuesto   por   una   tabla   de   entrada-­‐salida  (LUT  o  Look-­‐Up  Table)  de  cuatro  entradas  y  una   salida.   Estas   tablas   pueden   implementar  cualquier   función   lógica  de  cuatro  entradas  y  una  salida,   así   como   también   uAlizarse   como  memorias  distribuidas  de  16  x  1  bit.       Las   salidas   de   las   LUT   pasan   a   los   bloques   de  control,  que  conAene  lógica  que  permite  opAmizar  funciones  aritméAcas.      Los   elementos   que   permiten   implementar   lógica  secuencial   son   los  elementos  de  almacenamiento  que   se   ven   sobre   las   salidas   del   “slice”.   Estos  pueden  configurarse  como  flip-­‐flops  D  con  reloj  o  como  latches  controlados  por  nivel.    

CLB  de  una  FPGA  Spartan  3  de  Xilinx    

Page 28: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Bloque  de  Entrada  /  Salida    

Las   interfaces   de   entrada-­‐salida   son   otro  de   los   componentes   parAculares   que  Aenen   las   FPGAs.   La   familia   de   FPGAs  Spartan   IIe   de   Xilinx,   por   ejemplo,   divide  las   entradas/salidas   del   integrado   en  bancos   que   se   pueden   configurar   para  tener   una   interface   con   lógica   de  diferentes   estándares   eléctricos   de  manera  independiente.      Los   bancos   se   configuran   aplicando  diferentes   tensiones   de   alimentación   a   los  pines  denominados  VccO  y  VREF.       Al   uAlizar   diferentes   valores   de   VccO   para  los   disAntos   bancos   se   podrá   tener   un  sistema   con   interface   a   diferentes   familias  lógicas   dentro   de   la   misma   FPGA.   Las  entradas   de   reloj   están   asociadas   a  diferentes   bancos   de   entrada-­‐salida,   para  permiAr   que   haya   diferentes   dominios   de  reloj  con  interfaces  eléctricas  diferentes.    

Distribución  de  los  bancos  de  entrada/salida  en  una  FPGA  Spartan  IIe    

Page 29: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Bloque  de  Entrada  /  Salida    

Además   de   la   tensión   VccO,   para  varios   de   las   interfaces   lógicas   debe  configurarse   la   tensión   de   referencia  VREF   y   agregarse   resistencias   de  terminación   sobre   la   plaqueta   en   las  entradas-­‐salidas   de   la   FPGA.   Cada  bloque   de   entrada-­‐salida   Aene   una  resistencia  de  “pull-­‐up”  y  “pull  -­‐  down”  configurables   que   permiten   fijar   el  valor  lógico  mediante  programación.    Los   bloques   de   entrada-­‐salida   de  muchas   FPGAs   Aenen   elementos   de  almacenamiento   integrados   que  permiten   controlar  mejor   los   Aempos  de   propagación   entre   los   pines   del  integrado  y  la  lógica  interna.    Además  cada  bloque  de  entrada-­‐salida  cuenta   con   “buffers”   programables  que   pueden   configurarse   para   tres  estados  y  colocar  la  salidas  de  la  FPGA  en  alta  impedancia  (estado  ‘Z’).        

Esquema  de  un  bloque  de  entrada-­‐salida  (IOB)  de  una  FPGA  Spartan  IIe.  

Page 30: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Bloque  de  Control  de  Reloj    

El   sistema  de  control  del   reloj  consiste  en   bloques   de   control   integrados   a   la  red  de  distribución  de  reloj.    La   red   de   distribución   de   reloj   en   las  FPGA  asegura  retardos  parejos  a  todos  los  bloques  lógicos  de  la  FPGA.    Cada  fabricante  uAliza  una  arquitectura  diferente  para  el   control  y  distribución  de  reloj.    La   familia   Spartan   IIe   de   Xilinx   Aene  bloques   específicos   para   control   de   reloj  denominados  DLL  (Delay  Locked  Loop).    Estos  bloques  sincronizan  el  reloj  interno  al   reloj   externo   del   sistema,   controlan   el  desplazamiento   de   fase   entre   los   relojes,  sincronizan   los   diferentes   dominios   de  reloj  y  aseguran  un  retardo  de  distribución  del  reloj  pareja  para  la  lógica  interna  de  la  FPGA.      

Red  global  de  distribución  de  reloj  en  la  FPGA  Spartan  IIe    

Page 31: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Bloque  de  Control  de  Reloj    

 La  familia  StraAx  de  Altera  Aene  los  bloques  de  control  de  reloj.    Estos   b loques   (Enhanced   PLL)  permiten  controlar  la  fase  y  frecuencia  del  reloj,  el  sistema  de  distribución  de  reloj   y   el   estándar   eléctrico   de  interface  entre  otras  cosas        

Esquema  de  un  bloque  de  control  de  reloj  de  la  FPGA  StraAx  de  Altera    

Page 32: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Memoria    

Varias   familias   de   FPGA   conAenen  bloques   de   memoria   embebida  integrados  con  la  lógica  programable.    En   general   estos   bloques   básicos   de  memoria   pueden   uAl izarse   en  diferentes   configuraciones   para  generar   RAMs   y   ROMs   de   diferentes  tamaños.    Además   de   memorias   embebidas,   las  FPGAs   basadas   en   memoria   SRAM  pueden   usar   las   tablas   LUT   de   los  bloques  lógicos  como  memoria.    Este  bloque  se  denomina  BLOCK  RAM  y   es   una   memoria   de   puerto   dual  (dual-­‐port),   que   puede   leerse   y  escribirse  al  mismo  Aempo.    Estos  bloques  de  memoria  pueden  usarse  como  memorias   de   puerto   dual,   puerto  simple,   RAMs  o  ROMs.   Para   entender   la  versaAlidad   de   estos   bloques   de  memoria,   en   la   siguiente   tabla   se  muestran  las  opciones  de  configuración.        

Esquema  de  una  celda  de  memoria  básica  de  la  familia  Spartan  IIe  de  Xilinx.    

Page 33: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Memoria  

 Además   de   poder   configurar   cada  bloque,   varios   bloques   pueden  conectarse   uAlizando   lógica   externa  para   implementar   memorias   de   otros  tamaños  y  colas  FIFO  o  FILO.    La   figura   muestra   un   bloque   de  memoria   de   Actel,   que   puede  configurarse  como  memoria  de  puerto  simple,  dual  o  mulA-­‐puerto.      

Esquema  de  un  bloque  de  memoria  de  Actel  configurada  como  memoria  mulA-­‐puerto    

Page 34: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Bloque  de  Procesamiento  de  Señal    

Varias   FPGA   conAenen   bloques   específicos   que  opAmizan   en   hardware   ciertas   funciones  especiales.      Las   FPGA   de   la   familia   StraAx   de   Altera,   por  ejemplo,   conAenen   uno   o   más   módulos   de  procesamiento   de   señal   entre   los   bloques   de  lógica  programable  de  propósito  general.      Estos   bloques   permiten   desarrollar   ciertas  funciones   específicas   lpicas   de   las   aplicaciones  de   procesamiento   de   señal   de   manera   muy  eficiente.      Pueden   configurarse   de   varias   maneras  diferentes   según   las   necesidades   del   usuario.  Como   muestra   la   figura,   este   bloque   conAene  lógica   para   implementar   operaciones   de  mulAplicación-­‐acumulación   que   requerirían   de  muchos   recursos   y   ciclos   de   reloj   si   se  implementaran   uAlizando   lógica   de   propósito  general.      Al   igual   que   los   otros   bloques,   los   bloques  específicos   pueden   interconectarse   a   los   demás  bloques   uAlizando   la   matriz   de   interconexión  programable  de  la  FPGA.       Bloque  de  procesamiento  de  señal  de  la  familia  StraDx  de  Altera    

Page 35: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

CPUs    Embebidas    

La   familia   de   FPGAs   de   Xilinx   Virtex   II-­‐PRO  conAene   una   CPU  Power   PC   405   de   IBM   y   lógica  de   interconexión   embebida   dentro   de   lógica  programable.      Esto  permite  uAlizar   toda   la  potencia  de  una  CPU  integrada   con   la   flexibilidad   de   los   periféricos  diseñados  mediante  lógica  programable.    Los  bloques  específicos   integrados  en  el   silicio  de  las  FPGAs  se  denominan  "hardcores".      Altera   ofrece   la   FPGA   Excalibur   que   conAene   un  microcontrolador   ARM922T   integrado   a   un  costado   de   lógica   programable.   La   lógica  programable  del   Excalibur  puede   ser  de  hasta  un  millón  de  compuertas.     El   micro   es   de   arquitectura   RISC   de   32   bits,   y  puede   correr   a   una   frecuencia   de   reloj   de   hasta  200  MHz  .    Por   otro   lado   también   pueden   diseñarse  microcontroladores   o   procesadores   usando  solamente  la  lógica  de  configuración  de  las  FPGAs.        

Altera   ofrece   el   microcontrolador   Nios,   de   tecnología  RISC   de   16   bits   que   puede   uAlizarse   sobre   varias   de   las  FPGA  de  Altera.    A  este  Apo  de  diseño  se  lo  denomina  "sodcore",  ya  que  a  FPGA   no   Aene   ningún   bloque   específico   para   la   CPU  implementado  sobre  el  circuito  integrado.    Hay  muchos  micros  "so;core"  públicos  y  propietarios.      Xilinx  ofrece  el  Microblaze  y  Actel  ofrecerá  un  micro  de  la  familia  ARM.    

Page 36: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Matriz  de  interconexión  

Para   poder   implementar   circuitos  lóg icos ,   los   e lementos   lóg icos  presentados  en  las  secciones  anteriores  n o   s o l o   d e b e n   c o n fi g u r a r s e  adecuadamente   sino   que   también  deben  conectarse  entre  si.    La   estructura   de   interconexión   interna  de   un   PLD   consiste   en   un   conjunto   de  alambres   o   trazas   que   pueden  conectarse   mediante   elementos   de  conexión  programables.    Las   herramientas   de   “localización   e  interconexión”  (place  and  route)  son  las  encargadas   de   dec id i r   en   que  elementos   lógico   se   implementará   la  lógica   diseñada   por   el   usuario   y   como  deben  programarse  las  interconexiones  para   que   el   diseño   funcione   según   las  especificaciones   de   Aempo   y   retardos  que  se  han  definido.      

Page 37: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Matriz  de  interconexión  de  las  FPGA  Spartan  IIe  de  Xilinx  

Estas   FPGA  Aenen  dos  niveles  de   interconexión.  Por   un   lado   Aenen   una   interconexión   de  propósito   general   a   través   de   la   matriz   de  interconexionado   general   o  GRM  por   sus   siglas  en  inglés.     Por   otro   lado   conAenen   recursos   de  interconexión  local.      Además  de  los  ya  mencionados,  las  FPGA  Spartan  IIe   conAenen   recursos   de   interconexión  dedicados  a  señales  de  tres  estados,  de  entrada-­‐salida  y  recursos  de   interconexión  global  para   la  distribución  de  reloj  y  señales  específicas.      Los   recursos   de   interconexión   local,   mostrados  en   la   Figura   31,   permiten   hacer   las   conexiones  entre  los  elementos  internos  de  un  bloque  lógico  o   CLB,   como   las   tablas   de   búsqueda   (LUT),   los  flip-­‐flop  y  las  realimentaciones  dentro  del  CLB.        

Caminos  de  interconexión  local  en  la  FPGA  Spartan  IIe    

Además,  el  interconexionado  a  este  nivel  provee  conexiones  a   la   matriz   de   interconexionado   general   y   a   los   CLB  adyacentes.   Las   conexiones   a   los   CLB   adyacentes   permiten  opAmizar  los  diseños  al  evitar  los  retardos  y  la  uAlización  de  recursos  de  la  matriz  general  de  interconexionado.      

Page 38: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Matriz  de  interconexión  de  las  FPGA  Spartan  IIe  

 La  mayor  parte  de   las  señales  se  conectarán  a  t r a v é s   d e   l a   m a t r i z   g e n e r a l   d e  interconexionado   (GRM).   Los   elementos   de   la  GRM   se   encuentran   entre   los   CLB,   en   los  canales   de   interconexión   horizontales   y  verAcales  de  la  FPGA.       Permiten   hacer   la   interconexión   entre   las  trazas  horizontales  y  verAcales  y  hacia  los  CLB.  A   través  de  ellos   se   configuran   las   conexiones  entre   CLBs   no   adyacentes   y   hacia   los   bloques  de  entrada/salida.  

Red  dedicada  de  distribución  de  reloj  en  la  FPGA  Spartan  IIe    

Page 39: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Granularidad  de  los  DisposiDvos  Lógicos  Programables  (PLDs)    

La   granularidad   de   un   disposiAvo   lógico  programable  está  dada  por  la  funcionalidad  básica  que  provee  cada  bloque  de  configuración  lógica,  o  la  relación  entre  las  celdas  lógicas  y  los  recursos  de  interconexionado.      Algunos   parámetros   para   definir   la   granularidad  de  un  disposiAvo  programable  son:      •   Número   de   funciones   que   puede   implementar  cada  celda  lógica    •  Número  de   compuertas  NAND  de  dos  entradas  equivalente  por  cada  celda  lógica    •  Número  total  de  transistores  por  celda  lógica    •   Área   total   normalizada   de   lógica   configurable  (relación  de  área  lógica/área  de  interconexionado)    •  Número  de  entradas  y  salidas  por  celda  lógica      Algunos   disposiAvos   Aenen   arquitecturas   con  celdas  lógicas  que  pueden  implementar  funciones  lógicas   complejas,   de   varias   entradas/salidas.   A  estas   se   las   denomina   de   granularidad   gruesa.  Otras   arquitecturas   están   formadas   por   celdas  básicas  que  solo  permiten  implementar  lógica  muy  simple.   A   estas   se   las   denomina   de   granularidad  fina.      

Page 40: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Granularidad  de  los  DisposiDvos  Lógicos  Programables  (PLDs)    

La   granularidad   de   un   disposiAvo   lógico   influirá  en   la   manera   que   se   implemente   una   función  lógica   dada,   en   su   frecuencia   máxima   de  funcionamiento  y  en  la  uAlización  que  se  hace  del  disposiAvo.      Un   bloque   lógico   grande   puede   implementar  lógica  más   compleja   y   por   lo   tanto   se   necesitan  menos   bloques   para   una   función   dada.   Por   otro  lado   cada   bloque   consume  más   área   que   puede  desaprovecharse.      Una   arquitectura   de   granularidad   fina   será  lpicamente   más   densa   y   tendrá   menor   retardo  de   interconexión   entre   celda   y   celda.   Sin  embargo,   para   una   función   dada,   se   deberán  conectar  un  mayor  número  de  celdas.    En  general  la  mejor  granularidad  dependerá  de  la  aplicación   y   las   restricciones   que   hay   sobre   el  diseño.    

Bloque  Lógico  (Logic  Tile)  de  la  ProAsicPlus  de  Actel    

Page 41: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Granularidad  de  los  DisposiDvos  Lógicos  Programables  (PLDs)  

Arquitecturas  mixtas    •   Combinan   celdas   con   granularidad   fina   y  

gruesa    •   Muchas   veces   Aenen   recu r sos   de  

interconexión   dedicados   para   cada   Apo   de  celda    

•  Ejemplo:  ispXPGA  de  Laoce  Semiconductors    

Arquitecturas  con  granularidad  fina    •   Celdas   implementan   funciones   lógicas  parciales  de  n  entradas    •  Relación  de  entradas  a  registros  por  celda  muy  baja  (2/4  a  1)    •  Ejemplo:  ProAsicPlus  de  Actel      Arquitecturas  con  granularidad  media    •   Celdas   implementan   funciones   completas  de  n  entradas    •  Relación  de  entradas  a  registros  por  celda  de  6/8  a  1    •   Buenas   para   implementar   máquinas   de  estado  y  lógica  secuencial  compleja    •  Ejemplo:  Xilinx  Spartan  3      Arquitecturas  con  granularidad  gruesa    •  Celdas  esAlo  PLD  de  arreglos  de  términos    •  Relación  de  entradas  a  registros  de  32  a  1    •   Buenas   para   lógica   combinacional   como  decodificación   de   direcciones,   funciones  aritméAcas,    •   Pobres   para   arquitecturas   con   colas  (pipelines)    •  Ejemplo:  Altera  MAX  3000        

Page 42: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Tecnología  de  Configuración  de  los  PLDs    

La   tecnología   uAlizada   para   configurar   los   elementos   de   un   PLD,   ya   sean   los   bloques   lógicos   o   las  interconexiones,  dependen  del  fabricante  y  el  disposiAvo.  Entre  los  disposiAvos  reprogramables,  se  destacan  las  tecnologías  EEPROM,  SRAM  y  Flash.    Los  disposiAvos  que  solo  pueden  configurarse  una  vez  en  general  uAlizan  tecnologías  de  anAfusible.    Cada  tecnología  Aene  sus  ventajas  y  desventajas  respecto  a  las  otras.    

Page 43: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Tendencias  Actuales  y  Futuras    

•  Integración  con  herramientas  y  otros  so;ware  de  desarrollo   de   mayor   nivel,   como   son   Matlab   y  herramientas   para   el   diseño   integrado   de  so;ware  y  hardware.  (HW-­‐SW  co-­‐design).    

•          Integración  del  manejo  de  configuración  de  FPGAs  con   las   herramientas   de   diseño   de   circuitos  impresos   (PCBs),   para   poder   configurar   el  interconexionado   interno   del   SoPC   de   manera  integral   con   el   conexionado   hacia   los  componentes  externos.    

•         Instrumentos,   tales   como   analizadores   lógicos,  que  permiten  observar  la  lógica  de  interna  de  las  FPGA   en   Aempo   real   al   mismo   Aempo   que   se  observan  otras  señales,  externas  a  la  FPGA.    

•   Sistemas   con   aplicaciones   que   uAlicen   la  reconfiguración   o   reprogramación   de   las   FPGAs  directamente   en   el   producto   final   según   la  necesidad  del  momento.    

•     Integración   de   bloques   lógicos   programables  alrededor   de   lógica   fija   en   ASICs   o   integrados  estándar.    

 

 •  Desarrollo  de  FPGAs  con  mayor  capacidad,  más  velocidad,  menos   consumo   de   potencia   y  menor  costo.    •   Integración   en   hardware   sobre   las   lógicas  programables  de  bloques  específicos  como  ALUs,  componentes  para  procesamiento  digital  de  señal,  integración  con  uP  y  uC,  memorias,  etc.    •   Integración   y   mezcla   entre   FPGAs   y   circuitos  integrados   de   propósito   específico   (ASICs).  Componentes  que  pueden  pasar  directamente  de  un   protoApo   sobre   una   FPGA   a   un   ASIC   sin  esfuerzo  de  diseño  adicional.    •   Cambios   en   las   herramientas   de   so;ware   para  tener   mayor   integración   entre   los   diferentes  usuarios  y  en  los  disAntos  pasos  del  proyecto.  Esto  incluye  el  manejo  de  grupos  de  trabajo,  el  manejo  de   la  propiedad   intelectual,   la  documentación  de  proyectos  integrada  a  las  herramientas  de  diseño,  la  transferencia  de  los  diseños  para  FPGAs  a  ASICs,  etc.        

Page 44: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Historia  

Surge   a   principios   de   los   ’80s   del   proyecto   DARPA   (del   Departamento   de   Defensa   de   los   EE.UU.)    llamado  VHSIC  (Very  High  Speed  Integrated  Circuits)    Se  uAliza  como  forma  de  describir  circuitos  integrados:    • Crisis  del  ciclo  de  vida  del  HW:  Cada  vez   los  circuitos   integrados  eran  más  complejos,  y  el   coste  de  reponerlos  cada  vez  era  mayor,  básicamente  porque  no  estaban  correctamente  documentados.    VHDL  nació  como  una  manera  estándar  de  documentar  circuitos.  

• El  uso  de  VHDL  permiAó  comprobar  que  el  Aempo  de  diseño  de   los  circuitos  se   reducía,  porque  se  podían  crear  directamente  de  su  descripción:  uAlidad  de  la  síntesis.    

• En  1987  el  trabajo  se  cedió  a  la  IEEE,  y  a  parAr  de  ese  momento  es  un  estándar  abierto.  

VHDL:  VHSIC  Hardware  DescripAon  Language      

 VHSIC:  Very  High  Speed  Integrated  Circuits        

Page 45: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Evolución  

1980:   El   departamento   de   defensa   de   los  EEUU   funda   el   proyecto   para   crear   un  HDL  estándar  dentro  del  programa  VHSIC.    1981:   Woods   Hole   Workshop,   reunión  inicial   entre   el   Gobierno,   Universidades   e  Industria.    1983:   Se   concedió   a   Intermetrics,   IBM   y  Texas   Instruments   el   contrato   para  desarrollar  VHDL.    1985:  Versión  7.2  de  dominio  público.    1987:   El   IEEE   lo   raAfica   como   su   estándar  1076  (VHDL-­‐87).    1993:   El   lenguaje   VHDL   fue   revisado   y  ampliado,  pasando  a   ser  estándar  1076   ‘93  (VHDL-­‐93).    2000:ÚlAma  modificación  de  VHDL    

Page 46: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

VHDL:  CaracterísDcas    Generales  

VHDL:     lenguaje   orientado   a   la   descripción   o  modelado   de   Hardware   similar   a   lenguajes   de  alto  nivel  de  propósito  general  (ADA  en  especial):  de  ellos  hereda:     Concepto   de   Apo   de   datos,   con   posibilidad   de  definir  nuevos  Apos       facilita   la   descripción   de   circuitos   con   diversos  niveles  de  abstracción.  Sentencias   de   control   de   flujos   (if,   for   while).  Junto  con  la  caracterísAca  anterior  potencia  para  desarrollar  algoritmos.  C apa c i d ad   de   e s t r u c t u r a r   e l   c ód i go  (subprogramas,   funciones   o   procedimiento),  permite  afrontar  algoritmos  complejos.  Posibilidad  de  uAlizar  y  desarrollar  bibliotecas  de  diseño,  Incorpora   conceptos   específicos   para   el  modelado   del   hardware,   como   concurrencia   y  ciclo  de  simulación.      

Page 47: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Estado  actual  y  alternaDva  

   En   la   actualidad   el   diseño   mediante  esquemas   no   es   una   alternaAva  realista   en   ningún   proyecto,   por  ejemplo   Gforce   4   Aene   65   M  transistores  y  800.000  líneas  de  código  Verilog.  La  alternaAva  estándar  es  usar  un  HDL  Verilog:   Costa   Oeste   de   EEUU,   para  ASICs,  menos  verboso,  más  parecido  a  C,  menos  expresivo.  VHDL:   Costa   Este   y   Europa,   para  FPGAs,  más   descrip?vo,  más   parecido  a  PASCAL  y  ADA,  más  expresivo.  El   diseño   se   sinteAza   a   parAr   de   un  HDL,   pero   gran   parte   del   diseño   y   la  verificación   se   realiza   con   lenguajes  estándares  C  y  Matlab  VHDL   es   el   estándar   para   FPGAs   en  proyectos   industriales   de   moderada  complejidad.      

Page 48: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 ¿Futuro?  

Los   lenguajes   de   descripción   de  hardware  también  Aenen  limitaciones:  Metodología   de   diseño   nueva,   exige  un  cambio  de  mentalidad  con  respecto  al  So;ware  No   permiten   re   usar   código   SW   para  HW.  P o s een   e no rme   r e u s ab i l i d a d  intrínseca.  La   decisión   HW/SW   se   debe   hacer  antes  de  la  codificación  La   simulación   es   lenta,   siempre   hay  que   recurrir   a   una   simulación  algorítmica  usando  lenguajes  SW  Como   respuesta   a   esto,   hay   varias  iniciaAvas   para   describir   HW   usando  lenguajes  de  alto  nivel,  Apo  SW  Handel-­‐C,    System-­‐C  Forge  (Java)  Superlog      

Page 49: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Estructura  de  un  diseño  en  VHDL  

Page 50: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Elementos  de  descripción  VHDL  

Bibliotecas  (Library)  •   Almacenan  los  elementos  de  diseño:  Apo  de  datos,  operadores,  componentes,  objetos,  funciones,...  •   Esos  elementos  de  diseño  se  organizan  en  Paquetes  

 Packages:  son  unidades  de    almacenamiento  de    elementos  y  Aenen  que    hacerse  “visibles”  para    poder  ser  uAlizados  .  

• Hay  2  bibliotecas  que  siempre  son  visibles  por  defecto:  std  (la  standard)  y  work  (la  de  trabajo)  y  que  no  es  necesario  declarar    EnAdades    (EnDty)  Es  el  modelo  de  interfaz  de  un  circuito  con  el  exterior  mediante  unas  terminales  de  entrada  y  de  salida.  Es  la  caja  negra  que  define  las  entradas  y  salidas.    Arquitectura  (Architecture)  Describe  el  funcionamiento  del  circuito.      

Una   unidad   hardware   se   puede   visualizar   como   una   caja  negra,   el   interfaz   de   la   “caja   negra”   está   completamente  definida.  El  interior  está  oculto    En  VHDL  la  caja  negra  se  denomina  enDdad  La  enAdad  describe  la  E/S  del  diseño  Para   describir   su   funcionamiento   se   asocia   una  implementación  que  se  denomina  arquitectura  La  arquitectura  describe  el  contenido  del  diseño.    

Page 51: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Puertos  de  una  enDdad    

Cada  una  de  las  posibles  conexiones  se  denomina  PORT  y  consta  de:  Un  nombre,  que  debe  ser  único  dentro  de  la  enDdad.    Una  lista  de  propiedades,  como:  la  dirección  del  flujo  de  datos,  entrada,  salida,  bidireccional  y  se  conoce  como  modo  del  puerto.    los  valores  que  puede  tomar  el  puerto:  '0’,  '1'  o  (‘Z’),  etc  .,  los  valores  posibles  dependen  de  lo  que  se  denomina  Dpo  de  señal.    Los  puertos  son  una  clase  especial  de  señales  que  además  añade  el  modo  al  Dpo  de  señal  e0e2e1salida0salida1caja      

Page 52: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Modos  de  un  Puerto  

Indican   la   dirección   y   si   el   puerto  puede   leerse  o  escribirse  dentro  de   la  enAdad.    IN:  Una  señal  que  entra  en  la  enAdad  y  no  sale.   La  señal  puede  ser   leída  pero  no  escrita.    OUT:   Una   señal   que   sale   fuera   de   la  señal   y   no   es   usada   internamente.   La  señal   no  puede   ser   leída  dentro  de   la  enAdad.    BUFFER:   Una   señal   que   sale   de   la  enAdad   y   también   es   realimentada  dentro  de  la  enAdad.    INOUT:  Una  señal  que  es  bidireccional,  entrada/salida  de  la  enAdad.    

Page 53: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Estructura  de  un  diseño  en  VHDL  

Page 54: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Declaración  de  enDdad  

Page 55: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Resumen:  EnDdad  y  Arquitectura  

La  enAdad  se  uAliza  para  hacer  una  descripción  "caja  negra"  del  diseño,  sólo  se  detalla  su  interfaz            Los  contenidos  del  circuito  se  modelan  dentro  de  la  arquitectura            Una  enAdad  puede  tener  varias  arquitecturas  Por  ejemplo,  la  descripción  de  comportamiento  que  ha  hecho  el  diseñador  y  el  modelo  post-­‐  layout  obtenido  después  de  implementar  el  chip      

Page 56: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Invariancias    

VHDL  presenta  ciertas  invariancias  que  conviene  conocer  antes  de  su  uAlización.  Invariante  a  mayúsculas,  es  decir,  dos  expresiones  iguales  conteniendo  mayúsculas  y  minúsculas  son  idénAcas.      Invariante  a  los  espacios,  es  decir,  dos  expresiones  iguales  conteniendo  más  o  menos  espacios  son  idénAcas        Los  comentarios  van  detrás  de  dos  rayas  “-­‐-­‐”y  convienen  que  sean  claros  para  que  las  descripciones  puedan  ser  fácilmente  uAlizadas  por  otras  personas  o  por  A  mismo.  VHDL  es  relaAvamente  laxo  con  la  uAlización  de  paréntesis,  una  buena  idea  es  uAlizar  los  paréntesis  de  manera  que  una  persona  la  pueda  entender  con  facilidad          Cada  asignación  termina  con  “;”  Cada  “if”  Dene  el  correspondiente  “then“  Cada  “if”  termina  con  el  correspondiente  “endif”  Si  se  necesita  “elseif”  se  uDlizará  “elsif”  Cada  “case”  termina  con  el  correspondiente  “end  case”  Cada  “loop”  termina  con  el  correspondiente  “end  loop”    

Page 57: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 IdenDficadores    

IdenDficadores.   Son   las   palabras   que  se   uDlizan   para   idenDficar   a   las  funciones,  señales,  puertos,  variables,  etc.   Es   conveniente   que   dichas  palabras   proporcionen   información  suficiente  para  que  la  descripción  sea  fácilmente  reuDlizable.  El   idenAficador   debe   dar   suficiente  información  para  su  uso  .  El   idenAficador   puede   ser   tan   largo  como   se   quiera,   pero   un   nombre  demasiado   largo   es   complicado   de  uAlizar,   y   demasiado   corto   quizá  proporcione  poca  información.  El   idenAficador   puede   contener  cualquier  combinación  de  las  letras  (A-­‐Z   y   a-­‐z)  números   (0-­‐9   )   y   el   sub-­‐guión  (“_”)  El   idenAficador   debe   empezar   por   un  carácter  alfabéAco.  El   idenAficador  no  puede   termina   con  el  sub-­‐guión  (“_”)      

Son  palabras  que  no  se  pueden  uAlizar  como  idenAficadores      

Page 58: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Modelos  de  descripción  

Comportamental  o  algorítmico  (behavioral).    Especifica  cómo  se  comportan  las  salidas  con  respecto  a  las  entradas.    No  proporciona  al  sinteAzador  información  de  cómo  será  el  circuito,  siendo  éste  el  que  lo  determina.    La  parte  fundamental  de  este  Apo  de  descripciones  es  el  proceso  (process)      Flujo  de  datos  (dataflow).    Especifica  el   circuito   como  una   representación  concurrente  del  movimiento  de   los  datos  a   su   través,  es  decir,  cómo  circula  la  información        Estructural  (structural).  Describe  la  conexión  entre  disAntos  módulos  descritos  previamente      

Page 59: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Modelos  de  descripción  VHDL    

 Como   hemos   visto,   la   arquitectura  (architecture),   en   VHDL   describe   la  función   que   realiza   una   en?dad  (en?ty).    La   arquitectura   se   compone  de  dos  partes:    la   parte   declaraAva   en   la   que   se  encuentran   las   definiciones   de   las  s e ñ a l e s ,   f u n c i o n e s ,   A p o s ,  procedimientos,  etc..  a  uAlizar.    y   el   cuerpo   de   la   descripción,  consistente   en   una   sucesión   de  as ignac iones   concurrentes   y  procesos  que  modelan  la  enAdad.      

Page 60: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Concurrencia  del  hardware  

El   hardware   es   concurrente,   es   decir,  los   circuitos   coexisten   en   el   Aempo   y  por  lo  tanto  trabajan  al  mismo  Aempo.  Este   chip   Aene   tres   compuertas   que  funcionan  simultáneamente    No  se  puede  modelar  con  un   lenguaje  como  C:  

S1  =  A  and  B;  S2  =  C  or  D;  S3  =  C  xor  D;  

Las   tres   puertas   funcional   al   mismo  Aempo  ¡no  una  después  de  la  otra!      La   solución   al   problema   anterior   es  que   aunque   la   e jecución   sea  secuencial,  las  asignaciones  no  tengan  Dempo  de  ejecución:    

S1  <=  A  and  B;  S2  <=  C  or  D;  S3  <=  C  xor  D;  

El   valor   de   S   será   el   correcto   una   vez   que   se   hayan  propagado  los  Aempos  de  retardo  de  las  compuertas.  No  hay  que  olvidar  que  se  trata  de  modelar  circuitos  reales,  no  virtuales,  y  las  señales  necesitan  que  transcurra  el  Aempo  para  tomar  un  valor  

Page 61: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Sentencias  concurrentes  

CaracterísDcas:  Se  ejecutan  de  forma  asíncrona  unas  respecto  de  las  otras  en  el  mismo  Aempo  de  simulación.  El  orden  en  que  se  escriban  es  indiferente,  no  siguen  un  orden  de  ejecución  predefinido.  –No  obstante  conviene  escribir  el  código  en  el  orden  que  mejor  se  pueda  entender  y  mejor  documente  el  diseño.        Sirven  para  especificar:  

 Interconexiones  entre  componentes.    Estructuras  jerárquicas.    Estructuras  regulares.    Transferencias  entre  registros.  

   

Page 62: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 process:  elemento  de  diseño  principal    

Un   proceso   describe   el   comportamiento   de  un  circuito:  Cuyo   estado   puede   variar   cuando   cambian  ciertas  señales  UAlizando   construcciones   muy   expresivas:  if..then..else,  case,  bucles  for  y  while,  etc…  Y   que   además   puede   declarar   variables,  procedimientos,  etc...      

Page 63: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Procesos  

Los  procesos  se  “disparan”(su  código  se  ejecuta)  cuando  cambia  alguna  de  las  señales  de  su  lista  de  sensibilidad.    Un  proceso  sin  lista  de  sensibilidad  es  válido,  pero  se  acAva  con  cualquier  evento,  no  se  asegura  un  comportamiento  correcto.    Las   instrucciones  dentro  del  proceso  se  ejecutan  secuencialmente,  una  detrás  de  otra,  pero  sin  dar  lugar  a  que  avance  el  Aempo  durante  su  ejecución.  El  Aempo  sólo  avanza  cuando  se  llega  al  final  del  proceso.    Las   señales  modelan   hilos   del   circuito,   y   como   tales,   sólo   pueden   cambiar   de   valor   si   se   deja   que  avance  el  Aempo.    Una  arquitectura  puede  tener  tantos  procesos  como  queramos,  y  todos  se  ejecutan  en  paralelo.    Esta  es  la  manera  que  Aene  VHDL  de  expresar  la  concurrencia  inherente  al  hardware      

Page 64: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 La  solución  VHDL  a  la  concurrencia  

VHDL   (y   en   general,   todos   los   HDLs)   solucionan   este   problema   dando   soporte   explicito   a   la  concurrencia  En   VHDL,   una   arquitectura   puede   tener   tantos   procesos   como   queramos,   y   todos   se   ejecutan  concurrentemente      

Page 65: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 sentencias  concurrentes  

 Asignación  simple                suma  <=  ope1  xorope2;    Para  Señales  y  Puertos,  el  operador  es  <=,  el  lado  izquierdo  es  el  desAno  y  el  lado  derecho  la  fuente.  OJO:  fuente  y  desAno  Aenen  que  ser  del  mismo  Apo.  Para  Variables  el  operador  es  :=    acarreo_intermedio:=  ope1  and  ope2;    WHEN/ELSE    Permite  realizar  asignaciones  condicionales  salida  <=  a  and  b  when  c  =‘1’  else  a  or  c;    

Page 66: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 WHEN/ELSE    

[eDqueta:]  señal  <=  val_1  when  condi_1      else                                                                              val_2  [whencondi_2]  else                                                                                …                                                                        else                                                                              val_n;  Ejemplo:      

Page 67: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 WITH/SELECT  

La  asignación  condicional  (WHEN/ELSE),  También  se  puede  hacer  mediante  la  sentencia  de  asignación  selecAva  WITH/SELECT                        Por  su  ejecución  en  paralelo  es  similar  a  un  CASE  Se  pueden  dar  problemas  de  memoria  implícita  si  no  se  pone  el  úlAmo  when  others.    

Page 68: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 WITH/SELECT    

Page 69: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Dentro  de  los  procesos:  Descripciones  

secuenciales  

Page 70: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 IF  

Page 71: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Ejemplo  IF  

Page 72: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 CASE  

Sintaxis:    CASE  expresión  IS  WHEN  caso1=>                                secuencia  sentencias1;    WHEN  caso2  =>                                secuencia  sentencias2;  WHEN  casoN=>                                  secuencia  sentenciasN;  WHEN  OTHERS  =>                                      resto  de  casos;  END  CASE;    

Page 73: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 FOR-­‐LOOP    

Realiza  un  bucle  un  número  determinado  de  veces  [eAqueta:]  FOR  índice  IN  rango’inf  TO  rango’sup  LOOP                          secuencia  de  sentencias  END  LOOP[eAqueta];      

ejemplo:  bucle:  FOR  i  IN  0  TO  5  LOOP                                      x(i)  <=  enable  AND  w(i+2);                                        y(0,  i)  <=  w(i);  END  LOOP  bucle;  

Page 74: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 WHILE-­‐LOOP    

El  bucle  se  repite  mientras  la  condición  que  haya  después  del  while  sea  verdadera    [eAqueta:]  WHILE  condición  LOOP                                            secuencia  de  sentencias  END  LOOP[eAqueta];  ejemplo:  lazo1:WHILE  (i  <  10)  LOOP  WAIT  UNTIL  clk'EVENT  AND    clk='1';  END  LOOP  lazo1;    

 LOOP    El  bucle  se  repite  infinitamente    [eAqueta:]LOOP                                secuencia  de  sentencias  END  LOOP[eAqueta];    ejemplo:  lazo1:  LOOP                            a  <=  c  and      b;  END  LOOP  lazo1;    La  única  sentencia  que  deja  romper  el  bucle  es  EXIT    

Page 75: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 EXIT    

DeAene  la  ejecución  en  ese  instante  y  sale  del  bucle.  Si   hay   varios   bucles   anidados,   sale   de  donde   se   encuentre   la   instrucción   o   bien  del  bucle  que  se  especifica  en  la  eAqueta.  Solamente   puede   aparecer   dentro   de   una  sentencia  LOOP.                    exit  [eDqueta]  [when  condición];    Ejemplo:  -­‐-­‐Interrumpe  el  FOR  y  sigue  por  el  WHILE  termina:  WHILE  a<  100  LOOP                                      -­‐-­‐-­‐sentencias                                      sigue:    FOR  n  IN  0  TO  100                                                                -­‐-­‐-­‐sentencias                                                                EXIT  termina  WHEN  n=a;                                                              END  LOOP  sigue;                                      END  LOOP  termina;    Cuando   existen   bucles   anidados,   sale   del  más   interno,  o  bien,  de  aquel  que  Aene   la  eAqueta  que  sigue  al  EXIT.      

NEXT    En  VHDL  se  pueden  crear  bucles  infinitos    [eDqueta]  loop                              secuencia  de  sentencias  End  loop  [eDqueta];    Los  bucles  pueden  tener  una  condición  de  salida.    next  [eDqueta]  [when  condición];    Ejemplo:    -­‐-­‐Interrumpe  el  FOR  y  sigue  por  el  WHILE  termina:  WHILE  a<  100  LOOP  -­‐-­‐-­‐sentencias                                    sigue:  FOR      n  IN0  TO100  -­‐-­‐-­‐sentencias                                                              NEXT  termina  WHEN  n=a;                                                            END  LOOP  sigue;                                        END  LOOP  termina;      

Page 76: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 WAIT    

Espera  a  que  ocurra  una  condición    WAIT  UNTIL  condición;  WAIT  UNTIL  e1=‘1’  and  e2=‘0’;    Espera  a  que  cambie  alguna  señal  de  la  lista  de  señales    WAIT  ON  lista_señales;    WAIT  ON  e1,e2,clk;    Espera  un  cierto  Aempo    WAIT  Dempo;    WAIT  25ns;    Espera  indefinidamente    WAIT    

NULL    No   realiza   función   alguna.   Pasa   la  ejecución   a   la   siguiente   sentencia  secuencial.    ÚAl   en   sentencias   CASE   cuando   no   se  quiere   realizar   ninguna   acción   para  alguna  de  las  elecciones.    Sintaxis:    [eDqueta:]  NULL;  

Page 77: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 GENERATE    

Esta   sentencia   concurrente   permite   reducir   el  tamaño  del  código  de  aquellas  estructuras  que  se  repiten  considerablemente.    Sintaxis:  eAqueta:  FOR  idenAficador  IN  range  GENERATE                                      (sentencias  concurrentes)                                    END  GENERATE;    eAqueta:  IF  condición  GENERATE                                    (sentencias  concurrentes)                                      END  GENERATE;    

Page 78: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Paquetes    

Page 79: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Componentes    

Page 80: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Atributos    

Un  atributo  es  una  caracterísAca  asociada  a  un  elemento(Apo  de  dato,  señal,  enAdad,…)  que  proporciona  información  adicional.                                                                                                                                                                        Atributo  ≠Valor  Un  objeto  Aene  un  solo  valor  y  puede  tener  múlAples  atributos.  VHDL  proporciona  una  serie  de  atributos  predefinidos.      

 Atributos  de  rango  vectores  

Page 81: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Atributos  de  rango  de  vectores.    

Page 82: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Atributos  de  rango  de  vectores    

Loops  

Page 83: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Atributos  de  las  señales  

 DELAYED(t).  Valor  de  la  señal  retrasada  t  unidades  de  Aempo.  STABLE(t),  verdadero  si  la  señal  permanece  invariable  durante  t  unidades  de  Aempo.  QUIET(t),  verdadero  si  la  señal  no  ha  recibido  ninguna  asignación  en  t  unidades  de  Aempo.  TRANSACTION,  Apo  bit,  a  ‘1’cuando  hay  una  asignación  a  la  señal.  EVENT,  verdadero  si  ocurre  un  cambio  en  la  señal  en  el  paso  de  simulación.  ACTIVE,  verdadero  si  ocurre  una  asignación  a  la  señal  en  el  paso  de  simulación.  LAST_EVENT,  unidades  de  Aempo  desde  el  úlAmo  evento.  LAST_  ACTIVE,  unidades  de  Aempo  desde  la  úlAma  asignación.  LAST_VALUE,  valor  anterior  de  la  señal.  DRIVING,  verdadero  si  el  proceso  actual  determina  el  valor  de  la  señal.  DRIVING_VALUE,  valor  que  toma  la  señal  tras  el  proceso.    

Page 84: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Atributos  

Page 85: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Resumen:    

EsDlos  de  descripción  

I n d e p e n d i e n t e   d e l   n i v e l   d e  abstracción,   existen   tres   esAlos   de  descripción  de  una  arquitectura:    Comportamiento  (Behavioral)     Transferencia   entre   registros   o   flujo          de  datos  (Data  Flow)    Estructural  (Structural)    En   VHDL   un   sistema   puede   mezclar  diferentes  esAlos  a  la  hora  de  describir  sus  diferentes  arquitecturas.    1.  Comportamiento  (Behavioral).  En   este   esDlo   de   descripción   se  modela  la  funcionalidad  por  medio  de  los  recursos  algorítmicos  del  lenguaje.    Se  describe  el  algoritmo  que  refleja  el  c o m p o r t a m i e n t o   d e   d i c h o  componente.  También   se   le   suele   llamar   esAlo  algorítmico  o  secuencial.      

2.  Transferencia  entre  registros  (RTL)  o  flujo  de  datos  (Data  Flow).  En   este   esDlo   de   descripción   se   especifican   los   flujos  de   datos   del   sistema   y   la   interconexión   entre   sus  componentes.    El   proceso   de   descripción   se   realiza   por   medio   de  funciones   lógicas,   que   se   ejecutarán   de   forma  concurrente      3.  Estructural  (Structural).  En   este   esDlo   de   descripción   se   definen   o   instancian  todas  las  partes  del  sistema  y  sus  interconexiones.    Resulta  muy  úAl   cuando   se  quiere  aprovechar  diseños  compilados   con   anterioridad   y   que   se   encuentran  almacenados  en  bibliotecas  de  componentes.  La   instrucción   concurrente   fundamental   uAlizada  dentro  de  una  arquitectura  RTL  es  la  de  COMPONENT    COMPONENT  nombre_componente                        PORT(  nombre_puerto:  Apo_puertoApo_dato;                                                nombre_puerto:  Apo_puertoApo_dato;                                                  ...                                              );  END  COMPONENT;      

Page 86: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Ejemplo  de  esDlos  de  descripción  

 MulAplexor  de  dos  entradas  de  datos  de  un  bit  (  e0  y  e1  ),  una  señal  de  salida  (  y  )  y  señal  de  control  (  sel  )    

Declaración  de  la  enAdad    (enAty)  

Page 87: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Ejemplo  de  esDlos  de  descripción  

1.  Descripción  de  comportamiento  o  algorítmica  (Behavioral)        

 

Page 88: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ejemplo  de  esDlos  de  descripción  

3.  Descripción  estructural  (Structural)    

Page 89: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ejemplo  de  esDlos  de  descripción  

Page 90: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Modelado  combinacional  

El   modelado   de   sistemas   combinacionales   es  muy  sencillo,  puesto  que  en  todo  momento  las  salidas   sólo  dependen  del  estado  actual  de   las  entradas,  es  decir,  el  circuito  no  9ene  memoria.    Un  circuito  combinacional  puede  tener  mulAtud  de  entradas  y  salidas,  por  lo  tanto:  • Necesitar   miles   o   millones   de   términos  canónicos  para  describirlo  matemáAcamente.  • Tablas  de  verdad  que  resultan  inmanejables.  

La  clave  para  el  desarrollo  de  estos   sistemas  es  el  pensamiento  estructurado  • Un   sistema   complejo   se   concibe   como   un  conjunto   de   subsistemas   más   pequeños,   cada  uno   de   los   cuales   Aene   una   descripción   más  sencilla.  

Estos   bloque   combinacionales   consAtuyen   las  estructuras  básicas  con  las  que  se  construyen  los  sistemas  procesadores  •   MulAplexores,  decodificadores,  comparadores,  sumadores,  etc.  …      

Page 91: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Descripción  VHDL    

de  sistemas  combinacionales  

Para   describir   circuitos   combinacionales  uAl izaremos   sentencias   de   as ignación  concurrentes  y  procesos.  Sentencias   de   asignación   concurrentes.   Van  fuera   del   proceso.   Esto   se   debe   a   que   en   una  declaración  concurrente  no  importa  el  orden  en  el   que   se   escriban   las   señales,   ya   que   el  resultado  para  una  determinada  función  sería  el  mismo.  Se  uAlizarán  tres  Apos  de  sentencias  de  asignación  concurrentes:    Sentencias  de  asignación  simples,  por  ejemplo:                                                salida1  <=  A  and  B;    • Sentencias  de  asignación  condicionales,  por  ejemplo:                                                salida2  <=  A  when  S  =  ‘1’elseB;    • Sentencias  de  selección,  por  ejemplo:                                                  with  S  select                                                                        salida3  <=  ‘1’  when  “00”;                                                                            ‘0’when  others;    Siempre  hay  que  evitar  la  realimentación  combinacional,  ya  que  esto  modela  elementos  de  memoria  asíncronos.  

 Es  decir,  hay  que  evitar  que  una  misma  señal  aparezca  en  el  lado  izquierdo  y  en  el  lado  derecho  de  la  sentencia  de  asignación:                                                                          Y  <=  Y  nand  X;    Procesos.    Se  debe  respetar  las  siguientes  reglas:  • Si   una   señal   es   leída   en   el   interior   de   un  proceso,  es  decir,  aparece  en  el  lado  derecho  de   una   sentencia   de   asignación   o   en   una  condición,   debe   aparecer   en   su   lista   de  sensibilidad.  

• Si  a  una  señal  se  le  asigna  un  valor  de  forma  condicional   (con   sentencias   if   o   case)   nos  debemos   asegurar   que   no   ex i s ten  condiciones   para   las   cuales   el   valor   de   la  señal  no  se  ha  definido  en  el  código.    

• En   VHDL   las   señales   manAenen   su   valor  hasta   que   se   les   asigna   uno   nuevo;   por   lo  tanto,   si   para   una   señal   dada,   su   valor   está  indefinido,   el   compilador   sinteAza   un   latch  (biestable)  que  almacena  la  señal.            

Page 92: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 MulDplexores    

Circuitos   que   Aenen   n   entradas   de  datos   y   una   salida   de   datos,   por   lo  tanto   necesitan   m   entradas   de  selección,  donde  m  es:            Habitualmente   también   poseen   una  entrada  de  habilitación    La   func ión   f   que   descr ibe   e l  comportamiento   de   un  mul?plexor   de  dos  entradas  (I0,  I1)  ,  una  salida  y  una  entrada   de   selección   (S),   se   puede  describir  mediante  la  tabla  Aplicando  Karnaugh  se  ob?ene:        

Page 93: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

MulDplexores  

Page 94: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

MulDplexores  

Page 95: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Decodificadores    

 Es  un  circuito  lógico  con  n  entradas  y  m  salidas,  donde  m  es      Podemos  encontrar  decodificadores  con  entrada  de  habilitación,  ac?vos  por  cero  o  ac?vos  por  uno      

Page 96: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Decodificadores  

Page 97: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Decodificadores  

Page 98: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Decodificadores  

Page 99: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Decodificadores  

Page 100: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

 Codificadores    

 Es   un   circuito   lógico   con  n   entradas   y  m  salidas,  donde  m  es        Habitualmente   también   poseen   una  entrada   de   habilitación,   pueden   ser  ac?vos  por  cero  o  por  uno    

Page 101: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Codificadores  

Page 102: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Codificadores  

Page 103: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Codificadores  

Page 104: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Lógica  Secuencial  

Es   necesario   conocer   el   Apo   de  descripción   concreto   a   realizar   para  que   se   reconozca   un   elemento  secuencial  Es   obligado   el   uso   de   procesos  (excepto  latches),  y  recomendable  que  incluyan  lista  de  sensibilidad  Diferencia  entre  variables  y  señales  Aconsejable   incluir   siempre   un   reset  global   que   aplique   un   valor   de  inicialización    

•  entity latch is •  port (a, b: in std_logic; •  d: out std_logic); •  end latch;

•  architecture l_a of latch is •  begin •  process (a,b)

•  begin •  if b=’1’ then d <= a; end

if;

•  end process; •  end l_a;

entity latch is port (a, b: in std_logic; d: out std_logic); end latch; architecture l_a of latch is begin d <= a when b=’1’; end l_a;

Page 105: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Inferencia de registros activos por flanco  

Es  el  método  más  habitual  de  describir  sistemas  síncronos  Los   disposiAvos   lógicos   incluyen  r e g i s t r o s   a c A v o s   p o r   fl a n c o  (generalmente  de  Apo  D)  Existen  varias   formas  de  especificar   la  llegada  de  un  flanco:  Descripción genérica

 •  entity registro is •  port (d, reset, preset, reloj: in std_logic; •  q: out std_logic); •  end registro;

•  •  architecture r_a of registro is •  begin

•  process (d, reset, preset, reloj) •  begin •  if reset = ’1’ then q <= ‘0’; •  elsif preset = ‘1’ then q <= ‘1’;

•  elsif rising_edge(reloj) then q <= d; •  end if; •  end process;

•  end r_a;

rising_edge(reloj) if reloj’event and reloj=‘1’

if reloj’event and reloj=‘1’ and reloj’last_value=‘0’

Page 106: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

No  emplear  más  condiciones  else  ó  elsif  en  la  misma  sentencia  if..then..else  después  de  la  condición  de  evaluación  del  reloj  En  la  misma  evaluación  if  del  reloj  no  se  deben  comparar  otras  señales  o  variables  La  sentencia  if  del  reloj  no  puede  estar  dentro  de  un  bucle  La  sentencia  if  del  reloj  no  debe  estar  anidada,  se  pueden  incluir  más  if  dentro  de  ella  Sólo  se  puede  incluir  una  evaluación  de  flanco  por  proceso:  varios  relojes  à  varios  procesos  En  comparaciones  múlAples,  emplear  la  sentencia  case  No  uAlizar  relojes  derivados,  alternaAvamente,  emplear  habilitación  de  reloj    

•  r_derivado <= not a and (b or c); •  process (d, reset, preset, reloj, r_derivado) •  begin •  if reset = ’1’ then q <= ‘0’;

•  elsif preset = ‘1’ then q <= ‘1’; •  elsif rising_edge(reloj) then •  if r_derivado = ‘1’ then

•  q <= d; •  end if; •  end if; •  end process;

•  end r_a;

Page 107: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Módulos funcionales específicos  En  sistemas  complejos  es  necesaria  una  correcta  parAción  del  diseño  (Top-­‐Down)  Las  descripciones  de  mayor  nivel  suelen  ser  estructurales  (componentes  y  subprogramas)  Aconsejable  emplear  módulos  del  fabricante  (generadores  automáAcos,  módulos  IP,  ...)  Consultar  documentación  del  so;ware  de  síntesis  à  Herramientas  y  atributos  especiales  Módulos  específicos  usuales:  MulAplicadores,  RAM,  ROM,  UART,  filtro  FIR,  interface  PCI,  ...    Necesaria  la  uAlización  del  Apo  std_logic  ó  std_ulogic  que  define  el  estado  'Z‘  Basta  con  incluir  una  condición  en  la  que  uno  de  los  resultados  ('True'  o  'False')  deja  la  salida  en  alta  impedancia    

Puertas triestado

architecture hab_b of hab is begin process (entrada, oe) begin if (oe = ’1’) then salida <= entrada; else salida <= ’Z’; end if; end process; end hab_b;

Page 108: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Para puertos bidireccionales la descripción es similar a los triestado: Tipo inout  

•  entity bidir is •  port ( bid : inout std_logic ; •  a, b, c, oe : in std_logic; •  salida : out std_logic);

•  end bidir ; •  architecture bidir_a of bidir is •  signal interna1, interna2 : std_logic ;

•  begin •  bid <= interna1 when oe = '1' else 'Z'; •  interna2 <= bid; • 

•  interna1 <= (a and b) nor c; •  salida <= (c xor interna2) when oe='0' else 'Z'; •  end bidir_a ;

Page 109: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Máquinas de estados  Es  necesaria  una  descripción  específica  con  definición  de  un  Apo  enumerado    Hay  que  hacer  una  división  de  la  descripción  en  dos  procesos  disAntos:    

 1.  Cambio  síncrono  de  estado    2.  Evaluación  de  condiciones  para  dirigirse  a  un  estado  

 

Page 110: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Page 111: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ejemplo  

Page 112: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Ejercicio  

Recordar:  Usar  2  procesos  Definir  Apo  de  dato  TYPE    

Page 113: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Memorias  

Si   el   tamaño   de   la   memoria   es  reducido,   ésta   puede   implementarse  mediante   recursos   lógicos   comunes  (funciones  lógicas  y  registros)  Habitualmente,   existen   en   hardware  estructuras   regu lares   que   las  implementan   y   donde   se   sinteAzan   si  la  descripción  VHDL  es  apropiada    

Page 114: OBJETIVO DEL CURSO - rodrigotec.files.wordpress.com · MC.$RODRIGO$LUCIO$MAYARAMIREZ $ Diseño Digital con VHDL OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos,

MC.  RODRIGO  LUCIO  MAYA  RAMIREZ  

Memorias  

En  el  caso  de  RAM,  es  necesario  comprobar  que  el  disposiAvo    incorpora  este    recurso  lógico