# Problema con semaforo en VHDL por paralelo PLD



## Gatz (Nov 22, 2010)

Buen día

Estoy aprendiendo a implementar circuitos en VHDL en max plus II por medio de una tarjeta JTAG byte blaster que yo fabrique, el diseño es un semáforo que al momento de pasarlo al PLD el verde antes de cambiar al amarillo no parpadea, aqui le sdejo el programa con la simulación haber si alguien me puede ayudar.



> library ieee;
> use ieee.std_logic_1164.all;
> use ieee.std_logic_unsigned.all;





> entity semaforo2 is
> port (clk: in std_logic;
> R, A, V: out std_logic);
> end semaforo2;





> architecture contando of semaforo2 is
> signal C: std_logic_vector (5 downto 0);
> begin
> process (clk, C) begin
> ...






Como pueden ver en la simulación el parpadeo esta presente pero al momento de implementar el verde no parpadea pasa directamente de verde a amarillo sin mas, agradecería un poco de ayuda para llegar a la solución del problema.

PLD: EPM3064ALC44 - 10N programado con JTAG ByteBlaster por puerto paralelo en MAX PLUS II.


----------



## webster26 (Nov 22, 2010)

agrega un  ciclo al amarrillo de tal forma que habilites y desabilites el bit, o la otra tengo un codigo de semaforo para vhdl, si gustas te lo puedo pasar esa parte para que te des una idea


----------



## Gatz (Nov 22, 2010)

Estaria muy agradecido ahora mismo te paso mi e-mail por privado, otra cosa el amarillo no es el que parpadea es el verde antes de cambiar a amarillo.

No te pude mandar PM por que soy muy nuevo y no me dejan, asi que te dejo un correo alterno gatz@hotmail.es


----------



## webster26 (Nov 22, 2010)

ahh ok ok bueno cuando llegue a mi casa lo busco bien para quitarte de la duda,


----------



## Ferny (Nov 22, 2010)

> architecture contando of semaforo2 is
> signal C: std_logic_vector (5 downto 0);
> signal aux: std_logic;
> begin
> ...



Prueba así, es lo mismo pero más "correcto".

Un saludo


----------



## Gatz (Nov 22, 2010)

Tiene mucho sentido lo implementare aver que pasa muchas gracias.



El problema continuo, al momento de compilar me dice esto…

INFO: Signal 'clk' chosen for auto global clock

pero la señal de reloj  yo se la doy como entrada con un 555 no me estará generando un conflicto de relojes? (que este funcionando un reloj interno en el PLD) y si es así como se puede desactivar el auto global clock, alguna sugerencia?.

Aqui les dejo el contenido del compilado y el detalle del clk esta al inicio de ** AUTO GLOBAL SIGNALS **

```
Project Information                                   c:\vhdhugo\semaforo2.rpt

MAX+plus II Compiler Report File
Version 10.2 07/10/2002
Compiled: 11/22/2010 13:48:31

Copyright (C) 1988-2002 Altera Corporation
Any megafunction design, and related net list (encrypted or decrypted),
support information, device programming or simulation file, and any other
associated documentation or information provided by Altera or a partner
under Altera's Megafunction Partnership Program may be used only to
program PLD devices (but not masked PLD devices) from Altera.  Any other
use of such megafunction design, net list, support information, device
programming or simulation file, or any other related documentation or
information is prohibited for any other purpose, including, but not
limited to modification, reverse engineering, de-compiling, or use with
any other silicon devices, unless such use is explicitly licensed under
a separate agreement with Altera or a megafunction partner.  Title to
the intellectual property, including patents, copyrights, trademarks,
trade secrets, or maskworks, embodied in any such megafunction design,
net list, support information, device programming or simulation file, or
any other related documentation or information provided by Altera or a
megafunction partner, remains with Altera, the megafunction partner, or
their respective licensors.  No other licenses, including any licenses
needed under any third party's intellectual property, are provided herein.



***** Project compilation was successful


SEMAFORO2


** DEVICE SUMMARY **

Chip/                     Input   Output   Bidir         Shareable
POF       Device          Pins    Pins     Pins     LCs  Expanders  % Utilized

semaforo2
      EPM3064ALC44-10      1        3        0      14      0           21 %

User Pins:                 1        3        0  


§
Project Information                                   c:\vhdhugo\semaforo2.rpt

** AUTO GLOBAL SIGNALS **



INFO: Signal 'clk' chosen for auto global Clock

§
Project Information                                   c:\vhdhugo\semaforo2.rpt

** FILE HIERARCHY **



|lpm_add_sub:82|
|lpm_add_sub:82|addcore:adder|
|lpm_add_sub:82|addcore:adder|addcore:adder0|
|lpm_add_sub:82|altshift:result_ext_latency_ffs|
|lpm_add_sub:82|altshift:carry_ext_latency_ffs|
|lpm_add_sub:82|altshift:oflow_ext_latency_ffs|

§
Device-Specific Information:                          c:\vhdhugo\semaforo2.rpt
semaforo2

***** Logic for device 'semaforo2' compiled without errors.




Device: EPM3064ALC44-10

Device Options:
    Turbo Bit                                    = ON
    Security Bit                                 = OFF
    Enable JTAG Support                        = ON
    User Code                                  = ffffffff
    MultiVolt I/O                              = OFF

              R  R  R                          
              E  E  E                          
              S  S  S  V                       
              E  E  E  C                       
              R  R  R  C                       
              V  V  V  I  G  G  G  c  G        
              E  E  E  N  N  N  N  l  N        
              D  D  D  T  D  D  D  k  D  V  R  
            -----------------------------------_ 
          /   6  5  4  3  2  1 44 43 42 41 40   | 
    #TDI |  7                                39 | A 
RESERVED |  8                                38 | #TDO 
RESERVED |  9                                37 | RESERVED 
     GND | 10                                36 | GND 
RESERVED | 11                                35 | VCCIO 
RESERVED | 12        EPM3064ALC44-10         34 | RESERVED 
    #TMS | 13                                33 | RESERVED 
RESERVED | 14                                32 | #TCK 
   VCCIO | 15                                31 | RESERVED 
RESERVED | 16                                30 | GND 
     GND | 17                                29 | RESERVED 
         |_  18 19 20 21 22 23 24 25 26 27 28  _| 
           ------------------------------------ 
              R  R  R  R  G  V  R  R  R  R  R  
              E  E  E  E  N  C  E  E  E  E  E  
              S  S  S  S  D  C  S  S  S  S  S  
              E  E  E  E     I  E  E  E  E  E  
              R  R  R  R     N  R  R  R  R  R  
              V  V  V  V     T  V  V  V  V  V  
              E  E  E  E        E  E  E  E  E  
              D  D  D  D        D  D  D  D  D  


N.C. = No Connect. This pin has no internal connection to the device.
VCCINT = Dedicated power pin, which MUST be connected to VCC (3.3 volts).
VCCIO = Dedicated power pin, which MUST be connected to VCC (3.3 volts).
GND = Dedicated ground pin or unused dedicated input, which MUST be connected to GND.
RESERVED = Unused I/O pin, which MUST be left unconnected.

^ = Dedicated configuration pin.
+ = Reserved configuration pin, which is tri-stated during user mode.
* = Reserved configuration pin, which drives out in user mode.
PDn = Power Down pin. 
@ = Special-purpose pin. 
# = JTAG Boundary-Scan Testing/In-System Programming or Configuration Pin. The JTAG inputs TMS and TDI should be tied to VCC and TCK should be tied to GND when not in use.
& = JTAG pin used for I/O. When used as user I/O, JTAG pins must be kept stable before and during configuration.  JTAG pin stability prevents accidental loading of JTAG instructions.

§
Device-Specific Information:                          c:\vhdhugo\semaforo2.rpt
semaforo2

** RESOURCE USAGE **

                                                Shareable     External
Logic Array Block     Logic Cells   I/O Pins    Expanders   Interconnect

A:     LC1 - LC16     0/16(  0%)   1/ 8( 12%)   0/16(  0%)   0/36(  0%) 
B:    LC17 - LC32     0/16(  0%)   1/ 7( 14%)   0/16(  0%)   0/36(  0%) 
C:    LC33 - LC48     0/16(  0%)   1/ 8( 12%)   0/16(  0%)   0/36(  0%) 
D:    LC49 - LC64    14/16( 87%)   4/ 7( 57%)   0/16(  0%)  11/36( 30%) 


Total dedicated input pins used:                 1/4      ( 25%)
Total I/O pins used:                             7/30     ( 23%)
Total logic cells used:                         14/64     ( 21%)
Total shareable expanders used:                  0/64     (  0%)
Total Turbo logic cells used:                   14/64     ( 21%)
Total shareable expanders not available (n/a):   0/64     (  0%)
Average fan-in:                                  5.71
Total fan-in:                                    80

Total input pins required:                       1
Total output pins required:                      3
Total bidirectional pins required:               0
Total reserved pins required                     4
Total logic cells required:                     14
Total flipflops required:                        6
Total product terms required:                   33
Total logic cells lending parallel expanders:    0
Total shareable expanders in database:           0

Synthesized logic cells:                         0/  64   (  0%)


§
Device-Specific Information:                          c:\vhdhugo\semaforo2.rpt
semaforo2

** INPUTS **

                                         Shareable
                                         Expanders     Fan-In    Fan-Out
 Pin     LC  LAB  Primitive    Code   Total Shared n/a INP  FBK  OUT  FBK  Name
  43      -   -       INPUT  G            0      0   0    0    0    0    0  clk


Code:

s = Synthesized pin or logic cell
t = Turbo logic cell
+ = Synchronous flipflop
/ = Slow slew-rate output
! = NOT gate push-back
r = Fitter-inserted logic cell
G = Global Source. Fan-out destinations counted here do not include destinations
that are driven using global routing resources. Refer to the Auto Global Signals,
Clock Signals, Clear Signals, Synchronous Load Signals, and Synchronous Clear Signals
Sections of this Report File for information on which signals' fan-outs are used as
Clock, Clear, Preset, Output Enable, and synchronous Load signals.

§
Device-Specific Information:                          c:\vhdhugo\semaforo2.rpt
semaforo2

** OUTPUTS **

                                         Shareable
                                         Expanders     Fan-In    Fan-Out
 Pin     LC  LAB  Primitive    Code   Total Shared n/a INP  FBK  OUT  FBK  Name
  39     57    D     OUTPUT      t        0      0   0    0    3    0    0  A
  40     62    D     OUTPUT      t        0      0   0    0    5    0    0  R
  41     64    D     OUTPUT      t        0      0   0    0    6    0    0  V


Code:

s = Synthesized pin or logic cell
t = Turbo logic cell
+ = Synchronous flipflop
/ = Slow slew-rate output
! = NOT gate push-back
r = Fitter-inserted logic cell

§
Device-Specific Information:                          c:\vhdhugo\semaforo2.rpt
semaforo2

** BURIED LOGIC **

                                         Shareable
                                         Expanders     Fan-In    Fan-Out
 Pin     LC  LAB  Primitive    Code   Total Shared n/a INP  FBK  OUT  FBK  Name
   -     55    D       SOFT      t        0      0   0    0    2    0    1  |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node1
 (38)    56    D       SOFT      t        0      0   0    0    3    0    1  |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node2
   -     58    D       SOFT      t        0      0   0    0    4    0    1  |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node3
   -     59    D       SOFT      t        0      0   0    0    5    0    1  |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node4
   -     60    D       SOFT      t        0      0   0    0    6    0    1  |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node5
   -     54    D       DFFE   +  t        0      0   0    0    7    3    7  C5 (:5)
 (33)    49    D       DFFE   +  t        0      0   0    0    7    3    8  C4 (:6)
   -     50    D       DFFE   +  t        0      0   0    0    7    3    9  C3 (:7)
 (34)    51    D       DFFE   +  t        0      0   0    0    7    2   10  C2 (:8)
   -     52    D       DFFE   +  t        0      0   0    0    7    2   10  C1 (:9)
 (37)    53    D       TFFE   +  t        0      0   0    0    5    1   11  C0 (:10)


Code:

s = Synthesized pin or logic cell
t = Turbo logic cell
+ = Synchronous flipflop
/ = Slow slew-rate output
! = NOT gate push-back
r = Fitter-inserted logic cell

§
Device-Specific Information:                          c:\vhdhugo\semaforo2.rpt
semaforo2

** LOGIC CELL INTERCONNECTIONS **

Logic Array Block 'D':

                                     Logic cells placed in LAB 'D'
        +--------------------------- LC57 A
        | +------------------------- LC55 |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node1
        | | +----------------------- LC56 |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node2
        | | | +--------------------- LC58 |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node3
        | | | | +------------------- LC59 |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node4
        | | | | | +----------------- LC60 |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node5
        | | | | | | +--------------- LC62 R
        | | | | | | | +------------- LC64 V
        | | | | | | | | +----------- LC54 C5
        | | | | | | | | | +--------- LC49 C4
        | | | | | | | | | | +------- LC50 C3
        | | | | | | | | | | | +----- LC51 C2
        | | | | | | | | | | | | +--- LC52 C1
        | | | | | | | | | | | | | +- LC53 C0
        | | | | | | | | | | | | | | 
        | | | | | | | | | | | | | |   Other LABs fed by signals
        | | | | | | | | | | | | | |   that feed LAB 'D'
LC      | | | | | | | | | | | | | | | A B C D |     Logic cells that feed LAB 'D':
LC55 -> - - - - - - - - - - - - * - | - - - * | <-- |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node1
LC56 -> - - - - - - - - - - - * - - | - - - * | <-- |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node2
LC58 -> - - - - - - - - - - * - - - | - - - * | <-- |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node3
LC59 -> - - - - - - - - - * - - - - | - - - * | <-- |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node4
LC60 -> - - - - - - - - * - - - - - | - - - * | <-- |LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node5
LC54 -> * - - - - * * * * * * * * * | - - - * | <-- C5
LC49 -> * - - - * * * * * * * * * * | - - - * | <-- C4
LC50 -> * - - * * * * * * * * * * * | - - - * | <-- C3
LC51 -> - - * * * * * * * * * * * * | - - - * | <-- C2
LC52 -> - * * * * * * * * * * * * - | - - - * | <-- C1
LC53 -> - * * * * * - * * * * * * * | - - - * | <-- C0

Pin
43   -> - - - - - - - - - - - - - - | - - - - | <-- clk


* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA.
- = The logic cell or pin is not an input to the logic cell (or LAB).

§
Device-Specific Information:                          c:\vhdhugo\semaforo2.rpt
semaforo2

** EQUATIONS **

clk      : INPUT;

-- Node name is 'A' 
-- Equation name is 'A', location is LC057, type is output.
 A       = LCELL( _EQ001 $  GND);
  _EQ001 =  C3 &  C4 &  C5;

-- Node name is ':10' = 'C0' 
-- Equation name is 'C0', location is LC053, type is buried.
C0       = TFFE(!_EQ002, GLOBAL( clk),  VCC,  VCC,  VCC);
  _EQ002 = !C0 &  C2 &  C3 &  C4 &  C5;

-- Node name is ':9' = 'C1' 
-- Equation name is 'C1', location is LC052, type is buried.
C1       = DFFE( _EQ003 $  _LC055, GLOBAL( clk),  VCC,  VCC,  VCC);
  _EQ003 =  C0 &  C1 &  C3 &  C4 &  C5 &  _LC055
         #  C2 &  C3 &  C4 &  C5 &  _LC055;

-- Node name is ':8' = 'C2' 
-- Equation name is 'C2', location is LC051, type is buried.
C2       = DFFE( _EQ004 $  _LC056, GLOBAL( clk),  VCC,  VCC,  VCC);
  _EQ004 =  C0 &  C1 &  C3 &  C4 &  C5 &  _LC056
         #  C2 &  C3 &  C4 &  C5 &  _LC056;

-- Node name is ':7' = 'C3' 
-- Equation name is 'C3', location is LC050, type is buried.
C3       = DFFE( _EQ005 $  _LC058, GLOBAL( clk),  VCC,  VCC,  VCC);
  _EQ005 =  C0 &  C1 &  C3 &  C4 &  C5 &  _LC058
         #  C2 &  C3 &  C4 &  C5 &  _LC058;

-- Node name is ':6' = 'C4' 
-- Equation name is 'C4', location is LC049, type is buried.
C4       = DFFE( _EQ006 $  _LC059, GLOBAL( clk),  VCC,  VCC,  VCC);
  _EQ006 =  C0 &  C1 &  C3 &  C4 &  C5 &  _LC059
         #  C2 &  C3 &  C4 &  C5 &  _LC059;

-- Node name is ':5' = 'C5' 
-- Equation name is 'C5', location is LC054, type is buried.
C5       = DFFE( _EQ007 $  _LC060, GLOBAL( clk),  VCC,  VCC,  VCC);
  _EQ007 =  C0 &  C1 &  C3 &  C4 &  C5 &  _LC060
         #  C2 &  C3 &  C4 &  C5 &  _LC060;

-- Node name is 'R' 
-- Equation name is 'R', location is LC062, type is output.
 R       = LCELL( _EQ008 $ !C5);
  _EQ008 =  C1 &  C2 &  C3 &  C4 & !C5;

-- Node name is 'V' 
-- Equation name is 'V', location is LC064, type is output.
 V       = LCELL( _EQ009 $  GND);
  _EQ009 =  C1 &  C2 &  C3 &  C4 & !C5
         # !C1 & !C2 & !C3 &  C5
         #  C0 & !C3 &  C5
         # !C4 &  C5;

-- Node name is '|LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node1' from file "addcore.tdf" line 164, column 16
-- Equation name is '_LC055', type is buried 
_LC055   = LCELL( C1 $  C0);

-- Node name is '|LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node2' from file "addcore.tdf" line 164, column 16
-- Equation name is '_LC056', type is buried 
_LC056   = LCELL( C2 $  _EQ010);
  _EQ010 =  C0 &  C1;

-- Node name is '|LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node3' from file "addcore.tdf" line 164, column 16
-- Equation name is '_LC058', type is buried 
_LC058   = LCELL( C3 $  _EQ011);
  _EQ011 =  C0 &  C1 &  C2;

-- Node name is '|LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node4' from file "addcore.tdf" line 164, column 16
-- Equation name is '_LC059', type is buried 
_LC059   = LCELL( C4 $  _EQ012);
  _EQ012 =  C0 &  C1 &  C2 &  C3;

-- Node name is '|LPM_ADD_SUB:82|addcore:adder|addcore:adder0|result_node5' from file "addcore.tdf" line 164, column 16
-- Equation name is '_LC060', type is buried 
_LC060   = LCELL( C5 $  _EQ013);
  _EQ013 =  C0 &  C1 &  C2 &  C3 &  C4;



--     Shareable expanders that are duplicated in multiple LABs:
--     (none)



§
Project Information                                   c:\vhdhugo\semaforo2.rpt

** COMPILATION SETTINGS & TIMES **

Processing Menu Commands
------------------------

Design Doctor                             = off

Logic Synthesis:

   Synthesis Type Used                    = Standard

   Default Synthesis Style                = NORMAL

      Logic option settings in 'NORMAL' style for 'MAX3000A' family

      DECOMPOSE_GATES                     = on
      DUPLICATE_LOGIC_EXTRACTION          = on
      MINIMIZATION                        = full
      MULTI_LEVEL_FACTORING               = on
      NOT_GATE_PUSH_BACK                  = on
      PARALLEL_EXPANDERS                  = off
      REDUCE_LOGIC                        = on
      REFACTORIZATION                     = on
      REGISTER_OPTIMIZATION               = on
      RESYNTHESIZE_NETWORK                = on
      SLOW_SLEW_RATE                      = off
      SOFT_BUFFER_INSERTION               = on
      SUBFACTOR_EXTRACTION                = on
      TURBO_BIT                           = on
      XOR_SYNTHESIS                       = on
      IGNORE_SOFT_BUFFERS                 = off
      USE_LPM_FOR_AHDL_OPERATORS          = off

   Other logic synthesis settings:

      Automatic Global Clock              = on
      Automatic Global Clear              = on
      Automatic Global Preset             = on
      Automatic Global Output Enable      = on
      Automatic Fast I/O                  = off
      Automatic Register Packing          = off
      Automatic Open-Drain Pins           = on
      Automatic Implement in EAB          = off
      One-Hot State Machine Encoding      = off
      Optimize                            = 5

Default Timing Specifications: None

Cut All Bidir Feedback Timing Paths       = on
Cut All Clear & Preset Timing Paths       = on

Ignore Timing Assignments                 = on

Functional SNF Extractor                  = off

Linked SNF Extractor                      = off
Timing SNF Extractor                      = on
Optimize Timing SNF                       = off
Generate AHDL TDO File                    = off
Fitter Settings                           = NORMAL
Smart Recompile                           = off
Total Recompile                           = off

Interfaces Menu Commands
------------------------

EDIF Netlist Writer                       = off
Verilog Netlist Writer                    = off
VHDL Netlist Writer                       = off

Compilation Times
-----------------

   Compiler Netlist Extractor             00:00:00
   Database Builder                       00:00:00
   Logic Synthesizer                      00:00:00
   Partitioner                            00:00:01
   Fitter                                 00:00:00
   Timing SNF Extractor                   00:00:00
   Assembler                              00:00:01
   --------------------------             --------
   Total Time                             00:00:02


Memory Allocated
-----------------

Peak memory allocated during compilation  = 3,481K
```


----------



## Ferny (Nov 22, 2010)

¿A qué pines físicos (nº de pin) estás llevando las señales, especialmente la de reloj? ¿Con qué versión del Quartus lo estás compilando? Deberías, si no lo haces ya, meter el reloj por los pines 2 ó 43 que son las entradas dedicadas de reloj de ese dispositivo.

Lo del conflicto de relojes olvídalo, no puede estar funcionando con un reloj interno del PLD porque... no tiene 

Puede ayudar si pones un esquema de cómo lo tienes conectado.

Un saludo


----------



## Gatz (Nov 22, 2010)

Ya edite el anterior, allí puedes ver los pines solo baja un poco en el código PHP el clk lo tengo en el pin 43.

Otra cosa somos los pioneros en esto en mi uni todo lo estoy implementando en MAX PLUS II no se manejar Quartus, aunque se que es mejor y mas amigable.


----------



## Ferny (Nov 22, 2010)

Ya veo que modificaste el post, el clk lo tienes en el pin 43 así que bien.

Otra cosa, en ese report te está diciendo que pongas los pines 1, 2 y 44 a GND, ¿lo hiciste? No sé bien el motivo, pero lo dice...

Te paso de todas formas el archivo de programación compilado en Quartus II 6.0, pruébalo a ver qué pasa. En la simulación funciona, y el esquema RTL está bien, así que no es problema del VHDL... Por cierto no sé si podrás programarlo, ya que el archivo es de Quartus y no sé si será compatible con el programador que uses...


----------



## Gatz (Nov 22, 2010)

Ok las conexiones están bien echas y el archivo es .pof también creo que se podrá implementar con MAX PLUS solo que lo are mas tarde en este momento no me da el tiempo muchas gracias Ferny.


----------



## Ferny (Nov 22, 2010)

Ok, si no funciona publica el circuito con todas las conexiones, porque casi seguro que está ahí el problema...


----------



## Gatz (Nov 22, 2010)

webster26 dijo:


> ahh ok ok bueno cuando llegue a mi casa lo busco bien para quitarte de la duda,



Ok lo esperare también para poder comparar haber si detecto algún problema, aunque a como pinta el problema no es el código, pero abra que ver opciones muchas gracias webster26.


Pues no pude implementarlo en max plus II el compilado en Quartus, solo me queda aprender a implementar en Quartus haber si asi funciona.

En cuanto consiga una camara les paso fotos del circuito.


----------



## webster26 (Nov 23, 2010)

hazlo en xilins


----------



## Ferny (Nov 23, 2010)

webster26 dijo:


> hazlo en xilins



¿Compilar y programar una CPLD de *ALTERA* con *XILINX*? Va a ser que no...


----------



## webster26 (Nov 23, 2010)

porque no???? en fin es una cpld, el xilins puede hasta donde se


----------



## Ferny (Nov 23, 2010)

Sí pero Xilinx genera código para programar FPGAs y CPLDs del fabricante XILINX, no de ALTERA. Lo mismo al revés, el Quartus genera código para FPGAs y CPLDs del fabricante ALTERA, pero no vale para las de XILINX.

No sé si se entiende, el programa de cada fabricante compila para sus dispositivos, pero el compilado no lo puedes llevar a la "competencia". Ojo, no me refiero al código VHDL que sí es portable de una arquitectura a otra, sino a la implementación física de ese código compilado sobre el dispositivo...

Como el dispositivo que está usando Gatz (EPM3064ALC44 - 10N) es de Altera, no va a poder usar el Xilinx para nada, tiene que hacerlo con Quartus u otra herramienta compatible con los chips de Altera.


----------



## webster26 (Nov 23, 2010)

Bueno esta bien, yo te decia por lo siguiente. Aqui en la universidad hay unas Cpld`s que no son de Xilins ni el chipset y las han echado a andar con Xilinx por eso decia.
Por eso te comentaba que se me hacia raro.


----------



## Gatz (Nov 23, 2010)

Al intentar implementar en Quartus me dice: Can't access JTAG chain 
y me tira 4 Warning...

Warning: Using design file semaforo.vhd, which is not specified as a design file for the current project, but contains definitions for 2 design units and 1 entities in project

Warning: Ignores locations of region assignaments to the fallowing nodes

Warning: Timing analysis does not support the analysis of latches as synchronous elements for the corrently selected devide family

Warning: Found pins functioning as undefined clcks and/or memory enables


----------



## Ferny (Nov 24, 2010)

Ummm... supongo que ya verificaste que todas las conexiones están bien, o sea el TDI del CPLD va al TDI del programador, etc... ¿Qué programador estás usando? ¿Un byteblaster o un USB blaster?

Esas CPLD tienen una particularidad y es que los pines del JTAG pueden usarse para JTAG o para I/O genéricas, no sé si eso puede tener que ver, por ejemplo que no estén "activados" para JTAG.

Sobre los warning:



> Warning: Using design file semaforo.vhd, which is not specified as a  design file for the current project, but contains definitions for 2  design units and 1 entities in project


Te falta agregar el archivo semaforo.vhd a la lista de archivos del proyecto. El Quartus es suficientemente listo para darse cuenta de que el archivo está ahí, por eso sale un warning (aviso) y no un error.



> Warning: Ignores locations of region assignaments to the fallowing nodes


¿Qué nodes? ¿No serán los pines del JTAG por casualidad? ¿Qué asignaciones de pines has hecho en la CPLD?



> Warning: Timing analysis does not support the analysis of latches as  synchronous elements for the corrently selected devide family


Esto no es importante, solo te dice que el analizador de tiempos no puede calcular eso que menciona para la familia de CPLD que usas, no pasa nada.



> Warning: Found pins functioning as undefined clcks and/or memory enables


Te falta definir el reloj y su frecuencia máxima, lo haces desde el menú Assignments -> Settings -> Timing Analysis settings. Sólo tienes que decirle qué señal es el reloj y darle la frecuencia de funcionamiento. Quartus también es listo aquí y asigna el clk como reloj, pero te pone el warning para que lo sepas


----------



## Gatz (Nov 25, 2010)

Ya solucione el problema era simple ruido del 555, metí un filtro pasa bajas con inversores y ya quedo, muchas gracias Ferny y Webster26 por su ayuda (Y)

Este foro no tiene sistema de reputación si tuviera les daria un +10 por su apoyo =D


----------



## Gatz (Dic 5, 2010)

Ya anteriormente publique este semáforo pero ahora tengo un problema diferente, el mismo semáforo con menos estados funciono perfectamente, ahora lo que necesite fue aumentar el tiempo de 60 segundos a 80 segundos toda la transición de los colores, y a la hora de la simulación me tiro unos pequeños flancos en el color verde que no me gustaron para nada. En el color verde se le agrego una señal de reloj extra para que el parpadeo sea más rápido.


```
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity semaforodobleconif is 
	port (clk, alternin: in std_logic;
		R, A, V: out std_logic);
end semaforodobleconif;
architecture contando of semaforodobleconif is
signal C1, C2, C3: std_logic_vector (6 downto 0);
begin
	process (clk, C) begin
		if (clk'event and clk = '1') then
			if C < 79 then
				C <= C + "0000001";
			else
				C <= "0000000";
			end if;
		end if;
	end process;
	process (C) begin
		if (C >= 0 and C <= 41) then
					R <= '1'; A <= '0'; V <= '0';
				elsif (C >= 42 and C <= 72) then
					R <= '0'; A <= '0'; V <= '1';
				elsif (C >= 73 and C <= 76) then
					R <= '0'; A <= '0'; V <= not alternin;
				else
					R <= '0'; A <= '1'; V <= '0';
		end if;
	end process;
end contando;
```

Esta es la simulación del semáforo con 60 estados que funciono perfectamente.


Esta es la nueva simulación del semáforo con 80 estados que saca flancos raros.


Si alguien tiene idea a que se debe este ruido en la simulación le agradecería me saque de la duda, logre eliminarlo poniendo el código de la siguiente manera... 


```
process (C) begin
		if (C >= 0 and C <= 42) then
					R <= '1'; A <= '0'; V <= '0';
				elsif (C >= 42 and C <= 72) then
					R <= '0'; A <= '0'; V <= '1';
				elsif (C >= 73 and C <= 76) then
					R <= '0'; A <= '0'; V <= not alternin;
				else
					R <= '0'; A <= '1'; V <= '0';
		end if;
end process;
```

pero no me parece correcto ya que el rojo tiene que durar 42 segundos, el verde 35 con todo y los parpadeos y el amarillo 3 segundos, cualquier ayuda gracias de antemano.


----------

