高速シリアル通信プロトコルSerialLite ――オープン・ソースでコンパクトなプロトコル
● バッファ
Atlanticインターフェースの信号を生成するためには,バッファの設計についての詳細が必要です.バッファへの新しい画像データの書き込みと,リンクを流れるパケットの動きは同期しません.同一クロックで動作している場合,シングル・バッファでは,新しい画像が書き込まれている間,その画像をそのまま読み出すことになります.これを避けるため,メモリ・ブロックを二つに分けて使用します.一方の領域を書き込み用,もう一方の領域を読み出し用にします.いったん片方に書き込まれると,二つの領域を入れ替え,次の画像の読み出しと書き込みを行います.入れ替えのために1サイクルの遅れがでますが,両方のメモリが同時に読み出されることはありません.さらに読み出し中に新たなデータが書き込まれることもありません.もしデータの読み出しが進んでいる場合は,書き込みを遅らせなければなりません.このため,読み出しや書き込みが可能であることを示すReady信号が必要になります.このしくみを示すブロック図を図9に,ステート・マシンを図10に示します.
この構成は,表示ボード側でも使うことができます.実際には,リフレッシュが完了するのを待つよりもむしろ強制リフレッシュを考慮したほうがよいでしょう.もしそのように設計変更した場合は,四つのリンクから二つのリンクに減らすことができるかもしれません.これはレーン・ボンディング可能なシリアル・プロトコルであるSerialLiteの長所の一つです.設計フェーズにおいて拡張性があり,リンクを追加したり減らしたりすることができます.以下は4レーンの場合について説明します.
図9 バッファのブロック図