16550のFIFO
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/13 02:44 UTC 版)
「16550 UART」の記事における「16550のFIFO」の解説
以前の8250 UARTや16450 UARTの欠点は、1バイト受信する度に割り込みが発生することであった。転送速度が向上するにつれて、割り込みが高い頻度で発生することになった。より深刻なことに、受信バッファが1バイトしかないため、割り込み要求への応答が遅れると受信したバイトを読み出す前に次の受信データで上書きされる本質的な危険があった。この欠点を克服するため、16550シリーズのUARTは、割り込みトリガレベルを1,4,8,14バイトにプログラム可能な、16バイトのFIFOを組み込んだ。 不幸なことに、最初の16550にはバグがあり、このFIFOを使用できなかった。NS社はその後、この問題を修正した16550Aをリリースした。しかし、全てのメーカがこの名称を使用しなかったので、修正したチップも16550と呼ばれ続けた。 16550は送信FIFOも組み込んだ。この特徴は絶対的なものではない。送信で要求された割り込みへの応答が遅延しても、次のデータ転送までの間が開いて転送速度が低下するが、データの欠落は発生しない。 TI社のTL16C550C以降では、対応ソフトウェアを利用することによりオートフロー制御を利用できる。受信FIFOが一杯になる前にフロー制御 (RTS) により受信を停止する。割り込みが1,4,8バイトの場合はFIFOが空になると、14バイトではFIFOが空きができると受信を再開する。TL16C550Bまでは、NSの16550Aと同じ機能レベルである。TI社はその後、更なる高速化とFIFOを64バイトに増量したTL16C750をリリースした。16バイトFIFOモードでは、オートフロー制御を除いてTL16C550Cと同等の動作である。対応ソフトウェアで利用できる64バイトFIFOモードでは、1,16,32,56バイトで割り込みをかけられる。オートフロー制御はどちらのモードでも、また割り込みが何バイトでも、FIFOが空になるまで受信を再開しない。
※この「16550のFIFO」の解説は、「16550 UART」の解説の一部です。
「16550のFIFO」を含む「16550 UART」の記事については、「16550 UART」の概要を参照ください。
- 16550のFIFOのページへのリンク