Altifigence Academy

37 / 63 · 概念

シリアル入力とフレーム境界

入力順と有効エッジを定め、シリアル・パラレル変換のビット配置を計算します。

時間順序をベクトル位置に変える

シリアル入力は、有効なエッジごとに一ビットを渡します。3 ビットレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。 詳しく見るへ q<={q[1:0],din} を適用し、初期 q=000 から 1,0,1,1 を受けると、次のようになります。

受け入れたビット数din更新後 q
11001
20010
31101
41011

新しいビットは右へ入り、既存のビットは上位インデックスへ移ります。レジスタは最新三ビットの移動窓で、第 4 ビットを受けると第 1 ビットを失います。

下の各列は一つの立上りエッジ立上りエッジ クロックが 0 から 1 に変わる瞬間です。CLK=1 の区間全体を指すレベルとは区別します。 詳しく見るの記録です。入力はエッジ直前、「更新後」の状態は更新直後です。並びはサンプル順で、物理的な伝搬遅延伝搬遅延 入力が変わってから、出力が正しい値に安定するまでの時間です。論理式の等価性と時間特性は別の性質です。 詳しく見るではありません。最初の列はリセットです。その後に受け入れた 1,0,1,1 のうち、最新三ビットだけが q に残ります。最後の列で最初のビットが押し出されるか確認してください。

シリアル入力が並列状態になる過程
波形データを表示
波形データ:各文字は一つの区間、ドットは前の状態の保持、p はクロック 1 周期を表します。
信号波形バスの値
エッジ23452E0 → E1 → E2 → E3 → E4
reset10...
din0101.
更新後 q23452000 → 001 → 010 → 101 → 011

MSB-first と LSB-first は通信規約です

8 ビット値を MSBMSB 最も高い桁の重みを持つビットです。ベクトルの宣言方向でインデックスが変わるため、常に最大番号とは限りません。 詳しく見る から送り、この方式で八回受ければ元のベクトルが組み立てられます。LSBLSB 最も低い桁の重みを持つビットです。表記方向とインデックス規則を合わせて確認します。 詳しく見る から送ると逆配置になるため、接続方向か最後の並べ替えを変える必要があります。これは表示オプションではなく、送受信側で合意するプロトコルです。

データ値だけではフレームは分かりません

どのエッジが最初のビットか、何ビット受けたか、いつ結果を消費できるかを示す状態が必要です。通常、受け入れたビット数のカウンタと valid または done を使います。入力が休むサイクルがあるなら、クロック数ではなく受け入れたデータ数を数えます。

acceptk=validk∧readykaccept_k=valid_k\land ready_k

ready/validハンドシェイク 送信側の valid と受信側の ready が同じエッジでともに 1 のときに転送を確定する取り決めです。待機中のデータ保持規則も含みます。 詳しく見る では、この条件が真のエッジだけで shift と count を一緒に更新します。片方だけに enable を適用すると、データと長さ情報がずれます。このコースで提供する連続入力の実習は、全データエッジを受け入れる単純な場合です。

自分で考えてみましょう

8 ビットフレームの第 4 ビット後、二サイクル valid=0 です。ready=1 のとき、受信カウンタとシフトレジスタはどう動くべきですか。

解説を見る

両サイクルとも accept=0 なので、カウンタとデータレジスタを両方保持します。次の valid ビットが第 5 ビットです。クロックだけ数えると、データ不足なのに完了を誤報する場合があります。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。