Newsgroup: it.hobby.elettronica.digitale
Titolo: cpld 95xc144 posso dividere un clock e riapplicarlo come global clock?

dunque,vedo che se non dico niente viene usato GCK1,ok,lo divido per
32,posso riapplicarlo solo ad alcuni FBlock?o solo ad alcune specifiche
macrocelle?

 mi pare che abbia a che fare con BUFG,giusto?non riesc a trovare un
esempio chiaro

 macrocelle?
si, non vedo motivi per cui tu non possa farlo. Se guardi nel
datasheet vedi che il clock puo' arrivare sia da un global clock come
anche da un product term block.
Matteo


ok,ma non capisco da dove si fa questa cosa,da PACE?cioè prendo un uscita e
la riconnetto esternamente oppure si fà da codice?
grazie
Diego

 la riconnetto esternamente oppure si fà da codice?
si da codice. Ma tu cosa usi Verilog/VHDL/Schematico ? Nei primi due
casi puoi postare il codice ?
Matteo

 la riconnetto esternamente oppure si fà da codice?
si da codice. Ma tu cosa usi Verilog/VHDL/Schematico ? Nei primi due
casi puoi postare il codice ?
Uso VHDL,solo che ci sono diverse entities,e uso una 40 ina di I/O
quindi non è forse meglio che ti scrivo una cosa + semplificata?
--******************************************************
entity clock_divider is
    Port(
              clock_in : in std_logic;
               res       : in std_logic;
              clock_out : out std_logic);
end clock_divider;
architecture behavioral of clockdivider is
    signal _clockdiv32 :std_logic_vector(4 downto 0);
    begin
    divisione : process(clock_in,res)
        begin
        if res='0' then
             _clockdiv32< ="00000";
       elsif rising_edge(clock_in) then
             _clockdiv32<=_clockdiv32 +1;
      end if;
    end  process divisione;
--******************************************************
--******************************************************
entity main_entity is
Port  (
            clockfromxtal : in std_logic;
            reset              : in std_logic;
            portevarie       : in std_logic_vector(9 downto 0));
end main_entity;
architecture SCHEMATIC of main_entity is
    COMPONENT clock_divider
        Port(
              clock_in : in std_logic;
               res       : in std_logic;
              clock_out : out std_logic);
    end  COMPONENT;
  COMPONENT......
  COMPONENT.....
    begin
    I1:clock_divider
    Port Map(clock_in=>clockfromxtal,.................ecc ecc):
  end SCHEMATIC;
  ecco supponiamo che io voglia che  alcuni component  usino un global
clock,in modo da essere ben sincronizzati,e questo global clock sia ricavato
da quello che ho diviso prima per 32,come devo fare?
sperando di essere stato chiaro
grazie
Diego

 da quello che ho diviso prima per 32,come devo fare?
se tu vuoi usare il clock diviso semplicemente nel mapping dell'entity
usi clock_out. Ora non so (dal datasheet non riesco a dedurlo), se in
questo modo lui usa una linea global clock o un product term clock. A
naso direi la seconda, visto che le global clock arrivano
dall'esterno. Non so quali siano le frequenze in gioco, ma la tua
preoccupazione e' clock skew ? Altrimenti non capisco quale sia il
problema.
Matteo



ancora grazie,questa volta anche per la tua pazienza di spulciare il codice
probabilmente e' una svista di cut & paste, manca l'assegnazione
clock_out
si infatti,scusa,non ho neanche fatto cut & paste ma ho riscritto ex novo
abbreviando un pò il tutto


ecco,mi chiedo,perchè dovrebbe usare una linea particolare dedicata al
clock?oppure il fatto che io chiami un segnale clock_pippo,per il fatto che
uso la stringa "clock" fa scattare qualche cosa nel compilatore?
 A
naso direi la seconda, visto che le global clock arrivano
dall'esterno. Non so quali siano le frequenze in gioco, ma la tua
preoccupazione e' clock skew ?
Altrimenti non capisco quale sia il
problema.
Matteo
nessun problerma veramente,è che facendo queste cose a livello didattico sto
cercando di vedere come si dovrebbe fare nel caso di....clock skew ,per
esempio,per imparare le  diverse possibilità date da questi dispositivi
grazie