Está en la página 1de 12

UNIVERSIDADNACIONALMAYORDESANMARCOS

FACULTADDEINGENIERAELECTRNICA
ESCUELADEINGENIERAELECTRNICA








DISEODIGITAL

LABORATORIONo1

USODELESTILO:

1. FLUJODEDATOSDELVHDL
2. DESCRIPCINFUNCIONALDELVERILOGHDL

PARAELDISEODECIRCUITOSCOMBINACIONALES










Profesor:Ing.AlfredoGranadosLy.

UNMSMFIEE 1
ESTILOFLUJODEDATOSPARAELDISEODECIRCUITOSCOMBINACIONALES

Esteestilosecaracterizaporutilizarlasasignacionesconcurrentesaseales(ACS).
Tenemos3tiposdeACS:

ACSnica
ACScondicional
ACSselectiva

Estas sentencias terminan asignando un valor a una seal despus de evaluar toda una
expresin,estaevaluacinserealizacuandoocurreuneventoenunadelassealesquese
encuentranaladerechadelsmbolodeasignacinaseal(<=).

ACS nica: se basa en expresiones muy parecidas a las ecuaciones booleanas, en la


mayoradeloscasosseexpresanensumadetrminosproducto.

Sintaxis:
seal<=expresin

enlaexpresinpuedenaparecervalores,seales,operadoreslgicosoaritmticos.
Veamosalgunosejemplos:

enable<=1
z<=aandborc
f<=p1+p2
temp<=var1&var2
y<=10101

ACS condicional: sebasaenexpresionesquedebenevaluarunacondicinydependiendo


delarespuestaterminanasignandoelresultadodelaexpresinalaseal.

Sintaxis:

seal<=expresin1whencondicin1elseexpresin2

En la declaracinanterior,silacondicin1esverdaderaentonceslaseal tomael resultado


de la expresin1, caso contrario (si condicin1esfalsa)entonceslasealtomaelresultado
delaexpresin2.

LasintaxisdelaACScondicionalensuformagenerales:

seal<=expresin1whencondicin1else
expresin2whencondicin2else
expresin3whencondicin3else
........
expresinNwhencondicinNelseexpresinM

UNMSMFIEE 2
En la declaracin anterior se nota que hay una prioridad en la asignacin a seal, por
ejemplo para que la seal tome el resultado de la expresin3 debe cumplirse que la
condicin1 y condicin2 sean falsas y la condicin3 sea verdadera. La prioridad la tiene la
condicin1, si esta no se cumple se pasa a evaluar la condicin2, si esta no se cumple se
pasa a evaluar la condicin3 y as sucesivamente se evalan todas las condiciones hasta
quecumplaalgunadeellas.

Hay que aclarar que siempre se terminaevaluandounaexpresinyasignandolarespuesta


alasealasnosecumplaningunacondicin.

Veamosalgunosejemplos:

compuertaAND:

C<=AwhenB=1else0

multiplexorde2a1:

Z<=AwhenSEL=0elseB

enelsiguientecircuito:

F<= AwhenZ=1else
BwhenY=1else
CwhenX=1else0

decodificador de3a8

UNMSMFIEE 3

ENTRADA<=C&B&A

TEMPORAL<=11111110whenENTRADA=000else
11111101whenENTRADA=001else
11111011whenENTRADA=010else
11110111whenENTRADA=011else
11101111whenENTRADA=100else
11011111whenENTRADA=101else
10111111whenENTRADA=110else01111111

Y<=TEMPORALwhenENA=1else11111111

ACS selectivo: se utiliza mucho para implementar tablas de verdaddepequeoscircuitos.


Se evala una expresin (la que sigue a la palabra with) ydeacuerdoalvalorque tomese
leasignaalaseallarespuestadeunaexpresin.Veamossusintaxis:

withexpresinselectseal <=expresin1whenvalor1,
expresin2whenvalor2,
expresin3whenvalor3,
............
expresinNwhenvalorN

Esta sentencia requiere que se especifique todos los posibles valores que puede tomar la
expresin a evaluar, por lo que generalmente la sentencia se escribe de la siguiente
manera:

withexpresinselectseal<=expresin1whenvalor1,
expresin2whenvalor2,
expresin3whenvalor3,
............
expresinNwhenothers

Conlapalabraothersseestcubriendoelrestodevaloresquenohansidoespecificados
enlasentencia.Veamosalgunosejemplos:

UNMSMFIEE 4

compuertaAND:

withAselectC<= Bwhen1
0when0

AsumimosqueAslopuedetomarlosvaloresde0y1(tipobit)

multiplexorde2a1:

withSELselectZ<=Awhen0,
Bwhenothers
AsumimosqueSELpuedetomarotrosvaloresapartede0y1(tipostd_logic).

Decoderde2a4:

withEselectY<= 1110when00,
1101when01,
1011when10
0111whenothers

UNMSMFIEE 5
CIRCUITOSAIMPLEMENTARENCLASEDELABORATORIO

Decodificadorde3a8conhabilitador(VHDL).

libraryIEEE
useIEEE.STD_LOGIC_1164.ALL
useIEEE.STD_LOGIC_ARITH.ALL
useIEEE.STD_LOGIC_UNSIGNED.ALL

entityDEC3A8_ENAis
Port(A:instd_logic
B:instd_logic
C:instd_logic
ENA:instd_logic
Y:outstd_logic_vector(7downto0))
endDEC3A8_ENA

architectureBehavioralofDEC3A8_ENAis
signalENTRADA:std_logic_vector(2downto0)
signalSALIDAS:std_logic_vector(7downto0)
begin

ENTRADA<=C&B&A

withENTRADAselectSALIDAS<= "00000001"when"000",
"00000010"when"001",
"00000100"when"010",
"00001000"when"011",
"00010000"when"100",
"00100000"when"101",
"01000000"when"110",
"10000000"whenothers

Y<=SALIDASwhenENA='1'else(others=>'0')

endBehavioral

Decodificadorde3a8conhabilitador(VerilogHDL).

moduleDEC3A8_ENAVLOG(a,b,c,ena,Y)
inputa,b,c,ena
output[7:0]Y

reg[7:0]salidas

UNMSMFIEE 6
always@({c,b,a})
case({c,b,a})
3'b000:salidas=8'b00000001
3'b001:salidas=8'b00000010
3'b010:salidas=8'b00000100
3'b011:salidas=8'b00001000
3'b100:salidas=8'b00010000
3'b101:salidas=8'b00100000
3'b110:salidas=8'b01000000
default:salidas=8'b10000000
endcase

assignY=ena?salidas:8'b00000000

endmodule

ALUde8bitsenVHDL.

libraryIEEE
useIEEE.STD_LOGIC_1164.ALL
useIEEE.STD_LOGIC_ARITH.ALL
useIEEE.STD_LOGIC_UNSIGNED.ALL

entityALU_8BITSis
Port(A,B:instd_logic_vector(7downto0)
OPER:instd_logic_vector(2downto0)
Z:outstd_logic_vector(7downto0))
endALU_8BITS

architectureBehavioralofALU_8BITSis
begin
withOPERselectZ<=A+B when"000",
AB when"001",
A+1 when"010",
A1 when"011",
AandB when"100",
AorB when"101",
AxorB when"110",
notA whenothers
endBehavioral

UNMSMFIEE 7

ALUde8bitsenVerilogHDL.

moduleALU_8BITSVLOG(a,b,oper,z)
input[7:0]a,b
input[2:0]oper
output[7:0]z

reg[7:0]z

always@(oper)
case(oper)
3'b000:z=a+b
3'b001:z=ab
3'b010:z=a+1
3'b011:z=a1
3'b100:z=a&b
3'b101:z=a|b
3'b110:z=a^b
default:z=~a
endcase

endmodule



Registroconcargaydesplazamientode1bitenVHDL.

libraryIEEE
useIEEE.STD_LOGIC_1164.ALL
useIEEE.STD_LOGIC_ARITH.ALL
useIEEE.STD_LOGIC_UNSIGNED.ALL

entityLOAD_SHIFTis
Port(DATA:instd_logic_vector(7downto0)
SEL:instd_logic_vector(1downto0)
Q:bufferstd_logic_vector(7downto0))
endLOAD_SHIFT

UNMSMFIEE 8
architectureBehavioralofLOAD_SHIFTis
begin

withSELselectQ<=DATA when"00",
DATA(6downto0)&'0' when"01",
'0'&DATA(7downto1) when"10",
Q whenothers

endBehavioral

Registroconcargaydesplazamientode1bitenVerilogHDL

moduleLOAD_SHIFTVLOG(DATA,SEL,Q)
input[7:0]DATA
input[1:0]SEL
output[7:0]Q

assignQ=(SEL==0)?DATA:
(SEL==1)?DATA<<1:
(SEL==2)?DATA>>1:Q

endmodule

Conversordenmerobinariode4bitsaBCDenVHDL.

libraryIEEE
useIEEE.STD_LOGIC_1164.ALL
useIEEE.STD_LOGIC_ARITH.ALL
useIEEE.STD_LOGIC_UNSIGNED.ALL

entitybinario_bcdis
Port(DATA:instd_logic_vector(3downto0)
BCD0:outstd_logic_vector(3downto0)
BCD1:outstd_logic)
endbinario_bcd

architectureBehavioralofbinario_bcdis
signalTEMP:std_logic_vector(4downto0)

UNMSMFIEE 9
begin
TEMP<='0'&DATAwhenDATA<10else
"10000"whenDATA=10else
"10001"whenDATA=11else
"10010"whenDATA=12else
"10011"whenDATA=13else
"10100"whenDATA=14else"10101"

BCD1<=TEMP(4)
BCD0<=TEMP(3downto0)

endBehavioral

Conversordenmerobinariode4bitsaBCDenVerilogHDL

(ResolverenClase)

Decodificadora7segmentosdetiponodocomnenVHDL.

libraryIEEE
useIEEE.STD_LOGIC_1164.ALL
useIEEE.STD_LOGIC_ARITH.ALL
useIEEE.STD_LOGIC_UNSIGNED.ALL

entityDEC7SEGis
Port(DATA:instd_logic_vector(3downto0)
DISPLAY:outstd_logic_vector(6downto0))
endDEC7SEG

architectureBehavioralofDEC7SEGis
begin
gfedcba
WITHDATASELECTDISPLAY<= "1000000"WHEN"0000",
"1111001"WHEN"0001",
"0100100"WHEN"0010",
"0110000"WHEN"0011",
"0011001"WHEN"0100",
"0010010"WHEN"0101",
"0000011"WHEN"0110",
"1111000"WHEN"0111",
"0000000"WHEN"1000",
"0011000"WHEN"1001",
"1111111"WHENOTHERS
endBehavioral

Decodificadora7segmentosdetiponodocomnenVerilogHDL.

(ResolverenClase)

UNMSMFIEE 10
Detectordeparidadimpardeunnmerode8bitsenVHDL.

libraryIEEE
useIEEE.STD_LOGIC_1164.ALL
useIEEE.STD_LOGIC_ARITH.ALL
useIEEE.STD_LOGIC_UNSIGNED.ALL

entityDET_IMPARis
Port(DATA:instd_logic_vector(7downto0)
Z:outstd_logic)
endDET_IMPAR

architectureBehavioralofDET_IMPARis
begin

Z<=DATA(7)xorDATA(6)xor
DATA(5)xorDATA(4)xor
DATA(3)xorDATA(2)xor
DATA(1)xorDATA(0)

endBehavioral

Detectordeparidadimpardeunnmerode8bitsenVerilogHDL.

(ResolverenClase)

Comparadorde4bitsenVHDL

libraryIEEE
useIEEE.STD_LOGIC_1164.ALL
useIEEE.STD_LOGIC_ARITH.ALL
useIEEE.STD_LOGIC_UNSIGNED.ALL

entitycomparadoris
Port(A:instd_logic_vector(3downto0)
B:instd_logic_vector(3downto0)
IGU:outstd_logic
MAY:outstd_logic
MEN:outstd_logic)
endcomparador

architectureBehavioralofcomparadoris
begin

IGU<='1'whenA=Belse'0'
MAY<='1'whenA>Belse'0'
MEN<='1'whenA<Belse'0'

endBehavioral

Comparadorde4bitsenVerilogHDL

(ResolverenClase)

UNMSMFIEE 11
PararesolverfueradeclaseenVHDLyVerilogHDL:

1. Implementarunacompuertadetipotresestadosde8bits.

2. Implementaruncircuitodetectordelosnmerosprimosde4bits

3. Implementaruncomparadorde2nmerosde8bitsconsigno(mayor,menoro
igual).

4. .Implementaruncodificadorde4bitsaBCDconindicadordedatovlido.

UNMSMFIEE 12

También podría gustarte