เป็นไปได้ไหมที่จะรวม DAC 8 บิตสองตัวเข้าด้วยกันเพื่อสร้าง DAC 16 บิตหนึ่งไบต์ของคำ 16 บิตจะถูกส่งไปยังแต่ละอัน


16

สำหรับ DAC สองตัวหนึ่งตัวจะถูกส่ง D0-D7 และอีกตัวที่ถูกส่ง D8-D15 โดยที่แหล่งจ่ายไฟเป็น 5V หาก 5V ถูกเพิ่มเข้ากับเอาท์พุทของ DAC ที่ 2 จากนั้นจะรวมเอาสอง DAC เข้าด้วยกัน ประกอบด้วย DAC 8 บิตสองตัว

ปัญหาเดียวคือถ้า DAC ตัวที่สองมีอินพุต 0x00 การเพิ่ม 5V จำเป็นต้องถูกยกเลิกซึ่งฉันไม่แน่ใจว่าจะทำอย่างไร การสรุปสามารถทำได้โดยการรวมแอมป์ วงจรต้องการทำงานไม่เกิน 10 วินาทีของ kHz เท่านั้น

มีบางอย่างผิดปกติกับแนวคิดนี้หรือไม่


11
ไม่มีอะไรผิดปกติกับความคิดของคุณ แต่คุณจะต้องจัดการกับการออกแบบที่ซับซ้อน ประการแรกมันไม่ใช่เรื่องของการรวมผลลัพธ์ในสัญญาณแอนะล็อกเท่านั้น ก่อนที่จะสรุปคุณจะต้องขยาย MSB DAC ด้วยปัจจัย x256 เพราะแต่ละบิตของ MSB DAC นั้นเทียบเท่ากับ 256 บิตของ LSB DAC กว่าที่คุณจะต้องชดเชยค่านี้ในโวลต์แบบเต็ม LSB DAC กว่าที่คุณสามารถเพิ่มได้ทั้งคู่
PDuarte

7
ไม่ต้องพูดถึงเสียงบิดเบือนความสามารถในการจัดหา ...
PDuarte

4
ถ้ามันง่ายขนาดนั้นทุกคนจะทำ ... ในทางทฤษฎีใช่คุณสามารถรวม DAC สองตัวได้ (คุณต้องการการเพิ่มทวีคูณมากกว่าการเพิ่มเข้ามา) ตามจริงแล้วคุณจะไม่ไปใกล้ที่ 16 บิตเลย เพียงซื้อ 16 บิต DAC
uint128_t

2
การชดเชยเป็นสิ่งจำเป็นหากค่าคูณ 256x มีขนาดใหญ่เกินไป สมมติว่า 8 บิต DAC ให้ 1 โวลต์เต็มสเกล คูณด้วย 256 ให้ 256 V. ไม่จริง ;-) มันง่ายกว่าด้วย DAC ที่จ่ายกระแสไฟจากนั้นคุณสามารถเชื่อมต่อกระแสไฟขาออกแบบขนาน (หากมีโหลดที่จะรักษาแรงดันไฟฟ้าในค่าที่เหมาะสมพื้นดินเสมือนจริงหรือเช่นนั้น)
Bimpelrekkie

1
จะเกิดอะไรขึ้นถ้าแทนที่จะแบ่งสัญญาณออกเป็น 8 บิตด้านบนและล่างคุณจะใช้มันเป็นแบบโปรเกรสซีฟแบบสองรอบ (เช่นวิธีโปรเกรสซีฟ JPG หรือ PNG เรนเดอร์) ด้วย DAC1 ที่ให้ (ประมาณ) บิตเลขคู่และ DAC2 ครึ่งกำลังด้วยบิตอีกคี่ (อีกครั้งคร่าวๆ) คณิตศาสตร์จะยุ่ง แต่ฉันคิดว่าคุณสามารถรับความแม่นยำของสัญญาณได้ 15 บิต
ฟูบาร์

คำตอบ:


28

เป็นไปได้ แต่มันใช้งานไม่ได้

ประการแรกมีปัญหาในการรวมเอาท์พุททั้งสองเข้าด้วยกันโดยสเกลหนึ่งจะถูกปรับขนาดอย่างแม่นยำ 1/256 ของอีกอัน (ไม่ว่าคุณจะลดทอนทีละ 1/256 ให้ขยายอีกด้วย 256 หรือการจัดเรียงอื่นเช่น * 16 และ / 16 ไม่เป็นไร)

ปัญหาใหญ่ก็คือว่า DAC แบบ 8 บิตน่าจะมีความถูกต้องกับสิ่งที่ดีกว่า 8 บิต: มันอาจมีข้อกำหนด "DNL" ของ 1/4 LSB และข้อกำหนด "INL" ของ 1 / 2LSB สิ่งเหล่านี้เป็นข้อกำหนดจำเพาะแบบไม่เชิงเส้น "Differential" และ "Integral" และเป็นการวัดความใหญ่ของแต่ละขั้นตอนระหว่างรหัสที่อยู่ติดกัน (DNL ให้การรับประกันระหว่างสองรหัสที่อยู่ติดกัน INL ระหว่างสองรหัสในช่วงเต็มรูปแบบของ DAC)

ตามหลักการแล้วแต่ละขั้นตอนจะเป็น 1/256 ของค่าเต็มสเกลได้อย่างแม่นยำ แต่ข้อมูลจำเพาะ 1 / 4LSB DNL ระบุว่าขั้นตอนที่อยู่ติดกันอาจแตกต่างจากอุดมคติ 25% ซึ่งเป็นพฤติกรรมที่ยอมรับได้ใน DAC

ปัญหาคือว่าข้อผิดพลาด 0.25 LSB ใน MSB DAC ของคุณก่อให้เกิดข้อผิดพลาด 64 LSB (1/4 ของช่วงทั้งหมด) ใน LSB DAC ของคุณ!

กล่าวอีกนัยหนึ่ง DAC ขนาด 16 บิตของคุณมีความเป็นเส้นตรงและการบิดเบือนของบิต 10 DAC ซึ่งสำหรับแอปพลิเคชันส่วนใหญ่ของ 16 บิต DAC นั้นไม่สามารถยอมรับได้

ทีนี้ถ้าคุณสามารถหา DAC 8 บิตที่รับรองความถูกต้อง 16 บิต (INL และ DNL ดีกว่า 1/256 LSB) จากนั้นไปข้างหน้า: อย่างไรก็ตามพวกเขาไม่ประหยัดทางเศรษฐกิจดังนั้นวิธีเดียวที่จะได้รับคือการเริ่มต้น ด้วย DAC 16 บิต!

คำตอบอีกข้อเสนอแนะ "การชดเชยซอฟต์แวร์" ... การจับคู่ข้อผิดพลาดที่แน่นอนใน MSB DAC ของคุณและชดเชยให้กับพวกเขาด้วยการเพิ่มข้อผิดพลาดผกผันกับ LSB DAC: มีบางสิ่งที่วิศวกรเสียงในสมัยนั้น ..

ในระยะสั้นมันสามารถทำงานได้ในระดับหนึ่ง แต่ถ้า DAC แบบ 8 บิตที่มีอุณหภูมิหรืออายุ (อาจไม่ได้ออกแบบมาให้มีความเสถียรเป็นพิเศษ) การชดเชยจะไม่แม่นยำเพียงพอที่จะคุ้มค่า ความซับซ้อนและค่าใช้จ่าย


1
จุดของคุณเกี่ยวกับการดริฟท์เป็นสิ่งที่ดีและจะทำให้วิธีนี้ไม่สามารถทำได้เพื่อให้ได้ความแม่นยำ 20 บิตโดยการรวม DAC 8 บิตสองตัว ฉันคิดว่าการพยายามให้บิตที่ใช้ได้ 13-14 บิตจาก 2x8 เป็นไปได้อย่างไรก็ตาม
supercat

19

28=256

216=65536ค่าที่แตกต่าง

โปรดสังเกตว่าการคูณนั้นไม่ใช่การเพิ่ม (เช่นจะเกิดขึ้นเมื่อคุณรวมเอาท์พุท DAC สองบิต 8 บิต)

ถ้าฉันจะใช้ DAC สองบิต 8 บิตและรวมเอาท์พุทของพวกเขาค่าที่เป็นไปได้คืออะไร?

คำตอบ: 0, 1, 2, ... , 256, 257, 258, .... 511, 512 และนั่นแหละ!

DAC ขนาด 16 บิตสามารถทำ 0,1,2 ... , 65535, 65536 ที่มีมากขึ้น!

ในทางทฤษฎีเป็นไปได้ แต่คุณจะต้องคูณเอาท์พุทของหนึ่งใน 8 บิต DACs ด้วย256และเชื่อมต่อบิต LSB กับ 1x DAC และบิต MSB กับ 256x DAC แต่ไม่ต้องแปลกใจถ้าความแม่นยำและความเป็นเส้นตรงมีผล!


อืมฉันเห็นแล้ว ฉันไม่ได้ตระหนักว่า ...
quantum231

1
หากใช้ตัวคูณการคูณน้อยกว่า 256 ตัวอาจชดเชยความไม่เป็นเชิงเส้นในซอฟต์แวร์ ความแตกต่างที่ไม่ใช่เชิงเส้นอย่างน้อยเท่ากับขนาดขั้นตอนของ DAC ที่เล็กกว่า แต่อย่างใดอย่างหนึ่งที่ใช้ DAC 8 บิตสองบิตหนึ่งอาจจัดการ DAC แบบโมโนโทนิกแบบสมจริง 14 บิตถ้าใครสามารถกำหนดปัจจัยการชดเชยได้อย่างแม่นยำ
supercat

2
คุณสามารถคูณผลลัพธ์ของ DAC หนึ่งตัวด้วย 257/256 และหาผลรวมถ้าคุณสนุกกับความท้าทายทางคณิตศาสตร์ในการหาค่าที่จะส่งไปที่ DAC ตัวใดเพื่อรับผลรวมที่กำหนด มิฉะนั้น callenges ก็เหมือนกัน :)
hobbs

@ ฮอบส์: ฉันไม่คิดว่ามันใช้งานได้ดี หากหนึ่ง DAC เอาท์พุท 0 ถึง 65280 ในขั้นตอนที่ 256 และอีก 0 ถึง 65535 ในขั้นตอนที่ 257 หนึ่งจะสามารถบรรลุค่าผลลัพธ์ทั้งหมดระหว่าง 65280 และ 65535 แต่จะไม่สามารถบรรลุได้ในช่วง ระหว่างเช่น 32639 และ 32768 นั่นไม่ได้ดีไปกว่า DAC แบบ 8 บิตเดียว
supercat

@supercat คุณพูดถูกฉันปุยคณิตศาสตร์ ฉันคิดว่ามีเวอร์ชันที่ใช้งานได้ถ้าคุณสามารถลบได้ แต่มันก็ไม่ได้เหมือนที่ฉันเขียนไว้ ส่วนใหญ่แล้วจะเป็นการพยายามที่จะมีอารมณ์ขัน แต่อย่างใด
ฮอบส์

6

เทคนิคนี้สามารถใช้งานได้หากแรงดันไฟฟ้าเต็มรูปแบบของ DAC "ภายใน" มีขนาดใหญ่กว่าขนาดขั้นตอนของ DAC ด้านนอกและมีวิธีการหนึ่งที่แม่นยำ (แม้ว่าไม่จำเป็นต้องรวดเร็ว) การวัดแรงดันเอาต์พุตที่สร้างขึ้นโดยเอาท์พุท การปรับความเป็นเส้นตรงที่เหมาะสมในซอฟต์แวร์ หากแรงดันไฟฟ้าเต็มรูปแบบของ DAC ภายในอาจน้อยกว่าขนาดขั้นตอนที่เลวร้ายที่สุดระหว่างแรงดันไฟฟ้าสองตัวที่ DAC ด้านนอก (โดยคำนึงถึงว่าขั้นตอนนั้นไม่ค่อยเหมือนกันอย่างสมบูรณ์) อาจมีแรงดันไฟฟ้าที่ไม่สามารถรับได้ การรวมกันของค่า Inner- และ Outer-DAC หากมีใครแน่ใจว่ามีการทับซ้อนกันในช่วงอย่างไรก็ตามการใช้การแก้ไขเชิงเส้นของซอฟต์แวร์สามารถเปิดใช้งานผลลัพธ์ที่ดี

BTW, การออกแบบชิป Cypress PSOC เก่า (ฉันไม่รู้เกี่ยวกับตัวใหม่กว่า) เลียนแบบ DAC แบบเก้าบิตโดยใช้ DAC แบบหกบิตสองตัวซึ่งจะถูกปรับสเกลให้สัมพันธ์กัน ไม่ได้ใช้การแก้ไขเชิงเส้นของซอฟต์แวร์ แต่พยายามเพิ่มความแม่นยำสามบิตใน DAC หกบิตเท่านั้น การพยายามเพิ่มความแม่นยำมากกว่า 3-4 บิตให้กับ DAC ทุกประเภทโดยไม่ใช้การชดเชยซอฟต์แวร์อาจไม่ทำงานได้ดีนัก


4

21 ปีที่แล้วเมื่อฉันเป็นนักศึกษาวิทยาลัยแย่ (และสามารถซื้อ DAC ได้เพียง 8 บิต) ฉันใช้เทคนิคนี้เพื่อรวม DAC สองบิต 8 บิตเข้ากับ DAC บิตที่สูงขึ้นเพราะรู้ว่าฉันจะไม่ได้ความแม่นยำ 16 บิตเพราะ ของ ไม่เชิงเส้นหนึ่ง (INL)และอนุพันธ์ไม่เชิงเส้น (DNL). DNL บน DAC ไบต์ที่สำคัญที่สุดคือฆาตกรในกรณีนี้ หากคุณมี INL ผลลัพธ์ที่ได้จะผิดเพี้ยน แต่ก็ยังคงราบรื่น DNL บอกขนาดจากหนึ่งขั้นตอน DAC ไปยังขั้นตอนถัดไปและถ้ามันมีความแตกต่างกันมากพอคุณจะเห็นความไม่ต่อเนื่องหรือการย้อนกลับเมื่อข้ามขอบเขต 8 บิต: 0x07ff <-> 0x0800 เช่น MSB DAC เปลี่ยนจาก 0x07 <-> 0x08 อาจเปลี่ยนไม่ได้โดยการนับ 256 อุดมคติของ LSB DAC แต่โดย 384 นับหรือ 128 นับ (± 1/2 ของบิตที่มีนัยสำคัญน้อยที่สุดของตัวเอง) DAC ที่ดีจะมีเพียง 1/2 LSB DNL, ​​DAC ปานกลางจะแย่กว่า DNL ถึงแม้ว่ามันจะให้ความละเอียดที่สูงกว่าได้ยากขึ้นดังนั้นมันจึงควรหา 1/2 LSB DNL ใน DAC แบบ 8 บิต แต่ไม่ ใน DAC แบบ 16 บิต

ฉันจำไม่ได้ว่าความละเอียดที่ได้ผลในกรณีของฉันคืออะไรอาจเป็น 12 หรือ 13 บิตและฉันต้องปรับจูนของด่านที่ 2 ด้วยตนเองด้วยโพเทนชิออมิเตอร์


2

ฉันเคยเห็นสิ่งนี้ในทางปฏิบัติกับเครื่องตรวจจับรังสี UVLC ของ HP เพื่อเพิ่มช่วงไดนามิก DAC หนึ่งในนั้นถูกออฟเซ็ตตามจำนวนที่ต้องการ พูดถึง DAC คันที่ 1 ตั้งแต่ 0 ถึง 10 V และตัวที่สองจะจัดการกับ 10 ถึง 20 โวลต์


1
สิ่งนี้จะไม่เพิ่มเพียงหนึ่งบิตหรือไม่?
Szidor

ใช่นี่เพิ่มเพียงหนึ่งบิต อย่างไรก็ตามในแง่เสียงมันสามารถประนีประนอมที่ประสบความสำเร็จมาก DAC ที่ "ตรง" มีปัญหาขนาดใหญ่ที่ระดับครึ่งซึ่งสวิตช์ 16 บิตทั้งหมดพร้อมกัน - สวิตช์ MSB เปิดสวิตช์อื่น ๆ ทั้งหมดปิดและนั่นคือข้อผิดพลาด DNL ที่ใหญ่ที่สุดเดียว ในสัญญาณเสียงข้อผิดพลาดที่ใหญ่ที่สุดนี้ก็คือในสถานที่ที่เลวร้ายที่สุดเช่นการข้ามศูนย์ - ทำลายแม้แต่เสียงที่เงียบที่สุด ตอนนี้ถ้า DAC หนึ่งตัวจัดการสัญญาณเชิงบวกและอีกตัวหนึ่งจัดการกับสัญญาณเชิงลบคุณสามารถหลีกเลี่ยงปัญหานี้ได้ทั้งหมด PCM-63 DAC ที่โด่งดังในตำนานใช้วิธีนี้อย่างดี
Brian Drummond

1

เป็นไปได้และมันเคยทำมาก่อน ดูการใช้งานที่ยอดเยี่ยมนี้ที่ EDN.com http://www.edn.com/design/analog/4329365/Combine-two-8-bit-outputs-to-make-one-16-bit-DAC


โปรดแก้ไขคำตอบนี้อย่างน้อยก็เพื่อสรุปข้อมูลในลิงค์ คำตอบที่เป็นแบบลิงก์เท่านั้นที่จะขมวดคิ้วเนื่องจากลิงก์มักจะตาย
Bort

0

ฉันมีสิ่งที่ต่างออกไป ... เพียงแค่ใช้ 8 บิต DAC คุณบอกว่ามันต้องใช้งานได้เพียงไม่กี่ Hz เท่านั้นดังนั้นคุณสามารถใช้ DAC เพียงอันเดียว (ซึ่งอาจทำงานได้สูงถึง 100kHz) และใช้เป็นโมดูเลเตอร์ แนวคิดพื้นฐานคือการส่งออก 256 รอบของค่า MSB รวมทั้งค่าสถานะการล้น / นำหนึ่งบิตจากตัวสะสม 8 บิตซึ่ง LSB ถูกเพิ่มเข้าไปในแต่ละรอบ คุณได้รับ MSB สูงสุดเป็น 254 เพียงเพราะบิตการมอดูเลต 'พิเศษ' จาก LSB แต่มันไม่ได้ลดช่วงลงมากนัก

ตัวอย่าง: หากคุณเรียกใช้รอบที่ 30kHz, 256 รอบทำซ้ำที่ 117Hz ดังนั้นคุณสามารถใส่ตัวกรอง low-pass 50Hz บนเอาต์พุตสำหรับสัญญาณที่ราบรื่นและแม่นยำซึ่งสามารถทำงานได้ตามอัตราที่คุณต้องการ

ความแม่นยำของวิธีการนี้ขึ้นอยู่กับขนาดของบิตสเต็ปค่อนข้างมาก แต่ไม่มากไปกว่าวิธีอื่น ๆ ฉันใช้มันเพื่อสร้างแรงดันอ้างอิงในอดีตและใช้งานได้ดีอย่างน่าประหลาดใจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.