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 |
新位元從右側進入,舊位元朝較高索引移動。暫存器是最近三位元的滑動視窗;接受第四位元時,第一位元會遺失。
每欄是一次上升緣上升緣是時脈由 0 變成 1 的瞬間。它與表示整段 CLK=1 期間的高準位不同。 詳細內容的觀察紀錄。輸入為邊緣前值,名稱含「後」的狀態為更新後值。欄位對齊表示取樣順序,並未繪出實體傳播延遲傳播延遲是輸入改變後,輸出穩定至正確值所需的時間。邏輯式是否等價與時間特性是兩個不同問題。 詳細內容。
第一欄是 reset。之後接受的 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交握(handshake)規定傳送端的 valid 與接收端的 ready 在同一邊緣皆為 1 時,才確定完成傳輸。等待期間如何保持資料也是契約的一部分。 詳細內容 介面時,只有上式成立的邊緣,shift 與計數器才一起更新。若只有一方套用 enable,資料與長度資訊會錯位。本課程連續輸入的練習,是每個資料邊緣都接受的簡化情況。
自己試試看
8 位元資料框的第四個位元後,valid 有兩週期為 0。ready=1 時,接收計數器與移位暫存器應如何動作?
查看解說
兩週期 accept 都為 0,因此計數器與資料暫存器一起保持。下一個有效位元才是第五個。若只計時脈,資料尚不足就可能錯誤宣告完成。