DDS (Direct Digital Synthesis)

Sezione dedicata alle logiche programmabili

DDS (Direct Digital Synthesis)

Postby flz47655 » 11 May 2012, 15:36

Complice la realizzazione di un DAC R2R ad 8 bit (http://arduino.cc/forum/index.php/topic,104750.0.html) continua il mio viaggio nel mondo delle logiche programmabili, come nuovo progetto per imparare ancora meglio le macchine a stati e alcune problematiche dei circuiti ad "alta" velocità (fino a 50 MHz) ho pensato ad un DDS per generare forme d'onde a frequenze impostabili.

Per il momento sto rifinendo il codice VHDL ma durante una prova preliminare è sorto un problema col segnale di clock proveniente da un divisore di frequenza (un semplice contatore) che a sua volta genera il clock grazie ad un'oscillazione ad anello.
L'onda dovrebbe essere un onda quadra ma ha una grossa sovraelongazione che la porta fuori dal range dei 3.3 volt (overshoot del 13%), premetto che sono ancora su breadboard comunque questa è la misura dell'oscilloscopio:

Image

Come è possibile ridurre la sovraelongazione? A cosa è dovuta? La prima cosa che mi viene in mente è qualche effetto di riflessione che si risolverebbe con una resistenza terminatrice, sono sulla strada giusta?

Ciao e grazie a tutti

EDIT: Potrebbe essere anche causato dal coccodrillo per GND sul probe? Ho letto che è "rumoroso" come collegamento. In alternativa a queste due cose penso sia anche possibile che la causa sia la breadboard
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: DDS (Direct Digital Synthesis)

Postby deluca » 11 May 2012, 16:52

scusa flz, ma hai già messo la resistenza di terminazione ? o il segnale lo stai buttando banalmente sulle sonde dell'oscilloscopio senza carico.
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: DDS (Direct Digital Synthesis)

Postby flz47655 » 11 May 2012, 17:43

Sto misurando direttamente sulle sonde dell'oscilloscopio il segnale, non ho nessun carico.
Le sonde sono da "1MΩ±2%, the input capacity is 18pF±3pF".
Come faccio a sapere quale carico devo inserire (se devo inserirne uno)? Il collegamento non è molto lungo (20 cm + 150 cm cavo sonde) e non consideravo il cavo una linea di trasmissione

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

Re: DDS (Direct Digital Synthesis)

Postby deluca » 11 May 2012, 18:21

flz47655 wrote:Sto misurando direttamente sulle sonde dell'oscilloscopio il segnale, non ho nessun carico.
Le sonde sono da "1MΩ±2%, the input capacity is 18pF±3pF".
Come faccio a sapere quale carico devo inserire (se devo inserirne uno)? Il collegamento non è molto lungo (20 cm + 150 cm cavo sonde) e non consideravo il cavo una linea di trasmissione

Ciao e grazie


Io non mi preoccuperei della sovraelongazione che vedi..... ignorala..... almeno x adesso.
Quando si lavora con segnali digitali con queste freq tutto questo è normale.
Non puoi stare lì a controllarla pin x pin quando hai a che fare con fpga BGA con più di 1000 pin.
Tutto si risolve con l'analisi di integrita dei segnali attraverso i simulatori.
Se devi inserire R di terminazione è lo stesso software che ti dice dove metterle e come ridisegnare le piste.... del pcb.

Hai mai visto gli strani zig-zag o quelle piste con geometrie incredibili che ci sono sui pcb delle mother-board dei pc?.

Quando dovrai realizzare quelle schede allora la sovraelongazione superiore ad una certa percentuale potrà avere un senso e dovrai eliminarla.
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: DDS (Direct Digital Synthesis)

Postby flz47655 » 11 May 2012, 18:50

Grazie per la risposta, diciamo che al momento non sono con la FPGA ma con una CPLD EPM3064 da pochi soldi per "farmi le ossa" con queste logiche programmabili e più che altro con l'I/O.

Non mi interessa tanto raggiungere la fine del progettino ma imparare il più possibile durante "la strada".

Non sono su PCB ma su.. breadboard e per il momento non utilizzo nessun software CAD, (quando mi arriva un cristallo oscillatore dagli USA passo tutto su millefori).

Mi interessava capire le cause della sovraelongazione per quanto poco rilevante possa essere al momento per evitare un domani di danneggiare una FPGA (da 100 euro) proprio con queste sovraelongazioni che portano la FPGA a lavorare fuori dal range massimo.

Non credo che progetterò mai un PCB con sopra una FPGA ad alta frequenza (sono un informatico sostanzialmente), ma un domani vorrei riuscire ad usare consapevolmente l'IO di una dev board FPGA ad alta frequenza già pronta con altri moduli magari autocostruiti.

Mi sembra quindi che sia un problema di impedenze, provo a documentarmi un pò su google e vedere meglio.
Inizialmente pensavo che per fare una buona misura era meglio avere l'impedenza più alta possibile per evitare di falsare i risultati, 1M ohm pensavo quindi fosse un buon valore e che non fossero necessarie altre resistenze per adattare il segnale

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

Re: DDS (Direct Digital Synthesis)

Postby deluca » 11 May 2012, 19:49

Il fenomeno della sovraelongazione o overshot di sicuro lo hai incontrato nei regolatori PID a causa di un brutto setting della azione integrale.
(e non solo)

Di norma quello che vedi sull'oscilloscopio è legato ad un disadattamento di impedenza tra l'output della cpld e l'input della sonda che introduce riflessioni.

Prova a fare una cosa....
inserisci tra l'out e massa una R da 1 M, poi da 100K, 10K, e 1K e cattura le immagini..... (postale)

Poi puoi reintrodurre l'out in un pin della cpld configurato come input ed analizzarlo.

Ciao
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: DDS (Direct Digital Synthesis)

Postby flz47655 » 11 May 2012, 19:57

L'ho incontrato nei PID in "cinematica e controllo dei manipolatori" e in "controlli automatici" nei sistemi del secondo ordine ma tutto teorico e nulla di pratico, solo qualche simulazione con matlab.

Vado a fare le prove :)

Non ho ben capito "Poi puoi reintrodurre l'out in un pin della cpld configurato come input ed analizzarlo." cosa intendi per analizzarlo, misurarlo con l'oscilloscopio per verificare l'impedenza di ingresso del CPLD?

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

Re: DDS (Direct Digital Synthesis)

Postby flz47655 » 11 May 2012, 20:43

Ecco i risultati:

Senza resistenze
Image

2M
Image

1M
Image

220K
Image

100K
Image

10K
Image

1K
Image

Senza resistenze, segnale preso dal pin del chip PLCC
Image

Purtroppo il segnale è sempre uguale, tranne quando preso direttamente dal PLCC, in tal caso presenta un overshoot leggermente inferiore.

Sono sulla strada sbagliata?
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: DDS (Direct Digital Synthesis)

Postby legacy » 12 May 2012, 02:36

in 1 minuto ti posso solo dire che c'e' qualcosa che ha comportamento altamente capacitivo, e deriva, lo vedi bene che crea pennacchi, quei pennacchi sono tipici di un qualcosa che approsimato al primo ordine e' un derivatore, e pertanto e' inutile che metti resistenze di terminazione.
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: DDS (Direct Digital Synthesis)

Postby deluca » 12 May 2012, 09:21

flz, come ti dicevo,

tante volte mi è capitato di vedere quei segnali di overshot sui pin delle fpga con l'oscilloscopio, ma quando c'è stato un forte disaccoppiamento Z tra le connessioni dei vari chip.
Tutto questo viene risolto con i simulatori e i modelli IBIS dei componenti che descrivono come si comportano i pin di uscita in presenza di pin di ingresso di altri componenti.
Chiaramente i modelli IBIS descrivono non solo i pin dei chip attivi ma anche i pin dei componenti passivi, interruttori e connettori compresi.

Di norma le R di terminazione sono fondamentali se metti in connessione fpga e transceiver gigabit o fpga con altre fpga e sono dell'ordine di 50/100ohm. Quella che varia è la configurazione schematica dei collegamenti che viene suggerita dal CAD.
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: DDS (Direct Digital Synthesis)

Postby flz47655 » 12 May 2012, 09:24

Grazie per il consiglio, per il momento deve essere la breadboard, porto tutto su millefori e ti tengo aggiornato se la situazione migliora.

Sto avendo le mie "prime lezioni" di signal integrity dal mondo reale

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

Re: DDS (Direct Digital Synthesis)

Postby deluca » 12 May 2012, 09:26

dal mondo reale?

non te ne hanno mai parlato alla UNI?
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: DDS (Direct Digital Synthesis)

Postby flz47655 » 12 May 2012, 09:33

Sinceramente non ce ne hanno mai parlato direttamente, al corso di "comunicazioni elettriche" ci hanno solo detto che l'elettronica dei circuiti ad alta frequenza è completamente diversa dall'elettronica che abbiamo visto e che solamente pochissimi esperti al mondo riescono a fare quello che vogliono coi circuiti ad altissime frequenze.
Gli elettronici sicuramente hanno visto/vedranno qualcosa, noi informatici non credo proprio..
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: DDS (Direct Digital Synthesis)

Postby deluca » 12 May 2012, 09:41

Guarda la dimostrazione di quello che ti dico:

Image

la wave rossa è senza terminazione, quella blu è con terminazione secondo questo schema

Image

in questo caso abbiamo a che fare buffer differenziali in LVDS ma il concetto è lo stesso .........
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: DDS (Direct Digital Synthesis)

Postby flz47655 » 12 May 2012, 11:56

Grazie per la spiegazione e l'esempio, ma mi è venuto un dubbio:
Per terminare un segnale "single ended" sotto misura con l'oscilloscopio, se metto un R da 50 ohm, I=V/R, I=3.3/50=0.066A, scorrono 66 mA tramite il pin di output che potrebbero determinare la rottura della CPLD o sbaglio?
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: DDS (Direct Digital Synthesis)

Postby legacy » 12 May 2012, 12:21

Solitamente quando si considerano le linee tra quadripoli si assume che l'impenza sia concentrata, cio' e' una approssimazione valida a basse frequenze dove l'impedenza della linea e' distribuita in modo uniforme lungo la stessa linea, ma all'aumentare della frequenza cioe' non e' piu' vero e nemmeno approssimabile perche' cambia spazialmente, e per frequenze ancora piu' alte (>1Ghz) l'approssimazione non solo cessa di essere anche solo vagamente valida, ma non risulta nemmeno piu' vera tutta la serie di assunzioni su cui si regge la legge di ohm.

Ai Ghz smettono di essere validi i principi di Kirchhof, cade la legge di ohm, per la ragione, in prima battuta, che i vettori di densita' di corrente non sono piu' una costante, la resistivita' non e' piu' costante perche' gli integrali che portano alla banale V = R * I non sono piu' validi, la R (integrale spaziale della resistivita') non e' piu' una costante, varia nello spazio e in funzione delle frequenza, degenerano in modo funzionale i fattori Q dei vari componenti reattivi che si palleggiano sempre energia reattiva ma con perdite non piu' trascurabili, oltre al fatto che ormai nei conduttori ci sono elettroni che oscillano a frequenze diverse, troppo diverse, tanto che si svuotano le parti di conduttore piu' profonde (effetto pelle) e si innescano persino fenomeni descivibili sono in termini di elettromagnetismo (chiedendo asilo alla relativita' e in certi strani casi chiedendo consulenza alla fisica quantistica)

Tutto nasce dal fatto che per camibare lo stato logico da 0 ad 1, o da 1 a 0, quindi a livello fisico per mettere o togliere carica su un nodo, devi dari spedere energia per far crosscondurre i transistor che pompano o succhiano elettroni, e quando cio' succede si mettono in moto nuvole di elettroni che scorrono su un conduttore come l'acqua sul letto di un fiume, e per sonore botte di energia per muovere velocemente lo stato logico gli elettroni piu' esterni viaggiano molto piu' velocemente di quelli che stanno loro sotto e questo da luogo ad onde, onde di elettroni che viaggiano sopra ad altri elettroni con la stessa dinamica delle molecola d'acqua a volocita' diversa che descrivono le onde su, onde che viaggiano da un punto all'altro della linea, partono e rimbalzano indietro, e poiche' la corrente in un nodo e' data dalla somma delle cariche, e le cariche sono gli elettroni, ne consegue che se in un istante arriva un'ondata di elettroni in quel nodo c'e' piu' corrente istantanea, quindi un'impennata di tensione istananea, con conseguente risucchio e arrivo di altra ondata ... cioe' quelle cose bizzarre che mostra il DSO.

Restando ai Ghz il guaio e' che non solo ci sono onde, ci sono per natura degli elettroni anche fenomeni elettromagnetici tipici, per capirci, delle radio, ma c'e' anche una resisitiva' che non e' piu' costante non vale piu' la legge di ohm, a rigore quella resistivita' viene fuori da un integrale, e ora dall'integrale viene fuori una funzione che i vari simulatori son ben felici di macinare, ma non gli umani perche' ... e' un filo piu' tediosa per la mole di calcoli da fare.

Negli ordini delle 100,200,400Mhz le cose sono molto piu' tranquille, ma fino ad un certo punto, non c'e' piu' la pacchia che si ha sotto ai 50Mhz, dove ce la si cava con i software demo e un po' di accortezza nei pcb, sotto ai 12.5Mhz puoi anche andare di wirewrapping e se non sei troppo disordinato non hai problemi.

Dai 100Mhz in su' servono software molto potenti e costosi per queste simulazioni volte ad aiutare il masterista nello sbroglio del PCB che spesso (quasi sempre) trova la soluzione in uno sbroglio multi layer disegnando un PCB a diversi strati, 4, 6.
Last edited by legacy on 12 May 2012, 13:18, edited 11 times in total.
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: DDS (Direct Digital Synthesis)

Postby legacy » 12 May 2012, 12:23

Hai una capacita' in serie troppo alta per cavartela con un R di terminazione, che poi alla fine cosa fa ? Cerca di fissare il nodo superiore parceggiando li una massa innerziale di elettroni piu' ciccia da smuovere. Puo' andare bene ma fino ad un certo punto.

Il sistema differenziale ha invece una diversa strategia, il quadripolo vede una diversa impedenza di linea, ha una diversa impedenza interna (perche' e' un differenziale, cioe' ha un terminale non vincolato a massa ma mobile), e cerca di annichilire le onde sottraendone le escursioni. La R di terminazione sui buffer differenziali e' molto efficacie anche per questo, sopratutto per come sono fatte le impedenze in gioco.

Secondo me sulla breadboard non ne esci, io ti consiglio di passare alle 1000fori (si ma saldata bene) o di farti fare un PCB, cioe' se vuoi stare sul SE supporti che hanno capacita' serie molto piu' bassa.
Last edited by legacy on 12 May 2012, 12:45, edited 1 time in total.
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: DDS (Direct Digital Synthesis)

Postby flz47655 » 12 May 2012, 13:14

Sei riuscito a spiegare senza tante formule matematiche il concetto, i miei complimenti ;) . Ad ogni modo la mia conoscenza della fisica quantistica si ferma al libro "Alice nel mondo dei quanti" che utilizza un linguaggio simile a quello da te usato (anche se con riferimenti al mondo di alice nel paese delle meraviglie) dove addirittura alcune particelle (o altre entità non mi ricordo) viaggiano all'indietro nel tempo... non mi dilungo altrimenti Giovanni non mi legge più però :D

Si in sostanza l'ultimo risultato ha rilevato che è la capacità ad influire sostanzialmente, sto pensando a come impostare il tutto su millefori anche se sono indeciso su alcuni punti, magari apro un thread a parte però, lascio questo sugli aspetti più specialistici del DDS

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

Re: DDS (Direct Digital Synthesis)

Postby flz47655 » 25 May 2012, 11:13

Dopo essere passato su millefori, ecco le nuove misurazioni:

Onda sinusoidale 12.14 kHz
Image

Dettaglio onda sinusoidale 12.14 kHz
Image

Onda sinusoidale 3.115 MHz e FFT
Image

Dettaglio onda sinusoidale 3.115 MHz
Image

La cosa che mi ha stupito, e che non mi sarei aspettato, è che la generazione tramite una tabella di 16 valori presenta in uscita più "difetti" a basse frequenze dove chiaramente si vede la discretizzazione dell'onda mentre a frequenze superiori la discretizzazione "svanisce", probabilmente a causa delle capacità parassite che si comportano di filtro.

Apro un topic nella sezione software per discutere di alcuni dettagli del codice VHDL

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


Return to FPGA & CPLD

Who is online

Users browsing this forum: No registered users and 7 guests