Analog analog çarpma, karma CPU'nun bir parçası (eğlence için)


10

Kısa versiyon: İki analog DC girişi alan bir analog çarpanı nasıl yapabilirim?

Uzun versiyon:


Ben başka bir soru için Ben Eaters videoları öneren bir yorum yaptım , bunu yaparken kendimi (tekrar) izlemek ve kendime " hmmm ... Bazı parçaları tamamen analog yapmak daha kolay olacağını merak ediyorum .

Veri yolu, farklı voltaj seviyelerinin daha sonra bir ADC ile bitlere çevrileceği sadece bir tel olabilir.

Sadece biraz karışıklık yaptım, teorik olarak Fibonacci sayılarını hesaplayabilen bu kadar geldim:

resim açıklamasını buraya girin
Şekil 1, ilk fibonacci sayılarını hesaplayan hibrid bilgisayarın küçük demosu

Bağlantı simülatörüne.

Yukarıdaki gifte voltaj aralığından çıkıyorum, bu yüzden fibonacci sayılarını görmek kolay, gerçekte sadece 250 mV = ikili 1'i ("ayar değerlerinde LSB") kullanacağım ve daha sonra Kondansatör başına 4 bit tutan DRAM.

Gif'te bakılması gereken önemli kısım, "a + b" metninin sağındaki op-amp'in çıkışıdır, Fibonacci sayılarını gösterir.

Her işlem arasında bir ADC ve ardından bir DAC kullanarak cevabı nicelleştireceğim. Eğer 1.1V okuyabilseydim, DAC onu daha sonra DRAM'da depolanacak olan 1.0 V'a çevirirdi. Ve sonra her X saatinde bir kez tüm DRAM, kapasitörün uzaklaşmayacağından emin olmak için nicelleştiriciden geçmelidir .

ALU sadece +, - ve ortalama yapabilir. Çarpmayı yapmayı düşünüyordum ve durdum. Daha önce diyot bazlı çarpanlar yaptım ve gördüm, ancak bunları kullanmak istemiyorum çünkü diyotların eşleştirilmesi gerekiyor. Bir potansiyometre ile kesebileceğim dirençleri tercih ederim. Her neyse, melez çarpan, yarı analog, yarı dijital buldum.

Bu yüzden her yerde aynı dirençlerle bir ilk yaptım.

resim açıklamasını buraya girin
Şekil 2, dijital sayılar ve analog değerler arasında saf çarpan . Dijital değer 1 ile dengelenir.

Daha sonra ikili ağırlıklar ile buna dönüştüm:

resim açıklamasını buraya girin
Şekil 3, ikili ağırlıklı dijital sayılar ve analog değerler arasındaki saf çarpan . Dijital değer 1 ile dengelenir.

Bu bana R2 / R merdivenlerini hatırlattı, ama onları op-amp ile çalıştıramadım.

Ancak, R2 / R merdivenlerinin nasıl çalıştığını düşündüm ve çıktılarının voltaj kaynaklarıyla çarpıldığını hatırladım. Sonunda bu tasarımı buldum:

resim açıklamasını buraya girin
Şekil 4, ikili ağırlıklı dijital sayılar ve analog değerler arasındaki R2 / R tabanlı çarpan

Bunu sevdim, tek sorun otobüsün analog, sadece bir kablo olmasıdır. Bu yüzden yukarıdaki şekil 4'teki çözümü kullanmak zorunda kalırsam, o zaman hibrid CPU'nun çarpma alanında başka bir ADC kullanmak zorunda kalırım. Nicelleştirici alanında yeniden kullanamıyorum.

Soru zamanı:

İki analog giriş alan bir çarpanı nasıl yapmalıyım?

  • Ben yok dayanmaktadır çözüm istiyor o 3 diyot ve 4 op-amp Eğer Döşeme diyotlar olamaz çünkü. Benim inancım, eğer yanlış eşleşirlerse, 250 mV'den fazla olmayan bir cevap vereceklerdir. Bunu gerçek dünyada denemedim.
  • MOS tabanlı çarpanı bu kelimenin tam anlamıyla bu kelimenin bir inç üzerinde denedim, ama aptal olup olmadığımı bilmiyorum. Simülatörde çalışamıyorum. MOS uygulamasının başarısız olması için aşağıdaki gif'e bakın. Veya simülasyon için bu bağlantıyı tıklayın .
  • Ben yok probleme bir mikro denetleyici atmak istiyorum.
  • Ben yok bir motor olduğu döner ve kullanımları bazı maskaralık kullanmak istiyorum.
  • almak için bir alçakgeçirim oluşumunda bir RC filtresi kullanmayı düşünüyordumetRC
  • Hassasiyet mükemmel olmak zorunda değil, şu anda kapasitör başına sadece 4 bit, bu her seviyeye veriyor424=0.25
  • Çarpma işlemi yapıldıktan sonra, değerin mümkün olduğunca bir ikili değere yakın olduğundan emin olmak için nicelleştiriciye götürülecektir. Yani küçük hatalar olur.

İşte MOS tabanlı olanı yapmaya çalışmamdaki başarısızlığı gösteren gif:

resim açıklamasını buraya girin
Şekil 5, şemayı yukarıdaki wiki bağlantısından kopyaladım, ancak simülatörde çalışmıyor.

Eğer işe yarayacak olsaydı, referans voltajını 5 V'dan -5 V'a değiştirdiğimde bir yerde 1 V değerini görmeliydim.


1
Bir analog çarpanı ilk gördüğümde, bir dizi uzun kuyruk kullanıyordu: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart

2
gilbert hücresi DC'ye nasıl çalışır? Sanırım RF'yi karıştırmak için kullanıldı
Vladimir Cravero

1
@VladimirCravero Bir gilbert hücresi özünde bir çarpandır - düşünün, biri f1 diğeri f2'de iki sinyali çarparsanız, bir mikserin yaptığı f1-f2 ve f1 + f2'de bir çıkış elde edersiniz. Bu nedenle değişken kazanç amplifikatörleri için de kullanılırlar - bir sinyal sabit olacak (kazanç ayarı), ikincisi yükseltmek istediğiniz şey olacaktır.
Joren Vaes

Yanıtlar:


5

Biraz dövülmemiş bir parça olan bir analog çarpan oluşturmak istiyorsanız, bir analog anahtarı bir analog sinyalden beslediğinizde, ancak analog anahtarı PWM ile yüksek bir frekansta (yaşam yapmak için nyquist'in çok üstünde) kontrol ettiğinizde ne olacağını düşünün. Daha kolay).

PWM% 50 işaret boşluğu ise, ana bant analog sinyali yarı yarıya azaltılır. Anahtarlama artefaktlarını gidermek için bir kurtarma filtresi kullanmanız gerektiği açıktır. Ancak bu teknikle, PWM görev döngüsünü değiştirerek bir analog sinyali modüle edebilirsiniz: -

resim açıklamasını buraya girin

Ayrıca 4 çeyreklik bir çarpan haline getirebilirsiniz. Bir analog giriş bir darbe genişliği modülatörünü kontrol eder. Diğer analog giriş değiştirilir.

İlgilenmeniz durumunda sadece bir düşünce.

Daha fazla ayrıntı burada


Bu çok ilginç bir yaklaşım!
Joren Vaes

1
Hmm, genliğin bir voltaj olduğu PWM kullanarak ve görev döngüsü diğer bağıl voltajdır ve daha sonra LP filtrelenmiştir. Aslında kötü bir fikir değil.
Harry Svensson

1
Bazı telsizlerde modülatör, LVDT'lerde pozisyon demodülasyonu olarak kullanılır. Birini hassas bir metal dedektörde I ve Q demodülatörü olarak uyguladım.
Andy aka

4

Bunlar var - Analog cihazlar (eskiden?) Satın alabileceğiniz bazı çarpan IC'leri var. Ayrıca kesinlikle okuma öneririz bu mükemmel appnote var.

VOUT(t)=VIN,1(t)VIN,2(t)VIN,1VIN,2


1
Yine de bu analog çarpanları elde edebilirsiniz. Ben digikey onlar için bir ürün kategorisi bile var inanıyorum.
Kalp

2
Bununla birlikte, bir Gilbert Hücresi kritik olarak transistör eşleşmesine bağlıdır (bu, transistörler tek bir kalıbın parçası olduğunda nispeten kolaydır). OP, transistörlerin eşleşmesine dayanan bir devre kullanarak reddetti, bu yüzden bunun iyi bir cevap olduğundan emin değilim.
WhatRoughBeast

1
AD633, (X1-X2) (Y1-Y2) / 10V + Z çıkışını veren 4 çeyreklik bir çarpandır. Özellikle ucuz değil.
Spehro Pefhany

3

Bunu sadece gelecekteki okuyucular için uygun bir cevap olarak ortaya koyuyorum.


Joren'in cevabını okuduktan sonra birçok analog çarpanın eşleşen bileşenlere dayandığını fark ettim. Kendi kendime düşündüm, neden sadece bileşenleri tekrar kullanmıyorsunuz, aynı bileşen her yerde kullanılıyor? Bu şekilde her şeyi otomatik olarak eşleştireceğim.

Bu yüzden tipik diyot tabanlı çarpanı aradım ve tüm diyotların anotlarının her zaman op-amp'in (-) girişine bağlı olduğunu gördüm. 1 kΩ direncin bir pimi için de aynı şey geçerlidir.

resim açıklamasını buraya girin

Bağlantı simülasyonu için.

Yukarıdaki resimde 6.75 ile sonuçlanan 2.25 × 3 çarpımı hesaplanmıştır. Aynı çarpma aşağıdaki ... canavarlık içinde yapılır.

"Birinin değeri" birinin voltaj referansıdır. Yani 0.1 V ve V1 = V2 = 1 volt ise. O zaman cevap 10 V olacaktır, bu da 0.1 V 1 ise 100 sayısına çevrilir.

Bu yüzden katodu ve 1 kΩ direnç ve voilà'nın diğer pimini karıştırmaya karar verdim, eşleşen güzel bir logaritma ve üstel fonksiyon var. Aşağıdaki gif'te görebilirsiniz.

resim açıklamasını buraya girin

Bağlantı simülasyonu için.

Gif biraz grenli, bu da 8 MB'yi 2 MB'ye indirmek için tasarlanmıştır. Ayrıca gif 55 yerine 2x, 28 saniye hızlanır.

Biliyorum ki "taban y'de log (x)" ve "pow (y, x)" doğru değil. Gerilim referansıyla kendimi karıştırdım. Sadece rastgele baz ile log ve pow. Akıllı matematikçiler, tabanın ne olduğu önemli olmadığını bilecek, herhangi bir günlüğü başka bir günlüğe dönüştürebilirsiniz.

6.7 sayısı, sonunda sağ alt op-amp'in çıkışında gösterilir. CircuitJS, sayıları herhangi bir fareyle üzerine gelmeksizin sunarken 6.75 ila 6.7'yi keser. Farenin üzerine yerleştirildiğinde, 6.69 V, yani 250 mV'den az ve bunun için kabul edilebilir 60 mV hatası gösterildi. Göre .. en iyi simülatör değil.


Andy Aka'nın cevabını okuduktan sonra başka bir cevabın yenip geçemeyeceğinden emin değilim. Başka bir cevap yenerse onun birkaç gün içinde kabul edeceğim. Cevabımın Andy'yi yeneceğine inanmıyorum.


1

Geçenlerde 1968 analog bilgisayarında "Parabolic Multiplier" devresine rastladım. A ve B'yi çarpmak için A + B ve AB'yi hesaplamak üzere iki op amper ile başlarsınız. Daha sonra, X ^ 2 (yani bir parabol) üreten bir işlev üretecine ihtiyacınız vardır. İki fonksiyon jeneratörü ile (A + B) ^ 2 ve (AB) ^ 2 hesaplarsınız. İki sonucu bir op amp ile çıkarırsınız, sonuçta 4 × A × B elde edilir, bu da ölçeklemeden sonra istediğiniz şekilde A × B verir.

X ^ 2 fonksiyonunu nasıl elde edersiniz? Rastgele bir dışbükey fonksiyon (X ^ 2 gibi) bir direnç-diyot ağı ile yakınlaştırılabilir. Fikir, her diyotun belirli bir giriş voltajında ​​(üst dirençler tarafından kontrol edilir) açılacağı ve çıkışa bir akım (alt dirençler tarafından kontrol edilir) sağlayacağıdır. Sonuç parçalı doğrusal bir işlevdir. (Aşağıdaki bileşen değerleri keyfidir; X ^ 2 için değerleri çalışmadım.) Gerçek bir fonksiyon üretecinin daha fazla doğruluk için bir düzine diyotu olabilir. Bir fonksiyon jeneratörü kablolu olabilir veya potansiyometre içerebilir, böylece kullanıcı onu istenen herhangi bir fonksiyona ayarlayabilir.

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

Parabolik Çarpan, analog çarpma işleminin yüksek doğrulukta bir yolu olarak kabul edildi. Kısa bir açıklama Dornier 240 analog bilgisayar kılavuzundadır . (Almancada 9. bölümdeki Der Parabel-Multiplizierer'e bakınız.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.