Anello oscillatore

Sezione dedicata al linguaggio di descrizione hardware per logiche programmabili

Anello oscillatore

Postby flz47655 » 10 May 2012, 21:37

Ciao a tutti
Vorrei generare con una CPLD EPM3064ALC44 un segnale interno di clock tramite qualcosa del tipo:

Code: Select all
clk <= not ( not ( not ( not clk ) ) );


ma perlomeno la simulazione "gate level" sembra non funzionare correttamente, potete consigliarmi come fare?
NB: Il clock non deve essere ne preciso ne stabile, è per fare delle prove mentre aspetto un oscillatore
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby flz47655 » 10 May 2012, 22:35

Dopo il segnale ho scoperto che va inserito:
Code: Select all
attribute keep: boolean;
attribute keep of node: signal is true;

per evitare ottimizzazioni che compromettono il funzionamento dell'oscillatore formato da inverter.

Con l'oscilloscopio ho misurato una frequenza generata di circa 200 Mhz, abbastanza altalenante, prendo col beneficio del dubbio però l'esatta forma d'onda poichè l'oscilloscopio con cui ho fatto le misure ha una banda di 100 Mhz

E' stata anche l'occasione per provare la funzionalità "equivalent time" dell'oscilloscopio che ho comprato da poco che dovrebbe aumentare la banda per i segnali periodici, ecco le immagini con equ-time:

Image

Dalla FFT si notano delle armoniche a 200 Mhz e delle armoniche meno energetiche a 400 Mhz
Mi ha stupito molto il fatto di avere delle sinusoidi quasi perfette mentre mi aspettavo delle onde rettangolari... :o

L'ampiezza massima misurata è di 63.2mV, ma probabilmente è dovuto alla banda di 100 Mhz dell'oscilloscopio.
Il consumo della CPLD (con collegato il programmatore JTag USB Blaster) con la generazione dell'oscillazione è di 20mA
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby legacy » 12 May 2012, 02:55

200Mhz ? E' fin troppo eccessivo, ti consiglio di usare oscillatori esterni, ma al massimo di 50Mhz.

Con una buona finestratura e' possibile spingersi per segnali strettamente periodici fino al 4-5-10 volte la banda nominale, pero' e' normale per un tempo equivalente dover aspettare che vengano eseguiti molti trigger prima che il segnale visualizzato possa effettivamente convergere alla ricostruzione del segnale poiche' l'apparente alta frequenza di campionamento nasconde sempre e comunque in realta' un ADC lento che puo' facilmente aver perso molte informazioni tra un trigger ed un altro.
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: Anello oscillatore

Postby flz47655 » 12 May 2012, 09:20

In effetti alla fine volevo 50 MHz e ho risolto scrivendo un divisore di clock, analizzando la forma d'onda secondo me è una quadra deformata per le capacità della breadboard e più limitatamente per la limitatezza di banda dell'oscilloscopio (anche se in equ-time non dovrebbe avere problemi).
Si può intravedere il picco energetico a 400 Mhz a prova dell'origine "quadra" anche se molto attenuato.

Gli oscillatori sono in arrivo dagli USA (da un venditore ebay ma gli aveva solo a 100 Mhz) ma penso ci vorranno ancora 2-3 settimane, per curiosità te che oscillatori usi e dove li compri? Sto avendo difficoltà a trovare dei modelli DIP da 3.3volt a 50 Mhz..
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby legacy » 12 May 2012, 11:20

Ti ho brevemente spiegato che in equ time se il segnale e' periodico, a patto di attendere un adeguato tempo di ricostruzione, puoi estendere la banda fino a 4-5-10 volte, mi pare di averti riassunto il perche' della questione in modo fin troppo chiaro anche se sintetico.

I quarzi li compro da RS, Farnel, agli oscillatori o ci pensa l'hwrista adetto anche all'ufficio acquisti, o da hobbista nel piccolo di casa mia li recupero o da ebay o dalle fiere. Pero' sia al lavoro che a casa spesso e volentieri usiamo anche PLL per la distribuzione del clock slle board, io mai cose sopra i 50Mhz perche' danno parecchi problemi.

Ma c'e' un altro problema nel fare un anello a 200Mhz come quello che hai fatto tu: fai switchare come pazzi solo alcuni transistor delle celle mentre altri restano statici o lentamente variabili e questo crea un gradiente termico intenro alla CPLD che per come la vedo io e' fin troppo motivo di fastidi.
Last edited by legacy on 12 May 2012, 13:28, edited 1 time in total.
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: Anello oscillatore

Postby flz47655 » 12 May 2012, 11:50

Grazie per la spiegazione, ad ogni modo ho capito l'equ-time (ho scritto in equ-time non dovrebbe avere problemi ;) )

In effetti l'obiettivo era comprare un oscillatore da 50 Mhz per avere meno problemi possibili, l'anello era per fare delle prove veloci ma è un'idea da abbandonare presto..

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby flz47655 » 12 May 2012, 13:57

Ho notato che gli oscillatori DIP che si trovano su ebay sono quasi tutti da 5volt, è possibile usarli con successo con 3.3 volt o è meglio lasciar perdere?
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby flz47655 » 12 May 2012, 17:51

Anche se la CPLD non ha un PLL integrato, sapete consigliarmi un modulo PLL esterno (magari DIP) che necessiti al massimo di un normale cristallo al quarzo per raggiungere almeno i 50 Mhz?
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby Ludo69 » 13 May 2012, 00:29

magari esagero verso il basso, ma guarda a pg 8 l'oscillatore
http://www.hestore.hu/files/cd4060.pdf

potresti replicarlo in cpld

oppure potresti provare questo
http://www.electroyou.it/fidocad/cache/ ... 6874_3.png
sostituendo il quarzo con una bobina che entra in risonanza con la serei dei due condensatori (a cui avrai messo in parallelo nei conti le capacità parassite...).

Certo che gli oscillatori esterni restano la soluzione principe!
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: Anello oscillatore

Postby flz47655 » 13 May 2012, 14:10

Ho provato brevemente a prototipare su breadboard un oscillatore basato su un quarzo con una porta NOT (utilizzando un IC HCF4049 che avevo in casa, la CPLD l'ho smontata dalla breadboard per il momento) ma ho ottenuto solamente una frequenza massima di 125 Hz con un cristallo da 2 Mhz :cry:
Ho provato diverse configurazione suggerite da application notes con diversi valori di capacità e cristalli ma nulla sembra funzionare bene, evidentemente non è un circuito così facile ed indolore... o il 4049 che ho in casa non è adatto.

Purtroppo l'unica via per acquistare degli oscillatori a 3.3V a foro passante con frequenze di 40-50 Mhz è passare dai grandi distributori (digikey, rs, etc..) che purtroppo non sono molto amichevoli per ordini sotto la settantina di euro (spese di spedizione assurde), forse tra qualche tempo farò un ordine di componentistica ma per il momento ho ancora poche cose da comprare e quindi finchè il carello non si riempe fino ad arrivare alla soglia metto in pausa il progetto.

Per il momento ho finito anche il tempo da dedicare alla "sperimentazione elettronica", ho alcuni esami da preparare che richiedono molto tempo

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby deluca » 13 May 2012, 14:33

[img]
http://www.electroyou.it/fidocad/cache/ ... 6874_3.png
[/img]

Questo circuito può funzionare ma devi utilizzare un 74HC04 se vuoi andare su in freq.
Inoltre l'uscita del primo stadio va presa sul pin del Not e non sulla resistenza.
La R in di retroazione positiva tra l'inp e l'out del Not deve essere (R1)1M, l'altra (R2)1K e i 2 condensatori
devono essere 22pF.......

Il circuito oscilla sulla freq fondamentale e non su overtone .... con questa configurazione puoi arrivare
a generare freq di clock di 20/25 Mhz max utilizzando appunto la serie HC alimentati a 5V e in quarzi con la freq specifica.

Chiaramente se vuoi lavorare a 3.3V devi usare la famiglia 74LVC.

Ciao

PS. Sbaglio o Il topic è diventato di natura HW e non SW .... ;)
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Anello oscillatore

Postby flz47655 » 13 May 2012, 17:31

Ho ordinato da futurlec degli 74AHC04 (http://www.futurlec.com/74HC/74AHC04.shtml) che dovrebbero essere ancora più veloci e supportare fino a 133 Mhz (tpd tipico 7.5ns con 50pF di carico) e lavorare coi 3.3 volt.

Il codice utilizzato per l'anello oscillatore è:

Code: Select all
entity ring_osc is
   port (
      reset_n: in std_logic;   -- active-low asynchronous reset
      clk_out: out std_logic      -- synthesized clock
   );
end entity;

architecture structure of ring_osc is
   signal node: std_logic_vector(1 to 3);      -- Internal nodes.

      -- The following is essential to prevent the circuit from
      -- being simplified to a single NAND, which may not work,
      -- since it can settle into a stable short-circuit state
      -- with an output value between 0 and 1.  (Also, even if
      -- it worked it would prob. be too fast to use the ring
      -- osc. to drive any sequential logic).

   attribute keep: boolean;
   attribute keep of node: signal is true;
begin
      -- Here is the ring oscillator itself.
      -- Note that we have to specify the keep attribute for
      -- all of these nodes to keep the NOTs from being optimized away.
      
   node(1) <= node(3) nand reset_n;
   node(2) <= not node(1);
   node(3) <= not node(2);
   
      -- We tap out of it with an inverter to keep the frequency
      -- independent of the load.
      
   clk_out <= not node(1);
   
end architecture;


preso da http://pastebin.com/4dMgQd4e ma in sostanza è il classico anello oscillatore

Ciao e grazie

PS: Ho trovato un application notes che sembra interessante: "Using a Discrete Crystal as a PLD Clock Source" http://www.latticesemi.com/documents/an8080.pdf, proverò a fare delle prove appena ho un pò di tempo
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby legacy » 14 May 2012, 10:49

Alcuni oscillaotri funzionano sia a 3.3V che a 5V, e sono la soluzione piu' rapida ed indolore.
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: Anello oscillatore

Postby flz47655 » 14 May 2012, 10:57

Comunque pensandoci bene, essendo l'EPM3064 con IO "5 volt tolerant" dovrebbe digerire senza problemi un clock a 5 volt, era meglio naturalmente un oscillatore a 3.3 volt per avere un'unica tensione

Ho visto gli oscillatori che funzionano sia a 3.3 sia a 5 volt ma sono ancora più rari da trovare senza passare dai "distributori" (es. su ebay).

Ad ogni modo ho fatto spesa da futurlec l'altro giorno ed ho preso anche un paio di oscillatori (uno a 40 ed uno a 50 Mhz) a 5 volt già che c'ero

Ciao e grazie
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Anello oscillatore

Postby flz47655 » 17 May 2012, 12:07

PS: anche se con un pò di ritardo ho scoperto ieri che l'equivalent-time non aumenta la banda come pensavo ma solamente la frequenza di campionamento.. ecco perché non si vedono comunque frequenze superiori ai 100 MHz..
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16


Return to VHDL x FPGA

Who is online

Users browsing this forum: No registered users and 8 guests

cron