8ビット CPU Z80シリアル通信
Z80 にシリアル通信を接続する方法を示します.
目次
シリアル通信とは
データを1ビットずつ送受信する通信をシリアル通信と言います.Z80でのシリアル通信は RS-232 が一般的で,最も簡単です.このシリアル通信には,送信と受信にそれぞれ伝送路がある全二重通信と,伝送路はひとつで送信と受信を切り替える半二重通信があります.この通信信号の同期には,クロックを同期する同期式通信,クロックは同期しないで伝送速度を予め決める非同期式 (調歩同期) 通信があります.ここでは,全二重通信の非同期式の回路とします.Z80マイコンとそのターミナルのPCとは,図1のようにして接続します.
この図のように,たった3本の線でここで製作する Z80 マイコンと,ディスプレイとキーボードの役割をするターミナルが接続することが可能です.
Z80マイクロプロセッサーは,直接,図1に示した信号(Tx, Rx)を入力できません.Z80が外部から入力できる信号は,データバスに流れる8ビットのパラレル信号のみです.そのために,Z80とシリアル回線の間に,双方向(パラレル↔シリアル)に変換する回路が必要です.その回路は LSI 化されており,Intel 8251が最も有名です,この LSI については,次節以降で説明します.
シリアル通信用 LSI Intel 8251 USART
概要
シリアル通信用の LSI はいろいろありますが,Intel 8251 USRT が最も多く使われたようです.USART(Universal Synchronous/Asynhronous Receiver/Transmitter)とは,汎用同期/非同期の受信/送信というような意味です.セカンドソースもあるようなので,それを使うこともできます.図2に,NECの互換 IC を示します.
8251はマイクロプロセッサーとシリアル通信ラインの間に入り,パラレルとシリアルデータの変換が主な役割です.また,両者の通信速度の違いの調整も行います.シリアル通信はマイクロプロセッサーと比較してデータの送受信が大変遅いので,その間に入り両者に適した速度に合わせる必要があります.
ここでは,8251を使うために必要な知見を示します.
端子配置
図3に8251の実体図を示します.28ピンのパッケージに収められています.端子の名前らから機能が想像できるものもあります.もちろん,見当がつかないものもあるでしょう.そこで,図4のように端子を機能別に分けて説明します.8251の端子は,(1)データバス,(2)リード/ライト制御,(3)送信,(4)受信,(5)モデム制御,(6)電源/グラウンドと6種類に分けることができます.これで,何となく動作が分かったような気になります.
図4に示す端子の入出力の区別は矢印で表しています.また,機能名称の上に線が引かれているピンはアクティブ Low であることを示しています.
機能
各ピンの機能は,以下の通りです.これは,参考資料[1][2]に書かれている内容です.
データバス
8251のデータバスは直接CPUのデータバスに接続され,データの受け渡しに使われます.
D0 — D7 (データバス) |
出力: アクティブ High,トライステート
マイクロプロセッサーとのデータの受け渡しに使われます.受け渡しは,1バイト(8ビット)単位です. |
リード/ライト制御
RESET |
入力: アクティブ High Hレベルになると,この LSI は初期状態にリセットされます. |
CLK (CLocK) |
入力 このクロック信号は内部デバイスのタイミング用で,他のクロック信号 RxC や TxC とは独立です.このクロック信号(CLK)は,同期モードでは RxC や TxC の30倍以上,非同期では4.5倍以上でなくてはなりません. |
C/D (Control/Data) |
入力 H:コントロール, L:データ CPUが8251にアクセスするときのレジスターを選択します. |
RD (ReaD) |
入力 アクティブ Low Lレベルの時,8251のレジスタの内容がデータバスに出力されます. |
WR (WRite) |
入力 アクティブ Low Lレベルの時,マイクロプロセッサーがデータバスに出力したデータを 8251 が読み込みます. |
CS (Chip Select) |
出力 アクティブ Low
Lレベルになるとこの 8251 がマイクロプロセッサーと通信可能になります.外部装置として,マイクロプロセッサーに接続する場合にLレベルにします. |
送信
TxD (Transmitter Data) |
出力 この端子からシリアルデータを出力します.リセットの後,あるいは送信が禁止されている時には,「マーク状態」(Hレベル)になります. |
TxRDY (Transmitter Ready) |
出力 8251がデータキャラクターを受信可能なときに,端子がHレベルになります.このとき,8251はデータの送信が可能ということです. |
TxEMPTY (Transmitter EMPTY) |
出力 H:バッファーが空 送信データが無くなったときに,Hレベルになります.プロセッサーからデータを受け取るとるために WR端子の立ち上がりを検知すると,TxEMPTY は L レベルになります. |
TxC (Transmitter Clock) |
入力 送信データの送信スピードを制御するクロック信号を入力します.同期モードでは,ボーレートはこのクロック(TxC)は同一になります.非同期モードでは,1倍と1/16倍,1/64倍を選択することができます. |
受信
RxD (Receiver Data) |
入力 この端子からシリアルデータを 8251 に入力します. |
RxRDY (Receiver Ready) |
出力 8251にマイクロプロセッサーが読み込むデータが含まれているときに,Hレベルになります.マイクロプロセッサーがデータを読み込み時,RD端子の立ち上がりを検知すると,Lレベルになります.マイクロプロセッサーが 8251 のデータを読み込む前に,次のデータを受信すると,前のデータは失われます.この場合,オーバーランフラグが立ちます. |
RxC (Receiver Clock) |
入力 受信データの受信スピードを制御するクロックを入力します.同期モードでは,ボーレートと同じ周波数にします.非同期モードでは,RxCと同一にし,1倍,1/16倍,1/64倍の設定ができます. |
SYNDET (SYNc DETect/braek detect) |
双方向 コントロールワードの設定により,同期モードでは,この端子は入力あるいは出力として使われます.出力として使う場合(内部同期モード),SYNC文字を検出したときに H レベルになり,ステータスワードを読むとリセットされます.外部同期モードでは,この端子は入力で,Hレベルにすると
非同期モードでは |
モデム制御
DSR (Data Set Ready) |
入力 . |
DTR (Data Terminal Ready) |
出力 . |
CTS (Clear To Send) |
入力 . |
RTS (Request To Send) |
出力 . |
電源/グラウンド
Vcc (supply Voltage) |
電圧入力 . |
GND (GrouND) |
基準電位 . |
ページ作成情報
参考資料
更新履歴
|