Newsgroup: it.hobby.elettronica.digitale
Titolo: xilinx,global clock e altri segnali

ciao,non riesco a capire molte cose nella vita
una di queste č:se scrivo un codice per un contatore in vhdl per virtex-e
tipo(riassumo,scusate la sintassi)
conta :process(mioclock,mioreset)
    if reset='1' then
        contatore<="0000"
    elsif rising_edge mioclock then
        contatore<=contatore+"0001"
  end if
end process conta
tutto ok,ma se invece voglio usare un altro segnale che non sia mioclock
quindi per ora non scrivo il codice precedente
esempio strobein,e lo includo nella sensitivity list di un processo simile
,ebbene questo segnale mi viene assegnato al clock globale
domanda:il clock di ogni FF di ogniblocco logico č collegato secco al clock
globale??
come fare a fare latchare uno di questi FF con un segnale di IO qualsiasi?
grazie

 di IO qualsiasi?
Innanzi tutto una cosa: la sensitivity list in sintesi non serve a
niente!
Serve solo per la simulazione comportamentale...
Tornando alla tua domanda, sui dispositivi Xilinx qualsiasi segnale
che viene da fuori ed è usato come clock, deve essere per forza
un clock globale (a meno di non fare cose strane).
Per fare quello che vuoi tu devi usare il segnale esterno come
"clock enable":
process(clock_interno, mioreset)
    if mioreset='1' then
        contatore<="0000";
    elsif rising_edge(clock_interno) then
        if enable='1' then
            contatore<=contatore+"0001";
        end if;
  end if
end process
Ovviamente devi accertarti che le temporizzazioni siano quelle
volute (se l'enable sta alto per diversi cicli di clock, il contatore
verrà incrementato diverse volte)...
Questo approccio può sembrare macchinoso, ma è il più comune,
ed evita un sacco di problemi noiosissimi che si hanno quando si
usano più segnali di clock diversi.
A.D.

A.D. ti ringrazio,ma a quanto pare mi confermi che tutti i FFs sono sincroni
col clock globale
se io volessi contare quante volte premo un pulsante semplicemente mandando
il fronte di questo evento a un clock di uno slice non potrei proprio
dunque?
con Lattice sono certo che lo potevo fare,possibile che con xilinx no?
grazie ancora
A.D. <isd...@libero.ix> wrote in message
uN5Pg.111051$zy5.1...@twister1.libero.it...


 come fare a fare latchare uno di questi FF con un segnale di IO qualsiasi?
Devi forzare l'assegnamento al pin che desideri, utilizzando un apposito
constraint nel file ucf. Se il tuo progetto ha più clock di quanti siano i
GCLK (e questo può capitare spesso), è buona norma assegnare i clock più
veloci ai GCLK e i clock più lenti ai pin generici. Se specifichi
correttamente la frequenza di ciascun clock nei constraints (cosa che si
deve fare sempre), di solito il PAR farà questa scelta per te.
-- 
asd

 asd
grazie

 con xilinx no?
Sono architetture completamente diverse! E' difficile fare paragoni...
Comunque come ti ho detto si può fare... (in questo momento non
mi ricordo qual è il constraint per fare questa cosa)
A.D.
P.S. Curiosità, per chi li ha usati: è vero che nei dispositivi Altera
non si possono usare i fronti di clock negativi?!? O valeva solo
per i dispositivi più vecchi?

 E' un'idea pessima! :-) Però puoi farlo, devi solo convincere il P&R...
ok,allora qual'è il modo + elementare di svolgere questa operazione?


 un editor di testo o solo tramite il PACE?o altri tools?
Lo puoi fare attraverso il constraints editor, basta fare doppio click
sull'UCF. Oppure puoi editare a mano il file UCF, guarda qui per una lista
delle direttive piů comuni:
http://www.xilinx.com/xlnx/xil_ans_display.jsp?BV_UseBVCookie=yes&getPagePath=2449&iLanguageID=1
Comunque inizialmente ti consiglio di usare il constraints editor.
-- 
asd