SPI Veri Yolu Sonlandırma Hususları


22

Bu yüzden, önceki soruma göre , SPI veri yolunu kısa mesafeden yönetim kurulu iletişimine kullanmak için sordum. Sonlandırma dirençlerini denemem önerildi. Hedefe yakın bir direnç yerleştirdim (ancak tam olarak orada olmadı, 1 cm'lik bir mesafe vardı) ve toprakladım [bu, sonlandırma direnci ayak izleri olmayan bir tahta olduğu için doğaçlama yapmak zorunda kaldım. Bir TQFP olduğundan ve hassas pinlere sahip olduğundan rezistörü cihaza lehimleyemedim.]

Bazı temel testlerden, bir 1K rezistörünün aşımı azalttığını gördüm. 470 Ohm ve 180 Ohm daha iyi çalıştı. Ne kadar aşağı gittim, o kadar iyi çalıştı. 180 Ohm ile, üst çekim bir volt veya biraz daha düşüktü. Şimdi, ne yazık ki, bundan daha fazla aşağı inemem, çünkü mevcut durum MCU'mun kaldırabileceğinden daha fazla. Yönetim kurulu güncel revizyonunda seri olarak 330 Ohm direnç kullanarak sorunu çözdüm. Bu, atışı 3.7 V'a getirdi ve yükselme süresi 10 ya da 11 ns idi. Ancak bir sonraki revizyonda gerçekten 'uygun' bir çözüm istiyorum. Frekans gereksinimlerim aynı kalıyor: 2 MHz ama 4 MHz tercih ediyorum.

Bu yüzden burada sormam gerektiğini hissettim: kurulun bir sonraki revizyonunda satırlara etli tamponlar yerleştirmeli miyim? Bir arabellek bulmak gerçekten bir sorun değil, mevcut çizim önemli ölçüde artacaktır - SPI'da sonlandırmaya ihtiyaç duyan 8 cihaz var ve her zaman etkin olan 3 satır var. Bir örnek, SCK 8 cihazın tümüne gider. Her cihazın 100 Ohm'luk bir sonlandırma direnci olacaktır. Yani bu 12 * 3.3 / 100 = 390 mA değerinde bir akımdır!

Peki buradaki en iyi başvuru nedir? Schottky diyotları kıskaç olarak kullanarak 'aktif sonlandırma' için mi gitmeliyim?

EDIT: Hat empedansı ile ilgili: Daha önce de belirttiğim gibi, amaç 4 harici pano bağlamak. Ped-pad mesafesi herkes için aynıdır (12 inç). Bununla birlikte, MCU ile aynı kartta aygıtlar da vardır - ancak bunların sonlandırılması gerekmez - uzunluklar yaklaşık bir inç (veya daha az) civarındadır ve çok az aşma (300 veya mV) vardır. Dış panolara giden izler aynı uzunluk ve genişlikte kabacadır. Tahtadaki 2. kat kırılmamış bir zemin düzlemidir.


Yaygın bir yöntem, hat empedansına uygun bir seri direnç yerleştirmektir. 50ohm seri sonlandırma gibi bir şey deneyin. İzlerinizi ve bağlantılarınızı biraz sabit bir empedans olacak şekilde tasarlarsanız yardımcı olur. Ancak, seri sonlandırmaları düşürmeyi deneyin ve ne bulduğunuzu görün. 32 ohm'luk bir zemine sonlandırma önerdi, aslında bu çok daha düşük gücü, 3dB daha az gücü, güç rayına 64 ohm ve toprak rayına 64ohm koyarak yapabilirsiniz.
Kortuk

@Kortuk 32 Ohm'luk bir direnç, ne yazık ki, aşmayı önemli ölçüde azaltmadı. Ancak, ayak izi aynı zamanda yanlış bir yerdeydi (asla sonlandırıcı olması amaçlanmamıştı) ve kaynağında değildi, bu yüzden emin olamadım. Hat empedansı ile ilgili olarak, tüm hatlar, kabaca aynı uzunluk ve genişliğe sahiptir. Hepsi tam bir zeminde koşuyor, bu da 2. kattaki bir uçak.
Saad

1
Seri sonlandırma kaynağındadır, eğer yüke yerleştirirseniz hiçbir şey yapmaz. Etkiyi görmek için kaynağınıza seri olarak 50ohm yerleştirmeyi deneyin.
Kortuk

Bunu stevenvh olarak düşünebilirsiniz, kapasitör olarak görev yapan tüm çizgi vardır ve direnç, topaklanmış bir model olarak düşünüyorsanız, düşük geçiş için R ile hareket eder. İletim hattı modeline bakarsanız, oradaki eşleşen bir direnç, genlik dalga hareketinin yarısına sahip olduğunuz anlamına gelir ve daha sonra diğer uca çarptığında ve onu tam değerine çarptığında gösterir.
Kortuk

Yanıtlar:


32

Sinyal sonlandırma hakkında konuşmak bir solucan konservesi açmak gibidir. Bu, sadece birkaç yüz kelimeyle özetlenmesi zor olan büyük bir konudur. Bu yüzden yapmam. Bu cevaptan çok fazla şey bırakacağım. Ancak size büyük bir uyarı da vereceğim: İnternetteki dirençleri sonlandırmakla ilgili çok yanlış bilgi var. Aslında, internette bulunanların çoğunun yanlış veya yanıltıcı olduğunu söyleyebilirim. Bir gün büyük bir şey yazıp bloguma göndereceğim, ancak bugün değil.

Unutulmaması gereken ilk şey, sonlandırmanız için kullanılacak direnç değerinin iz empedansınızla ilgili olması gerektiğidir. Direnç değeri çoğu zaman iz empedansınızla aynıdır. İz empedansının ne olduğunu bilmiyorsanız, bunu çözmelisiniz. Birçok çevrimiçi empedans hesaplayıcısı var. Bir Google araması düzinelerce daha fazlasını getirecektir.

Çoğu PCB izinin empedansı 40 ila 120 ohm arasındadır, bu yüzden 1k sonlandırma direncinin neredeyse hiçbir şey yapmadığını ve 100-ishm ohm'luk bir direncin çok daha iyi olduğunu keşfettiniz.

Birçok sonlandırma türü vardır, ancak bunları iki kategoriye koyabiliriz: Kaynak ve Sonlandırma. Kaynak sonlandırma sürücüde, son sonlandırma en uzak kısımdadır. Her kategoride, birçok sonlandırma türü vardır. Her tip farklı kullanımlar için en iyisidir, tek tip her şey için iyi değildir.

Uzak uçta topraklanacak tek bir direnç olan fesihiniz aslında pek iyi değil. Aslında, yanlış. İnsanlar yapıyor, ama ideal değil. İdeal olarak, bu direnç, güç rayınızın yarısında farklı bir güç rayına gidecektir. Yani, eğer G / Ç voltajı 3.3V ise, o zaman bu direnç GND'ye gitmeyecek, ancak 3.3v'nin (yani 1.65v) yarısında başka bir güç rayı geçecektir. Bu ray için voltaj regülatörü özel olmalıdır, çünkü çoğu regülatörün yalnızca kaynak akımını beslemesi gereken VE akımını batırması gerekir . Bu kullanım için çalışan düzenleyiciler veri sayfasının ilk sayfasında sonlandırma hakkında bir şeyden bahsedeceklerdir.

En sonlandırmanın en büyük sorunu, çok fazla akım tüketmeleridir. Bunun bir nedeni var, ama ben içine girmeyeceğim. Düşük akım kullanımı için kaynak sonlandırmasına bakmalıyız. Kaynak sonlandırmanın en kolay ve en yaygın şekli sürücünün çıkışındaki basit bir seri dirençtir. Bu direncin değeri iz empedansı ile aynıdır.

Kaynak sonlandırma, son sonlandırmadan farklı şekilde çalışır, ancak net etki aynıdır. İlk olarak yansımaları engellemek yerine sinyal yansımalarını kontrol ederek çalışır. Bu nedenle, yalnızca bir sürücü çıkışı tek bir yük besliyorsa çalışır. Birden fazla yük varsa, o zaman başka bir şey yapılmalıdır (sonlandırma veya çoklu kaynak sonlandırma dirençleri kullanmak gibi). Kaynak sonlandırmanın en büyük yararı, sonlandırmanın yaptığı gibi sürücünüzü yüklememesidir.

Kaynak sonlandırması için seri direnç sürücünüzde bulunmalı ve izleme empedansınızla aynı değerde olmalı dedim. Bu bir aşırı basitleştirmeydi. Bu konuda bilmek önemli bir detay var. Çoğu sürücü, çıktısında bir miktar direnç gösterir. Bu direnç genellikle 10-30 ohm aralığındadır. Çıkış direncinin ve direncinizin toplamı, iz empedansınıza eşit olmalıdır. İzinizin 50 ohm olduğunu ve sürücünüzün 20 ohm olduğunu varsayalım. Bu durumda, direnç 30 + 20 = 50'den bu yana 30 ohm olacaktır. Veri sayfaları sürücünün çıkış empedansı / direncinin ne olduğunu söylemezse, 20 ohm olduğunu varsayabilirsiniz - o zaman PCB üzerindeki sinyallere bakın ve ayarlanması gerekip gerekmediğine bakın.

Bir başka önemli şey: Bu sinyallere bir o kapsamda baktığınızda alıcıya ZORUNLU OLMALısınız. Başka bir yerde araştırma yapmak size çarpık bir dalga şekli verir ve işlerin gerçekte olduğundan daha kötü olduğunu düşünmenize neden olur. Ayrıca, yer klipsinizin mümkün olduğunca kısa olduğundan emin olun.

Sonuç: 33 ila 50 ohm'luk bir dirençle kaynak sonlandırmasına geçin, iyi olmalısınız. Her zamanki uyarılar geçerlidir.


David, ayrıntılı bir cevap için çok teşekkür ederim. Her şey mükemmeldi ama sistemimde bir başka komplikasyon daha var - SPI hatları bir tahtadan diğerine gider. Bu nedenle, hat empedansını tahmin etmek zor olabilir - sinyal, ana kart üzerinde yaklaşık 3 "ilerliyor, 6" şerit kablodan geçiyor ve sonra hedefine ulaşana kadar tekrar 3 "iz boyunca ilerliyor. Şerit kablo telleri alternatif zemin (SCK, GND, MOSI, GND vb. gibi) 30-20 Ohm öneriniz hala geçerli mi?
Saad

@Saad Böyle durumlarda yaptığım şey (ve bunu çok yaptım), sürücüye tek bir direnç kullanmak ve prototip oluşturulduktan sonra değerini değiştirmek. Bu bir uzlaşma, ama işe yarıyor. Aslında şu anda SPI'yi 1 metrelik kablolar üzerinde, her PCB'de 3-6 inç izlerle çalıştıran birkaç sistemim var. Bunlardan bazıları 30 MHz'de çalışıyor! Evet, 33 veya 47 ohm ile başlayın ve oradan ince ayar yapın.

3
Zaten + 1, ancak bir kaynak sonlandırmanın nasıl bağlanacağını gösteren bir şema (yani, seriden toprağa değil) çok yararlı olacaktır.
Photon

16

Kısa mesafelere gittiğinden, sonlandırma dirençlerinin iyi bir fikir olduğunu sanmıyorum. Gördüğünüz gibi, işi yapmak için oldukça düşük olmaları gerekiyor ve ardından hat çok fazla akım çekiyor ve hatta aynı empedansla çalıştırıyorsanız voltaj 2 ile zayıflatılmış.

Saat hızınız o kadar yüksek değil, bu yüzden 4 MHz bit hızını bile desteklemeniz gereken frekanslar soruna neden olan değil. Sorun şu ki, 100 MHz’de harmonikleri olan çizgileri süren hızlı bir kenarınız var ve bu da soruna neden oluyor. İstediğiniz frekanslarda, bir iletim hattına değil, toplu bir sisteme sahipsiniz. Bu, işleri oldukça kolaylaştırır.

Bu nedenle çözüm, gerçekten ihtiyaç duymadığınız ancak sıkıntıya neden olan yüksek frekansları azaltmaktır. Bu, bir çizgiyi süren herhangi bir şeyden hemen sonra basit bir RC düşük geçiş filtresi ile yapılabilir. Bu, 330 is dirençlerinin şimdi ne yaptığını kısmen yapıyor. Hattın parazitik kapasitansı ile düşük geçişli bir filtre oluştururlar. Görünüşe göre bu yeterli değil ve / veya yeterince tahmin edilebilir değil. Bu, her hat üzerinde belirli bir kapasitans ile sabitlenebilir.

Veri yolunu 4 MHz'de çalıştırmak istiyorsunuz, bu da desteklemesi gereken en hızlı sinyalin 4 MHz kare dalga olduğu anlamına gelir. Bu, her bir seviyenin uzunluğu 125 ns demektir. Diyelim ki en az 4 zaman sabiti olmak istiyoruz, bu da% 98'lik yerleşim zamanını ifade ediyor. Bu, izin vermek istediğimiz maksimum zaman sabitinin 31 ns olduğu anlamına gelir. 31ns / 330Ω = 94 pF. Bu, 31 ns zaman sabiti için ihtiyaç duyduğunuz 330 Ω serisi dirençlerin toplam yüküdür. Her zaman tahmin edemeyeceğiniz parazitik kapasitanslar olacaktır, bu yüzden 47 pF ile işlerin nasıl göründüğünü göreceğim. Bu izin verilen maksimum sabiti geçmeyecek şekilde 10-20 pF gizli kapasitansa yer bırakmaktadır.

Seri dirençler, otobüsü kullanan tüm pinlere mümkün olduğu kadar yakın olmalıdır. Bu, otobüste bulunan diğer tüm pinlerin, sürüş sırasında CMOS girişleri olacağını varsayar. Sadece tek bir pimle sürülen çizgiler için (yalnızca master tarafından sürülen saat çizgisi gibi), dirençten sonra 47 pF'yi mümkün olduğunca yakın yerleştirin. Farklı zamanlarda farklı pinlerle sürülen hatlar için (MISO gibi), 47 pF'yi tüm sürücülerin ortasına yakın bir yere koyun. Her bir hat, kaç sürücü olursa olsun, sadece bir 47 pF kapasitör alır, ancak her sürücü için bir direnç vardır.

Yukarıdaki hesaplamaların başlamak için iyi bir rehber olması amaçlanmıştır. Bazı parametreler bilinemez ve bu nedenle ön hesaba katılır. 330 series serisiyle ve 47 pF toprağa başlayın, ancak gerçek gözlemlenen sonuçlara dayanarak bir şeyleri değiştirmekten korkmayın.


2

Herhangi bir sonlandırmanın yokluğunda, çok düşük empedanslı bir kaynaktan çok yüksek empedanslı bir alıcıya bir sinyal gönderildiğinde, sinyal tekrar tekrar ileri geri sekecektir; Sinyalin fazı, her gidiş-dönüş turunda 180 derece döndürülür.

Birisi varış noktasına ulaştığında sinyallerin yansıtılmasını istemiyorsa, sonlandırma sonlandırılabilir. Bu, sinyalin hedefte yansıtılmadan temiz bir şekilde emilmesine neden olur, ancak birçok yaygın uygulama kaynağın önemli bir DC yükü görmesine neden olur.

Çoğu durumda, biri sinyal kaynağına bir dizi direnç eklerse pratikte faydalı olan sonuçlar elde edilebilir. Çizginin en ucunda alıcı yoksa, sinyal oraya ulaştığında yansıtılacaktır, ancak bu gibi bir yansıma yeniden yansıtılmak yerine kaynak tarafından emilecektir. Ayrıca kaynak sonlandırmanın, hattı süren cihaza bir DC yükü vermediğini unutmayın.

Sonlandırma yokluğunda, bir hat düşük empedansla çalıştırılırsa ve yüksek empedansla alınırsa, alıcı cihaz sürüş voltajından daha yüksek bir voltaj görebilir (teoride, kaynak sürüş empedansı ise voltajın iki katına kadar) sıfır ve alıcı empedans sonsuzdur). Kaynak veya alıcı uygun şekilde sonlandırılırsa, alınan voltaj sürücü voltajına neredeyse eşit olacaktır (sıfır empedanslı bir kaynak düzgün empedanslı bir alıcı kullanıyorsa veya uygun bir empedanslı kaynak sonsuz bir empedanslı alıcı kullanıyorsa, alınan voltaj sürücü voltajına eşit olacaktır). Her ikisi de uygun şekilde sonlandırılırsa, alma voltajı sürücü voltajının yarısı kadar olacaktır.

Simülasyon burada bunu göstermektedir. Saniyede yaklaşık 49 kez bir puls zinciri üreten seri halinde iki 5ms gecikme hattı (gidiş-dönüş süresi 1/50 saniye) ve her iki ucunda değiştirilebilir sonlandırma dirençleri içeren bir puls üreteci içerir.

Devre üç SPDT anahtarı içerir; durumunu değiştirmek için birine tıklayın. Alttaki iki anahtar, kaynak ve hedef sonlandırmasını kontrol eder. Bunlar için "yukarı" iyi sonlandırmayı temsil eder ve "aşağı" kötü temsil eder. Üstteki anahtar, hattın otomatik puls üreteci tarafından mı yoksa manuel mantık girişi tarafından mı çalıştırılacağını kontrol eder. Çizgiyi manüel olarak aşağı göndermek için, üst düğmeyi "aşağı" çevirin ve ardından "L" yi saatin yanına getirin.

Eğer hedef ulaşan sinyalleri temiz olacak ya kaynak ya da hedef doğru sona erer. Her ikisi de uygun şekilde sonlandırılırsa, alınan sinyal voltajı, sürücü voltajının yarısı kadar olacaktır. Eğer biri uygun şekilde sonlandırılırsa, diğeri değilse, alınan voltaj sürücü voltajının yaklaşık% 91'i olacaktır ("kötü" dirençler, on kat faktörle "hatalı" olur ve bu nedenle yaklaşık 10 (11) absorbe edemez enerjinin). Hiçbiri sonlandırılmazsa, alınan voltaj başlangıçta sürücü voltajının yaklaşık 1.656 katı olacaktır, ancak her 20ms'de bir tuhaf yansımalar görünecektir.


1

Bir AC sonlandırması deneyin (örneğin, 110 Ohm'luk bir dirençle seri halde bir 470 pF kondansatör) ve bu seri kombinasyonunu SPI Clock varış yerinin çıkışından toprağa bağlayın. Sonlandırma, kolaylıkla yapabileceği bir şeyi, aksi halde sıfır akımı boyunca kenar süresinin uzunluğu için yaklaşık 30 mA alacaktır. İki yönlü veri hattı için biraz daha zorlaşıyor. SPI veri hattının hem ana hem de bağımlı ucuna bir 470 pF, 220 Ohm AC sonlandırma koydum ve bu da işe yarıyor, yani kabul edilebilir aşma ve azaltma.

Bununla ilgili yorumlarınızı kabul ediyorum.


0

Önceki yazılar başındaki tırnağa çarptığında çok fazla ayrıntıya girilmiyor. Dengesiz çizgiler olması SPI'ye iniyor. Düşük bir saat frekansına sahip olsanız bile, hızlı ns saat kenarlarına uyulması gerekir. Benim durumumda Master tarafında SPI CLK hattıyla seri halde bir 470 ohm direnç bulundu. Bu rezistörü söküp dengesiz hatlar için Kafesten önerilen önerileri ve yukarıda belirtilen önerileri uygulayarak (çözümün sadece yanını Slave tarafından uygulayabilirim, filtre kapaklarını buna göre çimdikledim) SPI şeridim Haberleşme hatası olmadan 160cm ile 10cm arası:

Seri Arayüz İçin Gürültü Bağışıklığının İyileştirilmesi : Kafes Yarı İletken Beyaz Kitabı (Temmuz 2014)

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.