ฉันมี 14 บิตADC อย่างไรก็ตามการดูแผ่นข้อมูล (ดูตารางที่ 2 ในหน้า 5) จำนวนบิตที่มีประสิทธิภาพ (ENOB) จะน้อยกว่า 12 บิตเสมอ
ทำไม DAC ของฉันที่อ้างว่าเป็น ADC แบบ 14 บิตเมื่อมันมีความแม่นยำ 12 บิตเท่านั้น อะไรคือจุดที่มีสองบิตพิเศษหากไม่มีความหมาย?
ฉันมี 14 บิตADC อย่างไรก็ตามการดูแผ่นข้อมูล (ดูตารางที่ 2 ในหน้า 5) จำนวนบิตที่มีประสิทธิภาพ (ENOB) จะน้อยกว่า 12 บิตเสมอ
ทำไม DAC ของฉันที่อ้างว่าเป็น ADC แบบ 14 บิตเมื่อมันมีความแม่นยำ 12 บิตเท่านั้น อะไรคือจุดที่มีสองบิตพิเศษหากไม่มีความหมาย?
คำตอบ:
คุณไผ่แล้ว!
14-bit เป็นการพูดทางการตลาดและฮาร์ดแวร์ก็ให้สิ่งนั้นกับคุณดังนั้นพวกเขาจะบอกว่าคุณไม่มีอะไรจะบ่น เหนือ ENOB ในแผ่นข้อมูลจะให้หมายเลข SINAD (สัญญาณเสียงรบกวนและความผิดเพี้ยน) นั่นคือ 72 เดซิเบลและ 1 บิตสอดคล้องกับระดับ 6 เดซิเบลดังนั้น 72 เดซิเบลคือ 12 บิต บิตต่ำสุดที่ 2 คือสัญญาณรบกวน
เป็นไปได้ที่จะดึงข้อมูลที่ต่ำกว่าพื้นเสียงรบกวน แต่ต้องการความสัมพันธ์ที่ดีมากซึ่งหมายความว่าจะต้องสามารถคาดเดาได้มาก
สมมติว่ามีความประสงค์ที่จะวัดแรงดันไฟฟ้าคงที่ให้แม่นยำที่สุดโดยใช้ ADC ที่จะคืนค่า 8 บิตสำหรับการวัดแต่ละครั้ง สมมติเพิ่มเติมว่ามีการระบุ ADC เพื่อให้มีการส่งคืนรหัสของ N สำหรับแรงดันไฟฟ้าระหว่าง (N-0.5) / 100 และ (N + 0.5) / 100 โวลต์ (เช่นเช่นรหัส 47 จะเป็นตัวแทนบางอย่างระหว่าง 0.465 และ 0.475 โวลต์) สิ่งใดที่เราต้องการให้มีเอาต์พุต ADC หากป้อนแรงดันไฟฟ้าคงที่ที่ 0.47183 โวลต์อย่างแม่นยำ
หาก ADC ส่งออกค่าที่แสดงถึงช่วงที่กำหนดไว้ข้างต้นซึ่งอินพุตตก (47 ในกรณีนี้) เสมอดังนั้นไม่ว่าจะใช้การอ่านจำนวนเท่าใดค่าจะปรากฏเป็น 47 การแก้ไขสิ่งที่ดีกว่านั้น เป็นไปไม่ได้
สมมติว่า ADC ถูกสร้างขึ้นเพื่อให้มีการเพิ่มค่า "dither" แบบกระจายตรงจาก -0.5 ถึง +0.5 ในการอ่านแต่ละครั้งก่อนที่จะแปลงเป็นจำนวนเต็ม? ภายใต้สถานการณ์นั้นแรงดันไฟฟ้า 47.183 โวลต์จะส่งกลับค่าการอ่าน 48, ประมาณ 18.3% ของเวลาและค่า 47 อีก 81.7% ของเวลา หากมีใครคำนวณค่าเฉลี่ยของการอ่าน 10,000 คนเราควรคาดหวังว่ามันจะประมาณ 47.183 เนื่องจากการสุ่มนั้นอาจสูงกว่าหรือต่ำกว่าเล็กน้อย แต่ควรอยู่ใกล้มาก โปรดทราบว่าหากใช้เวลาในการอ่านมากพออาจมีความแม่นยำในระดับที่คาดหวังแม้ว่าแต่ละบิตเพิ่มเติมจะต้องการจำนวนการอ่านมากกว่าสองเท่า
การเพิ่ม dithering ที่กระจายแบบเชิงเส้นหนึ่ง LSB อย่างแม่นยำจะเป็นพฤติกรรมที่ดีมากสำหรับ ADC น่าเสียดายที่การใช้พฤติกรรมดังกล่าวนั้นไม่ใช่เรื่องง่าย ถ้า dithering ไม่กระจายเชิงเส้นหรือถ้าขนาดไม่แม่นยำ LSB จำนวนจริงที่ได้จากการหาค่าเฉลี่ยจะถูก จำกัด อย่างรุนแรงไม่ว่าจะใช้ตัวอย่างจำนวนเท่าใด หากแทนที่จะเพิ่มการสุ่มเชิงเส้นตรงกระจาย LSB หนึ่งรายการหนึ่งจะเพิ่มมูลค่าของ LSB หลายรายการการบรรลุระดับความแม่นยำที่กำหนดจะต้องใช้การอ่านมากกว่าที่จะต้องใช้การสุ่มในอุดมคติหนึ่ง LSB แต่การ จำกัด ขั้นสูงสุดสำหรับความแม่นยำที่สามารถทำได้ โดยการอ่านจำนวนโดยพลการจะมีความไวน้อยกว่าความไม่สมบูรณ์ในแหล่งที่มา dithering
โปรดทราบว่าในบางแอปพลิเคชันจะเป็นการดีที่สุดที่จะใช้ ADC ซึ่งไม่ทำให้เกิดผลลัพธ์ โดยเฉพาะอย่างยิ่งในสถานการณ์ที่มีใครสนใจสังเกตการเปลี่ยนแปลงของค่า ADC มากกว่าค่าที่แม่นยำ หากการแก้ไขความแตกต่างอย่างรวดเร็วระหว่าง +3 หน่วย / ตัวอย่างและอัตราการเพิ่มขึ้น +5 หน่วย / ตัวอย่างมีความสำคัญมากกว่าการรู้ว่าแรงดันไฟฟ้าคงที่เป็นแม่นยำ 13.2 หรือ 13.4 หน่วย ADC ที่ไม่เบี่ยงเบนอาจจะดีกว่า ซ่องหนึ่ง ในทางกลับกันการใช้ ADC แบบ dithering อาจมีประโยชน์หากใครต้องการวัดสิ่งต่าง ๆ ได้แม่นยำกว่าการอ่านเพียงครั้งเดียว
บทเรียนโบนัส: จริงๆคุณจะได้รับ 14 บิตของความแม่นยำแต่เพียง 12 บิตของความถูกต้อง
ข้อแม้เพิ่มเติม ... บางครั้งคุณจริงต้องการสุ่ม
ตัวอย่างเช่น:
ในแอปพลิเคชันเข้ารหัส (ความปลอดภัย / ความถูกต้อง) จำเป็นต้องใช้การสุ่มแบบ "ไม่สามารถคาดเดาได้" ได้อย่างแท้จริง การใช้ LSB ของตัวแปลงสัญญาณ (ด้านล่างเสียงรบกวน) เป็นวิธีที่รวดเร็วในการสร้างตัวเลขสุ่มอย่างหมดจด
เมื่อฮาร์ดแวร์ ADC พร้อมใช้งานสำหรับวัตถุประสงค์อื่น (เซ็นเซอร์และอื่น ๆ ) มันเป็นวิธีที่รวดเร็วและง่ายดายในการเริ่มต้นการสื่อสารที่ปลอดภัย คุณสามารถปรับปรุงเอฟเฟกต์ได้โดยการเพิ่มกำไรจากแอมพลิฟายเออร์อินพุตให้สูงสุด (ข้อเสนอของ MCU หลายตัวเช่นคุณสมบัติ) และการป้อนข้อมูลแบบลอย
ADC Randomness ส่วนใหญ่นั้นมาจากหลักการทางกายภาพสองประการ: เสียงเชิงปริมาณและเสียงความร้อน
ผลกระทบเหล่านี้มีเกณฑ์ในระดับมหภาค ตัวอย่างเช่นตัวเลขที่อยู่ห่างจากขอบเขตบิตไม่จำเป็นต้องถูกปัดเศษดังนั้นจึงไม่มีข้อผิดพลาดในการหาปริมาณหรือการสุ่ม เสียงรบกวนจากความร้อนไม่ส่งผลกระทบต่อบิตที่สำคัญยิ่งกว่าในการแปลงในสถานการณ์ส่วนใหญ่
ตามส่วนขยายคุณจะเห็นว่าการเปลี่ยนแปลงพารามิเตอร์การแปลง (เวลาการสุ่มตัวอย่างความลึกอัตราการอ้างอิงแรงดันไฟฟ้า) จะมีผลต่อการเปลี่ยนแปลงในการสุ่มของผลลัพธ์โดยการย้ายเกณฑ์การสุ่ม (ทั้งการเพิ่มหรือลดโดยการลดเพดาน ) ผลที่คล้ายกันสามารถทำได้โดยการเปลี่ยนแปลงพารามิเตอร์ด้านสิ่งแวดล้อม / ระบบ (อุณหภูมิแหล่งจ่ายไฟ ฯลฯ )
ที่กล่าวว่าเครื่องกำเนิดจำนวนสุ่มฮาร์ดแวร์ที่ประสบความสำเร็จจำนวนมากใช้เทคนิคนี้เพราะผลกระทบภายนอกลดการสุ่ม - พวกมันไม่ได้กำจัดมัน (เป็นไปไม่ได้ทางร่างกาย)
คุณสามารถชดเชยการลดลงของการสุ่มโดยทำการแปลงมากขึ้นและผนวกผลลัพธ์ กระบวนการของการขยายบิต (การต่อเชื่อมบิตต่ำแบบต่อเนื่อง) ใช้ใน STM32 Nucleo Dongles, FST-01 (รวมถึง NeuG 1.0), อุปกรณ์ Grang ตระกูล LE Tech และอื่น ๆ อีกมากมาย
อุปกรณ์ Grang สร้างบิตโดยการแปลงที่มากกว่า 400 ล้านแปลงต่อวินาที (1 บิตต่อการแปลง) หากคุณทำ Conversion มากพอคุณสามารถรับประกันการสุ่มสูงถึงแม้จะเผชิญกับสภาพแวดล้อม