UART
UART (Universal Asynchronous Receiver/Transmitter, ユーアート) は、調歩同期方式によるシリアル信号をパラレル信号に変換したり、その逆方向の変換を行うための集積回路である。本機能のみがパッケージングされたICで供給されるものと、マイクロプロセッサのペリフェラルの一部として内蔵されるものとがある。マキシムのMAX232のような、RS-232C規格に準拠する信号レベルに変換するICと組み合わせて、外部機器とのインタフェースとして利用されるのが一般的である。UARTに、同期方式のシリアル信号を変換するための回路を追加したものを、USART (Universal Synchronous Asynchronous Receiver/Transmitter) と呼ぶ。
代表的なUART
[編集]代表的なUARTとしては、ナショナル セミコンダクターの開発した16550Aがある。IBMの発売したPC/ATでは、16450というUARTが採用されたが、これにFIFOを内蔵したものが16550Aである。現在でもPC/AT互換機のシリアルポートでは、16550Aと互換性のあるUARTが使用されている。16450と互換性を保つため基準発振周波数1.8432MHzな最大通信速度115.2kbpsが標準だが、この基準発振周波数を変更するか、互換性のある拡張機能を使用する事により、より高速なデータ通信速度が設定できるUARTが多い。16550Aからの拡張機能を使う事で、16950系で460.8kbps、16750系で921.6kbpsなどと、16550Aと速度設定条件の互換性を保ったまま高速化できる。拡張機能を使わず基準発振周波数のみ最大周波数を供給する事で、16550Aに8MHzで0.5Mbps、16550AFに24MHzで1.5Mbps、OX16C950Bに60MHzで3.75Mbpsなどと、ソフトウェア制御設定を変えずに高速化できる。拡張機能を使い基準発振周波数を最大にする事で、OX16C950Bに60MHzで15Mbps、XR16M255x & XR16M265x & XR20M117x & XR20V217x シリーズに64MHzで16Mbpsなどと、高速化できる。16550Aとの互換性を無くし、更に高速化したUARTもある。
16550より以前に存在していたインテル 8251、ナショナルセミコンダクター8250も広く使われていた。Z80ファミリではZ80 SIO (Z84C40) やZ80 SCC (Z85C30) が存在する。Z80SCCはサン・マイクロシステムズをはじめとする多くのUNIXワークステーションで使われた。
組み込みシステム向けのマイクロコントローラでは、UARTまたはUSARTは内蔵していない品種を探す方が難しいほど一般的なペリフェラルである。例として、フリースケールやルネサス エレクトロニクスでは、SCI (Serial Communication Interface) という名前でUSARTの機能が内蔵されている。現在でも、8〜16ビットのローコストのマイクロコントローラではUSARTが唯一の通信インタフェースであることも多い。SoC向けにIPコアとして実装することも容易で、例としてAXIバス向けのPL011[1] がある。
一方でパーソナルコンピュータではシリアルポートを搭載しない機種が大勢を占めるようになった。このため、このようなマイクロコントローラとパーソナルコンピュータ間でデータ通信を行うために、市販のUSB - シリアル変換ケーブルがよく用いられる。
UARTの原型
[編集]DEC社のミニコンピュータに使われたテレタイプライターASR-33は一個だけの円盤状ディストリビュータ[2]に摺動子を回転させ直列・並列相互変換を行い四線式非同期(調歩同期/スタート・ストップ方式、20mA カレントループ)半二重通信方式でつながった。DEC社のコンピュータ側のこの変換機能に相応するのは発振器を搭載したエラー検出機能のないトランジスタによる簡素な独自回路の専用モジュール(フリップチップモジュール)であり、ジャンパー線で通信速度110bpsと300bpsを選べ、初期のUARTはクロックと通信速度選択入力を除けばその基本的回路機能をそのまま踏襲IC化したものである。以後USART、SDLC/HDLCやTCP/IPなどの直列転送の集積回路や通信制御プロトコルへと進化してゆく。
UARTが検出するエラー
[編集]UARTはデータの信頼性を保つために、エラーを検出する機能を持つ。UARTは、割り込みや内蔵レジスタによって、マイクロプロセッサにエラーが発生したことを伝える。以下に、UARTが検出するエラーを示す。
- パリティエラー
- 受信したキャラクタのパリティビットが誤っていたときに発生するエラー。パリティ無効の設定にしているときは発生しない。
- オーバランエラー
- 受信バッファに格納されたキャラクタをマイクロプロセッサが取り出さないうちに、シフトレジスタに次のキャラクタが揃ってしまったときに発生するエラー。取り出されなかったキャラクタは失われる。
- フレーミングエラー
- ストップビットを受信すべきタイミングで、信号がストップビットの論理値ではなかったときに発生するエラー。
関連項目
[編集]脚注
[編集]- ^ “PrimeCell UART (PL011) Technical Reference Manual”. Arm Developer. ARM (2007年12月18日). 2024年8月19日閲覧。
- ^ ASR-33のディストリビュータ(分配器)写真(手前);スタート、情報8ビット、ストップの計10本線の信号が回転によって直列・並列変換される。接触圧力が偏在しないように時計の12時4時8時の3位置に摺動子が配置される。写真は「ストップ」信号の位置。