Fórum témák
» Több friss téma |
Cikkek » Egyszerű PIC-es, digitális oszcilloszkóp folytatás Egyszerű PIC-es, digitális oszcilloszkóp folytatás
Szerző: bbatka, idő: Márc 18, 2022, Olvasva: 7541, Oldal olvasási idő: kb. 4 perc
Az analóg panelról érkező maximum 2 Vcs-cs szintű jelet, amelyet 1,6 V egyen szinttel tolunk el, egy TLC5510i A/D átalakító fogadja. Az átalakító elvileg 20 MSPS sebességre képes. Én ezt nem használtam ki teljesen. A kapcsolásban található egy dsPIC30F5011 mikrovezérlővel rendelkező panel. Ennek feladata a CPLD számlálójának indítása (GTS1=számláló törlés) és a mintavételezési sebesség (CLKSEL) kiküldése a CPLD panelre. A CPLD panel jelenleg egy XC9572-re épül. A CPLD feladata az SRAM címzése és az A/D átalakító részére az órajel előállítása. Az eszköz rendelkezik egy egyszerű triggerrel, amely nagy, kb. 2-3 μs késedelemmel dolgozik. Használható mind a 32 kB-os egyszeri, mind a 4 kB-os folyamatos mintavételi módban is. Ez a trigger csak a periodikus mintavételű jelek szinkronizálására szolgál. A nagy késedelmet a mikrovezérlőben lévő utasítások okozzák. Szerintem ezeket még jelentősen lehetne csökkenteni, de a cikk követhetősége érdekében inkább meghagytam a Pascal forrásban. A következő oszcilloszkópomban a trigger a CPLD-ben lesz majd megvalósítva. A trigger egy LM311 analóg komparátorra és egy MCP41010 potméterre épül. A poti értékét a mikrovezérlő küldi ki. A számítógépes program és a mikrovezérlő közötti adatátvitelt egy USB-UART (MCP2200) átalakító biztosítja. Az adatátviteli sebesség 115 200 bit/s. SRAM-ként egy 71 256-20 ns (32 kB) használok. A fejlesztést egy UMC UM62256E-70LL végeztem. A legnagyobb mintavételezési sebesség már nem tetszett neki. Minden negyedik – ötödik mintavételezésre hibázott. A jelölésben a 70 a 70 ns-ot jelenti. A számítógépes program vezérli a hardvert a mikrovezérlőn keresztül. A számítógépes programban lehet kiválasztani, hogy 32 kB-os egyszeri, vagy a 4 kB-os folyamatos legyen a mintavétel. Ki lehet választani a triggert. Meg lehet adni a mintavételezési sebességet. FFT-t csak 32KB-os módban lehet számoltatni. 4KB-os módban másodpercenként egyszer történik mintavételezés és kirajzoltatás. Mintavételi sebességek (SMPS): 12.500.000 6.250.000 2.500.000 1.250.000 625.000 250.000 125.000 62.500 25.000
A számítógép az utasításokat 3 bájtos formátumban adja át. Az első bájt tárolja az alap eseteket. Összesen 54 db alap eset van. Az alap eseteket számát azzal, hogy a trigger felfutó-lefutó beállítását áthelyeztem a második bájtba, lecsökkentettem 36 db-ra, majd a mikrovezérlő Pascal nyelvű forrásában látni fogjuk. A munka átláthatósága érdekében az alap eseteket egy táblázatba foglaltam össze. Az első átküldött bájt tartalmát az ugrótábla.xls táblázat „G” oszlopában látjuk. A táblázatban szereplő trigger él figyelés tehát már nem aktuális. A trigger él figyelés átkerült egy második bájtba. Abban az esetben, ha a felfutó élét kell figyelni a jelnek, akkor 1-es, ha pedig a lefutó élét, akkor 2-es érték kerül kiküldésre a számítógépről. A harmadik bájtban történik a trigger jelszint értékének átadása. Összesen tíz részre osztottam fel a teljes jel amplitúdót. Kattints a képre a nagyobb méretért! Az alábbi képen a három bájt átvitelének logikai analizátoros mintavételét látjuk. A kép a fejlesztés során készült. Kattints a képre a nagyobb méretért! A 23-as első bájt a következőt határozza meg: Egyszeri (32 kB) mintavétel, trigger van, a mintavételezési sebesség 2.500.000 SMPS A második érték az 1-es azt mutatja meg, hogy a trigger a jel felfutó élét figyelje. A harmadik bájt (5) a trigger jelszint. Abban az esetben, ha nincs trigger, akkor a 2-es 3-as bájt értékét figyelmen kívül hagyjuk. Sok fejtörést okozott számomra az SRAM írási és olvasási diagramjának értelmezése, és az hogy melyik változatot válasszam. Nem kevés fejtörést okozott az is, hogy a feladatokat hogyan osszam fel a mikrovezérlő és a CPLD között. Védelmi célból ellenállásokat tettem a CPLD panelre, arra az esetre, ha véletlenül kimenetként kapcsolom a mikrovezérlőt és a CPLD-t egyszerre, ugyanarra a vezetékre. Ez problémát is okozott az A/D órajelénél, de erről majd később. Akkor lássuk a feladat kiosztást és a szükséges jelszinteket. Olvasás (memória szempontjából): OEAD, (értéke H) A/D átalakító engedélyező bitje, mikrovezérlő kezeli WE, (értéke H) SRAM írásengedély, mikrovezérlő kezeli OENG, (értéke L) SRAM kimenet engedély, mikrovezérlő kezeli CS1, (értéke L) SRAM csip kiválasztó, mikrovezérlő kezeli GTS1, (értéke L) CPLD számláló reset, mikrovezérlő kezeli CLKSEL, (értéke L) CPLD számláló mintavételi érték kiválasztó, mikrovezérlő kezeli A0-A15, SRAM címzés, mikrovezérlő kezeli Írás (memória szempontjából): OEAD, (értéke L) A/D átalakító engedélyező bitje, mikrovezérlő kezeli WE, (értéke H-L-H) SRAM írásengedély, CPLD kezeli OENG, (értéke X) SRAM kimenet engedély, mikrovezérlő kezeli, bemenetnek állítja a lábat CS1, (értéke L) SRAM chip kiválasztó, mikrovezérlő kezeli GTS1, (értéke H) CPLD számláló reset, mikrovezérlő kezeli CLKSEL, (négy bites) CPLD számláló mintavételi érték kiválasztó, mikrovezérlő kezeli DACLK, órajel az A/D részére, CPLD állítja elő A0-A15, SRAM címzés, CPLD kezeli Bizonyos jeleknél (pl. SRAM címzés) látható, hogy a mikrovezérlő lábait egyszer bemenetnek, máskor kimenetnek kell beállítani. Nagyfokú odafigyelést igényel! Ellenkező esetben a CPLD vagy a mikrovezérlő bánja a figyelmetlenséget.
SRAM Olvasási ciklus: Kattints a képre a nagyobb méretért! SRAM Írás ciklus: Kattints a képre a nagyobb méretért! Trigger: Kattints a képre a nagyobb méretért! A képen látható, hogy az áramkör egy digitális potméterből és egy komparátorból épül fel. A potméter beállított értékét a Pascal program adja, a Pascal program pedig a számítógépes programból. Az érték „as3” változóban tárolódik le. LTSpice-ban készítettem egy szimulációt, ami nagyon megkönnyítette a munkámat. Az ellenállások a kimeneten kicsit változtatva lettek. R5=10, R6=10 k jelenleg. Kattints a képre a nagyobb méretért! A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |