clase vhdl

56
CIRCUITOS DIGITALES Y CIRCUITOS DIGITALES Y CIRCUITOS DIGITALES Y CIRCUITOS DIGITALES Y APLICACIÓN DE VHDL APLICACIÓN DE VHDL Ing. Wilmer Naranjo Ing. Wilmer Naranjo 1

Upload: andres-macancela-jurado

Post on 02-Jul-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CLASE VHDL

CIRCUITOS DIGITALES YCIRCUITOS DIGITALES YCIRCUITOS DIGITALES Y CIRCUITOS DIGITALES Y APLICACIÓN DE VHDLAPLICACIÓN DE VHDL

Ing. Wilmer NaranjoIng. Wilmer Naranjo

11

Page 2: CLASE VHDL

IntroducciónIntroducciónIntroducciónIntroducción

VHDL LenguajeVHDL Lenguaje de descripción de Hardwarede descripción de HardwareVHDL Lenguaje VHDL Lenguaje de descripción de Hardwarede descripción de HardwareUsado en ASIC, CPLD, FPGA, etc.Usado en ASIC, CPLD, FPGA, etc.Combina:Combina:Combina:Combina:

DocumentaciónDocumentaciónSimulaciónSimulaciónSimulaciónSimulaciónSíntesisSíntesis

ModelamientoModelamiento según:según:ModelamientoModelamiento según:según:Comportamiento (Comportamiento (BehaviouralBehavioural))E t t (E t t (St t lSt t l))

22

Estructura (Estructura (StructuralStructural))

Page 3: CLASE VHDL

ASICASICASIC Circuito Integrado para AplicacionesEspecíficas

Es un circuito integrado hecho a la medida para unti l d biduso en particular, en vez de ser concebido para

propósitos de uso general.Por ejemplo un chip diseñado únicamente para serPor ejemplo, un chip diseñado únicamente para serusado en un teléfono móvil es un ASIC.Por otro lado, los circuitos integrados de la serie 74gson circuitos lógicos (combinacionales o secuenciales)que se pueden utilizar para multiples aplicaciones.

Ing. Wilmer NaranjoIng. Wilmer Naranjo 33

Page 4: CLASE VHDL

ASICASICCon los avances en la miniaturización y en lasherramientas de diseño, la complejidad máxima, y por endela funcionalidad, un ASIC ha crecido desde 5.000 puertaslógicas a más de 100 millones.Los ASIC modernos incluyen:Los ASIC modernos incluyen:Procesadores de 32-bitMemoria Ram, Rom, Eeprom y flash, , p y

Este tipo de ASIC frecuentemente es llamado Sistema enun Chip, o SoC, por sus siglas en inglés.Los diseñadores de ASIC digitales usan lenguajesdescriptores de hardware (HDL) tales como Verilog o

Ing. Wilmer NaranjoIng. Wilmer Naranjo 44

descriptores de hardware (HDL), tales como Verilog oVHDL, para describir la funcionalidad de estos dispositivos.

Page 5: CLASE VHDL

CPLDCPLD

CPLD ( Complex Programmable Logic Device)Los CPLD extienden el concepto de un PLDLos CPLD extienden el concepto de un PLD(Programmable Logic Device) a un mayor nivel deintegración ya que permite implementar sistemas máseficaces ya que utilizan menor espacio mejoran laeficaces, ya que utilizan menor espacio, mejoran lafiabilidad del diseño, y reducen costos.Un CPLD se forma con múltiples bloques lógicos, cada unop q g ,similar a un PLD. Los bloques lógicos se comunican entresí utilizando una matriz programable de interconexiones, locual hace más eficiente el uso del silicio conduciendo a

Ing. Wilmer NaranjoIng. Wilmer Naranjo 55

cual hace más eficiente el uso del silicio, conduciendo auna mejor eficiencia a menor costo. CPLD.

Page 6: CLASE VHDL

FPGAFPGA

FPGA (Field Programmable Gate Array)

Es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad se puede programar. La lógica programable puede reproducir desde funciones tanLa lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip

Ing. Wilmer NaranjoIng. Wilmer Naranjo 66

Page 7: CLASE VHDL

FPGAFPGA

Las FPGAs se utilizan en aplicaciones similares a los ASICsLas FPGAs se utilizan en aplicaciones similares a los ASICssin embargo son más lentas, tienen un mayor consumo depotencia y no pueden abarcar sistemas tan complejos comollellos.

A pesar de esto, las FPGAs tienen las ventajas de serreprogramables, sus costes de desarrollo y adquisición sonmucho menores para pequeñas cantidades de dispositivos yel tiempo de desarrollo es también menor.Históricamente las FPGA surgen como una evolución de los

Ing. Wilmer NaranjoIng. Wilmer Naranjo 77

Históricamente las FPGA surgen como una evolución de losconceptos desarrollados en las PLA y los CPLD.

Page 8: CLASE VHDL

FPGAFPGA

LasLas FPGAFPGA sonson elel resultadoresultado dede lala convergenciaconvergencia dede dosdostecnologíastecnologías diferentes,diferentes, loslos PLDPLD (dispositivos(dispositivos lógicoslógicosprogramables)programables) yy ASICASIC (circuitos(circuitos integradosintegrados dede aplicaciónaplicaciónespecífica)específica)..específica)específica)..LaLa historiahistoria dede loslos PLDsPLDs comenzócomenzó concon loslos primerosprimerosdispositivosdispositivos PROMPROM ((ProgrammableProgrammable ReadRead--OnlyOnly MemoryMemory)) yy

ll ñ dióñ dió ilid dilid d ll PALPAL ((P blP blsese lesles añadióañadió versatilidadversatilidad concon loslos PALPAL ((ProgrammableProgrammableArrayArray LogicLogic)) queque permitieronpermitieron unun mayormayor númeronúmero dede entradasentradasyy lala inclusióninclusión dede registrosregistros..yy ggEsosEsos dispositivosdispositivos hanhan continuadocontinuado creciendocreciendo enen tamañotamaño yypotenciapotencia.. Ing. Wilmer NaranjoIng. Wilmer Naranjo 88

Page 9: CLASE VHDL

DIFERENCIASDIFERENCIAS

Ing. Wilmer NaranjoIng. Wilmer Naranjo 99

Page 10: CLASE VHDL

DESCRIPCIÓN EN VHDLDESCRIPCIÓN EN VHDLAlAl inicioinicio dede loslos 8080´́ss diversosdiversos gruposgrupos dede investigadoresinvestigadoresempiezanempiezan aa crearcrear yy desarrollardesarrollar loslos llamadosllamados "lenguajes"lenguajes dededescripcióndescripción dede hardware"hardware" cadacada unouno concon sussus peculiaridadespeculiaridades..pp ppEmpresasEmpresas comocomo IBMIBM concon susu IDL,IDL, elel TITI -- HDLHDL dede TexasTexasInstrumentsInstruments,, ZEUSZEUS dede GeneralGeneral Electric,Electric, etcetc..,,Al d dAl d d dd 19811981 ll D t tD t t dd D fD f dd llAlrededorAlrededor dede 19811981 elel DepartamentoDepartamento dede DefensaDefensa dede loslosEstadosEstados UnidosUnidos desarrolladesarrolla unun proyectoproyecto llamadollamado VHSICVHSIC((VeryVery HighHigh SpeedSpeed IntegratedIntegrated CircuitCircuit )) susu objetivoobjetivo eraerarentabilizarrentabilizar laslas inversionesinversiones enen hardwarehardware haciendohaciendo másmássencillosencillo susu mantenimientomantenimiento.. SeSe pretendíapretendía concon elloello resolverresolver elelproblemaproblema dede modificarmodificar elel hardwarehardware diseñadodiseñado enen ununproblemaproblema dede modificarmodificar elel hardwarehardware diseñadodiseñado enen ununproyectoproyecto parapara utilizarloutilizarlo enen otro,otro, lolo queque nono eraera posibleposible hastahastaentoncesentonces porqueporque nono existíaexistía unauna herramientaherramienta adecuadaadecuada paraparaarmonizararmonizar yy normalizarnormalizar dichadicha tareatarea entoncesentonces empiezaempieza elel

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1010

armonizararmonizar yy normalizarnormalizar dichadicha tarea,tarea, entoncesentonces empiezaempieza elelmomentomomento dede rara elel momentomomento dede loslos HDL'sHDL's

Page 11: CLASE VHDL

DESCRIPCIÓN EN VHDLDESCRIPCIÓN EN VHDL

ConstituidaConstituida alal menosmenos porpor 33 elementoselementos principalesprincipales::ConstituidaConstituida alal menosmenos porpor 33 elementoselementos principalesprincipales::oo BibliotecaBiblioteca (librerías)(librerías)oo EntidadesEntidades (interface)(interface)oo Entidades Entidades (interface)(interface)oo Arquitecturas Arquitecturas (estructura)(estructura)

ElEl diseñadordiseñador generalmentegeneralmente realizarealiza lala descripcióndescripción dede laslasentidadesentidades yy arquitecturaarquitectura empleandoempleando elementoselementosalmacenadosalmacenados enen laslas bibliotecasbibliotecasalmacenadosalmacenados enen laslas bibliotecasbibliotecas..ÉstasÉstas aa susu vezvez sonson almacenadasalmacenadas enen lala bibliotecabiblioteca dedetrabajo,trabajo, luegoluego dede serser compiladascompiladas..

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1111

trabajo,trabajo, luegoluego dede serser compiladascompiladas..

Page 12: CLASE VHDL

BIBLIOTECABIBLIOTECABIBLIOTECABIBLIOTECAEsEs unun lugarlugar dondedonde elel compiladorcompilador VHDLVHDL almacenaalmacenai f iói f ió f tf t tt dd di ñdi ñ ti lti linformacióninformación referentereferente aa unun proyectoproyecto dede diseñodiseño particularparticular..

IncluyendoIncluyendo documentosdocumentos intermediosintermedios queque sonson usadosusados enenelel análisis,análisis, simulaciónsimulación yy lala síntesissíntesis..

UnaUna bibliotecabiblioteca estándarestándar muymuy usadausada eses IEEEIEEE..yy

ParaPara especificarespecificar lala bibliotecabiblioteca sese usausa ""librarylibrary"" yy enen lalaprimeraprimera línealínea deldel programaprograma debedebe escribirseescribirse lolo siguientesiguiente::primeraprimera línealínea deldel programaprograma debedebe escribirseescribirse lolo siguientesiguiente::

LibraryLibrary ieeeieee;;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1212

Page 13: CLASE VHDL

OBJETO DE DATOSOBJETO DE DATOSSe proporcionan tres tipos de objetos de Se proporcionan tres tipos de objetos de datos:datos:

SeñalesSeñalesConstantes Constantes VariablesVariables

Las señales: representan las señales Las señales: representan las señales lógicas de un circuitológicas de un circuitológicas de un circuito.lógicas de un circuito.

Las constantes y variables son útiles paraLas constantes y variables son útiles paraIng. Wilmer NaranjoIng. Wilmer Naranjo 1313

Las constantes y variables son útiles para Las constantes y variables son útiles para describir el circuito.describir el circuito.

Page 14: CLASE VHDL

NOMBRE DE OBJETO DE DATOSNOMBRE DE OBJETO DE DATOSNOMBRE DE OBJETO DE DATOSNOMBRE DE OBJETO DE DATOS

Cualquier carácter AlfanuméricoCualquier carácter AlfanuméricoqqEmpieza con una letra (ingles)Empieza con una letra (ingles)No puede ser una palabra reservada de No puede ser una palabra reservada de p pp pVHDLVHDLNo puede empezar con “_”No puede empezar con “_”No puede tener dos “_” seguidosNo puede tener dos “_” seguidosEjemplo X1, Puerto_1, UNO, estado, a, FEjemplo X1, Puerto_1, UNO, estado, a, FVHDL di ti t ú lVHDL di ti t ú lVHDL no distingue entre mayúscula y VHDL no distingue entre mayúscula y minúscula.minúscula.

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1414

Page 15: CLASE VHDL

VALORES DE OBJETO DE DATOSVALORES DE OBJETO DE DATOSSe utiliza objeto de datos SIGNAL para representar Se utiliza objeto de datos SIGNAL para representar señales lógicas en un circuito.señales lógicas en un circuito.El V l bj t SIGNAL i di id l ifiEl V l bj t SIGNAL i di id l ifiEl Valor objeto SIGNAL individual se especifica El Valor objeto SIGNAL individual se especifica utilizando apostrofe como en ‘0’ o en ‘1’ para un utilizando apostrofe como en ‘0’ o en ‘1’ para un número binario.número binario.El Valor objeto SIGNAL El Valor objeto SIGNAL multibitsmultibits se especifica se especifica utilizando comillas como en “0101” o “10111100”utilizando comillas como en “0101” o “10111100”Las comillas también se emplean para indicar unLas comillas también se emplean para indicar unLas comillas también se emplean para indicar un Las comillas también se emplean para indicar un número binario “1001” representa los cuatro número binario “1001” representa los cuatro valores SIGNAL ‘1’, ‘0’, ‘0’, ‘1’valores SIGNAL ‘1’, ‘0’, ‘0’, ‘1’Los valores CONSTANT o VARIABLE seLos valores CONSTANT o VARIABLE seLos valores CONSTANT o VARIABLE se Los valores CONSTANT o VARIABLE se especifican de la misma manera que los objetos de especifican de la misma manera que los objetos de datos SIGNAL.datos SIGNAL.

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1515

Page 16: CLASE VHDL

OBJETO DE DATOS SIGNALOBJETO DE DATOS SIGNAL

Los objetos de datos SIGNAL representan señales Los objetos de datos SIGNAL representan señales j pj plógicas, o cables en un circuito.lógicas, o cables en un circuito.Ejemplo de declaración:Ejemplo de declaración:SIGNAL SIGNAL signal_namesignal_name: : type_nametype_nameLa variable La variable type_nametype_name determina los valores determina los valores legales que la señal puede asumir y sus usos enlegales que la señal puede asumir y sus usos enlegales que la señal puede asumir y sus usos en legales que la señal puede asumir y sus usos en VHDL.VHDL.Ejemplos:Ejemplos:j pj pBIT, BIT VECTOR, STD_LOGIC, STD_LOGIC BIT, BIT VECTOR, STD_LOGIC, STD_LOGIC VECTOR , STD_ULOGIC , SIGNED, UNSIGNED, VECTOR , STD_ULOGIC , SIGNED, UNSIGNED, INTEGER ENUMERATION BOOLEANINTEGER ENUMERATION BOOLEAN

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1616

INTEGER, ENUMERATION y BOOLEAN.INTEGER, ENUMERATION y BOOLEAN.

Page 17: CLASE VHDL

TIPO BIT y BIT_VECTORTIPO BIT y BIT_VECTOREstos tipos están predefinidos en los estandares de Estos tipos están predefinidos en los estandares de VHDL del IEEE 1076 y 1164.VHDL del IEEE 1076 y 1164.BIT d t l l ‘1’ ‘0’BIT d t l l ‘1’ ‘0’BIT puede tener los valores ‘1’ o ‘0’BIT puede tener los valores ‘1’ o ‘0’BIT_VECTOR es un arreglo lineal de objetos tipo bit.BIT_VECTOR es un arreglo lineal de objetos tipo bit.Ejemplo:Ejemplo:Ejemplo:Ejemplo:SIGNAL X1:SIGNAL X1: BITBITSIGNAL C: BIT_VECTOR (1 TO 4)SIGNAL C: BIT_VECTOR (1 TO 4)SIGNAL D: BIT_VECTOR (7 DOWNTO 0)SIGNAL D: BIT_VECTOR (7 DOWNTO 0)

C<= “1010”C<= “1010” C(1)=1 C(2)=0 C(3)=1 C(4)=0C(1)=1 C(2)=0 C(3)=1 C(4)=0C<= 1010 C<= 1010 ----C(1)=1, C(2)=0, C(3)=1, C(4)=0C(1)=1, C(2)=0, C(3)=1, C(4)=0D<= “10010100” D<= “10010100” ----D(7)=1, D(6)=0, D(5)=0, D(4)=1D(7)=1, D(6)=0, D(5)=0, D(4)=1

----D(3)=0, D(2)=1, D(1)=0, D(0)=0D(3)=0, D(2)=1, D(1)=0, D(0)=0

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1717

( ) , ( ) , ( ) , ( )( ) , ( ) , ( ) , ( )

Page 18: CLASE VHDL

TIPO STDLOGIC y STDLOGIC _VECTORTIPO STDLOGIC y STDLOGIC _VECTORSe Se añadioañadio en el en el estandarestandar de VHDL del IEEE 1164.de VHDL del IEEE 1164.Ofrece mayor versatilidad que el tipo BIT.Ofrece mayor versatilidad que el tipo BIT.P tili l d b d i l i l i i t i t iP tili l d b d i l i l i i t i t iPara utilizarlo debemos de incluir las siguientes instruccionesPara utilizarlo debemos de incluir las siguientes instrucciones

LIBRARY LIBRARY ieeeieeeUSE ieee.std_logic_1164.allUSE ieee.std_logic_1164.all

Los siguientes valores son legales para STD_LOGIC:Los siguientes valores son legales para STD_LOGIC:00 ---------- un 0 un 0 ;1;1 -------- un 1 un 1 Z Z ---------- alta impedancia alta impedancia ;‘;‘--‘ ‘ -------- estado opcional (estado opcional (don’tdon’t carecare) ) L L ---------- un 0 débil un 0 débil ;H ;H -------- un 1 débil un 1 débil U U ---------- no inicializado no inicializado ;X ;X -------- desconocido (un 0 ó un 1 fuerte) desconocido (un 0 ó un 1 fuerte) ( )( )W W ---------- desconocido (un 0, ó un 1 débiles)desconocido (un 0, ó un 1 débiles)SIGNAL X1, x2, x3 SIGNAL X1, x2, x3 :STD_LOGIC:STD_LOGICSIGNAL CSIGNAL C : STD LOGIC VECTOR (1 TO 4): STD LOGIC VECTOR (1 TO 4)

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1818

SIGNAL CSIGNAL C : STD_LOGIC_VECTOR (1 TO 4): STD_LOGIC_VECTOR (1 TO 4)SIGNAL Y, ZSIGNAL Y, Z : STD_LOGIC_VECTOR (7 DOWNTO 0): STD_LOGIC_VECTOR (7 DOWNTO 0)

Page 19: CLASE VHDL

TIPO STD_ULOGICTIPO STD_ULOGICMuy similares a las señales de tipo STD_LOGIC.Muy similares a las señales de tipo STD_LOGIC.La diferencia esta en que STD ULOGIC se relaciona La diferencia esta en que STD ULOGIC se relaciona q _q _con el concepto de con el concepto de Función de ResoluciónFunción de Resolución..La Función de Resolución se utiliza para determinar La Función de Resolución se utiliza para determinar que valor debe tomar una señal si hay dos fuentesque valor debe tomar una señal si hay dos fuentesque valor debe tomar una señal si hay dos fuentes que valor debe tomar una señal si hay dos fuentes para la misma.para la misma.Por ejemplo dos buffers triestados podrían tener susPor ejemplo dos buffers triestados podrían tener susPor ejemplo dos buffers triestados podrían tener sus Por ejemplo dos buffers triestados podrían tener sus salidas conectadas a una señal x, en algún momento salidas conectadas a una señal x, en algún momento uno de ellos podría producir un valor de salida ‘Z’ y el uno de ellos podría producir un valor de salida ‘Z’ y el otro un valor ‘1’ Para determinar que el valor de Xotro un valor ‘1’ Para determinar que el valor de Xotro un valor 1 . Para determinar que el valor de X otro un valor 1 . Para determinar que el valor de X debe de ser ‘1’ en este caso se emplea la función debe de ser ‘1’ en este caso se emplea la función resoluciónresolución

Ing. Wilmer NaranjoIng. Wilmer Naranjo 1919

Page 20: CLASE VHDL

TIPO SIGNED Y UNSIGNEDTIPO SIGNED Y UNSIGNED

LosLos paquetespaquetes std_logic_signedstd_logic_signed yy std_logic_unsignedstd_logic_unsignedrec rrenrec rren aa otrootro paq etepaq ete llamadollamado std logic arithstd logic arith q eq erecurrenrecurren aa otrootro paquetepaquete llamadollamado std_logic_arithstd_logic_arith,, quequedefinedefine elel tipotipo dede circuitocircuito queque utilizaráutilizará operadoresoperadoresaritméticosaritméticos comocomo ++..

ElEl tipotipo signedsigned manejamaneja númerosnúmeros concon signosigno(complemento(complemento aa 22))( p( p ))

ElEl tipotipo unsignedunsigned empleaemplea númerosnúmeros sinsin signosigno..

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2020

Page 21: CLASE VHDL

TIPOTIPO INTEGERINTEGERUnaUna señalseñal INTEGERINTEGER tienetiene 3232 bitbit cuyocuyo rangorango [[ ((223131 11)) aa ((223131 11)])]UnaUna señalseñal INTEGERINTEGER tienetiene 3232 bit,bit, cuyocuyo rangorango [[--((223131--11)) aa ((223131--11)])]..ElEl rangorango sese puedepuede personalizarpersonalizar utilizangoutilizango RANGERANGE..SIGNALSIGNAL XX:: INTEGERINTEGER RANGERANGE --127127 TOTO 127127..SIGNALSIGNAL XX:: INTEGERINTEGER RANGERANGE 127127 TOTO 127127..

TIPOTIPO BOOLEANBOOLEANTieneTiene loslos valoresvalores TRUETRUE oo FALSE,FALSE, queque equivaleequivale aa ‘‘11’’ yy aa ‘‘00’’..

TIPOTIPO ENUMERATIONENUMERATIONTIPOTIPO ENUMERATIONENUMERATIONTieneTiene valoresvalores queque elel usuariousuario especificaespecifica..TYPETYPE enumerated_type_nameenumerated_type_name ISIS ((namename{,{, namename})});;TYPETYPE State_typeState_type ISIS ((estadoAestadoA,, estadoBestadoB,, estadoCestadoC));;SIGNALSIGNAL yy:: State typeState type;;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2121

SIGNALSIGNAL yy:: State_typeState_type;;LosLos valoresvalores legaleslegales parapara yy sonson estadoAestadoA,, estadoBestadoB yy estadoCestadoC

Page 22: CLASE VHDL

OBJETOOBJETO DEDE DATOSDATOS CONSTANTESCONSTANTESEsEs aquelaquel cuyocuyo datodato nono puedepuede cambiarcambiar..EsEs aquelaquel cuyocuyo datodato nono puedepuede cambiarcambiar..CONSTANTCONSTANT constant_nombreconstant_nombre :: type_nametype_name::==constant_valorconstant_valor;;CONSTANTCONSTANT zerozero :: std_logic_vectorstd_logic_vector ((33 downtodownto 00))::=“=“00000000””;;

OBJETOSOBJETOS DEDE DATOSDATOS VARIABLESVARIABLESOBJETOSOBJETOS DEDE DATOSDATOS VARIABLESVARIABLESSeSe utilizautiliza parapara almacenaralmacenar loslos resultadosresultados dede loslos cálculoscálculosVARIABLEVARIABLE i bli bl ttVARIABLEVARIABLE variable_namevariable_name:: type_nametype_name

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2222

Page 23: CLASE VHDL

OperadoresOperadoresOperadoresOperadores

Cinco categorías de operadores:Cinco categorías de operadores:Cinco categorías de operadores:Cinco categorías de operadores:

A it étiA it étiAritméticosAritméticosRelacionalesRelacionalesLógicosLógicosDesplazamientoDesplazamientoDesplazamientoDesplazamientoOtrosOtros

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2323

Page 24: CLASE VHDL

Operadores AritméticosOperadores Aritméticos

OPERACIÓNOPERACIÓN OPERADOROPERADOR

IgualIgual ==Dif tDif tDiferenteDiferente /=/=

MayorMayor >>Mayor o igualMayor o igual >=>=

MMMenorMenor <<Menor o igualMenor o igual <=<=

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2424

Page 25: CLASE VHDL

Operadores lógicos y de desplazamientoOperadores lógicos y de desplazamientoOPERACIÓNOPERACIÓN OPERADOROPERADOROPERACIÓNOPERACIÓN OPERADOROPERADOR

YY andandY NegadoY Negado nandnandgg

O O ororO NegadoO Negado nornor

OO--exclusivaexclusiva xorxorOO--exclusiva negadaexclusiva negada xnorxnor

NegaciónNegación notnotegac óegac ó ototDesplazamiento lógico a la izquierdaDesplazamiento lógico a la izquierda sllsllDesplazamiento lógico a la derechaDesplazamiento lógico a la derecha srlsrl

Desplazamiento aritmético a la izquierdaDesplazamiento aritmético a la izquierda slaslaDesplazamiento aritmético a la derechaDesplazamiento aritmético a la derecha srasraDesplazamiento circular a la izquierdaDesplazamiento circular a la izquierda rolrol

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2525

Desplazamiento circular a la izquierdaDesplazamiento circular a la izquierda rolrolDesplazamiento circular a la derechaDesplazamiento circular a la derecha rorror

Page 26: CLASE VHDL

Operadores de adiciónOperadores de adición

OPERACIÓNOPERACIÓN OPERADOROPERADORSigno positivoSigno positivo ++Signo positivoSigno positivo ++Signo negativoSigno negativo --ConcatenaciónConcatenación &&

Operadores OtrosOperadores Otros

Operadores de multiplicar: *, /, MOD, REMOperadores de multiplicar: *, /, MOD, REM

OperadoresOperadores miscellaneousmiscellaneous: ** ABS: ** ABSIng. Wilmer NaranjoIng. Wilmer Naranjo 2626

Operadores Operadores miscellaneousmiscellaneous: **, ABS: **, ABS

Page 27: CLASE VHDL

Tipos de datosTipos de datosDESCRIPCIÓNDESCRIPCIÓNRANGORANGOTIPOTIPO

Números naturalesNúmeros naturales0 MAXINT0 MAXINTNaturalNaturalNúmeros enterosNúmeros enterosMAXINT… MAXINTMAXINT… MAXINTIntegerIntegerDESCRIPCIÓNDESCRIPCIÓNRANGORANGOTIPOTIPO

Números realesNúmeros realesMAXREAL… MAXREALMAXREAL… MAXREALRealRealNúmeros positivosNúmeros positivos1… MAXINT1… MAXINTPositivePositiveNúmeros naturalesNúmeros naturales0… MAXINT0… MAXINTNaturalNatural

Números binariosNúmeros binarios0,10,1BitBitNúmeros booleanosNúmeros booleanosTRUE,FALSETRUE,FALSEBooleanBoolean

Estándar LógicoEstándar Lógico‘0’ , ‘1’,’Z’ (tercer estado), ‘‘0’ , ‘1’,’Z’ (tercer estado), ‘--’ ’ (don(don´́t care),’L’,’H’,,’U’,’X’,’W’t care),’L’,’H’,,’U’,’X’,’W’

Std_logicStd_logic

CaracteresCaracteresCharacterCharacterCadena de bitsCadena de bitsConjunto de bitsConjunto de bitsBit_vectorBit_vector

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2727

Cadena de caracteresCadena de caracteresConjunto de caracteresConjunto de caracteresStringString

Page 28: CLASE VHDL

ENTIDAD DE DISEÑO DE VHDLENTIDAD DE DISEÑO DE VHDLUn circuito o Un circuito o subcircuitosubcircuitodescrito con código VHDL se descrito con código VHDL se ll tid d d di ñll tid d d di ñ ENTIDADllama entidad de diseño o llama entidad de diseño o simplemente entidad.simplemente entidad.Tiene dos partes principalesTiene dos partes principales

ENTIDAD

DECLARACIONTiene dos partes principales Tiene dos partes principales que son:que son:

Declaración de la entidad Declaración de la entidad

DECLARACION DE ENTIDAD

ENTITYENTITYEspecifica las señales de Especifica las señales de entrada y salida del circuitoentrada y salida del circuitoentrada y salida del circuito entrada y salida del circuito digital.digital.Arquitectura .Arquitectura .P i l d t ll d lP i l d t ll d l

ARQUITECTURA

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2828

Proporciona los detalles del Proporciona los detalles del circuito.circuito.

Page 29: CLASE VHDL

DECLARACION ENTITYDECLARACION ENTITYLas señales de E/S del circuito digital se Las señales de E/S del circuito digital se especifica utilizando la declaración ENTITY.especifica utilizando la declaración ENTITY.PORT indica la señal de E/S en modo:PORT indica la señal de E/S en modo:Modo in:Modo in: Un puerto es de modo in si la Un puerto es de modo in si la información correspondiente al mismo entra ainformación correspondiente al mismo entra ainformación correspondiente al mismo, entra a información correspondiente al mismo, entra a la entidad.la entidad.Modo out:Modo out: Un puerto es de modo out si laUn puerto es de modo out si laModo out:Modo out: Un puerto es de modo out si la Un puerto es de modo out si la

información fluye hacia fuera de la entidad.información fluye hacia fuera de la entidad.Modo buffer:Modo buffer: Este modo es similar al modo Este modo es similar al modo

t d á it l li t iót d á it l li t ióout, pero además, permite la realimentación y out, pero además, permite la realimentación y no es bidireccional. no es bidireccional. Modo inout:Modo inout: Es usado para señalesEs usado para señales

Ing. Wilmer NaranjoIng. Wilmer Naranjo 2929

Modo inout:Modo inout: Es usado para señales Es usado para señales bidireccionales.bidireccionales.

Page 30: CLASE VHDL

ENTIDADENTIDADTieneTiene lala misiónmisión dede modelarmodelar lala interfazinterfaz dede unun circuitocircuito oosistemasistema concon elel exterior,exterior, aa travéstravés dede laslas entradasentradas yy salidassalidas..

Entity EJEMPLO isEntity EJEMPLO isPort (A,B: in bit;Port (A,B: in bit;

EA

BC

( , ;( , ;C : out bit);C : out bit);

End EJEMPLOEnd EJEMPLO

Entity EJEMPLO1 isEntity EJEMPLO1 isPort (A B: in bit vector (1 to 4);Port (A B: in bit vector (1 to 4);

EA

BC

Port (A,B: in bit_vector (1 to 4);Port (A,B: in bit_vector (1 to 4);C : out bit_vector (1 to 4));C : out bit_vector (1 to 4));

End EJEMPLO1End EJEMPLO1

44

4

Ing. Ing. Wilmer NaranjoWilmer Naranjo 3030

Page 31: CLASE VHDL

ARQUITECTURAARQUITECTURAARCHITECTUREARCHITECTURE Provee los detalles del Provee los detalles del circuito para una entidad.circuito para una entidad.ppConsta de 2 partes principales:Consta de 2 partes principales:La región declarativaLa región declarativaLa región declarativaLa región declarativa

Precede a la palabra reservada BEGIN.Precede a la palabra reservada BEGIN.Se utiliza para declarar señales, tipos definidos Se utiliza para declarar señales, tipos definidos p pp ppor el usuario y constantes, componentes y por el usuario y constantes, componentes y atributos.atributos.

La región del cuerpo de arquitecturaLa región del cuerpo de arquitecturaLa región del cuerpo de arquitecturaLa región del cuerpo de arquitecturaSe encuentra después de BEGIN y se detalla la Se encuentra después de BEGIN y se detalla la programación en VHDL del circuito digitalprogramación en VHDL del circuito digital

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3131

programación en VHDL del circuito digital programación en VHDL del circuito digital

Page 32: CLASE VHDL

PAQUETEPAQUETEUn paquete en VHDL sirve como un depósito. Un paquete en VHDL sirve como un depósito. Se utiliza para almacenar código de VHDL de uso general.Se utiliza para almacenar código de VHDL de uso general.U t ti d tU t ti d tUn paquete tiene dos partes:Un paquete tiene dos partes:Declaración de Paquete.Declaración de Paquete.Se declara:Se declara: LIBRARY library_name;LIBRARY library_name;

USE library_name.package_name_all;USE library_name.package_name_all;

PACKAGE package name ISPACKAGE package name ISPACKAGE package_name ISPACKAGE package_name IS[TYPE[TYPEdeclarartions]declarartions][SIGNAL declarartions][SIGNAL declarartions][COMPONENT declarartions][COMPONENT declarartions][COMPONENT declarartions][COMPONENT declarartions]

END package_nameEND package_nameCuerpo de Paquete.Cuerpo de Paquete.

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3232

Opcional para definir funciones de VHDL Opcional para definir funciones de VHDL

Page 33: CLASE VHDL

Crear paquetesCrear paquetesLaLa bibliotecabiblioteca IEEEIEEE eses solosolo dede lectura,lectura, tipotipo global,global, nonopuedepuede interactuarinteractuar nini modificarmodificar..pp

CadaCada diseñadordiseñador puedepuede crearcrear susu propiopropio paquetepaquete dandodando lalaposibilidadposibilidad dede utilizarlosutilizarlos enen otrosotros diseñosdiseños oo modificarlos,modificarlos,pp ,,parapara estoesto elel compiladorcompilador VHDLVHDL generagenera automáticamenteautomáticamenteunauna bibliotecabiblioteca llamadallamada workwork..

EnEn lala bibliotecabiblioteca workwork sese almacenanalmacenan laslas entidadesentidades yyarquitecturasarquitecturas dede diseñodiseño..

UnaUna vezvez creadocreado elel nuevonuevo paquetepaquete sese lolo puedepuede usarusar enenotrootro proyectoproyecto declarándolodeclarándolo dede lala siguientesiguiente maneramanera::

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3333

UseUse workwork..nombre_del_paquetenombre_del_paquete..allall ;;

Page 34: CLASE VHDL

SUBCIRCUITOSSUBCIRCUITOSUnaUna entidadentidad dede VHDLVHDL definidadefinida enen unun archivoarchivo dede códigocódigo fuentefuenteggpuedepuede usarseusarse comocomo subcircuitosubcircuito enen otrootro archivoarchivo dede códigocódigofuentefuente..ElEl subcircuitosubcircuito enen VHDLVHDL sese llamallama COMPONENTECOMPONENTE..UnUn componentecomponente sese declaradeclara enen lala arquitecturaarquitectura oo enen laladeclaracióndeclaración dede paquetepaquete..LaLa sintaxissintaxis dede lala declaracióndeclaración deldel componentecomponente eses similarsimilar aa lalaaa s ta ss ta s dede aa dec a ac ódec a ac ó dede co po e teco po e te eses s as a aa aadeclaracióndeclaración dede lala entidadentidad..UnaUna vezvez declarado,declarado, esteeste puedepuede instanciarseinstanciarse comocomo ununsubcircuitosubcircuito..COMPONENTCOMPONENT component_namecomponent_name[GENERIC[GENERIC (( parameter_nameparameter_name:: integerinteger::== default_value{default_value{;;

parameter nameparameter name:: integerinteger::== default value})default value});;]]parameter_nameparameter_name:: integerinteger:: default_value})default_value});;]]PORTPORT ([SIGNAL]([SIGNAL] signal_namesignal_name {,{, signal_name}signal_name}::[mode][mode] type_name{type_name{;;

[SIGNAL][SIGNAL] signal_namesignal_name {,{, signal_name}signal_name}::[mode][mode] type_name})type_name});;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3434

instance_nameinstance_name :: component_namecomponent_name PORTPORT MAP(MAP(formal_nameformal_name =>=> actual_nameactual_name {,{, formal_nameformal_name =>=> actual_nameactual_name })});;

Page 35: CLASE VHDL

ARQUITECTURAARQUITECTURAEs la encargada de la descripción del funcionamiento de Es la encargada de la descripción del funcionamiento de un circuito.un circuito.D ib l f i i t i t d l tid dD ib l f i i t i t d l tid dDescribe el funcionamiento interno de las entidades.Describe el funcionamiento interno de las entidades.Pueden existir varias arquitecturas para una misma Pueden existir varias arquitecturas para una misma entidad.entidad.

Niveles de arquitectura:Niveles de arquitectura:Niveles de arquitectura:Niveles de arquitectura:

-- Nivel AlgorítmicoNivel AlgorítmicoNivel AlgorítmicoNivel Algorítmico-- Nivel RTLNivel RTL

Nivel LógicoNivel Lógico

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3535

-- Nivel LógicoNivel Lógico

Page 36: CLASE VHDL

Nivel Algorítmico, funcional o Nivel Algorítmico, funcional o de comportamientode comportamiento

EsEs elel nivelnivel concon mayormayor gradogrado dede abstracciónabstracción..

ElEl diseñadordiseñador sólosólo describedescribe elel comportamientocomportamiento deldeli ti t ii dd ll ñ lñ lsistemasistema sinsin preocuparsepreocuparse dede laslas señalesseñales oo

componentescomponentes internosinternos deldel mismomismo..

SeSe suelesuele hablarhablar dede ésteéste nivelnivel comocomo:: AltoAlto NivelNivel..

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3636

Page 37: CLASE VHDL

Ejemplo:Ejemplo:

Entity decodificador isEntity decodificador isPort (e0,e1,en: in bit;Port (e0,e1,en: in bit;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3737

( , , ;( , , ;s0,s1,s2,s3 : out bit);s0,s1,s2,s3 : out bit);

End decodificadorEnd decodificador

Page 38: CLASE VHDL

Nivel AlgorítmicoNivel Algorítmicoggarchitecture algoritmica of decodificador is beginarchitecture algoritmica of decodificador is begin

process (e0,e1,en)process (e0,e1,en)beginbeginbeginbegin

if en=‘0’ thenif en=‘0’ thens0<=‘0’; s1<=‘0’; s2<=‘0’; s3<=‘0’;s0<=‘0’; s1<=‘0’; s2<=‘0’; s3<=‘0’;

elsif e1=‘0’ and e0=‘0’ thenelsif e1=‘0’ and e0=‘0’ thenelsif e1= 0 and e0= 0 thenelsif e1= 0 and e0= 0 thens0<=‘1’;s0<=‘1’;

elsif e1=‘0’ and e0=‘1’ thenelsif e1=‘0’ and e0=‘1’ thens1< ‘1’;s1< ‘1’;s1<=‘1’;s1<=‘1’;

elsif e1=‘1’ and e0=‘0’ thenelsif e1=‘1’ and e0=‘0’ thens2<=‘1’;s2<=‘1’;

l if 1 ‘1’ d 0 ‘1’ thl if 1 ‘1’ d 0 ‘1’ thelsif e1=‘1’ and e0=‘1’ thenelsif e1=‘1’ and e0=‘1’ thens3<=‘1’;s3<=‘1’;

end if;end if;dd

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3838

end process;end process;end algoritmica;end algoritmica;

Page 39: CLASE VHDL

Nivel RTL (Register Transfer Level) o Nivel RTL (Register Transfer Level) o d fl j d d t (D t Fl )d fl j d d t (D t Fl )de flujo de datos (Data Flow)de flujo de datos (Data Flow)

ProporcionaProporciona unun ciertocierto gradogrado dedeabstracciónabstracción concon respectorespecto alal hardwarehardwareabstracciónabstracción concon respectorespecto alal hardwarehardware..

ElEl diseñadordiseñador describedescribe elel sistemasistema mediantemediantediagramasdiagramas dede transferenciastransferencias entreentreregistros,registros, tablastablas dede verdadverdad oo ecuacionesecuacioneslógicaslógicas..

Ing. Wilmer NaranjoIng. Wilmer Naranjo 3939

Page 40: CLASE VHDL

Nivel RTLNivel RTLarchitecture RTL of decodificador is architecture RTL of decodificador is

signal e0n, e1n: bit;signal e0n, e1n: bit;signal e0n, e1n: bit;signal e0n, e1n: bit;beginbegin

e0n<=not(e0);e0n<=not(e0);e1n<=not(e1);e1n<=not(e1);s0<= e0n and e1n and en;s0<= e0n and e1n and en;0< ( t 0) d t( 1) d0< ( t 0) d t( 1) ds0<= (not e0) and not(e1) and en;s0<= (not e0) and not(e1) and en;

s1<= e0 and e1n and en;s1<= e0 and e1n and en;s2<= e0n and e1 and en;s2<= e0n and e1 and en;s2<= e0n and e1 and en;s2<= e0n and e1 and en;s3<= e0 and e1 and en;s3<= e0 and e1 and en;

end RTL;end RTL;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4040

;;

Page 41: CLASE VHDL

Nivel Lógico o EstructuralNivel Lógico o EstructuralNivel Lógico o EstructuralNivel Lógico o Estructural

UtilizaUtiliza loslos recursosrecursos queque elel lenguajelenguajeUtilizaUtiliza loslos recursosrecursos queque elel lenguajelenguajeproporcionaproporciona parapara describirdescribir laslasinterconexionesinterconexiones entreentre loslos distintosdistintoscomponentescomponentes dede unun circuitocircuito..

NoNo sese realizarealiza unauna descripcióndescripción deldelcomportamientocomportamiento sinosino dede lala estructuraestructura deldelppmismomismo..

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4141

Page 42: CLASE VHDL

Nivel LógicoNivel Lógicoarchitecturearchitecture estructural of decodificador estructural of decodificador isis

signalsignal e0n, e1n: bit;e0n, e1n: bit;componentcomponent inversorinversor isiscomponentcomponent inversor inversor isis

portport (e:in bit; s:out bit);(e:in bit; s:out bit);endend componentcomponent;;componentcomponent puerta andpuerta and isiscomponentcomponent puerta_andpuerta_and isis

portport (e0, e1,en:in bit; s:out bit);(e0, e1,en:in bit; s:out bit);endend componentcomponent;;

BeginBeginBeginBeginN0:inversor N0:inversor portport mapmap (e0, e0n);(e0, e0n);N1:inversor N1:inversor portport mapmap (e1, e1n);(e1, e1n);A0:puerta andA0:puerta and portport mapmap (e0n e1n en s0);(e0n e1n en s0);A0:puerta_and A0:puerta_and portport mapmap (e0n, e1n, en, s0);(e0n, e1n, en, s0);A1:puerta_and A1:puerta_and portport mapmap (e0, e1n, en, s1);(e0, e1n, en, s1);A2:puerta_and A2:puerta_and portport mapmap (e0n, e1, en, s2);(e0n, e1, en, s2);A3:puerta andA3:puerta and portport mapmap (e0 e1 en s3);(e0 e1 en s3);

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4242

A3:puerta_and A3:puerta_and portport mapmap (e0, e1, en, s3);(e0, e1, en, s3);endend estructural;estructural;

Page 43: CLASE VHDL

INSTRUCCIONES DE ASIGNACION CONCURRENTEINSTRUCCIONES DE ASIGNACION CONCURRENTEAsignación de señales simplesAsignación de señales simples

Signal_name <= expression;Signal_name <= expression;

Asignación de señales seleccionadaAsignación de señales seleccionadaWhit expression SELECTWhit expression SELECTppsignal_name <= expression WHEN constant_value{,signal_name <= expression WHEN constant_value{,

expression WHEN constant_value};expression WHEN constant_value};

Asignación de señal condicionalAsignación de señal condicionalsignal_name <= expression WHEN logic_expression ELSEsignal_name <= expression WHEN logic_expression ELSEg gg g

{expression WHEN logic_expression ELSE}{expression WHEN logic_expression ELSE}expression;expression;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4343Instrucciones GenerateInstrucciones Generate

Page 44: CLASE VHDL

COMPARADOR ASIGNACIONCOMPARADOR ASIGNACION

EA C

EntityEntity comparador comparador isisPort (A,B: in Port (A,B: in bit_vectorbit_vector (0 (0 toto 3);3); 4

EBC : C : outout bit );bit );EndEnd comparadorcomparadorarchitecturearchitecture RTL of comparadorRTL of comparador isis

4

architecturearchitecture RTL of comparador RTL of comparador isisBEGINBEGINC <= NOT (A(0) XOR B(0)) ANDC <= NOT (A(0) XOR B(0)) AND( ( ) ( ))( ( ) ( ))

NOT (A(1) XOR B(1)) ANDNOT (A(1) XOR B(1)) ANDNOT (A(2) XOR B(2)) AND NOT (A(2) XOR B(2)) AND NOT (A(3) XOR B(3));NOT (A(3) XOR B(3));NOT (A(3) XOR B(3));NOT (A(3) XOR B(3));

endend RTL;RTL;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4444

Page 45: CLASE VHDL

SELECTOR SELECCIONSELECTOR SELECCIONEntity selector isEntity selector isPort (A,B: in bit_vector (1 to 4);Port (A,B: in bit_vector (1 to 4);

S: in bit;S: in bit; EA C4S: in bit; S: in bit;

C : out bit_vector (1 to 4));C : out bit_vector (1 to 4));End selectorEnd selector

EB4

4

architecture RTL of selector isarchitecture RTL of selector isbeginbegin

WITH S SELECTWITH S SELECT

S

WITH S SELECTWITH S SELECTC <= C <= A WHEN ‘0’, A WHEN ‘0’,

B WHEN OTHERS;B WHEN OTHERS;end RTL;end RTL;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4545

Page 46: CLASE VHDL

SELECTOR 4SELECTOR 4Entity selector4 isEntity selector4 isPort (A,B,C,D: in bit_vector (1 to 4);Port (A,B,C,D: in bit_vector (1 to 4);

S: in bit vector (0 to 1);S: in bit vector (0 to 1); A F4S: in bit_vector (0 to 1); S: in bit_vector (0 to 1); F : out bit_vector (1 to 4));F : out bit_vector (1 to 4));

End selector4End selector4E

BC

D44

4

4

architecture RTL of selector4 isarchitecture RTL of selector4 isbeginbegin

WITH S SELECTWITH S SELECT SWITH S SELECTWITH S SELECTF <= F <= A WHEN ‘00’, A WHEN ‘00’,

B WHEN ‘01’,B WHEN ‘01’,

S

C WHEN ‘10’,C WHEN ‘10’,D WHEN OTHERS;D WHEN OTHERS;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4646

end RTL;end RTL;

Page 47: CLASE VHDL

COMPARADOR CONDICIONALCOMPARADOR CONDICIONAL

EA C

Entity comparador isEntity comparador isPort (A B: in bit vector (1 to 4);Port (A B: in bit vector (1 to 4); 4

EBPort (A,B: in bit_vector (1 to 4);Port (A,B: in bit_vector (1 to 4);

C : out bit );C : out bit );End comparadorEnd comparador

4

architecture RTL of comparador is architecture RTL of comparador is BEGINBEGINC <= ‘1’ when (a = b) else ‘0’;C <= ‘1’ when (a = b) else ‘0’;C <= 1 when (a = b) else 0 ;C <= 1 when (a = b) else 0 ;

end RTL;end RTL;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4747

Page 48: CLASE VHDL

SELECTORSELECTOREntityEntity selector2 selector2 isisPort (A,B: in Port (A,B: in bit_vectorbit_vector (1 (1 toto 4);4);

S: in bit;S: in bit; EA C4S: in bit; S: in bit;

C : C : outout bit_vectorbit_vector (1 (1 toto 4));4));EndEnd selector2selector2

EB4

4

architecturearchitecture RTL of selector2 RTL of selector2 isisbeginbegin

S

beginbeginC <= C <= A WHEN S= ‘0’ ELSE B;A WHEN S= ‘0’ ELSE B;

endend RTL;RTL;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4848

Page 49: CLASE VHDL

Asignación de señal recibida 2Asignación de señal recibida 2

Otra forma:Otra forma:with - select - when - otherswith - select - when - others

Ejemplo:Ejemplo:Ejemplo:Ejemplo:WithWith mm selectselectTT <=‘<=‘11’’ whenwhen 00 || 44 || 1818;;TT 11 whenwhen 00 || 44 || 1818;;

‘‘00’’ whenwhen 1414 || 1616 || 2020;;‘z’‘z’ whenwhen othersothers;;

LasLas barrasbarras verticalesverticales ((||)) tienentienen elel mismomismosignificadosignificado queque lala operaciónoperación lógicalógica oror

Ing. Wilmer NaranjoIng. Wilmer Naranjo 4949

significadosignificado queque lala operaciónoperación lógicalógica oror..

Page 50: CLASE VHDL

PROCESOPROCESOEsEs elel mecanismomecanismo fundamentalfundamental utilizadoutilizado parapara describirdescribir elelcomportamientocomportamiento dede unauna entidadentidad..ppLaLa arquitecturaarquitectura dede unauna entidadentidad descritadescrita aa nivelnivel dedecomportamientocomportamiento incluyeincluye unauna oo másmás procesosprocesos..EsEs enen sísí unauna cláusulacláusula concurrente,concurrente, peropero laslas sentenciassentencias,, ppincluidasincluidas enen élél sonson secuencialessecuenciales..

LaLa declaracióndeclaración dede loslos procesosprocesos comienzacomienza concon elel nombrenombreLaLa declaracióndeclaración dede loslos procesosprocesos comienzacomienza concon elel nombrenombredede éste,éste, seguidaseguida porpor dosdos puntospuntos ((::)) yy luego,luego, lala palabrapalabraclaveclave PROCESSPROCESS..DespuésDespués dede lala palabrapalabra claveclave eses necesarionecesario detallardetallar unaunaDespuésDespués dede lala palabrapalabra claveclave eses necesarionecesario detallardetallar unaunalistalista dede señales,señales, conocidaconocida comocomo listalista dede sensibilidadessensibilidades..ElEl objetivoobjetivo dede estaesta listalista eses activaractivar elel proceso,proceso, siempresiempre yycuandocuando sese activeactive oo cambiecambie unauna dede laslas señalesseñales

Ing. Wilmer NaranjoIng. Wilmer Naranjo 5050

contenidascontenidas enen dichadicha listalista..

Page 51: CLASE VHDL

Sintaxis del procesoSintaxis del procesonombre_del_proceso: process (señal1, señal2,…,señaln)nombre_del_proceso: process (señal1, señal2,…,señaln)

Declaración de tipos Declaración de tipos Declaración de ariablesDeclaración de ariablesDeclaración de variablesDeclaración de variablesDeclaración de constantesDeclaración de constantesBegin Begin ggDeclaraciones secuencialesDeclaraciones secuenciales......

Declaraciones secuencialesDeclaraciones secuencialesend process nombre del proceso;end process nombre del proceso;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 5151

end process nombre_del_proceso;end process nombre_del_proceso;

Page 52: CLASE VHDL

Declaración if Declaración if -- thenthenLaLa declaracióndeclaración ifif eses unauna estructuraestructura dede asignaciónasignacióncondicional,condicional, queque permitepermite lala selecciónselección dede instruccionesinstrucciones quequeseránserán ejecutadas,ejecutadas, dependiendodependiendo dede unauna oo másmás condicionescondiciones..jj ppEjemploEjemplo::

IfIf a=ba=b thenthenE<=‘E<=‘11’’;;E<=E<= 11 ;;endend ifif;;

Declaración ifDeclaración if thenthen elseelseDeclaración if Declaración if –– thenthen--elseelseEjemploEjemplo::

IfIf a=ba=b thenthenIfIf a ba b thenthenE<=‘E<=‘11’’;;

elseelse

Ing. Wilmer NaranjoIng. Wilmer Naranjo 5252

E<=‘E<=‘00’’;;endend ifif;;

Page 53: CLASE VHDL

Declaración ifDeclaración if –– thenthen--elsifelsif--elseelseDeclaración if Declaración if thenthen elsifelsif elseelse

Usada cuando es necesario varias estructuras ifUsada cuando es necesario varias estructuras ifUsada cuando es necesario varias estructuras if Usada cuando es necesario varias estructuras if anidadas (una en el interior de otras).anidadas (una en el interior de otras).

EjemploEjemplo::EjemploEjemplo::

IfIf [A[[A[33]=‘]=‘11’]’] thenthen YY <=<= ““111111””;;elsifelsif [A[[A[22]=‘]=‘11’]’] thenthen YY <=<= ““110110””;;elsifelsif [A[[A[22]=]= 11 ]] thenthen YY <=<= 110110 ;;elsifelsif [A[[A[11]=‘]=‘11’]’] thenthen YY <=<= ““101101””;;elsifelsif [A[[A[00]=‘]=‘11’]’] thenthen YY <=<= ““100100””;;

elseelse YY <=<= ““000000””;;endend ifif;;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 5353

Page 54: CLASE VHDL

Declaración CaseDeclaración CaseDeclaración CaseDeclaración Case

EsEs muymuy útilútil cuandocuando sese disponendisponen dede variasvarias alternativasalternativas aaEsEs muymuy útilútil cuandocuando sese disponendisponen dede variasvarias alternativasalternativas aapartirpartir deldel valorvalor dede unauna señal,señal, oo unauna expresiónexpresión yy sesenecesitanecesita seleccionarseleccionar sólosólo unauna..

EjemploEjemplo::

C A iC A iCase A isCase A iswhen “001” => Y[0] <= '0';when “001” => Y[0] <= '0';when “010” => Y[1] <= '0';when “010” => Y[1] <= '0';when “011” => Y[2] <= '0';when “011” => Y[2] <= '0';when “111” => Y[3] <= '0';when “111” => Y[3] <= '0';

end case;end case;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 5454

end case;end case;

Page 55: CLASE VHDL

CaseCase--whenwhen--othersothersCaseCase whenwhen othersothersEjemploEjemplo::

Case A isCase A iswhen “001” => Y[0] <= '0';when “001” => Y[0] <= '0';when “010” => Y[1] <= '0';when “010” => Y[1] <= '0';when “011” => Y[2] <= '0';when “011” => Y[2] <= '0';when “101” => Y[3] <= '0';when “101” => Y[3] <= '0';

h th Y “1111”h th Y “1111”when others =>Y<=“1111”;when others =>Y<=“1111”;end case;end case;

Ing. Wilmer NaranjoIng. Wilmer Naranjo 5555

Page 56: CLASE VHDL

LOOPLOOPLOOPLOOP

VHDL d i t i d i lVHDL d i t i d i lVHDL provee dos instrucciones de ciclo:VHDL provee dos instrucciones de ciclo:1.1.-- For For ------ looploop2.2.-- While While ------ looploopEstas instrucciones sirven para repetir unaEstas instrucciones sirven para repetir unaEstas instrucciones sirven para repetir una Estas instrucciones sirven para repetir una

o mas instrucciones de asignación o mas instrucciones de asignación secuencial.secuencial.secuencial.secuencial.

Ing. Wilmer NaranjoIng. Wilmer Naranjo 5656