Kysymys:
Onko mahdollista yhdistää kaksi 8-bittistä DAC: ia yhdessä 16-bittisen DAC: n luomiseksi, jokaiselle lähetetään yksi tavu 16-bittisestä sanasta
quantum231
2016-03-08 21:32:24 UTC
view on stackexchange narkive permalink

Kahden DAC: n kohdalla, joista toiselle lähetetään D0-D7 ja toiselle D8-D15, virtalähteen ollessa 5 V, jos toisen DAC: n lähtöön lisätään 5 V ja sitten kaksi DAC-lähtöä summataan, pitäisi johtaa 16-bittinen DAC, joka koostuu kahdesta 8-bittisestä DAC: sta.

Ainoa ongelma on, että jos toisessa DAC: ssa on 0x00-tulo, 5 V: n lisäys on peruutettava, mistä en ole varma miten se tehdään. Yhteenveto voidaan tehdä summaamalla vahvistin. Piirin on toimittava vain muutamassa 10 kHz: ssä.

Onko tässä ideassa jotain perustavaa laatua?

Ideassasi ei ole mitään vikaa, mutta sinun on käsiteltävä suhteellisen monimutkaista suunnittelua.Ensinnäkin kyse ei ole pelkästään tulosten yhteenlaskemisesta analogisessa signaalissa.Ennen summaa sinun on vahvistettava MSB DAC -kerroin x256, koska kukin MSB DAC -bitti vastaa 256 bittiä LSB DAC: ää.Sinun ei tarvitse korvata tätä arvoa LSB DAC: n täysimittaisjännitteissä, kuin voit lisätä molemmat.
Puhumattakaan melusta, vääristymistä, syöttökyvystä ...
Jos se olisi niin helppoa, kaikki tekisivät sen ... Teoreettisesti kyllä, voit yhdistää kaksi DAC: ää (tarvitset kuitenkin kertolasku lisäämisen sijaan).Realistisesti, et aio päästä lähellekään 16 bittiä, suorituskykyisesti.Osta vain 16-bittinen DAC.
@PDuarte Onko korvaaminen todella tarpeen?Tapa, jolla näen sen, vain 256 voitto MSB DAC: lle, jota seuraa lisääminen, pitäisi tehdä se.(ja olen samaa mieltä siitä, että suunnittelulla olisi ongelmia 16-bittisen "uskollisuuden" saavuttamiseksi)
Tasausta tarvitaan, jos 256x kerrottu arvo muuttuu liian suureksi.Oletetaan, että 8-bittiset DAC: t antavat 1 voltin täyden asteikon.Kerro se 256: lla, jolloin saadaan 256 V. Ei niin käytännöllinen ;-).Se on helpompaa, kun DAC syöttää virtaa, sitten voit yksinkertaisesti liittää virtalähdöt rinnakkain (edellyttäen, että on kuormitus, joka pitää jännitteen oikealla arvolla, virtuaalinen maa tai vastaava).
Entä jos signaalin jakamisen ylemmäksi ja alimmaksi 8 bitiksi sijaan toteutat sen kaksivaiheisena progressiivisena likiarvona (kuten tapa, jolla progressiivinen JPG tai PNG renderoidaan), DAC1 tarjoaa (karkeasti) parilliset bitit ja DAC2 käynnissäpuoli tehoa (jälleen karkeasti) parittomilla biteillä.Matematiikka olisi sotkuista, mutta mielestäni voit saada siitä 15 bittiä signaalin tarkkuutta.
@FooBar En ymmärrä miten se toimisi, ellei sinulla olisi 16-bittistä digitaalista prosessoria tekemään "sotkuinen" matematiikka lopussa.Vain parillisten bittien käsittely ei anna sinulle hyvää likiarvoa signaalista.(Esim. Jakamalla 1010 osaksi 11 ja 00 vie 60%: sta 100%: iin + 0%.) Jos haluat puolittaa bittien lukumäärän ja saada likiarvon, pudotat ne lopusta: paras analoginen progressiivinen kuvan mallinnuson juuri sitä, mitä alun perin ehdotettiin.
@SarahG Etkö 'painoisi' parittomia numeroita 66 prosentilla ja parillisilla 33 prosentilla?Tarkoitan, että pariton dac-lähtö edistäisi 66% signaalista ja jopa 33%.Ehkä minulta puuttuu jotain, mutta kun tämä otetaan huomioon, esimerkkisi antaisi oikean tuloksen. Jopa 16 bittiä: 1010101010101010 = 43690 ja 43690/65535 = 66,66%
@RichardSmith Kokeile melkein mitä tahansa muuta numeroa.Esimerkiksi 0000000011110000 = 240. 240/65535 = 0,0037.Molemmat puolikkaat jakautuvat muotoon 00001100 = 12. 12/255 = 0,047.Tässä esimerkissä tulos on poissa suuruusluokasta.
Seitsemän vastused:
Brian Drummond
2016-03-08 22:43:55 UTC
view on stackexchange narkive permalink

Se on mahdollista, mutta se ei toimi hyvin.

Ensinnäkin on ongelma yhdistää nämä kaksi lähtöä siten, että toinen skaalataan tarkalleen 1/256 toisesta. (Olipa vaimennus yksi 1/256, vahvistetaan toinen 256: lla tai jokin muu järjestely, esimerkiksi * 16 ja / 16, ei ole väliä).

Suuri ongelma on kuitenkin se, että 8 -bittinen DAC on todennäköisesti tarkka jonkin verran kuin 8 bittiä: sillä voi olla "DNL" -määritys 1/4 LSB ja "INL" -määritys 1 / 2LSB. Nämä ovat epälineaarisuuserot "Differential" ja "Integral" ja mittaavat kuinka suuri kukin vierekkäisten koodien välinen vaihe on. (DNL tarjoaa takuun kahden vierekkäisen koodin välillä, INL minkä tahansa kahden koodin välillä DAC: n kaikilla alueilla).

Ihannetapauksessa kukin vaihe olisi tarkalleen 1/256 koko asteikon arvosta; mutta 1 / 4LSB DNL -määritys osoittaa, että vierekkäiset vaiheet voivat poiketa ihanteellisesta 25% - tämä on normaalisti hyväksyttävää käyttäytymistä DAC: ssa.

Ongelmana on, että MSB DAC: n 0,25 LSB-virhe aiheuttaa 64 LSB-virhe (1/4 koko alueesta) LSB DAC -laitteessasi!

Toisin sanoen, 16-bittisellä DAC-laitteellasi on lineaarisuus ja vääristymä 10-bittisessä DAC: ssä, joka useimmille 16 bittiä DAC, ei voida hyväksyä.

Jos löydät nyt 8-bittisen DAC: n, joka takaa 16-bittisen tarkkuuden (INL ja DNL ovat parempia kuin 1/256 LSB), jatka sitten: mutta niiden valmistaminen ei ole taloudellista, joten ainoa tapa saada se on aloittaa 16-bittisellä DAC: lla!

Toinen vastaus ehdottaa "ohjelmistokorjausta" ... kartoittamaan tarkat virheet MSB DAC: ssä ja kompensoimaan ne lisäämällä käänteinen virhe LSB DAC: jotain, mitä ääniinsinöörit miettivät pitkään päivinä, jolloin 16-bittiset DAC: t olivat kalliita ...

Lyhyesti sanottuna se voidaan saada toimimaan jossain määrin, mutta jos 8-bittinen DAC ajautuu lämpötilan tai iän mukaan (sitä ei todennäköisesti ole suunniteltu erittäin vakaana), kompensointi ei ole enää tarpeeksi tarkka, jotta se olisi monimutkaisuuden ja kustannusten arvoinen.

Sinun mielipiteesi ajautumisesta on hyvä ja tekisi tästä menetelmästä epäkäytännöllisen yrittää saada esimerkiksi20-bittinen tarkkuus yhdistämällä kaksi 8-bittistä DAC: ta.Luulisin, että yrittää saada 13-14 käyttökelpoista bittiä 2x8: sta olisi kuitenkin mahdollista.
Bimpelrekkie
2016-03-08 21:49:13 UTC
view on stackexchange narkive permalink

8-bittinen DAC voi tuottaa \ $ 2 ^ 8 = 256 \ $ erilaisia ​​arvoja.

16-bittinen DAC voi tuottaa \ $ 2 ^ {16} = 65536 \ $ erilaisia ​​arvoja.

Huomaa kuinka tämä lisääntyy, se ei ole lisäys (kuten tapahtuisi, kun summataan kahden 8-bittisen DAC: n lähdöt).

Jos ottaisin kaksi 8-bittistä DAC: ta ja summattaisin niiden tuotokset, ovatko mahdolliset arvot?

Vastaus: 0, 1, 2, ..., 256, 257, 258, .... 511, 512 ja siinä kaikki!

A 16 bitti DAC voi tehdä 0,1,2 ..., 65535, 65536, se on paljon enemmän!

Teoreettisesti on mahdollista, mutta sitten sinun on kerrottava yksi 8-bittisistä DAC: ista tarkalleen 256 ja liitä LSB-bitit 1x DAC: iin ja MSB-bitit 256x DAC: iin. Mutta älä ihmettele, jos tarkkuus ja lineaarisuus kärsivät!

Hmm näen.En tajunnut, että ...
Jos käytetään kerrointa, joka on pienempi kuin 256, voidaan sitten kompensoida epälineaarisuus ohjelmistossa.Differentiaalinen epälineaarisuus on vähintään yhtä suuri kuin pienemmän DAC: n askelkoko, mutta kahta 8-bittistä DAC: ia käyttävä voi hallita realistisesti yksitoikkoista 14-bittistä DAC: ta, jos pystytään määrittämään tarkasti sovellettavat kompensointikertoimet
Voit myös kertoa yhden DAC: n tuotoksen 257/256: lla ja summata ne, jos nautit matemaattisesta haasteesta selvittää, mitkä arvot lähetetään mihin DAC: hen saadaksesi tietyn kokonaistuloksen.Muuten, kutsuja ovat samat :)
@hobbs: En usko, että se toimii.Jos yksi DAC tuottaa 0-65280 vaiheissa 256 ja muut 0-653535 vaiheissa 257, pystyy saavuttamaan kaikki lähtöarvot välillä 65280-65535, mutta ei pysty saavuttamaan mitään alueellavälillä esim32639 ja 32768. Se ei todellakaan toimi paljon paremmin kuin yksi 8-bittinen DAC.
@supercat olet oikeassa, hermostin matematiikkaa.Mielestäni on olemassa versio, joka toimii, jos voit mennä negatiiviseksi, mutta se ei toimi samalla tavalla kuin kirjoitin sen.Oli enimmäkseen huumoriyritys joka tapauksessa.
supercat
2016-03-08 22:17:07 UTC
view on stackexchange narkive permalink

Tekniikka on käyttökelpoinen, jos "sisäisen" DAC: n koko asteikon jännite on suurempi kuin ulomman DAC: n askelkoko ja jolla on keino mitata tarkasti (vaikkakaan ei välttämättä nopeasti) eri lähtöjen tuottamat lähtöjännitteet koodit ja soveltuvien lineaarisuussäätöjen soveltaminen ohjelmistoihin. Jos sisäisen DAC: n täysimittainen jännite saattaa olla pienempi kuin pahimman tapauksen askelkoko ulomman DAC: n kahden jännitteen välillä (pitäen mielessä, että vaiheet ovat harvoin täysin tasaisia), voi olla jännitteitä, joita ei voida saavuttaa millään sisäisen ja ulkoisen DAC-arvojen yhdistelmä. Jos kuitenkin varmistetaan, että alueet ovat päällekkäisiä, ohjelmiston lineaarisuuden korjaus voi antaa hyviä tuloksia.

BTW, vanha Cypress PSOC -piirisuunnittelu (en tiedä uudemmista), jäljittelee yhdeksänbittinen DAC käyttäen kahta kuusibittistä DAC: ää, jotka on skaalattu toisiinsa nähden. Se ei käytä ohjelmiston lineaarisuuden korjausta, mutta se yrittää lisätä vain kolme bittiä tarkkuutta kuusibittiseen DAC: iin. Yritä lisätä yli 3-4 bittiä tarkkuutta mihin tahansa DAC: iin ilman ohjelmistokompensointia, ei todennäköisesti toimi kovin hyvin.

Jason S
2016-03-09 19:50:00 UTC
view on stackexchange narkive permalink

21 vuotta sitten, kun olin huono opiskelija (ja minulla oli varaa vain 8-bittisiin DAC: iin), käytin tätä tekniikkaa yhdistämällä kaksi 8-bittistä DAC: ta korkeamman bittiseksi DAC: ksi tietäen, että en saisi 16 bittiä tarkkuus integraalisen epälineaarisuuden (INL) ja differentiaalisen epälineaarisuuden (DNL) vuoksi. Merkittävimmän tavun DAC: n DNL on tappaja tässä tapauksessa; jos sinulla on INL, lähtö on vääristynyt, mutta silti tasainen. DNL sanelee koon DAC-vaiheesta toiseen, ja jos se vaihtelee tarpeeksi, näet epäjatkuvuuksia tai käänteisiä ylittäessäsi 8-bittisiä rajoja: esimerkiksi 0x07ff <-> 0x0800, kun MSB DAC muuttuu 0x07 <-> 0x08, se ei ehkä muutu LSB DAC: n ihanteellisilla 256 lukumäärällä, vaan 384 tai 128 laskennalla (± 1/2 omasta vähiten merkitsevästä bitistä). Hyvällä DAC: lla on vain 1/2 LSB DNL, ​​keskinkertaisella DAC: lla on huonompi DNL, ​​vaikka se on vaikeampaa, sitä suurempi resoluutio on, joten 1/2 LSB DNL: n löytämisen 8-bittisestä DAC: sta pitäisi olla melko helppoa, mutta ei 16-bittisessä DAC: ssa.

En muista, mikä tehollinen resoluutio oli minun tapauksessani, ehkä 12 tai 13 bittiä, ja minun piti virittää toisen vaiheen vahvistus manuaalisesti potentiometrillä.

purza
2016-03-09 08:54:04 UTC
view on stackexchange narkive permalink

Olen nähnyt tämän käytännössä HPLC-UV-detektorilla dynaamisen alueen lisäämiseksi. Yksi DAC: ista kompensoidaan tarvittavalla määrällä. Sano ensimmäinen DAC-kahva 0-10 V ja toinen kahva 10-20 volttia.

Eikö tämä lisäisi vain yhtä bittiä?
Kyllä, tämä lisää vain yhden bitin.Äänen kannalta se voi kuitenkin olla erittäin onnistunut kompromissi."Suoralla" DAC: lla on valtava ongelma puolitaajuudella, jossa kaikki 16 bittiä kytkeytyvät kerralla - MSB kytkeytyy päälle, kaikki muut sammuvat, ja siellä on suurin yksittäinen DNL-virhe.Äänisignaalissa tämä suurin virhe on myös pahimmassa mahdollisessa paikassa - nolla ylitys - vioittamalla hiljaisimmatkin äänet.Jos yksi DAC käsittelee positiivisia signaaleja ja toinen negatiivisia signaaleja, voit välttää tämän ongelman kokonaan.Legendaarinen Burr-Brown PCM-63 DAC hyödynsi tätä hienosti.
Peter
2017-05-08 17:57:18 UTC
view on stackexchange narkive permalink

Se on mahdollista ja se on tehty aiemmin.Katso tämä erinomainen toteutus osoitteessa EDN.com http://www.edn.com/design/analog/4329365/Combine-two-8-bit-outputs-to-make-one-16-bit-DAC

Muokkaa tätä vastausta ainakin tiivistääksesi linkin tiedot.Vain linkkivastauksia paheksutaan, koska linkit kuolevat usein.
Simon Tillson
2016-03-09 19:41:34 UTC
view on stackexchange narkive permalink

Minulla on erilainen otos siitä ... Käytä vain yhtä 8-bittistä DAC: tä. Mainitsit, että sen on toimittava vain muutamassa 10 s: ssä Hz, joten voit käyttää vain yhtä DAC: ää (joka voi todennäköisesti toimia jopa 100 kHz: n taajuudella) ) ja käytä sitä modulaattorina. Perusajatuksena on tuottaa 256 sykliä MSB-arvosta plus yhden bittinen ylivuoto / kantolippu 8-bittisestä akusta, johon LSB lisätään joka sykli. Saat vain 254 suurimmaksi MSB: ksi LSB: n ylimääräisen 'moduloivan bitin' takia, mutta tämä ei vähennä aluetta paljon.

Esimerkki: Jos suoritat jakson 30 kHz: llä, 256 jaksoa toistuvat 117 Hz: n taajuudella, joten voit laittaa 50 Hz: n alipäästösuodattimen lähtöön melko tasaiselle ja tarkalle signaalille, joka voi toimia vaaditulla nopeudella.

Tämän menetelmän tarkkuus riippuu melko paljon bittivaiheiden koosta, mutta enempää kuin mikään muu menetelmä, olen käyttänyt sitä vertailujännitteen tuottamiseen aiemmin, ja se toimii yllättävän hyvin.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...