Bir veya iki UART durdurma biti?


15

UART'lar genellikle 1, 1.5 ve 2 durdurma biti arasından seçim yapmanızı sağlar. 1 durdurma biti taşıma kapasitesi verimliliği% 80'dir (8/10), 2 durdurma biti% 72,7'ye (8/11) düşer. İkinci durdurma ucunun avantajı nedir?

Yanıtlar:


19

Ekstra durdurma bitleri, özellikle yüksek baud hızlarında ve / veya alınan baytın işlenmesi için zamanın gerekli olduğu yumuşak UART kullanarak biraz ekstra alma işlem süresi eklemek için yararlı bir yol olabilir.

Hızın sıkı olduğu ve UART'ınızın sadece 2 güçte bölme oranları sunduğu durumlarda, ekstra bir dur biti eklemek hızda bir sonraki en düşük baud hızından daha az sert bir azalma sağlamak için bir seçenek olabilir.

Bunun DMX512 standardının 2 durdurma biti belirtmesinin bir nedeni olabileceğine inanıyorum.

Yararlı olabilecekleri başka bir durum, herhangi bir tamponlama veya paketleme olmadan bir veri akışını ileten cihazlarınız varsa - düğümler arasındaki saat hızlarında ve sonlu örnekleme tanecikliğinde küçük farklılıklar, veriler bir dizi düğüm tarafından alındığında ve yeniden iletildiğinde hataların oluşmasına neden olabilir. ancak veriler 2 durdurma biti ile gönderilirse ve alıcılar bir durma bitine ayarlanırsa, bu hataları barındırmak ve zincirin aşağısında düğümlerin güvenilir bir şekilde alması için en az bir geçerli durma süresi bırakacak kadar marj ekler.

Ayrıca, çok uzun bir kablo çalışmasının yükselme ve düşme zamanlarında bir miktar asimetriye neden olduğu, yetersiz durma uzunluğuna neden olan - 2 stop biti göndermek ve alıcının sadece bir tane sabitlemesini gerektiren bir durum ortaya koydum.


6

Günler süren yazıcılar (neredeyse) tüm mekanik yapılardır. Baudrates o zaman bile biraz standardize edildi, bu yüzden ekstra bir durdurma biti eklemek yazıcıya karakteri yazdırmak için biraz zaman kazandıracaktı. Zamanlama unsurları o zamanlar daha görünürdü. İlk yazıcım için, gürültülü bir http://en.wikipedia.org/wiki/Teletype_Model_33 , bir Satır Başı gönderdikten sonra iki karakterden oluşan bir duraklama eklemek zorunda kaldım.


Düzgün ayarlanmış bir Model 33, Taşıyıcı Dönüşünden sonra yalnızca bir karakter gerektiriyordu. İşte o zaman Linefeed'i göndermeniz gerekiyor! 2 durdurma bitine ihtiyaç duyduklarını unuttum, ama haklısın ve böylece Russel'in cevabının altında söylediklerim geçerli (ancak bu 1.5 durdurma bitleri Baudot donanımı için). Ekstra durdurma bitleri (10 ms'lik) herhangi bir Satır Başı gecikmesine yardımcı olmadı.
gbarry

4

İki durdurma bitinin, önemli oranda durma süresine sahip olan ve ekipmana dahili gibi düşük gürültülü (düşük BER) bir ortamda veya birkaç metrelik bir çevresel arayüzde çalışan bir sistemde birinden çok daha yararlı olması pek olası değildir. kablo ve / veya modem-modem aşaması olmadan.

2 durdurma biti size daha fazla senkronizasyon süresi, karakterler arasında işlem yapmak için daha fazla zaman ve muhtemelen donanım ve algoritmalara bağlı olarak, sürekli bir veri akışı sırasında senkronizasyon kazanma veya yeniden kazanma şansını artırır. Karakterler arası süre, modern sistemlerde saat hızlarının düşük ve işlemci veriminin daha düşük olduğu zamanlardan daha az değerlidir.

Temelde sürekli bir veri akışınız varsa, senkronize edilmemişse, yüksek bitler bir durdurma biti gibi görünür. Düşük tüm geçişler bayt sınırı gibi görünecektir. Alıcınız 10 sınırda başlıyorsa ve bu gerçek bir başlangıç ​​sınırı değilse, bu zamanın yalnızca% 50'sinde keşfedilecektir) (yani son "durdurma biti" aslında düşük bir veri biti olarak bulunursa ve ayrıca Ortalama olarak bir bayt sınırının 1/0 olması ve hatalı olarak bir durdur / başlat çifti gibi görünmesi için 1/4 olasılık vardır. başlangıç ​​çifti o zaman muhtemelen aşağıdaki girişimde başka birini seçmek için yaklaşık% 50 şansı vardır.

2 durdurma biti (11) kullanırsanız, rastgele bir veri trafiğinde 1/8. Şansı olan geçerli bir durdurma başlatma sırası 110'dur. Senkronize olmayan akışta orijinal durdurma ve başlatma bitlerinin karıştırılması, doygunlukları biraz değiştirir, ancak bir döngüde yanlış bir 110 durdurma / başlatma dizisi alırsanız, orijinal 110'un üzerinde tökezlemeden önce bir sonraki denemeyi vurmanız nispeten olası görünmemektedir. sıradaki sıra.

Dikkat ederseniz, 1 stop biti 8/10 =% 80 maksimum verim ve 2 stop biti 8/11 =% 72 verim sağlar. Tam sınırdaki verim farkı% 80 /% 72 = ~% 11 daha fazladır. bu, aşırı koşullarda yararlı bir kazançtır, ancak geniş değildir ve devre, zamanın yaklaşık% 10'undan daha fazla boşta kalırsa, minimum değerdedir. Devreniz gürültülü ve zaman zaman senkronizasyon kaybına eğilimliyse, ekstra durdurma biti çok yardımcı olabilir. AMA verimi çok önemsiyorsanız, baud hızını (her zaman değil) sık sık artırabilir veya tamamen senkronize çalışmaya geçebilirsiniz.


Tam bir bit işaretleme zamanından önce gelmeyen herhangi bir görünür başlangıç ​​bitini göz ardı edecek şekilde yapılandırılabilecek herhangi bir UART'ı bilmiyorum (aslında, çoğu yarım bitlik zamandan önce başlayan bir başlangıç ​​bitini kabul edecektir. işaretler ve aksi takdirde yapılandırılamaz). Ancak böyle bir özellik yararlı olabilir.
süper kedi

Bu uygulamanın mekanik günlere geri döndüğünü kabul edebilirsek, doğru cevaba rastladınız. O zamanlar, alıcı mekanizmanın bir sonraki başlangıç ​​bitine hazır hale gelmesi için yaklaşık 1 bit zamana ihtiyacı vardı. Böylece verici, 1.5 bit zaman durdurma bitine sahip olacak şekilde yapılandırıldı. Tarif ettiğiniz etkiyi yarattı. Senkronizasyon kaybedildiyse, senkronizasyonu tekrar kazanana kadar birkaç çöp karakteri olabilir. Elektronik uygulamalara geldiğimizde, alıcı durma seviyesine geçişi gördükten hemen sonra bir sonraki başlangıç ​​bitini beklemeye başlayabilir
dolguya

@gbarry - methinks yorumunuzda tökezlemedi.
Russell McMahon

Aslýnda, karakterlerim bitti :) Bir sorun mu var?
Nisan'ta gbarry

3

Mikeselectricstuff'ın "yumuşak UART'lar" ile alma süresi konusundaki noktasını yükseltmek için, veriyi ne zaman kabul edeceğini her zaman bilen ve bunu yoklama temelinde yapan bir alma uygulaması, genellikle kesintiye dayalı yumuşak UART ile pratik olandan daha hızlı baud hızlarını işleyebilir. Ancak bu tür uygulamalar, yalnızca bir baytın durma bitinin başlangıcı ile bir sonraki baytın başlatma biti arasındaki sürede gelen verileri işleyebilir; her bir baytı işlemek için gereken süre iletişim hızı için sınırlayıcı faktördür. 115.200-N-8-2'deki verileri işlemek, 57.600-N-8-1'deki verileri işlemekten çok daha fazla talep etmez, ancak% 80'den daha hızlıdır.

Bazen daha az verimli olan veri formatlarını kullanarak işleri daha da ileriye götürebiliriz. Örneğin, her baytı biri yedi bit ve biri bir bit olmak üzere iki parça halinde gönderebilirsiniz (bir bitlik kısmın MSB'lerinin hepsi ayarlanır). Biri bunu yaparsa, sadece bir durdurma biti ile bile, bir bayt çiftinin sonu ile bir sonrakinin başlangıcı arasında sekiz bit işaretleme olacaktır, böylece bit hızının ne kadar dört kat daha fazla itilmesine izin verilir sadece iki durdurma biti ile (ve bir tane ile yapabileceğinden sekiz kat daha yüksek) yapabilirdi. İki kat daha fazla bayt göndermek zorunda kalmasına rağmen, veri hızındaki dört kat artış büyük bir kazanç olacaktır. Ayrıca, iletilen her bayt çifti sekiz bit veri göndermek için kullanılabilse de, kodlama tarafından 256 olası bayt değerinden sadece 130'u kullanılabilir,


Ayrıca, başlangıç ​​biti kenarında bir kesme oluşturarak ve tüm bayt için kesme kodunun içinde kalarak UART yüksek baudratlarını (250K ve üstü) yumuşak yapabilirsiniz - burada ekstra bir bit biti çok yararlı olabilir.
mikeselectricstuff

mikeselectricstuff: Her bayttaki bitlerden sadece bazılarını kullanmak gibi ekstra bir durdurma biti çok yararlı olabilir (her baytın LSB'sinin ayarlanması gerekir, çünkü bu bitin yükselen kenarından zamanlama türetilebilir, hatta kesinti meydana geldiğinde küçük bir eğim varsa). Bununla birlikte, bit-kesme-tetiklemeli başlangıç-bit-bit yaklaşımının önemli bir sınırlaması, gelen veriler gelebilirken veri göndermenin güzel bir yolu olmamasıdır. Ya iletilen veriler ya da alınan veriler (ya da her ikisi) kaybedilecektir.
Supercat

2

Bir zamanlar teletip adı verilen elektromekanik canavarlar vardı. Çoğu, güç hattı frekansı ile senkronize olan AC motorlarda çalışmıştır. Bu nedenle, iki iletişim makinesinin aynı güç şebekesine senkronize edilmemesi veya hatta bu konu için farklı frekanslar kullanarak alternatif akımla çalışmaması ihtimali her zaman olmuştur.

Böylece, daha yavaş bir makinenin yakalanmasını ve senkronizasyondan kaymamasını sağlamak için iki durdurma biti gönderilmiştir.

Baskı taşıyıcının yeni bir hattın başına dönmesine izin vermek gibi başka amaçlar için, bir CR, LF artı iki oluk gönderilmiştir (8 seviyeli bir bant üzerindeki tüm delikler).

110 Baud hızında ve sadece daha yavaş çalışan devreler için alışılmış bir durumdu.


1

Alıcı mekanik cihazların yavaşlığı, ekstra durdurma bitleri eklemenin arkasındaki nedendi, ancak bugünkü cihazlar yeterince hızlıdır ve ekstra durdurma bitine gerek kalmadan daha yüksek baud hızlarında çalışmaktadır.

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.