Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Semáforo Versión .TDF AHDL
reset reloj100ms y rojo1 amarillo1 verde1 rojo2 verde2 amarillo2 semáforo Bloque de objetos ( entradas y salidas )
2
Esquema de funcionamiento
3
Diagrama de estados semáforo (Moore)
S1 S0 v1,r2 0 día 1 noche 1 S2 0,0 r1,r2 1 1 a1,r2 S3 S6 1 1 S4 r1,r2 1 1 S7 S5 1 r1,v2 a1,a2
4
Semáforo: Entradas y salidas , procesos, Variables y nodos AHDL
Xtal 8 Mhz Entradadatos[7..0] Cuenta.data[7..0] % N LPM_counter cuenta IF CASE Cuenta.q[7..0] reloj100ms If Cuenta.data[7..0]= Cuenta.q[7..0] 30 If case S2 S3 180 S4 S5 S0 S1 FFD Cuenta.q[7..0] D Salida FF Entradadatos[7..0] SS table y Dia /noche BLOQUE COMBINATORIO SEC salida[5..0] reset relojmáquina R1,A1,V1,R2,A2,V2
5
Esquemáticos
6
Esquemáticos
7
AHDL Subdesign SUBDESIGN semaforo2 ( reloj100ms, y, reset : INPUT;
rojo1, rojo2, amari1, amari2, verde1, verde2 : OUTPUT; )
8
AHDL Variables y Nodos internos
cuenta: lpm_counter WITH ( LPM_WIDTH=8); ss: MACHINE WITH STATES (s0, s1, s2, s3, s4, s5, s6, s7); salida[5..0], entradacontador[7..0], relojmaquina : NODE; borrar : NODE; salidaff : DFF; BEGIN
9
Proceso Table TABLE % estado entrada salida proximo %
% actual actual actual estado % ss, y => salida[], ss; s0, => B"100100", s1; s1, => B"001100", s2; s2, => B"010100", s3; s3, => B"100100", s4; s4, => B"100001", s5; s5, => B"100010", s0; s6, => B"010010", s0; s7, => B"000000", s0; s0, => B"100100", s7; s1, => B"001100", s7; s2, => B"010100", s7; s3, => B"100100", s7; s4, => B"100001", s7; s5, => B"100010", s7; s6, => B"010010", s7; s7, => B"000000", s6; END TABLE;
10
Proceso IF CASE CASE salida [] IS
WHEN B"100100" => entradacontador[] = H"1E"; WHEN B"001100" => entradacontador[] = H"B4"; WHEN B"010100" => entradacontador[] = H"1E"; WHEN B"100001" => entradacontador[] = H"B4"; WHEN B"100010" => entradacontador[] = H"1E"; WHEN B"010010" => entradacontador[] = H"0A"; WHEN B"000000" => entradacontador[] = H"0A"; END CASE;
11
Proceso IF ELSE salidaff.clk = reloj100ms; cuenta.clock = reloj100ms;
cuenta.sclr = borrar; cuenta.data[] = entradacontador[]; IF cuenta.q[7..0] < entradacontador[7..0] THEN salidaff.d = GND; borrar = GND; ELSE borrar = VCC; salidaff.d = VCC; END IF; % Fin etapa programador de tiempo % relojmaquina = salidaff.q;
12
salidas rojo1 = salida[5]; amari1 = salida[4]; verde1 = salida[3];
13
LPM_Counter LPM_WIDTH Integer Yes The number of bits in the count, or the width of the q[] and data[] ports, if they are used. LPM_DIRECTION String No Values are "UP", "DOWN", and "UNUSED". If the LPM_DIRECTION parameter is used, the updown port cannot be connected. When the updown port is not connected, the default for the LPM_DIRECTION parameter is "UP".
14
FFD
15
Simulación: Estados (detalle)
16
Simulación: Estados Los estados rojo-amarillo y verde -amarillo duran 3 s el estado rojo-verde dura 18 seg. (diurno) Intervalo rojo verde
17
Floorplan
18
EPM7128
19
ARQUITECTURA MAX 7000
20
macrocelda
21
I/0
22
JTAG
23
Conectory señales JTAG
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.