Neden eşitlikle uğraşasınız ki?


12

Uygulamamda bir SPI çevre birimi kullanıyorum. Çevre birimi, 15 veri biti ve hata tespiti için Çift Eşitlik bit içeren paketleri döndürür.

SPI çevre birimindeki parite

Bu nedenle, tüm sıfırlar ve hepsi parite kontrolünden geçer.

Bu, mikro denetleyicimin en yaygın hata türünü algılayamayacağı anlamına gelir: çevre birimi bağlantısı kesildi! Bu durumda, alınan bitlerin hepsi sıfırdır ve parite kontrolünden geçer.

Çevresel üreticinin Odd parity uygulamasını uygulamanın o kadar kolay olacağını varsayarsak, sorum şu: Neden bu durumda parite bile kullanmayı seçtiler ? Bu durumda Eşit Eşlik'in en yaygın hata türünü yakalayamamasını telafi etmesinin başka bir avantajı var mı?


6
"Eşlik", çift veya tek dinozor teknolojisi olduğunu, modern, profesyonel sistemlerde kullanılmaması gerektiğini lütfen unutmayın. Tek bit hatalarını yakalama olasılığının% 50'sinden az ve çok bitli hatalar için daha da kötü olma olasılığı vardır. Parite kullanmayı unutun, bunu 1960'larda bile moronik bir fikirdi. Bir SPI veri hattını doğrulamanız gerekiyorsa, bir giriş yakalama zamanlayıcısı veya benzeri kullanarak alt katmandaki verileri denetlemelisiniz. Ayrıca arabellek taşması vb. İçin SPI bayraklarını kontrol edin
Lundin

39
@Lundin "Tek bit hatalarını yakalama olasılığının% 50'sinden daha az ve çok bitli hatalar için daha da kötü olma olasılığı var." - Tek bir bit yanlışsa, parite yanlış olur. Basit parite,% 50'den az değil, tek bitli hataları yakalama şansı% 100'dür. (benzer şekilde, 2 bitlik hataları yakalama şansı% 0 ve 3 bitlik hataları yakalamada% 100'dür).
marcelm

7
@Lundin - Lütfen yorumlarınızı bu fişleri yapan AMS üreticilerine yöneltin.
Rocketmagnet

26
@Lundin Eşlik biti ters çevrilirse, eşlik denetimi yine de başarısız olur.
Adam Haun

4
Çoğu durumda bu hala işe yaramaz. Jan ᶰᵉᵉᵈᵉᵈ⁾
dasdingonesin

Yanıtlar:


14

Tek bir eşlik biti yalnızca hatalarda tek veya tek sayıda bitlerin varlığını kontrol edebilir, bu nedenle bir çevre biriminin bağlantısı kesildiğinde algılamasını beklemek muhtemelen çok fazla bekler.

Bununla birlikte, birçok sistem, bir çevre birimi mevcut olmadığında sürekli bir 1 serisi üretecektir ve bu, geri dönen veri hattında basit bir çekme direnci ile gerçekleştirilebilir. Bağlı bir çevre birimi tarafından döndürülen gerçek 8 bit veri olsaydı, eşlik biti iletilen ondalık 255 için sıfır olacaktır. Böylece parite bile bu koşullar altında bir çevre biriminin bağlantısının kesildiğini tespit edebilir.

Eğer tek parite kullanılmışsa, 8 yüksek bit (ondalık 255) yüksek bir parite biti ile sonuçlanacaktır, böylece tek parite, periferik çip kaybını saptamanın bir aracı olarak işe yaramaz hale gelir.

Kurslar için atlar.


2
Aptal bana, bu özel uygulamanın 15 veri biti ve bir parite biti olduğunu söylemeliydim. Şimdi düzeltildi. Ancak yine de, bir bağlantı denetiminin tamamen bağlantısı kesilmiş bir çevre birimini algılamasını beklemenin mantıklı olduğunu düşünüyorum. Oldukça yeteneklidir ve aslında yapabileceğiniz en yararlı kontroldür.
Rocketmagnet

1
@Rocketmagnet ayrıca, sorunuza eklediğiniz tablonun çevre birimine gönderilen veri biçimi için olduğu anlaşılıyor - 14. bit için "0 olmalı" terimini not edin - belki de cihazın veri sayfasına bağlanmalısınız ?
Andy aka

3
Modifiye edilmiş tablo, bit bayrağı hata bayrağı olarak 14'ü gösterir ve tavsiyem, cihazın bağlantısı kesildiğinde tüm 1'leri yapmak için seri dönüş verilerinde bir pull-up kullanmaktır, çünkü kod çözülmüş bit 14 bir problemi gösterecektir.
Andy aka

1
@Trevor_G ayy evet. Değişiklik devam ediyor.
Andy aka

1
Uygun beklenti, spi denetleyicisini kullanan yazılımın bir risk varsa geri gelen verileri doğrulaması gerektiğidir. Bir veya diğer taraflar üzerinde kontrolünüz yoksa, bunu kesinlikle daha üst düzey yazılımda yapmanız gerekir. Bunu bırakabileceğiniz tek zaman, spi tasarımının her iki tarafını da kontrol edip bit hata gereksinimlerinizi karşılarsanız, bu durumda yapamayacağınız seslerdir. Yani yazılımınız spi kontrolörünün işi veya sınırlı kullanışlılığı olan parite değil, tüm sıfırları ve hepsini kontrol etmelidir ...
old_timer

5

Eşlik veya herhangi bir blok hata tespiti, bir veri iletiminin kendisindeki hataları tespit etmeyi amaçlamaktadır. Parite edilir değil veri iletim gerçekleşiyor olup olmadığını saptamak için tasarlanmıştır.

Bir iletim hattı göz önüne alındığında, birkaç farklı endişe türü vardır. Burada önemli olan ikisi şunlardır: 1) hattın kendisinin açıkça başarısız olması ve 2) belirli bir iletim içindeki veri hatalarının engellenmesi. Daha az ilgili olanlar, örneğin, yanlış hat voltajları, protokol hataları veya güvenlik hatalarıdır. Eşlik 2'ye yardımcı olur, ancak 1'e yardımcı olmaz. Bir iletim hattının her iki ucundaki bir alt sistemin 1 (bir bağlantının açıkça başarısız olması) ile başa çıkabilmesi için başka bir protokol özelliği gereklidir.

Tek bir eşlik bitinin hata algılama oranı genellikle% 50'den yüksektir. Bu oranın tam olarak ne olduğu, protokoldeki veri segmentinin sezgisel özelliklerine bağlıdır. Diyelim ki bir paketiniz var (MSB) 1011010111011110 ve son iletilen bitte tek bir bit hatası var, eşlik kontrolü başarısız olur ve paketi doğru bir şekilde reddeder. Benzer şekilde, ilk bitte (eşlik biti) bir veri hatası varsa, paket reddedilir.

Bu check-in donanımını gerçekleştirmek son derece basittir ve karmaşık bir işlem gerektirmez. Çöp toplanmış yazılım yığınları çalıştıran işlemciler tarafından üretilen saat eğriliği veya saat sinyalleri gibi şeyleri ayıklamak için nispeten düşük bit hata oranlarına sahip uygulamalarda kullanışlıdır.

SPI, tek bit hata oranının hattın kaybına bağlı olmadığı kısa elektriksel olarak bağlı hatlar için tasarlanmış fiziksel bir bağlantı protokolüdür. Kayıplı bir çizgide bir şey yönetiyorsanız, eşlikten daha sağlam bir şeye ihtiyacınız olacak. SPI'nin yaptığı bu değil.

Bir aygıtın hala bağlı olup olmadığını kontrol etmek için yığınta daha yüksek bir şey deneyin. Karşılaştırıldığında, TCP / IP (özellikle IP), parite bitlerini belirtmezken, 802.x Ethernet özelliklerinin çoğu bunu yapar. IP ise, karmaşık, "orada mısın?" protokol. SPI'nın üstünde ne var? Veri bağlantısı yönetiminin cevabı muhtemelen oradadır.


1
802.3 ve .11, CRC32 kullanır; IP ve TCP ve (isteğe bağlı olarak) UDP, 16 bitlik bir tamamlayıcı toplamı kullanır; bu, günümüzde çok az makine veya hatta ALU'nun 1sC olması nedeniyle çoğunlukla imzasız ekleme ve taşıma ile uygulanır.
dave_thompson_085

Mesele şu ki, parite çizginin kendisinin açıkça başarısızlığını kolayca tespit edebiliyordu . 1'lerin hepsini veya 0'ların hepsini geri alırsam, bu bir hata olmalıdır.
Rocketmagnet

4

Tek başına eşitliğin eşit bir faydası yoktur. İletişim ve depolama şemalarında, eşlik polaritesi (tek veya çift), en olası veya en yüksek arıza modlarını yakalamak için seçilmelidir.

Dediğiniz gibi, yanıt vermeyen bir hedef veya bozuk veri alma kablosu, yüksek veya düşük bir MISO hattının sıkışmasına neden olabilir.

SPI üzerinden bayt gibi birkaç bit bile iletilirken, tek parite biti bu all-1 veya all-0 verilerindeki bir hatayı tespit eder, ancak parite bile olmaz.

Ancak, SPI üzerinden 15 bit ile uygulamanızda olduğu gibi, tek sayıda bit iletirken böyle net bir kazanan yoktur. Eşlik bile all-1'in durumunda bir hata tespit eder, ancak all-0'ın durumunu özler. Tersine, tek parite all-0'ın durumunda bir hata tespit eder, ancak all-1'in durumunu özler.


Aslında, evet, bu durumda açıkça var . Soruda açıkladığım gibi, Tek parite tespit edebilecekti: eksik, hatalı bağlantısız yongalar ve kablo arızaları, oysa parite bile yapamıyor.
Rocketmagnet

0

Çift veya tek parite ile fayda açısından çok az fark vardır. Biri diğerine tek bir ters geçitle dönüştürülebilir. Eşlik bitinin temel amacı, bu değerdeki sadece 15 biti kontrol etmektir. Başka bir şey yapmak onun amacı değildir. Birinin veya diğerinin eksik, hatalı veya bağlantısı kesilmiş bir çipi algılayabileceği bir husus değildir. Bağlantısının kesilmesinin sizin durumunuzdaki en yaygın hata türü olduğunu belirttiniz. Farketmez. Eşlik biti, bu tür bir hatayı algılamak için mevcut değildir.


0

Bunu sorgulamakta haklısın, eşitlik konusunda bile aynı eleştiriye sahibim. Eşlik bitinin eklenmesinden önce tek bir veri bitiyle, örneğin örnekte olduğu gibi ve yaygın olduğu gibi, eşitlik bile 0'ların ve 1'lerin hepsinin geçerli iletilen sözcükler olmasına izin verir; Tony M'nin önceki cevabı bu konuda yanlış. Kanıt için 7bit veri örneği tablosuna bakın: - https://en.wikipedia.org/wiki/Parity_bit

Ancak tek parite, 0'ların tümüne veya 1'lerin tümüne ters bir durum biti ekler, böylece bağ ve çipin canlı olduğunu kanıtlar ve bu durumda çok daha iyi bir seçim olur.

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.