clase vhdl
TRANSCRIPT
CIRCUITOS DIGITALES YCIRCUITOS DIGITALES YCIRCUITOS DIGITALES Y CIRCUITOS DIGITALES Y APLICACIÓN DE VHDLAPLICACIÓN DE VHDL
Ing. Wilmer NaranjoIng. Wilmer Naranjo
11
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))
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
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.
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.
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
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.
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
DIFERENCIASDIFERENCIAS
Ing. Wilmer NaranjoIng. Wilmer Naranjo 99
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
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..
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
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.
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
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
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.
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
( ) , ( ) , ( ) , ( )( ) , ( ) , ( ) , ( )
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)
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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
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 ;;
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 })});;
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
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
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
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;
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
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
;;
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
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;
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
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
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
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;
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
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
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..
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..
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;
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;;
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
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;
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
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