» »

a/d pretvornik -> usb

a/d pretvornik -> usb

mte ::

živjo,
nekaj se matram iskat pa ne vem niti kako bi se lotil - vglavnem rabim nek kontroler za komunikacijo med a/d pretvornikom (cca 12bit, 100kHz vzorčenje) in računalnikom preko usb2 vodila. Kako bi to najlažje izpeljal? Kakšne možnosti sploh obstajajo? Kakšne so približne cene, dobavni roki, kje se to dobi, ... Vglavnem karkoli je povezano s tem se priporočam za kakšno idejo.
Hvala,
lp matej

neoto ::

Uporabi FTDI-jev USB-serijski konverter, ki podpira max. 3 Mbaud-a za prenos podatkov na TTL linijah, ter dovolj zmogljiv mikrokontroler, ki bo sposoben obeh komunikacij (a/d in usart).

Brane2 ::

Oziroma, če dseign to dovoljuje, zakaj ne bi uporabil mikrokrmilnik, ki A/D pretvornik že ima vdelan ?
On the journey of life, I chose the psycho path.

BluPhenix ::

Kar je v bistvu danes že skoraj vsak.

ŠE bolje je da uproabiš krmilnik, ki ima USB že vdelan in je še manj problemov.
Podpisa ni več, ker so me poskušali asimilirati.

mte ::

hja, nekako nisem zasledil da bi bili vgrajeni hkrati dovolj hitri in dovolj natančni (12 oz. bolje 14bit, 100khz) za primerno ceno. Je pa res da se s tem še nisem ukvarjal, tako da skoraj nič ne vem o tem in ne poznam trga...

BluPhenix: poleg tega bi projekt pri Trontlju nekako izgubil pomen, če bi bilo že vse gor, se ti ne zdi? :D

BluPhenix ::

U sploh nisem videl da ti to sprašuješ :D

MA ti se ne sekirat za Trontlja naredi ga čim prej, če nočeš imet potem zakompleksanega življenja. Kaj pa morate zdej sploh delat? Kaj ima tudi on seminarske?

Ti bom rekel tako. Naredi eno seminarsko in jo uporabi za Seminar, Topiča in Trontlja. Ne se mučit za vsak predmet svojo, ker nima smisla.

USB ni tako lahek za implementirat kot se lahko zdi na prvi pogled. Če se odločiš, da boš delal vse sam zna biti precej precej dela. Predlagam da najdeš kakšen USB modul, ki ima že večino protokola rešeno hardversko in se z mikrokontrolerjem pogovarja po I2C protokolu. Ni težko za naredit in večinoma boš delal tako.

Primeri takih modulov: http://www.ftdichip.com/Products/FTEvaluationKits.htm

Za A/D coverter pač lahko uporabiš integrirane, ali pa zunanjega. Po možnosti najsi kakšnega ki se pogovarja po I2S vodilu, ali pa klasično paralelno.

V glavnem naredi si tako zasnovo, da boš čim hitreje in čim lažje naredil. Po možnosti si naredi tudi kot osnovo za diplomo. S temi seminarskimi se ne splača preveč mučit, ker itak ne dobiš nobene pomoči in itak jih sploh ne zanima kaj narediš. Seveda če delaš zase naredi tako da bo tebi čim bolj prav.
Podpisa ni več, ker so me poskušali asimilirati.

radiator ::

No kot so ti že drugi predlagali uC + FTDI

Jaz bi vzel MSP430 (family datasheet) in zraven FTDI232R in potem laho greš preko VCP ali napišeš namensko aplikacojo za PC, ki dela z dll.

Če pa rabiš res več bitov pa http://www.maxim-ic.com/products/microc... samo ponavadi se nihče ne zaveda kaj pomeni 12bitov in kaj to pomeni za AA filter in analogna vezja okoli. Tak da ne pretiravat...
Kaj je jutri že bilo?

mte ::

hvala za odgovore, si bom podrobno ogledal stvar čez vikend..
lp

mte ::

Hm torej zadeva je taka. Odločili smo se (na podlagi pogovorov z nekaj ljudmi na faksu), da bomo šli takole: AD7472 -> RAM -> xx -> FT245 -> PC.
Ideja je, da bi AD stalno pošiljal podatke v RAM, na zahtevo uporabnika oz. programa na pcju bi potem stvar zamrznil in prebral vsebino RAM-a (še pred zamrznitvijo bi moral počakati da ad nafila ram do konca, da ne bi bil vmes kak preskok med časom pobranih podatkov).
xx zgoraj pomeni neko zadevo, ki bo pobrala iz rama 16 bitov (od tega 12 uporabnih podatkov) in to razdelila v serijo 2x8 zaradi usb kontrolerja.
Ali bi tole šlo tako? Ali kdo vidi že tako na hitro kakšen večji problem? Prednost take strukture bi bilo hitrejše zajemanje podatkov, kot je zmožen usb prenesti (usb ima max 1MB/s z D2XX driverji). Seveda zadeva ne bi bila real-time, ampak v tem momentu mi je važno, da na PC-ju dobim neke podatke napisane, drugo bo mogoče za kako drugo seminarsko. Torej trenutno mi je važna samo natančnost (12-bit) in hitrost (vsaj 100ksps, odvisno od količine rama in željene dolžine vzorčenja).
Če bi zadeva špilala tako, potem bi moral izbrati RAM. Nekaj sem gledal en sdram 64mb, pa je potreboval točno določeno zaporedje ukazov za inicializacijo - ali obstaja kaj da tega ne bi potrebovalo? Kaj pa tisti xx - s čim bi to naredil? Mogoče še kakšni drugi komentarji? Je pa res, da za kakšno večjo spremembo strukture ni več časa, stvar mora biti narejena do konca meseca. Torej vstavljanje mikrokontrolerjev vmes ne pride v poštev.
hvala,
lp matej

neoto ::

Kako to misliš, da vstavljanje mikrokontrolerjev vmes odpade? Zakaj? Kako si pa mislil tole izvesti? Sicer lahko poskusiš s FPGA-ji, samo bo stvar malce bolj zapletena. Kakšen ARM mikrokontroler bi bil po mojem čisto sposoben prenašati te podatke.
Potem pa potrebuješ še nekaj, da boš vse skupaj sinhroniziral. Lahko sicer uporabiš nek clock in pa števec za naslove v RAM-u, ampak bo to precej okorna zadeva.
Po drugi strani ne vem zakaj si si izbral skoraj 2MSps A/D, če potrebuješ samo 100k...

Zgodovina sprememb…

  • spremenil: neoto ()

VolkD ::

Jaz bi tudi predlagal ARM po možnosti philipsovega, saj so tendence faksa sedaj v tej smeri. Verjemi, da bo kakršnakoli aplikacija programabilne logike vzela preveč časa, pa ni nujno da je to FPGA, lahko je tudi manjša stvar - CPLD.
Kot sem razumel, boš potreboval hiter SDRAM. Iz iskušenj ti povem, da se take stvari ne dobi za vsakim vogalom. 12ns so še nekako dosegljivi, hitrejši so pa prava rariteta. Sicer pa se ti splača pobrskat po Cypres katalogu.

Sam sem namreč delal podobno stvar. Analizator digitalnih signalov. Logika v treh CPLD-jih skrbi za trigiranje v pravem trenutku. Prav tako pa skrbi tudi za naslavljanje RAM-a v katerega se analizirani signali vpisujejo. Ko je zajetje signala končano se mod zamenja in sledi bistveno počasnejše odčitovanje in prenos podatkov na PC.
Povedanemu sem dodal še hiter A/D pretvornik in tako iz logočnega analizatorja dobil še storage osciloskop. Kakorkoli že, stvar ni taka, da bi se jo dalo v enem mesecu realizirat, razen, če misliš celoten čas in način življenja podrediti temu. Tudi če ti celotno blok shemo dam (uporabljeni so starejči CPLD-ji, ki danes niso več primerni), ti bo še vedno hudo težko doseči željen rok.
Preden zaspiš zapri oči. Preden zapreš oči, ustavi avto.

mte ::

Hja veliko stvari odpade že zato ker teh stvari ne poznamo. Že tako se mi zdi vse skupaj preveč glede na to da še nisem sploh vezij sestavljal. Vsaka dodatna stvar prinese nekaj učenja (upoštevaj to da na faksu ne dobim prave pomoči) in če vse seštejemo skupaj, dvomim da uspe do konca meseca.
No sinhronizacijo sem res mislil rešit z uro za ad+števec za naslove, plus še ena ura za obratovanje usb čipa. Okorno v kakšnem smislu? To, da je treba filanje rama ustaviti za čas odjemanja podatkov na pc, sem rekel da bi pustili za kdaj drugič. Ali si mislil kaj drugega?
No 100ksps (oz. še manj) je bil pač minimum, izbran glede na hitrost usb-ja, ko še nisemo vpletali rama zraven. Bomo pa tako izkoristili vsaj 1M če bi to z RAM-om uspelo.
Kakšni so pravzaprav točni vzroki, zakaj takole ne bi šlo kar direkt brez kontrolerjev, fpga in podobnih kompliciranih stvari, in bi bil skoraj potreben tisti ARM? Da bi bilo bolj fleksibilno, to vem. Ampak kot rečeno, če zadeva sploh pokaže nekaj približno podobnega na pcju kot je bila gor pritisnjena napetost, je to zame že uspeh. Vsaj zaenkrat.
Hvala,
lp matej

mte ::

Da še malo poenostavim glede kontrolne logike. Mislim da ne bi bilo hudo narobe, če bi zadevo poenostavil tako, da je na vezju gumb, ki bi začel pretok iz ad v ram, ko pa se ram zapolni, se zadeva ustavi in čaka na odjem na pc. Tako ne bi bilo nobenih ukazov s strani pcja, ki bi jih moralo vezje upoštevati. Se situacija s potrebnostjo kontrolerjev kaj spremeni?
hvala,
lp matej

slawc ::

Mikro pa res ni potreben v vsakem primeru? Zakaj bi imel SDRAM ali pa kakršen koli RAM? Se da uporabiti tudi brez vsega. FT245 bo šel z dobro napisanim SW na PCu kar hitro in real time. Tistih 100ksps gre brez problemov (ampak pazi kaj počne PC takrat). 1MB/s je pa malce utopično. Tistega malega logike, ki je potrebno za krmiljenje pa res ne potrebuje nevem kaj. CPLD pa popolnoma zadošča.

neoto: to, da izbereš precej hitrejši AD, kot pa potrebujes vzorcev pa ni nič narobe. Si kdaj zajemal npr. pravokotni signal na skoraj polovici vzorčevalne frekvence?
LP, Slawc

mte ::

slawc: 100ksps*12bit=1.2MB/s. Sem pa podatek, da gre ft245 s hitrostjo 1MB/s z D2XX oz. 300KB/s z VCP driverji prebral na ftdichip.com. Mogoče je to res teoretični maximum, ne vem. Zakaj RAM? Ker povezava z računalnikom ne more dati zadovoljive časovne predstavitve zaporedja vzorcev - hitrost ni vedno konstantna. Kolikor si jaz predstavljam, zna to dati precej čudne rezultate, v kolikor ne zraven vzorca pošljem tudi časa zajema. Je pa bila ta varianta (brez rama) prva, ki smo se je spomnili.
hvala in se priporočam za komentarje,
lp matej

slawc ::

Kaj tebi predstavlja sample? 1 sample (vzorec analognega signala) je pri tem AD 12 bitov -> 2 byta za prenos. Torej 100ksamplov/s * 2byta = 200KB/s.

Zadeva je pri tem AD (en hiter pogled v datasheet: SAR) popolnoma sinhrona kar se tiče "bruhanja podatkov", clock je pa pod tvojo kontrolo. FT245 pa ima tudi majhen FIFO, ki lahko kompenzira asinhrono delovanje s strani PCa (kot sem rekel, pri tej hitrosti, to ne predstavlja problem). Ker si podatki sledijo v točno določenem zaporedju z določeno periodo je vsa informacija o času ohranjena.
LP, Slawc

mte ::

Jau pa kje sem jaz matematiko pozabil :8). Ampak zanimivo da me ves ta čas nobeden ni opozoril na to, niti kolegi, niti profesorji in sploh nisem pomislil na kakšen kiks ... eh noben ne posluša :)
No če lahko ft245 stvar kompenzira (pri kakšni hitrosti pa znajo začenjati problemi?), je situacija popolnoma drugačna in bi res lahko šli brez rama in se potem vse skupaj še bolj poenostavi.
No, ko smo že ravno tukaj - kaj potrebujem za razdelitev tistih 12 bitov na 2x8? Kako se imenuje ta stvar?
Hvala,
lp matej

neoto ::

slawc: nisem čisto razumel tvojega komentarja. Če zajemaš s 100k vz/s, potem je vseeno če imaš 100 MSps A/D ali pa 100kSps, ali ni?
Za ločitev 2x8 bitov uporabiš enostavno dva paralelna registra - latcha, ki ju izmenično vklapljaš (uporabiš lahko kar 1. bit števca, ki ga misliš uporabiti za naslove v RAM-u). Dobro je, da izbereš takšna, ki se prožita samo na fronto.
Če pa ne misliš uporabiti RAM-a, pa boš moral samplat non-stop ter podatke vpisovat v FTDI-jev FIFO, če se bo le dalo. Za clock pa lahko uporabip kar XTOUT (6 MHz), ki ga deliš s 30 (100kSps + 2 latcha) ali pa enostavneje s 32, kar ti da ~ 94kSps. S tem prescaler-jem bi lahko potem tudi spreminjal frekvenco vzorčenja.

Zgodovina sprememb…

  • spremenil: neoto ()

VolkD ::

Bojim, se da se boste zaplezali. Kaj hitro se lahko zgodi, da naredite napravo, ki bo samo pogojno delovala. To se je tudi meni zgodilo. Resničen problem je pravzaprav sinhronizacija dolge verige. To je A/D konverter -> ftdi -> usb protokol -> še ostale anprave na USB - > program, ki bo te podatke sprejemal . Vedeti je namreč treba, da večino časa pravzaprav ne vemo kaj windovs operacijski sistem dela in zakaj ruži po disku. Precej lažje je izvesti nekaj, kar bo sinhronizirano v krajši zanki - to pa vsekakor opravičuje uporabo RAM-a. Koncept z uporabo rama omogoča tudi precej višje hitrosti, kot so zahtevane. Z uporabo CPLD vezij je mogoče kasneje napravi dodati kar nekaj zanimivih opcij. Naprimer.. Stalno zajemanje signala v RAM, ki bi v tem primeru deloval kot ogromen krožni register. Določitev točke trigiranja. Od te točke dalje logika poskrbi da se napolni še polovica krožnega registra, nato pa se stvari prenesejo na PC. S tem bi napravi dodal programabilni triger.
Torej takole.. ftdi-jev čip . Najbolje tak za pretvorbo paralelnega porta na USB, ker je v tem primeru nekoliko bolj uporaben. CPLD za logiko. Lahko tudi več čipov. Od Xilinx so primerni XC95144. Altera pa ima podoben čip EPM3128. RAM-i morajo biti dovolj hitri. Take se je včasih dobilo kot cache v 486 računalnikih. No bolje se je držati tega, kar se da naročiti pri proizvajalcu - recimo Cypres CY7C199-12 je ram ki bi bil dovolj in še preveč hiter. AD pretvornik, pa mislim, da ste že našli.

Če boš tak ali hudo podoben koncept izbral, ti kahko razložim kaj več o programiranju CPLD-jev, ki resnično ni bav bav. Pa tudi logiko v obliko blok diagramov lahko naredimo skupaj.
Da omenim samo še to.. da se opisan koncept da narediti tudi na zelo počasnem printer portu. Stvar namreč ni tako zanemarljiva, saj nudi reševanje problemov po sistemu "divide et empira" . Torej najprej stestiraš napravo samo, nato pa šele USB vmesnik..
Preden zaspiš zapri oči. Preden zapreš oči, ustavi avto.

mte ::

Živjo,
Hvala še enkrat za odgovore, sem si kar nekaj pomagal pri nadaljnem delu. Od mojega zadnjega pisanja se je kar veliko dogajalo in zdi se mi da ni več dosti za narediti. Odločili smo se za direktno pot AD -> Xilinx XC9536XL CPLD -> FTDI. Dobili smo tudi zelo velikodušno pomoč s strani enega od profesorjev predvsem glede CPLD-ja, tako da mislim da problemov s sinhronizacijo ne bi smelo biti. V Xilinx bi šibalo tistih 12MHz iz ftdi-ja, v AD pa potem 3MHz (deljeno z dvema D flip flopoma), v skrajnem primeru 1.5MHz če bi se pojavljali problemi.
Res je - nikoli ne veš kaj si bo računalnik izmislil da ne bo dovolil prenosa podatkov, ampak tistih 375KB/s (ali 187.5 v drugem primeru) bo že zmozgal tistih par sekund prenašati. Saj ne bo to trajno merjenje.
Ena stvar, ki mi še ni čisto jasna in bi si želel malo pomoči, so kondenzatorji za decoupling. Za ftdi, ad in cpld je stvar bolj ali manj jasna ker so primeri v datasheetu. Razen tega ne vem, kje hudiča dobiti 10nF in 4.7uF elc ali tantal, po možnosti SMD? Naj poiščem večjega ali naj dam navadnega multilayer gor? Ali naj iščem ne-smd varianto? Zanima me tudi kako je z decouplingom za flip flop (fairchild CD74HCT74) - je potrebno tudi tu? Koliko - 100nF? Je še kaj podobnega na kar bi moral paziti?
Hvala,
lp matej

VolkD ::

Matej. ti kar SMD uporabi ! Če boš mel pa probleme s materialom, pa sam pošlji spisek ! Ni problema. Mam dovolj tudi za lotanje v onostranstvu :D :D
Preden zaspiš zapri oči. Preden zapreš oči, ustavi avto.

rebro ::

Pozdravljeni!

Jaz pa bi vprašal, če kdo dela od vas na tem projektu (seminarju):

http://www.fe.uni-lj.si/~zare/Predmeti/...

Kako daleč je že? Ali so kakšne večje težave...ITD

LP ... Robert

BluPhenix ::

Ne razumem, kaj te točno zanima. To, ali je kdo opravil/izdeluje seminarsko? Jaz bi jo moral zagovarjat verjetno naslednji teden. Nobenih problemov, recikliraš eno izmed ostalih seminarskih tuma/topič.

Sicer pa je to offtopic, če želiš o tem debatirat prosim odpri novo temo, bo bolj primerno.
Podpisa ni več, ker so me poskušali asimilirati.

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

USB mikrokontroler

Oddelek: Elektrotehnika in elektronika
51391 (1031) kihc
»

A/D-D/A Pretvornik

Oddelek: Elektrotehnika in elektronika
102146 (1843) 20sdfj093f
»

Kako uporabit LCD od nokie 3310 (strani: 1 2 )

Oddelek: Elektrotehnika in elektronika
638612 (5863) Ch4N93
»

Implementacija USB vodila za komunikacijo med PC in FPGA

Oddelek: Elektrotehnika in elektronika
81157 (1084) slawc
»

Priključitev mikrokrminlnika pic16f877 na USB vmesnik.

Oddelek: Elektrotehnika in elektronika
352544 (1988) _EN_

Več podobnih tem