16550 UART

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

16550 UART (Universal Asynchronous Receiver/Transmitter) は、シリアル通信インタフェースを実装するために設計された集積回路である。16550はIBM PC互換のパーソナルコンピュータに、モデム、シリアルマウス、プリンタ等の周辺機器を接続するための、RS-232Cへ接続するシリアルポートを実装するためによく使われた。

最初の16550はナショナル セミコンダクター(NS、現テキサス・インスツルメンツ)が製造した。同じような品番で、NS社の最初の製品に対して様々なレベルの互換性を持ったデバイスを、他のメーカが製造した。16550とレジスタ互換のUART機能が、IBM PC互換機のマルチファンクションI/Oカードで利用され、他ではPC互換機のマザーボードに統合された。

工場出荷状態の8250 UARTを16550に交換することは、IBM PCやXTおよび互換機のユーザが高速モデムを使用するときの、一般的なアップグレードであった。9600 bpsより高速になると、PCのシリアルポートはキャラクタを欠落せずにデータフローを扱うことが出来ないことが判明した(PC/AT時代に一般的になった16450でも、本質的には同様であった)。1バイトの受信バッファしか持たない8250や16450を16550に交換し、新しいチップのFIFOを有効化するためにソフトウェアにパッチを当てたり設定を変更することで、高速通信の信頼性と持続性を向上させることが出来た。

16550の主な特徴:

  • シフトレジスタを使用することで、シリアルデータをパラレルデータに、パラレルデータをシリアルデータに変換する能力。
  • 送受信のデータレートを制御するための、オンチップビットレート(ボーレート)ジェネレータ。
  • 外部のモデムを制御するためのハンドシェイク用信号線、ソフトウェアで制御可能。
  • ホストのマイクロプロセッサに対する割り込み機能。
  • 送信データ、受信データ、双方のためのオンチップのFIFOバッファ。これによりホストシステムが、UARTが生成した割り込みに、データを取りこぼすことなく応答する余裕が大きくなる。

16550のハードウェアソフトウェアのインタフェースは、以前の8250 UARTや16450 UARTと後方互換性がある。1995年に発売されたNS社による最新の版はPC16550Dとよばれている。他社製品はさらに改良されている。

PC16550D・TL16C550C・TL16C750(ともに後述)は現在もテキサス・インスツルメンツ(TI)のサイトよりデータシートが参照できる。

16550のFIFO[編集]

以前の8250 UARTや16450 UARTの欠点は、1バイト受信する度に割り込みが発生することであった。転送速度が向上するにつれて、割り込みが高い頻度で発生することになった。より危機的なことに、受信バッファが1バイトしかないため、割り込み処理が遅れたときに受信したバイトが上書きされる本質的な危険があった。この欠点を克服するため、16550シリーズのUARTは、割り込みトリガレベルを1,4,8,14バイトにプログラム可能な、16バイトのFIFOを組み込んだ。

不幸なことに、最初の16550にはバグがあり、このFIFOを使用できなかった。NS社はその後、この問題を修正した16550Aをリリースした。しかし、全てのメーカがこの名称を使用しなかったので、修正したチップも16550と呼ばれ続けた。[1]

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が空になるまで受信を再開しない。

関連項目[編集]

参照[編集]

外部リンク[編集]