UARTs sering membiarkan Anda memilih antara 1, 1,5 dan 2 stop bit. Dengan payload efisiensi 1 stop bit adalah 80% (8/10), dengan 2 stop bit yang turun menjadi 72,7% (8/11). Jadi, apa keunggulan bit stop kedua?
UARTs sering membiarkan Anda memilih antara 1, 1,5 dan 2 stop bit. Dengan payload efisiensi 1 stop bit adalah 80% (8/10), dengan 2 stop bit yang turun menjadi 72,7% (8/11). Jadi, apa keunggulan bit stop kedua?
Jawaban:
Bit penghenti ekstra dapat menjadi cara yang berguna untuk menambahkan sedikit waktu pemrosesan penerimaan tambahan, terutama pada kecepatan baud yang tinggi dan / atau menggunakan UART lunak, di mana waktu diperlukan untuk memproses byte yang diterima.
Di mana kecepatannya ketat, dan UART Anda hanya menawarkan rasio pembagian dalam kekuatan 2, menambahkan stopbit tambahan bisa menjadi opsi untuk memberikan pengurangan kecepatan yang tidak terlalu drastis daripada baudrate terendah berikutnya.
Saya percaya ini adalah salah satu alasan standar DMX512 menetapkan 2 stopbits.
Situasi lain di mana mereka dapat berguna adalah jika Anda memiliki perangkat meneruskan aliran data tanpa buffering atau paket - perbedaan kecil dalam laju clock antara node dan granularity sampling terbatas dapat menyebabkan kesalahan terjadi karena data diterima dan dikirim kembali oleh sejumlah node di rantai, tetapi jika data dikirim dengan 2 stopbits dan penerima diatur ke satu stopbit, itu menambah margin yang cukup untuk mengakomodasi kesalahan ini dan meninggalkan setidaknya satu periode stopbit yang valid untuk node jauh di bawah rantai untuk menerima secara andal.
Saya juga mengalami situasi di mana kabel yang sangat panjang menyebabkan asimetri pada naik dan turunnya waktu, mengakibatkan panjang stopbit yang tidak memadai - mengirimkan 2 stopbits dan membuat penerima hanya perlu memperbaiki satu ini.
Dalam beberapa hari, printer yang sudah lama hilang (hampir) merupakan konstruksi mekanis. Baudrate agak terstandarisasi bahkan saat itu, jadi menambahkan bit stop tambahan akan memberi printer waktu ekstra untuk mencetak karakter. Aspek waktu lebih terlihat saat itu. Untuk printer pertama saya, http://en.wikipedia.org/wiki/Teletype_Model_33 yang berisik , saya harus memasukkan jeda dua karakter setelah mengirim Carriage Return.
Dua bit stop tidak mungkin jauh lebih berguna daripada satu pada sistem yang memiliki proporsi waktu berhenti yang signifikan dan yang bekerja di lingkungan dengan noise rendah (BER rendah) seperti internal ke peralatan atau dalam antarmuka periferal dengan beberapa meter kabel dan / atau tanpa tahap modem-modem.
Bit 2 stop memberi Anda waktu sinkronisasi yang lebih besar, lebih banyak waktu untuk memproses antar karakter dan mungkin, tergantung pada perangkat keras dan algoritma, peluang yang lebih baik untuk mendapatkan atau mendapatkan kembali sinkronisasi selama aliran data yang berkelanjutan. Waktu Intercharacter jauh lebih sedikit nilainya pada sistem modern daripada ketika kecepatan clock rendah dan throughput prosesor lebih rendah.
Jika pada dasarnya Anda memiliki aliran data kontinu, maka jika tidak disinkronkan, bit tinggi apa pun akan tampak seperti bit stop. Setiap transisi rendah tinggi akan terlihat seperti batas byte. Jika penerima Anda mulai pada batas 10 dan itu bukan batas awal yang benar maka ini hanya akan ditemukan 50% dari waktu) (yaitu jika "stop bit" terakhir ditemukan benar-benar menjadi bit data rendah dan Anda juga akan telah melewati batas stop / start asli di sepanjang jalan. Rata-rata Anda memiliki 1/4 prospek batas byte menjadi 1/0 dan keliru tampak seperti pasangan stop / start. Di atas menunjukkan bahwa jika Anda memilih stop- false false mulai berpasangan maka kemungkinan ada sekitar 50% bahwa Anda akan memilih yang lain pada upaya berikut.
Jika Anda menggunakan 2 stop bit (11) maka urutan stop start yang valid adalah 110 yang memiliki peluang 1/8 terjadi dalam lalu lintas data acak. Pencampuran bit stop dan start asli dalam aliran yang tidak disinkronkan mengubah sats sedikit tetapi tampaknya relatif tidak mungkin bahwa jika Anda mendapatkan urutan 110 stop / start palsu pada satu siklus yang Anda akan menekan yang lain mencoba berikutnya sebelum tersandung pada yang asli 110 urutan yang selanjutnya terjadi.
Seperti yang Anda perhatikan, 1 stop bit menghasilkan 8/10 = throughput maks 80% dan 2 stop bit menghasilkan 8/11 = efisiensi 72%. Perbedaan dalam throughput pada batas mengucapkan adalah 80% / 72% = ~ 11% lebih. ini adalah keuntungan yang berguna dalam keadaan ekstrim tetapi tidak luas dan jika sirkuit idle lebih dari sekitar 10% dari waktu itu bernilai minimal. Jika sirkuit Anda berisik dan rentan kehilangan sinkronisasi sesekali, bit stop ekstra mungkin banyak membantu. TETAPI jika Anda sangat peduli dengan throughput Anda sering dapat meningkatkan baud rate (tidak selalu) atau mengubah ke operasi sepenuhnya sinkron.
Untuk memperkuat poin mikeselectricstuff tentang menerima waktu dengan "UART lunak", aplikasi penerimaan yang akan selalu tahu kapan menerima data dan melakukannya berdasarkan polling sering dapat menangani laju baud yang lebih cepat daripada yang praktis dengan UART lunak yang digerakkan oleh interupsi. Aplikasi seperti itu, bagaimanapun, hanya dapat memproses data yang masuk selama waktu antara awal bit stop satu byte dan bit awal byte berikutnya; waktu yang diperlukan untuk memproses setiap byte akhirnya menjadi faktor pembatas untuk kecepatan komunikasi. Memproses data pada 115.200-N-8-2 tidak jauh lebih berat daripada memprosesnya di 57.600-N-8-1, tetapi lebih cepat dari 80%.
Kadang-kadang seseorang dapat mendorong lebih jauh dengan menggunakan format data yang tampaknya kurang efisien. Sebagai contoh, seseorang dapat mengirim setiap byte dalam dua bagian, satu dengan tujuh bit dan satu dengan satu (MSB dari bagian satu-bit sudah diatur). Jika seseorang melakukan itu, bahkan dengan hanya satu bit stop, akan ada delapan kali penandaan antara akhir satu byte-pasangan dan awal berikutnya, sehingga memungkinkan seseorang untuk mendorong bit rate empat kali lebih tinggi dari apa yang satu bisa lakukan dengan hanya dua bit stop (dan delapan kali lebih tinggi dari apa yang bisa dilakukan dengan satu). Meskipun harus mengirim dua kali lebih banyak byte, peningkatan kecepatan data empat kali lipat akan menjadi kemenangan besar. Selain itu, meskipun setiap pasangan byte yang ditransmisikan dapat digunakan untuk mengirim delapan bit data, hanya 130 dari 256 nilai byte yang mungkin akan digunakan oleh pengkodean,
Alkisah ada monster elektromekanis yang disebut teletype. Sebagian besar berlari pada motor AC yang sinkron dengan frekuensi saluran listrik. Dengan demikian selalu ada kemungkinan bahwa dua mesin yang berkomunikasi mungkin tidak disinkronkan ke jaringan listrik yang sama atau bahkan berjalan pada arus bolak-balik menggunakan frekuensi yang berbeda dalam hal ini.
Dengan demikian, untuk memungkinkan mesin yang lebih lambat untuk mengejar ketinggalan dan tidak hanyut dari selaras, dua bit stop dikirim.
Untuk keperluan lain seperti memungkinkan print carriage untuk kembali ke awal baris baru, CR, LF ditambah dua rubrakan dikirim (semua lubang pada pita 8 level).
Itu adalah kebiasaan untuk sirkuit yang berjalan pada kecepatan 110 Baud dan lebih lambat.