SCIのRSR及びRDRのダブルバッファ構造について

初歩的な質問で申し訳ありませんが、ご回答をお願い致します。

RXファミリのマニュアルから、

「RSR レジスタとRDR レジスタはダブルバッファ構造になっている」と読み取れますが、

これはRSRが2byte、RDRが2byteもっているという意味でしょうか。

それともRSRが8bit、RDRが8bitで、

上記合わせて16bitあるのでダブルバッファ構造といっているのでしょうか。

ご回答宜しくお願い致します。

Parents
  • チョコです。

    RXは使ったことはありませんが、シリアル通信ではダブルバッファ構造は一般的に使われています。

    おそらく、SCIの受信部のレジスタのことかと思います。以下に示すのは手元にあったRX651のハードウェアマニュアルの「図37.1 SCIg (SCI0 ~ SCI4, SCI7 ~ SCI9) のブロック図」の該当部分です。

    ここで、RSR(レシーブシフトレジスタ)とRDR(レシーブデータレジスタ)の関係がダブルバッファ(2重構成)になっていると言うことです。

    RSRでシリアル入力信号を受信してパラレルデータに変換していて、受信が完了したら、受信したデータがRDRに転送されます。これがダブルバッファ構成になっていることです。RSRだけのシングルバッファ構成では、受信したデータは次のデータの受信が始まる前に読み出さなければなりません。しかし、ダブルバッファ構成になっていると、受信したデータをCPUが読み出すのは、次のデータを受信完了するまででいいことになります。このようにダブルバッファ構成になっていると、タイミングに余裕がでてくるので、ほとんどがダブルバッファ構成になっています。さらに、バッファが増えてFIFO構成になっているものも見かけます。

    このブロック図で見ると、受信データは8ビット以上にも対応しているようで、RDRはRDRHとRDR(L)の2バイト幅になっているようです。

    以上

Reply Children
No Data