Hjälp med precisions-fördröjnings-krets

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Goran
Inlägg: 31
Blev medlem: 19 augusti 2006, 09:47:36
Ort: Göteborg

Hjälp med precisions-fördröjnings-krets

Inlägg av Goran »

Hej! ...ny här

Jag håller på att konstruera en microcontroller-styrd samplingskrets. Problemet är att jag behöver en väldig precision då signalen jag samplar är på 50-200mhz. Jag använder därför en sample-and-hold fundering som klarar jobbet väl (en mycket snabb opamp och en med väldig hög inimpedans). Den styrs i sin tur av en 400mhz FET som jag öppnar då jag vill sampla rådande värde på kondensatorn.

Vad jag är ute efter är alltså en fördröjningskrets mellan 5-5000ns som jag kan ställa in med min microcontroller (gärna genom att med en pinne ge X antal pulser till kretsen som bestämmer hur lång fördröjningen skall vara). Denna fördröjning går alltså inte att göra direkt från min microcontroller (10mhz) då upplösningen i sådana fall skulle hamna på us-nivå...dvs minst 200gr för oexakt hehe...

Antar att detta måste lösas på analog väg för att upprätthålla en hög precision. Har själv därför tänkte ut en lösning med en RC som laddas upp från pinnen på mc:n som sätter en referensspänning hos en komparator. Sedan skulle man skicka (när jag vill att fördröningen skall starta) pulser från en 5ns 50% duty pulsgenerator (redan konstruerad) till en annan RC kopplad till komparatorn. När dessa sedan stämmer överens skicka styrsignalen från output från komparatorn till FET:en. Eller är jag ute och cyklar =) ?

Finns säkert mycket vettigare lösningar! Det svåra är bara att jag vill att den skall gå att ställa in från mc:n... Själva samplingen gör jag ju i steg och inte var 5:e nanosek, så det är ingenting man behöver tänka på!

Nytt... Ett litet schema över sample-hold kretsen:

Bild

Tack! /Göran
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag antar att du egentligen menar MHz när du skrivar mhz. MHz betyder Mega Hertz, mhz bör med välvillg tolkning betyda milli hertz och det är inte så jävla höga frekvenser....

Men nåväl: Din beskrivning är tydlig och lättfattat men 1 viktig sak fattas: upplösningen på detta delayede signal.

Ska det vara i steg om 1ns, 10ns eller vad?

Den analoga lösningen tror jag inte på, du kommer att få jittre pga termisk brus, alltså är den inte exakt.

Sen förstå jag inte var du har din upplösning i µs-storleken med en 10MHz CPU, om vi antar att den använder 4 kristallcykler till 1 komplett CPU-cykel blir upplösningen ändå 400ns. Att detta är för grov upplösning fatta till o med jag men det är alltså 0,4µs ändå....
Goran
Inlägg: 31
Blev medlem: 19 augusti 2006, 09:47:36
Ort: Göteborg

Inlägg av Goran »

Helt riktigt, menade MHz :D

Signalen jag samplar är en signal som helatiden är återkommande och identisk. Det är "jag" själv som skickar en signal och vad jag vill sampla är signalen som jag får tillbaka (börjar redan efter 5ns efter jag skickat min egen sginal), på samma ledare.

Eftersom den inkommande signalen är den samma helatiden så är det alltså ingen skilnad när jag gör mina steg i samplingen. Men VAR jag gör samplingen måste vara exakt (eller väldigt nära exakt, 5ns typ). Alla värden jag får in från sample and hold kretsen kör jag in i ADC:n på mc:n och lagrar dessa i minnet.

Jag samplar alltså första gången efter 5ns efter att jag skickat signalen, 10ns andra gången, 15ns...och så vidare...

Är det någonting speciellt du skulle vlija veta vidare om själva kretsen jag bygger?
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Har ingen lösning på problemet. Tänkte bara inflika att man normalt behöver sampla med minst dubbla signalfrekvensen för att kunna mäta frekvensen på den. Är signalen på upp till 200 MHz måste du alltså sampla med minst 400 MSPS.
(Är de lika kommer du få samma värde varje mätning, alltså det ser ut som likspänning. Om de skiljer sig något kommer du få en signal på väldigt låg frekvens. Skillnaden mellan signalfrekvens och samplingsfrekvens förmodar jag)
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Du vill alltså kunna stega i steg om 5ns.... det ger en stegning med 200MHz.

Då ditt utgångssignal är "statisk" och du tydligen vill mäta reflexioner skulle jag ha tagit "den enkla lösningen":
En PLL som synkar till det skickade signal och en ner-räknare som presettas vid varje noll på skickade signal. När noll uppnås på räknaren skickas en kort sample-puls och räkningen stoppas.

På detta sätt kan tiden mycket enkelt styras, det är bara frågan om att ändra värden på preset-ingångar och det kan göras i realtid.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Jag samplar alltså första gången efter 5ns efter att jag skickat signalen,
> 10ns andra gången, 15ns...och så vidare...

"Och så vidare" hur länge då ?
Hur många bitar upplösning behöver du i mätvärdet ?

Vad är det du igentligen du vill mäta ? Tiden fram till att signalen kommer tillbaka ?

Det är ju uppenbart att du inte kan göra detta med en standard microcontroller,
utan behöver någon form extern S/H krets som sedan (i lung och ro)
kan läsas av av processorn.

Kanske en extern snabb ADC med att snabbt 8-bit FIFO minne +
lite logik för klockningen.
Goran
Inlägg: 31
Blev medlem: 19 augusti 2006, 09:47:36
Ort: Göteborg

Inlägg av Goran »

Den externa SH:n är kretsen jag bifogat. Använder i verkligheten en MAX4016 som kan arbeta i 300MHz för att buffra insignalen till kondensatorn (den före FET:en). När jag vill sampla skickar jag helt enkelt 0 till FET:en för att bryta strömmen från buffern (MAX op:en). Sedan kan jag ju i lugn och ro sampla spänningen på kondensatorn via en annan buffer, använder CA4320 p.g.a. sin höga inimpedans. Därefter kan jag när jag vill (typ inom en sekund efter att jag skickat 0 till FET:en) sampla den buffrade spänningen med min inbyggda ADC i mc:n. Efter detta skickar jag en signal från mc:n till min pulsgenerator och synkront även till den kommande fördröjningskretsen (som jag ställt in fördröjningen på via mc:n tidigare) att aktiveras för att göra en ny mätning, denna gång ett steg längre fördröjning. Så när jag plöjt igenom alla steg så kommer jag att ha en massa värden som tidsmessigt skiljer sig åt 5ns (eller resolutionen på fördröjaren d.v.s.).
"Och så vidare" hur länge då ?
Hur många bitar upplösning behöver du i mätvärdet ?
Antalet steg kan variera beroende på hur användaren av denna krets vill åskådliggöra denna mätning. Denna längd kan variera mellan 5ns-1us, 5ns-5us, 5ns-10us, 5ns-25us, 5ns-50us. Precis så som man kan göra på ett oscilloskåp för att se detaljer eller "helheten". Den gemensamma nämnaren är att alla intervall börjar från 0s (idealt) men bestäms så klart av resolutionen, dvs 5ns (eller vad möjligtvis går att konstruera till att vara).

Mätvärdets upplösning bestäms av ADC:n, och i mitt fall av min 18f4320 som har en ADC på 13bit. Vilket duger alldeles utmärkt =)
Kanske en extern snabb ADC med att snabbt 8-bit FIFO minne +
lite logik för klockningen.
En extremt snabb ADC och minne samt logik har jag också tänkt på men faller tillbaka på att denna lösning också behöver en klocksignal precis som SH kretsen. För att fånga in värdet i rätt ögonblick. En nackdel är även att sådana komponenter kostar väldigt mycket, eller?
En PLL som synkar till det skickade signal och en ner-räknare som presettas vid varje noll på skickade signal. När noll uppnås på räknaren skickas en kort sample-puls och räkningen stoppas.

På detta sätt kan tiden mycket enkelt styras, det är bara frågan om att ändra värden på preset-ingångar och det kan göras i realtid.
Hur fungerar detta egentligen? och hur långa fördröjningar skulle man kunna ställa in med en sådan lösning? behöver som sagt minst 5ns och max 50us. Har själv tänkt på en lösning med ett synkront sekvensnät då logiken brukar ta ca 4ns (typ) per latch, hmm...

Klurigt det här :D
Inte lätt då jag har detta i huvudet och ni mer eller mindre får gissa er fram. Ställ gärna fler frågor!!
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Grejen är att tima rätt utan för mycket jitter.

En PLL (Phase Lock Loop) "låser" sin egna oscillator till ett referenssignal. Om man då delar ner utgången från den egna oscillator med t.ex. 16 innan man matar tillbaka till PLL'en kommer man alltså att skapa en frekvens som är exakt 16 gg så hög som referensen (eller vilken delning man nu vill ha).

Detta betyder att man kan dela upp varje våg i ett valfritt antal delar och räknar man sedan dessa delar med en digital räknare kan man "plocka ut" ganska exakt.

Och sen heter det "Oscilloskop", det har INGET med något skåp att göra.....
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jaha, ja det var ju skillnad.
Jag tolkade det som att du ville sampla på en gång med 5 ns intervall...

Du kan alltså *först* göra *ett* sample med 5ns fördröjning, sedan i lugn och konvertera och lagra värdet.
*Sedan* kör du en sampling med 10 ns fördröjning, konverterar och lagrar, o.s.v.

Ja det var ju skillnad... :-)

OK, då behöver du något som kan ge fördröjningar med 5 ns upplösning.
Kanske en ställbar snabb räknare vars utgång kan styra S/H kretsen.
Räknaren kan ställas från PIC'en.
"5ns-50us" betyder att räknaren behöver minst 10.000 "steg".
Sedan måste räknaren startas på ett kontrollerat och förutbestämbart sätt,
vad är det som ger T=0 ?

Jag skulle kolla efter en färdig S/H-IC med prestande som räcker till.
Dete kan vara svårt att få till en egen koppling som blir stabil.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Skulle jag göra något sådant skulle jag använda en digital delay krets och en enkel CPLD.
http://www.custompowersystem.com/DelayL ... oduct7.htm
Med en programmerbar fördröjning kan man lätt fixa en upplösning på 1 ns. Grovfördröjningen gör man sedan med CPLD.
En digital programmerbar krets kan man själv åtadkomma med en MUX och grindar med konstanta fördröjning (dock lite bökigt)
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Alternativ så skulle man kunna bygga en digital "delay-line" med 5ns upplösning med hjälp av en CPLD av lite snabbare modell och en 200MHz klocka. Samma krets kunde även skapa den första utsända pulsen.
Goran
Inlägg: 31
Blev medlem: 19 augusti 2006, 09:47:36
Ort: Göteborg

Inlägg av Goran »

Perfekt!

Den där delay-line kretsen fungerar alltså som så att man matar in p1-p4 med värdena 0000-1111 och kan då bestämma ett intervall från 0ns-75ns + 15ns (zero delay) d.v.s. X*5ns+15ns? Om man använder PTT4-5 kretsen.

Det är alltså precis vad jag skulle behöva. Sedan skulle jag alltså då addera detta med en grövre fördröjning från en CPLD. Finns det färdiga sådan eller måste jag själv programmera detta? Har aldrig gjort någonting med CPLD eller liknande arch. Kanske går med någon MUX koppling istället? Och var kan jag få tag i en sådan delay-line krets (PTT4-5)? hittar inget på elfa t.ex =/

PLL har jag heller aldrig använt, kan du peka på något bra exempel som skulle passa min krets? Hur skulle en digital styrning av delningen se ut?
Goran
Inlägg: 31
Blev medlem: 19 augusti 2006, 09:47:36
Ort: Göteborg

Inlägg av Goran »

Hittade en annan delay line krets, 8 bittars...men hittar inte denna på elfa heller.

http://www.maxim-ic.com/appnotes.cfm/appnote_number/107

Vad man skulle kunna göra är att seriekoppla flera stycken, om det inte finns någon 16 bittars d.v.s. detta skulle väl kunna fungera?
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Farnell hade DS1021S-50
http://se.farnell.com/jsp/endecaSearch/ ... SKU=119556
Då har du 0.5 ns upplösning i 256 steg.
Grovupplösningen föreslog jag skulle göras med en CPLD för flexibilitetens skull, men det går ju med en räknare gjord av logik kretsar typ 74xx mm.
Att seriekoppla två lika 8bit delay kretsar ger bara 9bit upplösning. Krets nr två måste ha en tap-delay som motsvarar 256*tap-delay av den första, då får du 16bit upplösning.
Fransson
Inlägg: 525
Blev medlem: 20 maj 2006, 12:27:55
Ort: Bagarmossen (sthlm)

Inlägg av Fransson »

  1. sodjan skrev:"5ns-50us" betyder att räknaren behöver minst 10.000 "steg".
  2. 2^15= lite drygt 32 000
Slutsats: 15 bitar räcker i det här fallet.
Skriv svar