Szia János!
A DAC-ok a PCM jelet 16 bites számok formájában, sorosan kapják a bemenetükre. Mivel a jeltartomány pozitív és negatív értékei is le vannak képezve, ezért a számértékek is pozitív és negatív tartományúak. Valójában a 16 bit-es adat +-15bit-es, előjeles egész szám alakban érkezik a bemenetre. Ezt akarod, még digitális szám formájában meginvertálni, hogy az ellenfázisú jelet egy másik DAC csippel elő tudjad állítani, ha jól értem. Az analóg megoldásoknál ez szerintem is sokkal korrektebb.
Ez esetben a jelfolyam kettes-komplemens értékeit kellene előállítanod, ami sajnos tényleg nem egyszerű dolog, a következők miatt.
A DAC-ok az adatokat legtöbbször MSB first sorrendben kapják. A bitfolyamból a kettes-komplemens előállítására létezik soros algoritmus, ami neked pont jó lenne, de ez értelem szerűen az LSB felől működik csak. A CS8414-nek van MSB last üzemmódja, ez azonos az LSB first-el. Ebbe az üzemmódba állítva elvileg így kiadja az adatokat és átkódolható.
A kapcsolás nem túl bonyolult, a CLK a BCLK, az adatsor végén az LRCLK lefutó élével kell törölni a flip-flop-ot (RST).
Csatolmány:
2's complement_sch.png [ 22.14 KiB | Megtekintve 8495 alkalommal. ]
A kódoló viszont jelkésleltetést visz a rendszerbe, ezért ritkán használják így.
GA2 által küldött rajz szerintem jó, azt kellene kipróbálni. Ez csak egyes-komplemenst állít elő, aminek az a baja, hogy lesz +0 és -0 is (0000 = +0, 1111= -0). Ez egy bit eltolást fog jelenteni a negatív tartományban, de szerintem ezt nem lehet észrevenni a hangban.
A rajzon 7486-os antivalencia kapukat használnak. Ezek felhasználhatók programozható inverterként. Az U9A kapu nem invertál, mivel 1-es lába a földön van. Ugyanígy nem invertál U9C, U9D, ezek is csak a jelkésleltetés elkerülése miatt kerültek beépítésre. Az egyes-komplemens jelhez az invertálást az U9B kapu végzi (5. láb tápon). Az erre kapcsolt DAC csip kimenetén lesz fázis fordított analóg jel.
Ha tudok még segíteni, írj!
Attila