jovak
meten is weten, weten is meten, maar hoe kan je weten wat je allemaal moet meten en weten.
http://www.artisan-scientific.com/info/hp__8165_datasheet.pdf is eigenlijk wat je wilt als functionaliteit 
Ik heb de 9834 thuis liggen, alleen door wat drukte geen tijd gehad om er al echt de schakeling mee op te bouwen.
Je wilt een arbitrary wave generator?
Op 14 juli 2011 14:08:33 schreef flash2b:
Gaat het puur omdat je het zelf wilt ontwikkelen?Voor 375€ (ex) heb je een Rigol DG1022 kant en klaar, een DDS met twee uitgangen.
280,- had ik hem bij DealExtreme, ALS de douane hem niet te pakken krijgt (wat mij niet uitmaakt, ik betaal er zowiezo belasting over).
Let voor de DG1022 wel even op dat hij niet bekent staat op zijn fijne software voor arbitrary waves. Daar heb ik hem ook niet voor gekocht.
e: ik heb overigens voor de AD9833 een lib geschreven voor Jal. Die staat in de 'jallib' (external/dds). Volgens mij moet die met kleine aanpassing zo op de 9834 werken.
[Bericht gewijzigd door knifter op (13%)]
jovak
meten is weten, weten is meten, maar hoe kan je weten wat je allemaal moet meten en weten.
Das een eitje. Zit in jallib checkout.
Als je SVN installeerd en jallib uitcheckt (zegt dat je iets?) dan kun je hem nog geupdate houden ook.
Linux:
'svn co https://jallib.googlecode.com/svn/trunk jallib'
* jallib/compiler/jalv2
* jallib/include/external/dds
jovak
meten is weten, weten is meten, maar hoe kan je weten wat je allemaal moet meten en weten.
[offtopic]na een aantal pogingen om met jal testprogrammatje te maken, was ik gestopt.
, daarna overgestapt op asm.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
bij mijn weten zijn er geen dergelijke chips.
het eenvoudigste is een fpga. je kan de DDS engine zelf direct mee aanmaken. Dat is niet eens zo groot.
Wel een fpga pakken met interne PLL's die snel genoeg kan draaien. 300 a 400MHz intern )
die lookup tables zet je in FPGA rom. arb signalen zet je in ingebakken ram.
MEt een cyclone IV moet dat perfect te doen zijn. Je hebt geen fpga nodig met 1000 poten.
Als D/A converter gebruik je een TXDAC van analog devices.
dat ding is razendsnel en heeft current mode differentiele uitgangen.
een dikke opamp erachter en je bent al heel ver.
maar de kostprijs is het probleem.. als je voor 280 euro er ene kan kopen ...
Ik kan me ergens een project op internet herinneren van iemand die het met discrete componenten deed: counter, ram, dac.
Voor het idee (en begrip vd werking) leuk. Maar of het makkelijker is als een FPGA, geen idee.
e:
Nog wel even ter info: Ik heb de 9833 prima aan de gang. Werkt netjes. Interface op orde (met LCD en rotary encoder). Maar een goede analoge output-stage/waveshaper op orde krijgen die digitaal gestuurd wordt blijkt in de praktijk nog even boven mijn pet te gaan. Ik kon er in iedergeval geen kant-en-klare componenten voor vinden. (ik niet, bestaat misschien wel) Meeste ideeen haalde ik nog uit het schema van de ELV dds-generator. Hier zit een VGA (LMH 6503 dacht ik) in. Die valt digitaal te sturen.
Wat ik bedoel is: de dds chip (of andere oplossing, FPGA) aan de gang krijgen is 1 deel, de analoge trap is zijn eigen deel apart. Maar waarschijnlijk is dit voor anderen, met meer ervaring makkelijker.
[Bericht gewijzigd door knifter op (62%)]
MAH
Every machine is a smoke machine if you operate it wrong enough
Thnx allemaal!
Jammer dat er dus niet een dergelijke chip is, leek me toch dat die wel ergens ontwikkeld zou zijn, maar als ook niemand van jullie iets dergelijks weet.. Vooral ook omdat het niet een heel grote aanpassing is van een gewone dds. En voor awg's zijn dus geheel geen kant en klare chips verkrijgbaar..
@Stefan, heb jij nog een andere optie bedacht dan? Uit standaard microcontrollers is dus geen goede freq te halen, analoge chips zijn obsolete(max038 etc) en een gewone dds is dus niet geschikt te krijgen. fpga klinkt als enige optie of dus kopen.
@knifter, van het analoge deel ben ik me inderdaad bewust. Maar dat moet niet een erg probleem zijn, snelle dac, filter, opamp en goed routen. Het hoeft niet morgen klaar te zijn..(en voor dergelijke freq's zijn breadboard-tests erg ongeschikt)
@Jovak: Ik was gewoon even wat verder aan het kijken omdat ik nogal tegen de beperkingen van een standaard dds liep.
Als ik dus werkelijk wat wil zal ik dus in de fpga's moeten duiken, al is die rigol wel erg voordelig. Een cyclone 4 met wat dingetjes eromheen begint ook al snel in de papieren te lopen.
Tipje van de sluier: het had mogelijk een nieuw project voor hier kunnen worden.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
MAH
Every machine is a smoke machine if you operate it wrong enough
Een iets uitgebreider apparaat dan enkel heel standaard dds + uC.
Maar waarschijnlijk beter om dat te laten gaan. Met asymmetrie zou ook pwm en zaagtand kunnen worden gegenereerd. Maar ik ben er al achter dat zaagtand ook anders mogelijk is(moet er wel een 2e dds chip bij) en pwm kan met een extra comparator. Sweep moet dan via de uC.
Asymmetrische sinus zou enkel voor filters en versterkers testen gebruikt worden, verder geen idee waarvoor.
Mogelijk is er nog wel iets als een triggeringang in te fabrieken met een count op het aantal waves wat een stopsignaal kan genereren.
En de start van dit topic was vooral om zeker te weten dat ik geen goede optie was misgelopen.
Ik ken de 8038. Dit is een functiegenerator op een chip. De periodetijd wordt geregeld door twee stromen. Als deze stromen onderling gelijk zijn dan is het uitgangssignaal symmetrisch. Verschillen ze, dan is het uitgangssignaal asymmetrisch.
Hier een datasheet http://www.datasheetcatalog.org/datasheets/151/285029_DS.pdf.
Ik weet niet of dit IC nog te koop is.
pa3gws
Ik ben gestopt met roken nu mijn schakelingen nog.
Tipje van de sluier: het had mogelijk een nieuw project voor hier kunnen worden.
Dat zou ik een heel interesant project vinden.
Simpleman
Niets is onmogelijk het is alleen nog nooit met succes geprobeerd.
Zeker een interesant project.
Heb zelf eens een begin gemaakt voor een functie generator met een XR2206. Maar die is niet asymmetries en kan helaas ook geen pulsen tellen.
Misschien dat het tellen via een PIC kan?
MAH
Every machine is a smoke machine if you operate it wrong enough
@simpleman, de optie van een x aantal pulsen is maarzo een ideetje van een extra toevoeging. Een pic is daar weer veel te langzaam voor, ik zat zelf te denken om dat in gewone logic te zetten en dat via wat poortjes een signaal te laten genereren. Maar wie weet wordt dat ook wel geheel niks.
Als er nu toch al mensen zijn die het wel interessant lijkt zullen we er ons toch maar weer eens in storten.
@ohm pi, bedankt. Maar dat chipje gaat maar tot 300khz.
Ik heb zelf ook een keer gekeken naar die mooie DDS chips van Analog Devices. De AD9834 maakt een sine, square en triangle output tot 37.5MHz (niet de oude datasheet pakken die maar 25MHz specificeerd), maar daar zit geen duty cycle adjustment op. Dat zou enkel met een hulp-DDS die de phase registers wisselt. Helaas heeft dat ook zijn beperkingen (delays, 2x DDS lijkt wat overkill, groot en duur voor zo'n feature)
Bovendien is ook de vraag of je een meer waveform outputs wil hebben, hoge frequenties of hoge resolutie. Die AD9834 heeft 'slechts' 28-bit frequentie tuning. Er zijn andere DDSjes die tot 32-bit gaan. Is toch een factor 16x nauwkeuriger, en dat vond ik nogal wat. (Het verschil tussen tientallen Hz of 1Hz tuning!)
Al die analoge chips zijn niet digitaal regelaarbaar, dus die vallen (voor mij doen) af.
Ik denk dat je heel erg snel uitkomt bij een FPGA met een of ander grappig SRAM <> DAC constructie om je signal te genereren. Hier voor hoef je (in princiepe) geen 200MSPS DAC te halen.
De HP33120A werkt met een 12-bit DAC op 40MHz. Die functiegenerator heeft een max. output van 20MHz 15MHz (daar zit een 9de order Elliptical 17MHz of 7 order Bessel 10MHz filter achter - 20MHz sine is dus een 20MHz square wave uit de DAC). De FPGA stuurt aan welk adres uit het SRAM wordt uitgelezen. Die bepaalt daarmee de frequentie.
Door het SRAM heb je kan je al je eigen waveforms inladen, frequentie bepalen en heb je veel bits aan resolutie (die DDS chips zijn maar 10-bits, altijd nog minder dan 12). Frequentie-tuning lijkt me vrij lastig om te realiseren, wellicht daarom hun keuze voor de ASIC.
Wat je ook kan doen met zo'n opstelling is een modulation DAC toevoegen van 8-bit waarmee je de amplitude extern kan moduleren. Meeste high-speed DACs werken met output-current. Door de het referentieniveau van die weerstanden te verschuiven krijg je een andere gevoeligheid.. (en dus amplitude)
Voor zo'n aansturing heb je zeker een (vlotte) FPGA nodig om de benodigde signalen op te wekken, maar het is zeker een interessant project. Helaas heb ik niet veel FPGA's zelf aangeraakt, dus heb ik dat idee maar laten varen.
Ik zou echter eerst met zo'n DDS chip (mijn favoriet was de AD9834 omdat die met gemak 20MHz output kan doen, en triangle/square/wave heeft) testen hoe ver je komt. Zo'n HP33120A heeft natuurlijk ook features die je niet gebruikt of die nog veel software schrijven vereisen (en als je dat al niet wilt hoef je de hardware ook niet capable te maken).
Aanvulling:
Ik ben met knifter eens dat de eind-trap ook een klasse apart is. Wat voor specs aan amplitude wil je? Een 50 ohm + 50ohm verbinding betekent een 100ohm belasting. Met een amplitude van 15V output is dat 150mA op enkele MHz.
De service manual van de HP33120A is met weinig moeite op internet te vinden. Hetzelfde idee als uit dit topic: http://www.circuitsonline.net/forum/view/76624
Een Push/Pull trap (liefste klasse A omdat je zo min mogelijk vervorming wilt) die mogelijk DC-gecorrigeerd wordt door een opamp. Zo'n trap heeft waarschijnlijk ook weer koeling nodig, enzovoort.
Versterking zou je kunnen doen door verschillende vaste versterkingstrappen te doen (de HP heeft 5 trappen van elk 6dB hoger) + een VGA die je van 0 t/m 6dB precies kan regelen. Dan kan je elke amplitude maken die je maar wilt.
Ik zit hier te twijfelen of een analoge multiplexer of relais beter zijn om signalen te schakelen (ook b.v. output on/off switches). Solid-state chips zijn compact , maar hebben hoge weerstand en mogelijk niet het beste voor signalen. Je hebt speciale RF-relaisjes, maar die kosten nogal wat.
jovak
meten is weten, weten is meten, maar hoe kan je weten wat je allemaal moet meten en weten.
Het pulsen tellen zou mogelijk kunnen door de DDS in reset te houden, tot de trigger, na het aantal pulsen houd je de DDS weer in reset.
Ik denk dat je die counter zelfs nog wel in de Micro controller kan maken
MAH
Every machine is a smoke machine if you operate it wrong enough
Ik denk dat we eerst de basis maar aan het werk moeten krijgen en dan eens verder kijken naar uitbreidingsmogelijkheden/features.
De switch met het phasereg zou ook middels het kleine broertje van de dds kunnen, die is een stuk goedkoper.
Jullie horen het wel als we iets werkend hebben of jullie hulp weer nodig zijn.
@hans1990: Ik heb hier de 9833, 28-bit freq-word. En haal daar wel +-0.1 Hz resolutie mee. Ik stel af per Hz en dat gaat prima. Moet ook wel: 25 Mhz (master clock 9833)/2^28 = 0.093 Hz. Dus het nut van 32 bit zag ik niet direct.
e: Zie dus meteen dat je niet 'exact' op de Hz af kunt stellen: het is een meervoud van .093. Misschien dat hiervoor 32-bit toch wel handig is, als je die precisie nodig hebt.
Het was nog een hele uitdaging om de berekening van dit frequency word goed te doen. Jal gaat namelijk niet goed om met 32-bit delingen in 1x. Ik heb het dus byte-voor-byte gedaan met vermenigvuldigingen. Uitleg staat in de jallib (maar wil ik ook nog wel toelichten als je wil).
Tevens gaat met goede filters deze 25 Mhz versie theoretisch tot 12.5 Mhz. Maar dit lukt uiteraard alleen met een zeer goed filter voor de sinus (had ik niet werkend: bleef blokkig gebeuren). Blokgolf gaat prima: je pakt de MSB van de accumulator. Zaagtand houd echt op bij 2 Mhz (je hebt dan slechts 12 punten per cycle!).
@MAH: Verder nog een idee voor assymetrie: De 'grotere' jongens van AD (zie ook de 59 en 99 serie! Ze hebben nieuwe.) hebben pinnen waarop de MSB van de accumulator apart naar buiten wordt gevoerd, intern geklokte comparators en meerdere(2) fase registers en frequency words welke geschakeld kunnen worden met ook externe pinnen.
Als je nu de MSB (en misschien comparators) gebruikt om te kiezen tussen de frequency words (hardwarematig) heb je kans dat je assymetrie voor elkaar krijgt, je schakelt immers over van frequency op de opgaande en neergaande flank. Slechts een idee. Je moet maar even bedenken/proberen of dit kan.
e: ik wilde PWM maken door de zaagtand door een comparator te halen. PWM hoefde ik toch niet veel verder als 1 Mhz. In de praktijk viel ook dit tegen bij mij... ervaring denk ik 
Nog een probleem wat ik had met de 9833: Je hebt geen trigger uitgang. Deze moet je zelf maken met een externe comparator. Ik vraag me af hoe 'exact' dat is en of je geen phase-jitter krijgt t.o.v. je trigger-out.
Dus als je zon AD dds pakt, pak dan meteen zon hoger model: interne pll, amplitude register, offset register, dubbele geinverteerde uitgang, 2 uitgangen waarvan de fase verschoven t.o.v. de andere uitgang kan worden en meer leuke dingen!
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
Naar aanleiding van de vraag van Hans (http://www.circuitsonline.net/forum/view/message/1276691#1276691) is hier het schema van de arbitrary waveform generator die ik momenteel aan het maken ben:
Linksonder is gewoon het voedingsccircuit, +/- 12V voor de opamps en de rest is voor de FPGA, µC, DDS, display, DAC, ... (3V3, 2V5 en 1V2).
Via een touchscreen kan de gebruiker alle punten instellen. Dit touchscreen i.c.m. het display wordt ingelezen en aangestuurd door een µC (PIC32).
Van zodra de gebruiker alle punten van de golfvorm heeft ingesteld , zal de µC deze waarden doorsturen naar de FPGA.
Hierna dient de gebruiker ook nog de frequentie van het signaal te kiezen, waarna de µC de DDS'en configureert.
Deze DDS'en genereren een blokgolf waarvan de frequentie overeenkomt met de door de gebruiker ingestelde waarde.
De uitgang van de DDS is gekoppeld aan de FPGA waar hij gevolgd wordt door een PLL. De uiteindelijk uitgangsfrequentie hiervan bepaalt hoe snel er door het geheugen wordt gelopen, waarin de punten werden opgeslagen.
De DAC bezit een differentiële uitgang waardoor het gemakkelijk is om het signaal zowel positief als negatief te maken (verschilversterker). Daarna wordt het signaal nog wat versterkt en verlaat het uiteindelijk door een 50 ohm weerstand het circuit.
Alles werd dubbel opgebouwd om 2 signaaluitgangen te krijgen, channel 1 en 2.
Er is verder ook nog de mogelijkheid om waveforms te laden vanaf een USB-stick.
De componenten:
µC: PIC32MX460F512L
DDS: AD9833
DAC: DAC5662A
FPGA: EP3C25E144C8N
GerardMonique
soms zoekt men te diep in het EENVOUDIGE.
Ik heb ooit een aantal functie generator's gebouwd op basis van de " XR205 " en werkt naar behoren.
http://www.uploadarchief.net/files/download/xr205.pdf
Misschien is het bruikbaar.
MVG Gerard.
@Gerard:
Je bedoelt denk ik de XR2205,. Deze zit ook in de elektuur functiegenerator wat in de jaren 80 ergens geintroduceerd is
Ik heb niks gezegd, de XR2206 en XR2207 zijn ook functiegenerator chips.....dacht dat de XR2205 er ook ene zou zijn.
[Bericht gewijzigd door Stefanh001 op (32%)]
GerardMonique
soms zoekt men te diep in het EENVOUDIGE.
En wat verklaart de datasheet dan, en ik heb even op de chip gekeken en stond toch echt EXAR XR205,
Dus ik kan er niet meer van maken.
MVG Gerard.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
opgelet met die FPGA pll;s ...
die hebben slechts een bepaald vangbereik.
je kan dat niet zomaar als multiplier zetten...
Leuk schema, je zou die FPGA ook met verschillende states kunnen programmeren die andere division rates instelt. Er zal altijd een factor blijven zitten tussen je ingevoerde klok en de uitgaande datarate. Die kan je b.v. vergroten om zodoende de uitgangfrequentie te verlagen. De DDS stel je dan altijd op een 'hot spot' in. De vraag is uiteraard hoe goed je resolutie wordt op lage en hoge frequenties.
Zelf zit ik te spelen met het idee om de FPGA achterwege te laten en het meer discreet te doen. Het enige wat de FPGA aan het doen is een waarde uit zijn geheugentabel naar de output I/O te schuiven.
Je zou ook het idee uit deze video kunnen pakken:
http://www.youtube.com/watch?v=HICFPj0Gi4U
Er zijn parallel SRAM chips beschikbaar met b.v. 16 address pins en 16-bits uit. Die spugen met enkele ns hun gegevens uit, waardoor je in princiepe makkelijk 40MSPS zou moeten halen. Die 16-bits kan je aan een 12-bit of 14-bit ADC knopen.
De laatste 2 bits zijn niet verspilde moeite, je kan die gebruiken om de klok te resetten naar 0. Je zou een DDS kunnen (AD9834 kan prima fungeren) als referentieklok (hoe snel samples worden uitgestuurd). Die klok stuurt een 16-bit counter aan (zou je enkele IC's moeten cascaden). Op die counter ICs zit een reset pin die je aan een van de bits knop van het geheugen.
Op de laatste sample programmeer je die bit hoog waardoor de counters resetten waardoor je waveform weer aan het start begint. Als je counter 'cell' snel genoeg is zal die gewoon het geheugen doorlopen en de samples op je DAC komen, zodoende uit je functiegenerator.
Ik heb nog niets concreet uitgetekend of diep uitgezocht, maar het zou mijzelf de mogelijkheid geven elke waveform te maken zonder FPGA's te programmeren. Daar heb ik hier geen tools voor. Ander bottleneck zou de snelheid van je 16-bit counter zijn , want stiekem zou ik die het liefst weer in een CLPD of FPGA proppen..
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
Op 16 juli 2011 00:00:30 schreef free_electron:
opgelet met die FPGA pll;s ...
die hebben slechts een bepaald vangbereik.
Ai, je hebt gelijk. Gelukkig heeft de berglucht me nieuwe inzichten gegeven 
- Gebruiker stelt X/Y-tabel op en stelt frequentie in
- µC stelt DDS'en in en stuurt de X/Y-tabel en frequentie door naar de FPGA
- De doorgestuurde frequentie bepaalt hoe snel de FPGA door zijn X/Y-tabel gaat. Per stijgende flank van de DDS keert hij terug naar het begin van de tabel
Tussen FPGA en µC wordt de volgende data doorgestuurd:
14-bit adres (adres van iedere plaats in de X/Y-tabel)
12-bit data (voor de DAC)
28-bit frequentie (hoe snel er door de tabel moet gelopen worden)
Hiervoor werd tussen FPGA en µC een 13-bit parallelle bus geplaatst, hiervan gebruik ik 5 bits als 'byte-select', de andere 8 gebruik ik als data:
- 00000: Adress LSB (Ch1)
- 00001: Adress MSB (...)
- 00010: Data LSB
- 00011: Data MSB
- 00100: Freq, byte 0
- 00101: Freq, byte 1
- 00110: Freq, byte 2
- 00111: Freq, byte 3
- 01000: Adress LSB (Ch2)
- 01001: Adress MSB (...)
- ...
- 10000: extra commando's (output off, burst mode (freq x 2, x4, ...), ...)