Tyckte det var lite dött här så jag tar och postar lite info om mitt pågående oscilloskop-bygge.
Håller just nu på med andra prototypen av själva samplingskortet. Börjar med några bilder på den.
Nästan naket kort.
Ingångssteget och PIC monterade.
Utgångsbuffer och kontakt monterade.
Och här en liten närbild på omdesign i efterhand jag fick göra för att få ICSP att fungera.
Som ni förmodligen ser är det ganska mycket som fattas på kortet, det ska bland annat dit en A/D-omvandlare och några opampar. Håller på att skriva kod för PICen och testa den för tillfället, när det är klart ska jag bygga klart och testa den analoga delen, och sist sätta dit A/D-omvandlaren med omnejd.
Här hade jag tänkt skriva en massa information om oscilloskopet och hur det fungerar/ska fungera - men jag kom på att det nog skulle bli ett par sidor med text som ingen orkar läsa .
Kom med frågor om ni vill veta nåt. Det står också en del om bygget på min hemsida.
Dock har jag några frågor angånde ingångs steget...
du har OPA655 som ingångs steg och som spänings följare, när man kollar i data bladet så blir steg svaret inte så snyggt, hur tänkte du kompensera för det?
jag vet att man kan få liknade steg svar med en osciloskops prob som är fel instäld, så du hade tänkt över koppensera proben till steg svaret blir snyggt, men går det?
En anna fråga är angånde "Equivalent time sampling", hur har du löst det mjukvaru mässigt? och skulle det att gå implementera i FPGA?
Jag hart ochså haft planer på att bygga ett DSO men det har fallit på analog ingångs steget, redan i simulerinarna i pspice...
Jag vet inte om jag håller med om att stegsvaret från opa655 är speciellt fult, det har en liten översläng men inte mer än jag kan leva med. Jag kommer dock att byta ut OPA655 mot ett diskret JFET-steg på ingången i nästa version. Främsta anledningen är brus.
När det gäller ETS tänker jag använda samma metod som Bitscope, dvs bygga in en frekvensräknare och med hjälp av den räkna ut hur mycket den mätta signalen fasförskjuts i förhållande till klockan. Jag hade tänkt göra själva rekonstruktionen i mjukvara på PCn, men det skulle kunna gå att göra i FPGA också om man vill det.
Det största problemet med metoden är att den är känslig för jitter på signalen, man mäter ju bara genomsnittsfrekvensen över hela perioden man samplat. Alternativet är att man har en hårdvarutrigger som kan mäta trigpunkten väldigt exakt (typ 100ps). Vill inte ge mig på att designa en sån, än...
Det kommer att bestå av ett antal separata moduler, en centralenhet (med FPGA, minne, processor, ethernet-anslutning) och fyra plugin-moduler (som kan bytas ut/uppgraderas var för sig).
FPGAn tar hand om att trigga, sampla ner och lagra signalen så den kan skickas till datorn över nätverket. Man kan även tänka sig lite mer avancerade funktioner här, som diverse filter.
Varje plugin-modul kan leverera upp till 12 bitar data med en hastighet av 100MHz till centralenheten. Datan kan i princip vara vad som helst, men de två varianter som jag har tänkt är dels den här A/D-modulen som ger en vanlig oscilloskop-ingång, och dels en logikanalysator-modul som ger 12 digitala ingångar.
Centralenheten är inte klar, men tills vidare kommer jag att använda ett utvecklingskort från Altera (lånat från universitetet).
Den analoga modulen som jag alltså håller på med nu använder en MAX1449 som A/D-omvandlare. Den är "bara" 10 bitar, men det finns alltså möjlighet att byta till en 12bitars i framtiden. Den har en analog bandbredd på ~400MHz, vilket är mitt mål att matcha i den analoga elektroniken. Nästa version kommer dock också ha ett lågpassfilter på c:a 40MHz som kan kopplas in om man vill. Frekvenser över 50MHz kan ju ändå bara samplas när man använder ETS-läget, och med filtret slipper man mycket brus och felsamplade signaler när man använder vanlig realtidssampling.
Om vi börjar vid ingången (uppe i högra hörnet) så kommer signalen in via en BNC-kontakt. Ingången har en impedans på 1Mohm || ~15-20pF dvs standard för "klassiska" oscilloskop, så de flesta probar ska passa.
Direkt efter ingångskontakten sitter ett (litet!) relä som sköter AC/DC-koppling, efter det kommer signalen till en kapacitiv/resistiv spänningsdelare och två ytterligare reläer väljer dämpning av signalen (1x, 10x eller 100x). Efter dämpningen går signalen till ingångsbufferten (OPA655). Där sitter också en skyddskrets som klipper signalen till c:a +/- 3V och som ska klara minst 230V/50Hz på ingången utan att något går sönder.
Signalen går vidare till ett förstärkarsteg med förstärkning 5x, följt av en analog switch som kan koppla förbi steget (med vars hjälp man alltså kan välja förstärkning 1x eller 5x). Efter switchen sitter en till operationsförstärkare med förstärkning 2x och som lägger till en DC-offset till signalen. Dels en fast offset som behövs för att centrera signalen till A/D-omvandlaren (den drivs med enkelsidig matning) och dels en variabel offset som kommer från en D/A-omvandlare. Efter detta steget går signalen till A/D-omvandlaren.
D/A-omvandlaren jag nämnde nyss är en 2kanals, 10bitars i2c-dac som styrs av en PIC16F648A på kortet. Den ena kanalen går till en DC-offset på insignalen. Denna offset används dels för att kompensera för DC-fel från de olika förstärkarstegen och dels för att förskjuta signalen man mäter på (t.ex. om man mäter på en signal mellan 0 och 5V så kan man centrera den runt 0v istället). Den andra kanalen styr referensspänningen till A/D-omvandlaren. Den används dels för att kompensera för gainfel i förstärkarstegen och dels för att ge en extra "virtuell" förstärkning på 2x (genom att halvera referensspänningen).
Tillsammans med reläerna och switchen (som också styrs av PICen förstås) kan man alltså välja dämpning/förstärkning i steg om 2,5,10 osv. precis som på de flesta oscilloskop.
Det här är som sagt andra prototypen, den första var en nerskalad och förenklad version av hela oscilloskopet som jag byggde för att övertyga mig om att jag inte var totalt knäpp som försöker bygga nåt sånt här, utan att det faktiskt funkade ungefär som jag trodde. Den här versionen är en nästan komplett prototyp av samplingsmodulen där i princip alla funktioner ska kunna testas ordentligt. Till nästa version som förhoppningsvis blir den slutgiltiga ska jag optimera prestandan (brus, bandbredd, stegsvar), lägga till ett lågpassfilter och rätta till alla oförutsedda problem som jag hittar med den här versionen.
Sen är det huvudenheten, mjukvaran osv kvar... har inte mycket mer än skisser, ideer och enstaka kodsnuttar klart där.
Har nästan gjort klart kortet nu. Har testat det mesta av analogdelen och så långt verkar allt ok. Har precis lött dit A/D-omvandlaren med kringkomponenter. Det enda som fattas nu är komparatorn till frekvensräknaren (PICen) och några småsaker jag tydligen inte hade hemma... blir en *till* tur till Elfa.
Vackert må jag säga.
Är det inte stor risk att det blir kortslutning när det är ett så pass avancerat kort? iofs så så är det bara att kolla mellan varje lödning.
Har inte haft så mycket tid över till DSO-bygget, men jag har nu iaf fått igång en ganska komplett prototyp med samplingskortet, ett FPGA-kort från Altera, min nätverksmodul och lite annat.
Hela grejen klockas i 40MHz, vilket är ungefär så högt som den här antika FPGAn går med det jag lagt i den. Den innehåller nersampling (räknar ut medelvärdet av 2^N samples), trigger (stigande eller fallande flank, valfri nivå), minne (1024 samples), styrlogik och ett SPI-liknande seriellt interface mot nätverks-PICen.
PICen snackar ett väldigt simpelt UDP-protokoll mot datorn, som i sin tur kör ett väldigt simpelt program för att visa resultatet. Både hårdvaran och mjukvaran är väldigt provisoriskt hopslängda just nu...