La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Semáforo Versión .TDF AHDL

Presentaciones similares


Presentación del tema: "Semáforo Versión .TDF AHDL"— Transcripción de la presentación:

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


Descargar ppt "Semáforo Versión .TDF AHDL"

Presentaciones similares


Anuncios Google