37 / 63 · 概念
シリアル入力とフレーム境界
入力順と有効エッジを定め、シリアル・パラレル変換のビット配置を計算します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
時間順序をベクトル位置に変える
シリアル入力は、有効なエッジごとに一ビットを渡します。3 ビットレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。 詳しく見るへ q<={q[1:0],din} を適用し、初期 q=000 から 1,0,1,1 を受けると、次のようになります。
| 受け入れたビット数 | din | 更新後 q |
|---|---|---|
| 1 | 1 | 001 |
| 2 | 0 | 010 |
| 3 | 1 | 101 |
| 4 | 1 | 011 |
新しいビットは右へ入り、既存のビットは上位インデックスへ移ります。レジスタは最新三ビットの移動窓で、第 4 ビットを受けると第 1 ビットを失います。
下の各列は一つの立上りエッジ立上りエッジ クロックが 0 から 1 に変わる瞬間です。CLK=1 の区間全体を指すレベルとは区別します。 詳しく見るの記録です。入力はエッジ直前、「更新後」の状態は更新直後です。並びはサンプル順で、物理的な伝搬遅延伝搬遅延 入力が変わってから、出力が正しい値に安定するまでの時間です。論理式の等価性と時間特性は別の性質です。 詳しく見るではありません。最初の列はリセットです。その後に受け入れた 1,0,1,1 のうち、最新三ビットだけが q に残ります。最後の列で最初のビットが押し出されるか確認してください。
波形データを表示
| 信号 | 波形 | バスの値 |
|---|---|---|
| エッジ | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| 更新後 q | 23452 | 000 → 001 → 010 → 101 → 011 |
MSB-first と LSB-first は通信規約です
8 ビット値を MSBMSB 最も高い桁の重みを持つビットです。ベクトルの宣言方向でインデックスが変わるため、常に最大番号とは限りません。 詳しく見る から送り、この方式で八回受ければ元のベクトルが組み立てられます。LSBLSB 最も低い桁の重みを持つビットです。表記方向とインデックス規則を合わせて確認します。 詳しく見る から送ると逆配置になるため、接続方向か最後の並べ替えを変える必要があります。これは表示オプションではなく、送受信側で合意するプロトコルです。
データ値だけではフレームは分かりません
どのエッジが最初のビットか、何ビット受けたか、いつ結果を消費できるかを示す状態が必要です。通常、受け入れたビット数のカウンタと valid または done を使います。入力が休むサイクルがあるなら、クロック数ではなく受け入れたデータ数を数えます。
ready/validハンドシェイク 送信側の valid と受信側の ready が同じエッジでともに 1 のときに転送を確定する取り決めです。待機中のデータ保持規則も含みます。 詳しく見る では、この条件が真のエッジだけで shift と count を一緒に更新します。片方だけに enable を適用すると、データと長さ情報がずれます。このコースで提供する連続入力の実習は、全データエッジを受け入れる単純な場合です。
自分で考えてみましょう
8 ビットフレームの第 4 ビット後、二サイクル valid=0 です。ready=1 のとき、受信カウンタとシフトレジスタはどう動くべきですか。
解説を見る
両サイクルとも accept=0 なので、カウンタとデータレジスタを両方保持します。次の valid ビットが第 5 ビットです。クロックだけ数えると、データ不足なのに完了を誤報する場合があります。