การคูณแบบแอนะล็อกแบบอะนาล็อกเป็นส่วนหนึ่งของ CPU ไฮบริด (เพื่อความสนุกสนาน)


10

ฉบับย่อ:ฉันจะสร้างตัวคูณแบบแอนะล็อกที่รับอินพุต DC แบบอะนาล็อกสองตัวได้อย่างไร

รุ่นยาว:


ผมได้แสดงความคิดเห็นแนะนำวิดีโอเบนเสพสำหรับคำถามอื่นในขณะที่ทำเพื่อฉันสิ้นสุดขึ้นมาดูบางตัวเอง (อีกครั้ง) และความคิดกับตัวเองว่า " อืมม ... ผมสงสัยว่ามันจะง่ายขึ้นที่จะทำให้บางส่วนอนาล็อกหมดจด "

บัสอาจเป็นเพียงสายเดียวที่ระดับแรงดันไฟฟ้าที่แตกต่างกันในภายหลังจะถูกแปลงเป็นบิตด้วย ADC

เพิ่งล้อเล่นไปนิดหน่อยฉันมาไกลขนาดนี้ซึ่งทางทฤษฎีสามารถคำนวณตัวเลขฟีโบนักชี:

ป้อนคำอธิบายรูปภาพที่นี่
รูปที่ 1 ตัวอย่างเล็ก ๆ ของคอมพิวเตอร์ไฮบริดที่คำนวณตัวเลขฟีโบนักชีครั้งแรก

ลิงก์ไปยังโปรแกรมจำลอง

ใน gif ด้านบนฉันออกจากช่วงแรงดันเพื่อให้ง่ายต่อการดูตัวเลข fibonacci ในความเป็นจริงฉันจะใช้ 250 mV = binary 1 (LSB ที่ "set values") แล้วปล่อยให้มันแพร่กระจายผ่าน DRAM ที่เก็บ 4 บิตต่อตัวเก็บประจุ

ส่วนที่สำคัญในการดูใน gif คือเอาต์พุตของ op-amp ทางด้านขวาของข้อความ "a + b" จะแสดงหมายเลข Fibonacci

ในระหว่างการดำเนินการทุกครั้งฉันจะหาจำนวนคำตอบโดยใช้ ADC ตามด้วย DAC ดังนั้นถ้าฉันจะอ่าน 1.1V ดังนั้น DAC จะเปลี่ยนเป็น 1.0 V ซึ่งหลังจากนั้นจะถูกเก็บไว้ใน DRAM และแล้วเมื่อนาฬิกาทุก X ทั้ง DRAM จะต้องไปผ่าน quantizer เพื่อให้แน่ใจว่าตัวเก็บประจุไม่ลอยออกไป

ALU สามารถทำได้เพียง +, - และโดยเฉลี่ยเท่านั้น ฉันกำลังคิดที่จะทำการคูณและมาหยุด ฉันเคยทำและเห็นตัวคูณที่ใช้ไดโอดมาก่อน แต่ฉันไม่ต้องการที่จะใช้มันเพราะไดโอดจะต้องมีการจับคู่ ฉันควรใช้ตัวต้านทานที่ฉันสามารถตัดด้วยโพเทนชิออมิเตอร์ได้ อะไรฉันก็มาพร้อมกับตัวคูณไฮบริดครึ่งอนาล็อกครึ่งดิจิตอล

ดังนั้นฉันจึงสร้างเป็นครั้งแรกด้วยตัวต้านทานที่เหมือนกันทุกที่

ป้อนคำอธิบายรูปภาพที่นี่
รูปที่ 2 ตัวคูณไร้เดียงสาระหว่างตัวเลขดิจิทัลและค่าแอนะล็อก ค่าดิจิตอลถูกชดเชยด้วย 1

ซึ่งฉันกลายเป็นนี้ด้วยน้ำหนักไบนารี:

ป้อนคำอธิบายรูปภาพที่นี่
รูปที่ 3 ตัวคูณไร้เดียงสาระหว่างตัวเลขดิจิทัลแบบถ่วงน้ำหนักไบนารีและค่าอนาล็อก ค่าดิจิตอลถูกชดเชยด้วย 1

สิ่งนี้ทำให้ฉันนึกถึงบันได R2 / R แต่ฉันไม่สามารถทำให้มันทำงานกับ op-amp ได้

อย่างไรก็ตามฉันคิดเกี่ยวกับวิธีการทำงานของบันได R2 / R และฉันจำได้ว่าเอาท์พุทของพวกเขาถูกคูณด้วยแหล่งกำเนิดแรงดันไฟฟ้า ในที่สุดฉันก็เลยคิดแบบนี้:

ป้อนคำอธิบายรูปภาพที่นี่
รูปที่ 4 ตัวคูณแบบอิง R2 / Rระหว่างตัวเลขดิจิทัลแบบถ่วงน้ำหนักไบนารีและค่าอนาล็อก

ฉันชอบมันปัญหาเดียวที่เกิดขึ้นคือรถบัสเป็นแบบอะนาล็อกแค่สายเดียว ดังนั้นถ้าฉันถูกบังคับให้ใช้วิธีแก้ปัญหาในรูปที่ 4 ด้านบนแล้วฉันถูกบังคับให้ใช้ ADC อื่นที่พื้นที่การคูณของไฮบริดซีพียู ฉันไม่สามารถใช้ซ้ำได้ที่พื้นที่ควอไลเซอร์

เวลาสำหรับคำถาม:

ฉันจะสร้างทวีคูณที่รับสัญญาณอะนาล็อกสองตัวได้อย่างไร

  • ฉันไม่ต้องการโซลูชันที่ใช้ไดโอด 3 ตัวนั้นและ op-amps 4 ตัวเพราะคุณไม่สามารถตัดไดโอดได้ ความเชื่อของฉันคือถ้าพวกเขาไม่ตรงกันพวกเขาจะให้คำตอบที่ถูกปิดโดยมากกว่า 250 mV ฉันไม่ได้ลองสิ่งนี้ในโลกแห่งความเป็นจริง
  • ฉันได้ลองตัวคูณแบบอิงมอสในลิงค์ข้างบนหนึ่งนิ้วข้างบนนี้ แต่ฉันไม่รู้ว่าฉันเป็นใบ้หรือไม่ ฉันไม่สามารถทำงานในเครื่องจำลองได้ ดู gif ด้านล่างสำหรับความล้มเหลวของการใช้งาน MOS หรือคลิกลิงก์นี้เพื่อจำลองสถานการณ์
  • ฉันไม่ต้องการที่จะโยนไมโครคอนโทรลเลอร์ที่มีปัญหา
  • ฉันไม่ต้องการใช้มอเตอร์ที่หมุนและใช้ shenanigans บางตัว
  • อี-เสื้อR
  • 424=0.25
  • หลังจากเสร็จสิ้นการคูณมันจะถูกนำไปที่ควอไลเซอร์เพื่อให้แน่ใจว่าค่านั้นใกล้เคียงกับค่าไบนารีมากที่สุด ข้อผิดพลาดเล็ก ๆ น้อย ๆ ก็โอเค

นี่คือ gif ที่แสดงให้เห็นว่าฉันล้มเหลวในการพยายามทำให้ MOS เป็นพื้นฐาน:

ป้อนคำอธิบายรูปภาพที่นี่
รูปที่ 5 ฉันคัดลอกแผนผังจากลิงค์วิกิข้างบน แต่มันไม่ทำงานในโปรแกรมจำลอง

ถ้ามันทำงานได้ฉันควรเห็นค่า 1 V อยู่ที่ไหนสักแห่งเพราะฉันเปลี่ยนแรงดันไฟฟ้าของการอ้างอิงจาก 5 V เป็น -5 V


1
ครั้งแรกที่ฉันเห็นตัวทวีคูณแบบอะนาล็อกมันใช้ชุดหางยาว: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart

2
เซลล์กิลเบิร์ตทำงานกับ DC ได้อย่างไร ฉันคิดว่ามันถูกใช้เพื่อผสม RF
Vladimir Cravero

1
@VladimirCravero เซลล์ gilbert มีความสำคัญเป็นตัวคูณ - ลองคิดดูถ้าคุณคูณสัญญาณสองสัญญาณหนึ่งที่ f1 และหนึ่งที่ f2 คุณจะได้ผลลัพธ์ที่ f1-f2 และ f1 + f2 ซึ่งเป็นสิ่งที่เครื่องผสมทำ พวกเขายังใช้สำหรับแอมพลิฟายเออร์อัตราขยายตัวแปรด้วยเหตุผลนี้ - สัญญาณหนึ่งจะเป็นค่าคงที่ (การตั้งค่าอัตราขยาย) ที่สองจะเป็นสิ่งที่คุณต้องการขยาย
Joren Vaes

คำตอบ:


5

หากคุณต้องการสร้างตัวทวีคูณแบบอะนาล็อกที่เป็นรอยทางเล็กน้อยจากนั้นพิจารณาว่าจะเกิดอะไรขึ้นเมื่อคุณป้อนสัญญาณอะนาล็อกผ่านสวิตช์แบบอะนาล็อก แต่ควบคุมสวิตช์แบบอะนาล็อกด้วย PWM ที่ความถี่สูง (สูงกว่า nyquist อย่างมาก ได้ง่ายขึ้น)

ถ้า PWM เป็นพื้นที่มาร์คกิ้ง 50% สัญญาณอะนาล็อกเบสแบนด์จะถูกลดทอนลงครึ่งหนึ่ง เห็นได้ชัดว่าคุณต้องใช้ตัวกรองการกู้คืนเพื่อลบสิ่งประดิษฐ์สลับ แต่ด้วยเทคนิคนี้คุณสามารถปรับความกว้างของสัญญาณอะนาล็อกโดยเปลี่ยนวัฏจักรหน้าที่ของ PWM: -

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถทำให้มันเป็นทวีคูณ 4 คูณ อินพุตอะนาล็อกหนึ่งตัวควบคุมตัวปรับความกว้างพัลส์ อินพุตอะนาล็อกอื่นถูกเปลี่ยน

แค่คิดในกรณีที่คุณสนใจ

รายละเอียดเพิ่มเติมที่นี่


นี่เป็นวิธีที่น่าสนใจมาก!
Joren Vaes

1
อืมใช้ PWM โดยที่แอมพลิจูดคือแรงดันหนึ่งและรอบการทำงานเป็นแรงดันสัมพัทธ์อื่นแล้วกรอง LP จริง ๆ แล้วไม่ใช่ความคิดที่เลว
Harry Svensson

1
มันถูกใช้ในวิทยุบางตัวเป็นตัวปรับและใน LVDT เป็นตำแหน่ง demodulation ฉันใช้เครื่อง demodulator I และ Q เป็นเครื่องตรวจจับโลหะที่ละเอียดอ่อนด้วย
แอนดี้อาคา

4

มีสิ่งเหล่านี้อยู่ - อุปกรณ์อะนาล็อก (เคยทำ) มีไอซีตัวคูณบางตัวที่คุณสามารถซื้อได้ พวกเขายังมีบันทึกย่อที่ยอดเยี่ยมนี้ซึ่งฉันขอแนะนำให้อ่าน

VOยูT(เสื้อ)=Vผมยังไม่มีข้อความ,1(เสื้อ)Vผมยังไม่มีข้อความ,2(เสื้อ)Vผมยังไม่มีข้อความ,1Vผมยังไม่มีข้อความ,2


1
คุณยังสามารถรับตัวคูณแบบแอนะล็อกเหล่านั้นได้ ฉันเชื่อว่า digikey ยังมีหมวดหมู่สินค้าทั้งหมดสำหรับพวกเขา
Hearth

2
อย่างไรก็ตาม Gilbert Cell ขึ้นอยู่กับช่วงการจับคู่ของทรานซิสเตอร์ (ซึ่งค่อนข้างง่ายเมื่อทรานซิสเตอร์เป็นส่วนหนึ่งของการตายเพียงครั้งเดียว) OP ได้ปฏิเสธการใช้วงจรที่อาศัยการจับคู่ของทรานซิสเตอร์ดังนั้นฉันไม่แน่ใจว่านี่เป็นคำตอบที่ดี
WhatRoughBeast

1
AD633 เป็นตัวคูณ 4 ควอแดรนท์ที่เอาท์พุต (X1-X2) (Y1-Y2) / 10V + Z ไม่ถูกโดยเฉพาะอย่างยิ่ง
Spehro Pefhany

3

ฉันแค่เอามันออกมาที่นี่เป็นคำตอบที่ทำงานได้สำหรับผู้อ่านในอนาคต


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

ดังนั้นฉันจึงค้นหาตัวคูณตามไดโอดทั่วไปและเห็นว่าขั้วบวกของไดโอดทั้งหมดเชื่อมต่อกับอินพุต (-) ของ op-amp เสมอ กันไปสำหรับหนึ่งพินของตัวต้านทาน 1 kΩ

ป้อนคำอธิบายรูปภาพที่นี่

เชื่อมโยงไปยังการจำลอง

ในภาพด้านบนการคำนวณการคูณ 2.25 × 3 จะได้ผลลัพธ์เป็น 6.75 การคูณที่เหมือนกันมากเกิดขึ้นใน ... monstrosity ด้านล่าง

"มูลค่าสำหรับหนึ่ง" คือการอ้างอิงแรงดันไฟฟ้าสำหรับหนึ่ง ดังนั้นถ้าเป็น 0.1 V และ V1 = V2 = 1 โวลต์ จากนั้นคำตอบจะเป็น 10 V ซึ่งแปลเป็น 100 ถ้า 0.1 V คือ 1

ดังนั้นฉันจึงตัดสินใจ mux แคโทดและพินตัวต้านทาน 1 kΩและvoilàอีกอันมีฟังก์ชันลอการิทึมและเลขชี้กำลังที่เข้าคู่กัน คุณสามารถดูได้ใน gif ด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

เชื่อมโยงไปยังการจำลอง

gif เป็นเม็ดเล็ก ๆ น้อย ๆ ซึ่งมีจุดประสงค์เพื่อลดขนาด 8 MB ลงเป็น 2 MB อีกทั้ง gif นั้นเร่งความเร็วขึ้น 2x, 28 วินาทีแทนที่จะเป็น 55

ฉันรู้ว่ามันบอกว่า "log (x) ในฐาน y" และ "pow (y, x)" ซึ่งไม่เป็นความจริง ฉันสับสนกับการอ้างอิงแรงดันไฟฟ้า มันเป็นเพียงบันทึกและธารกับฐานสุ่ม นักคณิตศาสตร์ที่ฉลาดจะรู้ว่าไม่สำคัญว่าฐานคืออะไรคุณสามารถแปลงบันทึกใด ๆ เป็นบันทึกอื่น ๆ

จำนวน 6.7 แสดงที่ท้ายที่เอาต์พุตของ op-amp ด้านล่างขวา CircuitJS ตัดทอน 6.75 ถึง 6.7 เมื่อแสดงตัวเลขโดยไม่ต้องวางเมาส์ไว้ การวางเมาส์ด้านบนแสดง 6.69 V ดังนั้นข้อผิดพลาด 60 mV ซึ่งน้อยกว่า 250 mV และยอมรับได้ ตาม .. ไม่ใช่ตัวจำลองที่ดีที่สุด


หลังจากอ่านคำตอบของ Andy Aka ฉันไม่แน่ใจว่าคำตอบอื่นสามารถเอาชนะได้หรือไม่ ฉันจะยอมรับเขาในอีกสองสามวันถ้าไม่มีคำตอบอื่น ๆ เต้น ฉันไม่เชื่อว่าคำตอบของฉันจะเต้นแอนดี้


1

ฉันเพิ่งเจอวงจร "ตัวทวีคูณ Parabolic" ในคอมพิวเตอร์อะนาล็อกปี 2511 ในการคูณ A และ B คุณเริ่มต้นด้วยแอมป์สองตัวเพื่อคำนวณ A + B และ AB ถัดไปคุณต้องมีตัวสร้างฟังก์ชันที่สร้าง X ^ 2 (เช่น parabola) ด้วยเครื่องกำเนิดไฟฟ้าสองฟังก์ชันคุณจะคำนวณ (A + B) ^ 2 และ (AB) ^ 2 คุณลบผลลัพธ์สองรายการด้วยแอมป์สหกรณ์ผลเป็น 4 × A × B ซึ่งหลังจากการปรับสเกลให้ A × B ตามต้องการ

คุณจะรับฟังก์ชั่น X ^ 2 ได้อย่างไร? ฟังก์ชันนูนโดยพลการ (เช่น X ^ 2) สามารถประมาณด้วยเครือข่ายตัวต้านทานไดโอด แนวคิดคือแต่ละไดโอดจะเปิดที่แรงดันไฟฟ้าอินพุตเฉพาะ (ควบคุมโดยตัวต้านทานบน) และให้กระแส (ควบคุมโดยตัวต้านทานต่ำกว่า) ไปยังเอาท์พุท ผลที่ได้คือฟังก์ชั่นเชิงเส้นเป็นชิ้น ๆ (ค่าส่วนประกอบด้านล่างนี้เป็นค่าที่กำหนดโดยพลการฉันไม่ได้หาค่าสำหรับ X ^ 2) ตัวสร้างฟังก์ชันจริงอาจมีไดโอดโหลเพื่อความแม่นยำมากขึ้น เครื่องกำเนิดฟังก์ชั่นอาจจะเดินสายหรืออาจมีโพเทนชิโอมิเตอร์เพื่อให้ผู้ใช้สามารถตั้งค่าให้เป็นฟังก์ชั่นที่ต้องการได้

แผนผัง

จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab

ตัวคูณ Parabolic ได้รับการพิจารณาว่าเป็นวิธีการคูณแบบอะนาล็อกที่มีความแม่นยำสูง กล่าวสั้นอยู่ในคอมพิวเตอร์ Dornier 240 อนาล็อกคู่มือ (ในภาษาเยอรมันดูDer Parabel-Multipliziererในหัวข้อที่ 9)

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