VHDL es un lenguaje de descripción de hardware. En él se describe el comportamiento de un sistema electrónico circuito o sistema, desde el cual el circuito físico o sistema, entonces pueden alcanarse !ejecutado". VHDL signi#ca VH$%& Hardware lenguaje de descripción. VH$%& es en sí misma una abre'iatura de mu( alta 'elocidad los circuitos integrados, una iniciati'a #nanciada por el Departamento de Defensa de los Estados en la década de )*+ -ue lle'aron a la creación de VHDL. $u primera 'ersión fue VHDL +, m/s tarde pasaron a la llamada VHDL *0. VHDL fue el lenguaje de descripción de hardware original ( primero en ser estandariada por el %nstituto de %ngenieros Eléctricos ( Electrónicos, a tra'és del est/ndar %EEE )1. 2n est/ndar adicional, el %EEE ))13, se a4adió m/s tarde para introducir un multi5'alorada sistema de lógica. VHDL est/ destinado para la síntesis de circuito, así como la simulación de circuitos. 6hora bien, aun-ue VHDL es totalmente simulatable, no todos los constructos son sintetiable. 7osotros daremos énfasis a los -ue son. 2na moti'ación fundamental utiliar VHDL !o su competidor, Verilog" es -ue VHDL es un est/ndar, la tecnología 8 idioma pro'eedor independiente, ( por lo tanto es port/til ( reutiliable. Las dos principales aplicaciones inmediatas de VHDL est/n en el campo de Dispositi'os Lógicos 9rogramables !inclu(endo &9LDs5&omple: 9rogrammable
Dispositi'os lógicos ( ;9<6s5;ield 9rogrammable
;lujo de Dise4o &omo se mencionó anteriormente, uno de los principales utilidades de VHDL es -ue permite la síntesis de un circuito o sistema en un dispositi'o programable !9LD o ;9<6" o en una 6$%&. Los pasos seguidos durante un pro(ecto de tales se resumen en la #gura ).). 7osotros iniciar el dise4o escribiendo el código VHDL, -ue se guarda en un archi'o con la e:tensión . 'hd ( el mismo nombre -ue el nombre de su entidad. El primer paso en el proceso de síntesis es la compilación. &ompilación es la con'ersión de la lengua VHDL de alto ni'el,
-ue describe el circuito en el ni'el de transferencia de registros !?@L", en una lista de cone:iones en el ni'el de la puerta. El segundo paso es la optimiación, -ue se realia en el ni'el de la puerta netlist5 para la 'elocidad o para el /rea. En esta etapa, el dise4o puede ser simulado. 9or Altimo, un lugar (5 ruta de software !en forma" generar/ la disposición física de un chip 9LD 8 ;9<6 o generar/ las m/scaras para un 6$%&. ).0 ED6 Herramientas Ha( 'arios !Electronic Design 6utomation" herramientas ED6 disponibles para el circuito síntesis, implementación ( simulación utiliando VHDL. 6lgunas herramientas !lugar ( ruta, por ejemplo" est/n oBered como parte de la suite de dise4o de un pro'eedor !por ejemplo, de 6ltera Cuartus %%, -ue permite la síntesis de código VHDL en &9LD 8 ;9<6 de 6ltera papas fritas, o suite de =ilin: %$E, para los chips &9LD 8 ;9<6 de =ilin:". tras herramientas !sintetiada medidores, por ejemplo", adem/s de estar oBered como parte de las suites de dise4o, también pueden estar proporcionada por las empresas de ED6 especialiados !entor
$oftware de síntesis !por 6ltera &9LDs5apéndice &", o Cuartus %% !también para 6ltera dispositi'os apéndice D". Leonardo $pectrum también se utilia ocasionalmente. 6un-ue las herramientas ED6 diBerent fueron utiliados para implementar ( probar los ejemplos presentado en el libro !'éase la lista de herramientas de arriba", decidimos estandariar la 'isual presentación de todos los gr/#cos de simulación. Debido a su aspecto limpio, la forma de onda $e empleó editor de a:9lus %% !ane:o &". $in embargo, los nue'os simuladores, como %$E G odel$im !apéndice F" ( Cuartus %% !ane:o D", oBer una mucho m/s amplia conjunto de características, -ue permiten, por ejemplo, un an/lisis de tiempo m/s re#nado. 9ara eso raón, se adoptaron esas herramientas al e:aminar los detalles #nos de cada dise4o. ).3 @raducción de código VHDL en un circuito 2na unidad sumador completo se representa en la #gura ).>. En ella, 6 ( F representan los bits de entrada para ser agregado, cin es el e-uipaje de mano en el bit, s es el bit de suma ( cout el bit de acarreo de salida. &omo se muestra en la tabla de 'erdad, s debe ser alta cuando el nAmero de entradas -ue son altos es impar, mientras cout debe ser alta cuando dos o m/s entradas son altas. 2n código VHDL para el sumador completo de la #gura ).> se muestra en la #gura ).0. &omo puede ser 'isto, se trata de una entidad, -ue es una descripción de los pines !puertos" de la circuito, ( de una ar-uitectura, -ue describe cómo debe funcionar el circuito. Vemos en este Altimo -ue el bit de suma se calcula como s aabacin, mientras cout
se obtiene a partir cout a.b G G b.cin a.cin. 6 partir del código VHDL se muestra en el lado i-uierdo de la #gura ).0, un circuito físico se in#ere, como se indica en la parte derecha de la #gura. $in embargo, ha( 'arios formas de aplicar las ecuaciones descritas en la ar-uitectura de ;igura ).0, por lo -ue el circuito real depender/ de la compilador 8 optimiador -ue se utilia (, m/s importante, en la tecnología de destino. 2nos pocos ejemplos se presentan en la #gura ).3. 9or ejemplo, si nuestro objeti'o es un dispositi'o lógico programable !9LD o ;9<65 apéndice 6", a continuación, se ilustran dos resultados posibles !entre muchos otros" para cout en las #guras ).3 !b" 5 !c" !en ambos, por supuesto, cout ab G G b.cin a.cin". En el otro lado, si nuestra tecnología de destino es un 6$%&, entonces una posible implementación &$, por lo el ni'el de transistor, es la de la #gura ).3 !d" !-ue hace uso de transistores $ ( 'elocidad de reloj de lógica dominó". 6dem/s, la herramienta de síntesis se puede con#gurar para optimiar el dise4o para el /rea o para la 'elocidad, lo -ue ob'iamente también aBects el circuito #nal. &ual-uiera -ue sea el circuito #nal deducirse del código es, su funcionamiento debe ser siempre 'eri#cado toda'ía en el ni'el de dise4o !después de la síntesis", como se indica en la #gura ).). &laro, sino -ue también debe ser probado en el ni'el físico, pero los cambios en el dise4o podría ser demasiado caro.
&uando se prueba, se mostrar/n las formas de onda similares a los representados en la #gura ).I por el simulador. De hecho, la #gura ).I contiene los resultados de la simulación del circuito sintetiado con el código VHDL de la #gura ).0, -ue implementa la unidad sumador completo de la ;igura ).>. &omo puede 'erse, los pines de entrada !caracteriada por una Jecha hacia dentro con una he marcado en el interior" ( los pines de salida !-ue se caracteria por una Jecha hacia el e:terior con un marcados en el interior" son los -ue #guran en la entidad de la #gura ).0. Libremente 9odemos esta5 ol los Valores de las se4ales de entrada !a, b, ( cin En Este &aso", ( el simulador &alcular ( gra#car las se4ales de salida !s" ( cout. &omo $e 9uede F$E?V6? en la #gura ).I, Las $alidas se comportan &omo $e Esperaba. ).I Dise4o EKE9L$ &omo se menciona en el prólogo, el libro es de Hecho de la 72 Enfo-ue de Dise4o rientada a la teaching @area de VHDL. La VHDL Entre %ntegración ( Dise4o Digital es Logrado un @ra'és De 2na larga serie de EKE9L$ bus-ue detalladas de dise4o. 2n ?esumen de la Dise4os completos presentados en el libro en sí uestra un &ontinuación. $umador !EKE9L$ 0.0 ( 1.+ ( la section *.0" 6L2 !EKE9L$ I.I ( 1.)" &ambiadores de barril ( cambiadores de Vectores !EKE9L$ I.1 ( 1.* ( La section *.)" &omparadores !section *.>" &ontrolador, tra M c lu !EKE9L +.I" &ontrolador, m/-uina e:pendedora !section *.I"
&uente Cueridos !EKE9L$ .) ( .>" &ontadores !EKE9L$ 1.>, 1.I, 1., . ( +.)" Decoder !EKE9L 3.)" Los ;iltros digitales !section )>.3" Di'isores, punto #jo !section *.3" &hanclas pestillos N !EKE9L$ >.), I., I.+, 1.), 1.3, 1.1, .3 ( .1" Encoder !EKE9L I.3" Di'isor de frecuencia !EKE9L .I" 6rithOshift ;unción !EKE9L ))." ;unción con'Ointeger !EKE9L$ )).> ( )).I" ;unción multiplicador !EKE9L )).+" ;unción PP th PP sobrecargada !EKE9L )).1" 9ositi'eOedge ;unción !EKE9L$ )).), )).0 ( )).3" &eros contador !EKE9L 1.)" ultiple:ores !EKE9L$ I.), I.>, ( .0" + &apítulo ) @L;eFQ > Estructura &ódigo En este capítulo, se describen las secciones fundamentales -ue conforman una piea de VHDL códigoR declaraciones F%FL%@E&6, E7@%D6D, ( la ar-uitectura. >.) 2nidades VHDL ;undamentales &omo se representa en la #gura >.), una piea independiente de código VHDL se compone de al menos tres secciones fundamentalesR Declaraciones F%FL%@E&6R &ontiene una lista de todas las bibliotecas -ue se utiliar/ en el dise4o. por ejemploR %EEE, std, trabajo, etc.
E7@%D6DR Especi#ca los pines de E 8 $ del circuito. 6?C2%@E&@2?6R &ontiene el código VHDL adecuada, -ue describe cómo el circuito debe comportarse !función". 2na biblioteca es una colección de pieas de uso comAn de código. La colocación de estas pieas dentro de una biblioteca permite -ue sean reutiliados o compartidas por otros dise4os. La estructura típica de una biblioteca se ilustra en la #gura >.>. El código es por lo general escrita en forma de funciones, procedimientos, o componentes, -ue se colocan dentro de los pa-uetes, ( luego compilado en la biblioteca de destino. Las unidades fundamentales de VHDL !#gura >.)" se estudiar/n en la 9arte % del libro !hasta el capítulo *", mientras -ue las secciones relacionadas con las bibliotecas !#gura >.>" se 'er/ en la 9arte %% !capítulos )5)>". >.> Fiblioteca Declaraciones 9ara declarar una biblioteca !es decir, para -ue sea 'isible para el dise4o" dos líneas de código son necesarios, uno -ue contiene el nombre de la biblioteca, ( el otro una cl/usula de uso, como se se muestra en la sinta:is siguiente. Fiblioteca nombreObibliotecaS Librar(Oname.pacTageOname.pacTageOparts 2$S 6l menos tres pa-uetes, de tres bibliotecas diBerent, suelen ser necesarios en un dise4oR ieee.stdOlogicO))13 !de la biblioteca %EEE", est/ndar !de la biblioteca std", (
trabajo !biblioteca de trabajo". $us declaraciones son los siguientesR %eee F%FL%@E&6S 5 2n punto ( coma !S" indica 2$6? ieee.stdOlogicO))13.allS 5 6l #nal de una declaración o $td F%FL%@E&6S 5 Declaración, mientras -ue una doble 2$6? std.standard.allS 5
aritméticas ( de comparación operaciones. @ambién contiene 'arios de con'ersión de datos funciones, -ue permiten un tipo a ser con'ertido en otroR con'Ointeger !p", con'Ounsigned !p, b", con'Osigned !p, b", con'OstdOlogicO'ector !p, b". stdOlogicOsignedR &ontiene funciones -ue permiten operaciones con $@DOL<%&O Datos 'ectoriales -ue se realicen como si los datos eran de tipo ;%?6D. stdOlogicOunsignedR &ontiene funciones -ue permiten operaciones con $@DOL<%&O Datos 'ectoriales -ue se realicen como si los datos eran de tipo 27$%<7ED. En el capítulo 0, todas estas bibliotecas se describir/n ( se utilian m/s. >.0 E7@%D6D 2na entidad es una lista con las especi#caciones de todas las entradas ( pines de salida !puertos" de la circuito. $u sinta:is se muestra a continuación. El modo de la se4al puede ser %7, 2@, %72@, o tampón. &omo se ilustra en #gura >.0, %7 ( 2@ son 'erdaderamente pasadores unidireccionales, mientras %72@ es bidireccional. F2;;E?, por el contrario, se emplea cuando se debe utiliar la se4al de salida !leer" internamente. El tipo de la se4al puede ser F%@, stdOlogic, %7@E.3. $u E7@%D6D se puede especi#car comoR 9uerta 767D E7@%D6D E$
9?@ !a, bR E7 F%@S :R 2@ F%@"S ;%7 puerta 767DS.