
16550 UART (ユニバーサル非同期送受信機) は、シリアル通信のインターフェースを実装するために設計された集積回路です。修正版の -A バージョンは、1987 年にナショナル セミコンダクター社からリリースされました。[ 1 ]これは、 IBM PC 互換パーソナル コンピュータのシリアル ポートを実装するためによく使用され、モデム、シリアルマウス、プリンタ、および同様の周辺機器用のRS-232インターフェースに接続されることがよくあります。これは、 1987 年に導入されたIBM PS/2ラインで使用された最初のシリアル チップでした。[ 2 ] [ 3 ] [ 4 ]
この部品は元々ナショナルセミコンダクター社製でした。同様の型番を持つデバイスは、ナショナルセミコンダクター社のオリジナル部品との互換性レベルは様々ですが、他のメーカーからも製造されています。16550とレジスタ互換性のあるUART機能は、通常、IBM PC互換機用の多機能I/Oカードに搭載されており、他の互換機のマザーボードにも統合されている場合があります。
IBM PC、XT、および互換機のユーザーにとって、工場出荷時に搭載されていた8250 UARTを交換することは、高速モデムが利用可能になった際によく行われたアップグレードでした。9600bpsを超える速度では、シリアルポートが文字を失わずに連続的なデータフローを処理できないことがユーザーの間で問題となっていました。8250(受信データバッファが1バイトしかない)を16550に交換し、場合によってはシステムソフトウェアをパッチ適用したり設定したりして、新しいチップのFIFO機能に対応させることで、高速接続の信頼性と安定性が向上しました。
16550の主な特徴は以下のとおりです。
16550 のコンピュータ ハードウェアとソフトウェア インターフェースは、以前の 8250 UART および 16450 UART と下位互換性があります。ナショナルセミコンダクターを買収したテキサス インスツルメンツによる現在のバージョン (1995 年以降)は 16550D と呼ばれています。[ 2 ]
16550A以降のチップは16450とピン互換性がありますが、MS-DOS 6.x、Windows 9x、Windows Me、Windows 2000に付属するMicrosoft診断プログラム(MSD)は、16450チップを8250チップとして報告することがよくあります。[ 2 ]

初期の8250 UARTおよび16450 UARTの欠点の1つは、受信バイトごとに割り込みが発生することでした。そのため、転送速度が上がると割り込みの発生頻度が高くなりました。さらに深刻な問題として、バッファが1バイトしかないため、割り込み処理の遅延が発生すると、受信バイトが上書きされる危険性がありました。これらの欠点を克服するため、16550シリーズのUARTは、1、4、8、または14 バイトのプログラム可能な割り込みトリガーを備えた16バイトのFIFOバッファを搭載しました。
16550には送信FIFOも搭載されているが、割り込み処理の遅延は伝送速度の低下につながるだけで、実際のデータ損失にはつながらないため、この機能の重要性は低い。
16550A(F)バージョンは、9600ボーのデータ送信速度を持つモデムを使用する上で必須の製品でした 。14.4kbit /s(V.32bis以降)のユニットではドロップアウトが発生し、V.42で圧縮が追加されると、データ速度が向上し続けるにつれて、割り込みごとに多くのデータを取得することが重要になりました。
オリジナルの16550には、このFIFOが使用できないバグがありました。ナショナルセミコンダクターは後にこの問題を修正した16550Aをリリースしました。しかし、すべてのメーカーがこの命名法を採用したわけではなく、修正されたチップを16550と呼び続けたメーカーもありました。[ 5 ]
別の情報源によると、FIFOの問題は16550AFモデルでのみ修正され、Aモデルにはまだバグがあるとのこと。(この情報源によると、CモデルとCFモデルも問題ないとのこと。)16550AFNモデルではDMA転送が追加されました。[ 6 ]
これら 2 つの部品の主な違いは FIFO の動作にあります。NS16550 は、CPU が RX FIFO を読み取るときに余分な文字を転送することがあります。この障害は非同期であるため回避策はなく、NS16550 は FIFO モードで使用しないでください。NS16550A は FIFO モードでの動作に問題がなく、すべての新しい設計で使用する必要があります。