ในอุปกรณ์ ADC / DAC บางตัวเป็นตัวเลือกในการส่งออก / ป้อนข้อมูลในรูปแบบของส่วนประกอบ 2
อะไรคือข้อดีของการแสดงข้อมูลดิจิตอลในแบบฟอร์มการเติมเต็มของ Two เมื่อคุณสามารถมีรหัสไบนารี่แบบตรงและประหยัดเวลาในการแปลง
ในอุปกรณ์ ADC / DAC บางตัวเป็นตัวเลือกในการส่งออก / ป้อนข้อมูลในรูปแบบของส่วนประกอบ 2
อะไรคือข้อดีของการแสดงข้อมูลดิจิตอลในแบบฟอร์มการเติมเต็มของ Two เมื่อคุณสามารถมีรหัสไบนารี่แบบตรงและประหยัดเวลาในการแปลง
คำตอบ:
คำชมเชยการแสดงจำนวนเต็มสองจำนวนที่มีเครื่องหมายถูกจัดการได้ง่ายในฮาร์ดแวร์ ตัวอย่างเช่นการปฏิเสธ (เช่นx = -x ) สามารถดำเนินการได้อย่างง่ายดายโดยการพลิกบิตทั้งหมดในจำนวนและเพิ่มหนึ่ง การดำเนินการเดียวกันในไบนารีแบบดิบ (เช่นกับบิตการลงชื่อ) มักจะเกี่ยวข้องกับการทำงานมากขึ้นเนื่องจากคุณต้องปฏิบัติบิตบางอย่างในสตรีมเป็นพิเศษ Same go for plus - การดำเนินการเพิ่มสำหรับตัวเลขลบนั้นเหมือนกับการดำเนินการบวกสำหรับตัวเลขบวกดังนั้นจึงไม่จำเป็นต้องใช้ตรรกะเพิ่มเติม (ไม่ต้องการใช้ pun) เพื่อจัดการกับกรณีลบ
แม้ว่านี่จะไม่ได้หมายความว่าง่ายกว่าจากมุมมองของคุณในฐานะผู้บริโภคข้อมูลนี้ แต่ก็ช่วยลดความพยายามในการออกแบบและความซับซ้อนของอุปกรณ์ซึ่งจะทำให้ราคาถูกลง
ADC สามารถแปลงข้อมูล (พูดแรงดันไฟฟ้าอินพุตระหว่าง 0 ถึง 5V) และคุณต้องการข้อมูลที่ไม่ได้ลงชื่อ (0V = 0, 5V = รหัสสูงสุด) หรือลงนาม (2.5V = 0, 0V = สูงสุด -ve, 5V = สูงสุด + ve)
นอกเหนือจากการเสริม 2 ของการเป็นตัวแทนคอมพิวเตอร์ที่ธรรมดาที่สุดสำหรับข้อมูลที่ลงนามการแปลงระหว่างสองรูปแบบที่อธิบายข้างต้นเป็นเรื่องเล็กน้อยโดยสิ้นเชิง: เพียงแค่เปลี่ยน MSB!
นี่คือราคาถูกอย่างไม่น่าเชื่อในการเพิ่มตรรกะภายในของ ADC และทำให้ ADC เป็นจุดขายอีกแห่งในแผ่นข้อมูล ...
หากคุณต้องการดำเนินการทางคณิตศาสตร์เกี่ยวกับตัวเลขที่เป็นลบการเติมเต็มสองครั้งจะทำให้ง่ายกว่าอ็อฟเซ็ตไบนารีซึ่งจะตรงกับชนิดข้อมูล "Sign int" คอมไพเลอร์ของคุณจะรู้วิธีจัดการกับมัน มิฉะนั้นคุณจะใช้เห็บนาฬิกาเพื่อแปลงไปมา
ในคำถามดูเหมือนว่าโดยนัยแล้วมันจะใช้เวลานานกว่านั้นสำหรับ ADC ที่จะส่งคืนค่าในรูปแบบที่สมบูรณ์ของ 2 มากกว่าในแบบไบนารี่ตรง แม้ว่านี่อาจจะเป็นกรณีที่การนำ ADC มาใช้โดยเฉพาะ แต่ก็ไม่เป็นความจริง (ตัวอย่างเช่นชุดควบคุมไมโครคอนโทรลเลอร์ MSP430 มีอุปกรณ์ต่อพ่วง ADC บนชิปซึ่งจะรายงานค่าเป็นไบนารี่ไบร์ทหรือส่วนเติมเต็ม 2 แต่ ใช้จำนวนรอบเท่ากันในทั้งสองกรณี)
ด้วยวิธีการที่ห่างไกลตัวเลือกระหว่างส่วนเติมเต็ม 2 และไบนารี่แบบตรงส่วนใหญ่จะมาลงที่การทำงานของเครื่องแปลงความถี่และวิธีที่คุณต้องการประมวลผลข้อมูลของคุณ
ในโหมดไบนารี่แบบตรง ADC จะให้ตัวเลขซึ่งแสดงถึงอัตราส่วนระหว่างขนาดของปริมาณอะนาล็อกที่วัด (แรงดันไฟฟ้าจริง) และปริมาณการอ้างอิงเต็มรูปแบบ ตัวอย่างเช่น ADC ขนาด 10 บิตสามารถส่งคืนค่าได้ตั้งแต่ 0 ถึง 1023 (รวม) หากคุณวัดแรงดันไฟฟ้า (กล่าวคือ 1.25 โวลต์) ซึ่งเป็นครึ่งหนึ่งของแรงดันอ้างอิงของ ADC (เช่น 2.50 โวลต์) รหัสไบนารี่ที่คุณอ่านจะเป็นครึ่งหนึ่งของค่าสูงสุดที่คุณสามารถอ่านได้ - ดังนั้น 512 หรือราว ๆ นั้น ขึ้นอยู่กับการปัดเศษและไม่เป็นเชิงเส้นใน ADC
ตัวอย่างเช่นสมมติว่าคุณมีทรานสดิวเซอร์ซึ่งรายงานปริมาณเชื้อเพลิงจรวดในถัง 0V หมายถึงถังว่างเปล่าและ 2.5 โวลต์หมายถึงเต็ม ดังนั้นคุณเพียงแค่เชื่อมต่อตัวแปลงสัญญาณไปยัง ADC ของคุณและออกไป!
แต่โปรดสังเกตว่าในย่อหน้าข้างต้นไม่มีวิธีวัดแรงดันลบ ถ้าเราต้องการวัดการไหลของเชื้อเพลิงจรวดเข้าและออกจากถัง (และเรามีตัวแปลงสัญญาณให้ทำเช่นนั้น) ADC ไม่สามารถวัดจำนวนลบได้ดังนั้นเราจึงมีปัญหา อย่างไรก็ตามมีวิธีง่าย ๆ ในการปลอมโดยใช้โหมดเสริมของ 2: ในกรณีนี้เอาต์พุตของตัวแปลงสัญญาณจะถูกลำเอียงอีกครั้งเพื่อให้จุดศูนย์อยู่กึ่งกลางระหว่างแรงดันไฟฟ้าอ้างอิงทั้งสองของ ADC กล่าวอีกนัยหนึ่งกระแสบวกจะถูกแทนด้วยแรงดันไฟฟ้าระหว่าง 1.25V ถึง 2.50V และกระแสเชิงลบจะถูกแทนด้วย 1.25V ถึง 0V ดังนั้นการไหลลงในถังจะให้รหัส ADC ที่ 512 ถึง 1,023 และจะไหลออกจากขอบพระคุณ รหัส 511 ถึง 0 (ในรูปแบบไบนารีตรง)
ตอนนี้มันไม่สะดวกอย่างมาก เราต้องลบ 512 จากการวัดแต่ละครั้งก่อนที่จะทำอะไรกับมันซึ่งจะให้ตัวเลขในช่วง -512 ถึง +511 จุดสำคัญของโหมดเสริม 2 คือการทำเช่นนี้ให้คุณ!
อย่างไรก็ตามคุณยังอาจต้องการใช้เลขฐานสองตรงกับตัวแปลงสัญญาณที่สร้างผลลัพธ์ที่เซ็นชื่อ ตัวอย่างเช่นตัวแปลงสัญญาณของคุณอาจมีเอาต์พุตที่แตกต่างกัน: ในกรณีนี้คุณต้องการที่จะลบเอาท์พุทกลับหัวกลับจากเอาท์พุทที่ไม่กลับด้านดังนั้นจึงไม่มีข้อได้เปรียบในการใช้ส่วนเสริม 2
มีการใช้ระบบเสริมของทั้งสองเพราะมันเกิดจากวิธีการทำงานของฮาร์ดแวร์อย่างง่าย ลองคิดดูว่าคุณวัดระยะทางรถยนต์ของคุณซึ่งคุณได้ตั้งค่าใหม่เป็นศูนย์ จากนั้นใส่เกียร์ถอยหลังและขับรถถอยหลัง 1 ไมล์ (โปรดอย่าทำสิ่งนี้ตามความเป็นจริง) เครื่องวัดระยะทางของคุณ (ถ้าเป็นแบบกลไก) จะหมุนจาก 0000 ถึง 9999 ระบบประกอบของทั้งสองทำงานในลักษณะเดียวกัน
โปรดทราบว่าฉันไม่ได้นำเสนอข้อมูลใหม่ที่นี่จริง ๆ เพียงตัวอย่างมาตรวัดระยะทางที่ใครบางคนอาจพบว่ามีประโยชน์ - มันช่วยให้ฉันเข้าใจเหตุผลของระบบประกอบสองเมื่อฉันยังเด็ก หลังจากนั้นมันเป็นเรื่องง่ายสำหรับฉันที่จะยอมรับอย่างสังหรณ์ใจว่าผู้บวกลบ ฯลฯ ทำงานได้ดีกับระบบเติมเต็มของทั้งสอง
และใช่เครื่องวัดระยะทางของนิสสันของฉันทำงานด้วยวิธีนี้
คนอื่น ๆ ได้ตอบไปแล้วว่าทำไมคำชื่นชมไบนารีสองคำจึงสะดวกสำหรับฮาร์ดแวร์คอมพิวเตอร์ อย่างไรก็ตามคุณดูเหมือนจะถามว่าทำไม A / D จะแสดงผลสองคำชมแทน "ไบนารี่ตรง" (สิ่งที่คุณคิดว่าหมายถึง)
A / Ds ส่วนใหญ่ส่งออกค่าไบนารีที่ไม่ได้ลงนามอย่างง่ายตั้งแต่ 0 ถึง 2 N -1 โดยที่ N คือจำนวนบิตที่ A / D แปลงเป็น โปรดทราบว่านี่อาจถือได้ว่าเป็นเครื่องหมายแสดงความชื่นชมสองครั้งเพียงแค่ว่าค่าที่ไม่เคยเกิดขึ้นเป็นลบ หากคุณกำลังติดต่อกับตัวเลขที่เป็นบวกเท่านั้นการเป็นตัวแทนไบนารีส่วนใหญ่จะเหมือนกัน ซึ่งรวมถึงคำชมสองครั้งและขนาดสัญลักษณ์
A / Ds โดยเฉพาะอย่างยิ่งที่สร้างขึ้นในไมโครคอนโทรลเลอร์มีตัวเลือกในการผลิตค่าลบสำหรับช่วงครึ่งล่างของช่วง นี่อาจเป็นประโยชน์เมื่อรับรู้การวัดสัญญาณสองขั้ว
อย่างน้อยในไมโครคอนโทรลเลอร์นี่เป็นเรื่องโง่ ในบางกรณีคุณอาจใช้ค่า A / D โดยตรงโดยไม่มีการแปลงใด ๆ ในกรณีนี้คุณได้แปลงค่าอื่น ๆ ทั้งหมดเป็นช่วง A / D การ จำกัด จำนวนที่ไม่เป็นลบทั้งหมดทำให้สิ่งต่างๆง่ายขึ้น
มิฉะนั้นคุณจะใช้การปรับขนาดและการชดเชยกับการอ่าน A / D เพื่อนำไปใช้กับสิ่งที่คุณใช้สำหรับค่าภายใน ที่นี่อีกครั้งไม่มีข้อเสียของค่าที่ไม่ได้ลงชื่อที่ออกมาโดยตรงจาก A / D ในความเป็นจริงฉันมักจะใช้การกรองความถี่ต่ำผ่านค่าดิบก่อนปรับขนาดและชดเชย การรู้คุณค่าเหล่านั้นจะไม่ทำให้การคำนวณง่ายขึ้นเพียงเล็กน้อย การทำมาตราส่วนบนค่าที่ไม่ได้ลงชื่อยังทำให้บางครั้งง่ายขึ้นเล็กน้อย
ฉันจำไม่ได้ว่ามีกรณีเดียวในโครงการไมโครคอนโทรลเลอร์กว่า 100 โครงการที่ฉันใช้ A / D ในรูปแบบใด ๆ ยกเว้นรูปแบบเอาต์พุตที่ไม่ได้ลงนาม
ดังนั้นเพื่อตอบคำถามว่าข้อดีของการส่งออก A / D คือ "twos ชมเชย" มีสองคำตอบ:
ในฮาร์ดแวร์เฉพาะอาจมีข้อดีที่จะมีค่าลบที่ระบุแรงดันไฟฟ้าลบซึ่งในกรณีนี้การชมเชย twos เป็นวิธีที่ง่ายที่สุดในการจัดการกับช่วงของค่า โปรดทราบว่าหากช่วงแรงดันไฟฟ้าเข้าไม่ได้เป็นสมมาตรประมาณ 0 ดังนั้นข้อดีนี้จะหายไป
นี่คือ 'รหัสไบนารีตรง' ที่คุณพูดถึงคืออะไร? ฉันถือว่าคุณหมายถึงมีบิตเครื่องหมายซึ่งเป็น '1' สำหรับลบและ '0' สำหรับบวก (หรือกลับกัน ) สิ่งนี้มีข้อเสียมากกว่าสองอย่างเกี่ยวกับส่วนประกอบสองอย่างที่ยังไม่ได้กล่าวถึง: วันนี้ส่วนใหญ่ไม่เกี่ยวข้องและสิ่งสำคัญอย่างหนึ่ง
สิ่งที่ไม่เกี่ยวข้องส่วนใหญ่คือคุณสามารถแสดงตัวเลขน้อยกว่าหนึ่งได้นั่นคือ 255 ตัวเลขใน 8 บิต นี่ไม่เกี่ยวข้องเลยทีเดียวเมื่อคุณมี 32 หรือ 64 บิต แต่สำคัญเมื่อคุณมี 4 หรือ 6 บิตให้ทำงาน
สิ่งที่สำคัญกว่าคือตอนนี้มีสองวิธีในการแสดงหมายเลขเดียวกันโดยเฉพาะ 0 - +0 และ -0 แต่ +0 และ -0 เป็นหมายเลขเดียวกันดังนั้นการใช้งานของคุณต้องทำให้แน่ใจว่าคุณไม่ได้เปรียบเทียบสิ่งเหล่านี้ ตัวเลขทุกครั้งที่คุณทำการตรวจสอบความเท่าเทียมกัน