在數位工程與系統設計中,清晰度是溝通的貨幣。時序圖不僅僅是一張圖紙;它是硬體設計師、軟體開發人員與驗證工程師之間的一份精確合約。它定義了訊號如何隨時間互動,決定邏輯閘、微控制器與通訊協定的行為。當時序圖含糊不清時,結果往往是耗時且昂貴的除錯週期、硬體重新設計,或現場發生的隱性資料損毀。
建立穩健的時序圖需要嚴謹的方法。它要求每一個訊號、轉換與時間間隔都必須以數學精度明確標示。本指南列出了十項必須存在的關鍵要素,以確保時序圖具備功能性、可讀性與技術準確性。遵循這些標準,團隊可以減少歧義,並加速驗證流程。

1. 清晰且無歧義的訊號標籤 🏷️
任何時序圖的基礎,在於能夠唯一識別每個訊號。如果訊號名稱過於通用或遺漏,圖表將失去其實用性。圖表中的每一條線都必須對應電路或協定規格中的特定節點。
- 唯一命名: 避免使用如「訊號1」或「資料」等通用名稱。應使用電路圖中的實際網路名稱,例如
UART_RX,I2C_SCL,或MEM_WR. - 一致性: 確保命名規則與文件及程式碼庫一致。若電路圖使用
CS_N,則不要將圖表標示為Chip_Select. - 方向性: 指明資料流方向。雖然箭頭在電路圖中常見,但在時序圖中,標籤相對於波形的位置通常已暗示方向。請在圖例中明確說明訊號是輸入、輸出或雙向。
- 匯流排分組: 對於寬廣的匯流排,應邏輯性地分組訊號。使用方括號表示法,例如
[7:0]來代表一個8位元資料匯流排,而無需繪製八條獨立的線,但必須確保在放大檢視時,各個位元的轉換仍清晰可辨。
若訊號標籤錯誤,將導致誤解。驗證工程師可能模擬錯誤的訊號,軟體驅動程式也可能針對錯誤的接腳撰寫,進而導致整合失敗。
2. 明確的時間軸與比例 ⏱️
沒有比例的時間軸僅是一張草圖,而非圖表。水平軸代表時間,若未定義單位,訊號之間的關係將毫無意義。時間軸必須明確標示,以利對延遲與週期進行量化分析。
- 時間單位: 必須明確指定測量單位。常見單位包括奈秒(ns)、微秒(μs)或時鐘週期。
- 比例標記:在規律間隔處包含刻度標記。對於複雜的協定,網格背景有助於眼睛垂直追蹤對齊。
- 縮放層級:單一圖表很少能顯示整個交易。應使用多個視圖。高階視圖顯示整體交易流程,而放大視圖則詳細說明關鍵的建立與保持時間窗。
- 起始時間:定義參考點。時間零點是時鐘邊緣發生的瞬間,還是重置信號被激活的瞬間?零點的一致性對於比較不同測試案例至關重要。
若未定義比例,工程師無法計算傳播延遲,也無法驗證系統是否符合頻率要求。時間軸將圖表從定性說明轉變為定量工具。
3. 明確的時鐘同步 ⏰
大多數數位系統依賴時鐘信號來同步狀態變更。在非同步系統中,時鐘可能來自不同來源,但在同步設計中,時鐘邊緣是所有時序分析的基準。時鐘必須明確地呈現並被理解。
- 頻率與週期:說明時鐘頻率。若週期變動(抖動),請標示範圍。
- 邊緣觸發:明確指出邏輯是在時鐘的上升沿(正邊沿)還是下降沿(負邊沿)觸發。這通常以時鐘波形底部的三角符號表示。
- 佔空比:標示高電平時間與低電平時間的比率。50% 佔空比為標準,但許多系統使用非對稱時鐘運作。
- 時鐘域:若存在多個時鐘,應明確分離。顯示不同時鐘域之間的關係,包括它們是否同步或非同步。
缺少時鐘資訊是導致時序違規的主要原因。若設計師假設為上升沿觸發,但硬體實際為下降沿觸發,資料將在錯誤時刻被捕捉,導致亞穩態或錯誤的狀態轉換。
4. 高電平與低電平有效指示 🔴🔵
邏輯電平並非總是直觀的。有些信號在高電平(1)時有效,而其他信號則在低電平(0)時有效。在許多控制線中,低電平有效的信號以名稱上方的橫線表示(例如,RESET_N),但圖表中的視覺表示可完全消除疑慮。
- 圖例要求:包含圖例,明確定義何者代表邏輯高與邏輯低。雖然高電平通常為較高的電壓等級,但電壓邏輯可能有所不同(例如,3.3V 與 5V)。
- 波形極性:使用明顯的視覺提示。低電平有效的信號可繪製為反相波形,或在轉換點標示特定符號(如圓泡)。
- 空閒狀態:明確定義設備未啟用時信號的外觀。例如,
Chip_Select在未選中時可能處於高邏輯電平,選中時則下降為低電平。 - 預設值: 指定三態總線的預設狀態。當未被驅動時,它們是浮空、上拉還是下拉?
對有效電平的混淆是硬體損壞或邏輯失敗的常見原因。若在設計階段誤解了極性,原本用來啟用外設的信號可能會意外地使其停用。
5. 建立與保持時間要求 ⏲️⏳
這些是同步設計中最關鍵的時序參數。建立時間是指時鐘邊沿前資料必須穩定的持續時間。保持時間是指時鐘邊沿後資料必須維持穩定的持續時間。這些時間窗定義了資料捕獲的可靠性。
- 視覺化時間窗: 圖示應明確標示出主動時鐘邊沿附近的建立與保持時間窗。使用陰影區域或虛線可有效呈現此區域。
- 資料穩定性: 展示資料線在這些關鍵時間窗內不會發生變化。在建立或保持時間窗內的任何轉換都可能導致時序違規。
- 餘量: 包含安全餘量。圖示應顯示實際資料轉換發生在禁止時間窗之外,而非僅僅觸及邊界。
- 來源: 若時序來自資料手冊,請引用具體元件或章節。不同元件具有不同的容差要求。
忽略建立與保持時間是數位系統中間歇性錯誤的主要原因。這些錯誤在測試期間可能不會出現,但在不同溫度或電壓條件下可能顯現,使其極難重現。
6. 傳播延遲 ⚡
訊號不會瞬間傳輸。輸入變更與對應輸出變更之間總存在延遲。此延遲由邏輯閘傳播、走線長度及負載電容所造成。完整的時序圖需考慮這些延遲。
- 輸入至輸出延遲: 測量並顯示輸入邊沿與相應輸出邊沿之間的時間。這對於組合邏輯路徑至關重要。
- 走線延遲: 在高速介面中,導線的物理長度會導致延遲。若板子佈局影響時序,則應在分析中包含此項。
- 偏移: 若多個訊號同時到達同一目的地,應顯示其偏移(到達時間的差異)。過大的偏移即使單一路徑符合要求,仍可能違反建立或保持時間。
- 路徑延遲: 對於複雜路徑,將延遲分解為各階段。這有助於調試找出瓶頸所在。
若未考慮傳播延遲,設計在模擬中可能看似正常,但在硬體上卻會失敗。現實世界的物理法則表明訊號需要時間傳輸,圖示必須反映此現實。
7. 狀態轉換與時序 🔄
許多協定與控制器以狀態序列運作(例如:空閒 → 請求 → 確認 → 完成)。時序圖必須清楚顯示事件的順序,並將控制邏輯的狀態與訊號的時序連結起來。
- 狀態標籤: 在波形上方的時間軸上標示狀態名稱。這有助於將訊號活動與邏輯狀態機對應起來。
- 轉換: 明確標示狀態之間的邊界。狀態切換是立即發生,還是需要一個時鐘週期?
- 等待狀態: 如果系統需要等待(例如,等待記憶體準備就緒),請明確顯示等待狀態,作為資料不發生變化的期間。
- 依賴關係: 展示一個狀態如何啟用下一個狀態。例如,信號必須在下一個時鐘週期開始前變為高電平。
狀態順序確保協定被正確遵循。遺漏等待狀態或錯誤的狀態轉換,可能導致接收裝置讀取無效資料,甚至完全死機。
8. 重置與初始化程序 🛑
在任何通訊或邏輯操作開始之前,系統必須處於已知狀態。重置序列在時序圖中經常被忽略,但對系統可靠性至關重要。圖表應涵蓋上電或重置的情境。
- 重置訊號 asserted(有效): 展示重置訊號被保持有效的時間長度。是脈衝還是電平?需要保持多久才能確保內部暫存器被清除?
- 釋放序列: 展示重置釋放時發生的情況。在重置解除前,其他信號是否需要穩定?
- 啟動延遲: 包含電源軌道穩定前所需的任何延遲,才允許時鐘開始切換。
- 初始化值: 如果在重置期間將特定資料載入暫存器,請在重置釋放後立即於資料線上顯示此資料。
一個無法預測啟動過程的系統,就是一個會失敗的系統。透過記錄重置序列,工程師可確保每個組件都從明確的基準點開始,降低上電期間發生競爭條件的風險。
9. 資料有效窗口 ✅
僅顯示信號變化的圖示是不夠的;圖表必須明確指出資料實際上有效且可被接收邏輯讀取的時刻。此概念與建立時間和保持時間密切相關,但重點在於資料本身的有效性。
- 有效旗標: 如果協定具有特定的有效信號(例如 “
VALID在 AXI 或 “READY在 Avalon 中),請明確顯示。只有當有效旗標為高電平時,資料才具有意義。 - 穩定期間: 強調資料線保持不變的期間。在此期間內不應發生任何轉換。
- 眼圖概念: 雖然不是真正的眼圖,但時序圖應在概念上顯示資料可安全採樣的「眼」。此窗口的中心為最佳採樣點。
- 握手機制: 在握手協議中,顯示請求、授權與資料有效信號之間的關係。資料必須在授權期間保持有效。
定義有效窗口可防止競爭條件。如果接收器在此窗口之外採樣資料,會捕捉到過渡狀態而非穩定值,從而導致難以調試的錯誤。
10. 錯誤條件與異常 ❌
完美的世界並不存在。時序圖也應記錄事情出錯時的情況。這包括錯誤條件、逾時和異常處理。這通常是文檔中最被忽視的部分。
- 逾時: 定義系統在放棄前等待回應的時間長度。顯示逾時信號的置位。
- 錯誤信號: 顯示當奇偶校驗錯誤、CRC失敗或協議違背發生時的情況。系統會停止嗎?會重試嗎?
- 重試機制: 如果交易失敗,請顯示重試序列。下次嘗試前消耗多少時間?
- 死鎖: 指出信號可能掛起的情況。例如,如果設備無回應,總線主機最終應釋放總線。
記錄錯誤條件可使系統為現實世界使用做好準備。這確保錯誤處理邏輯的設計符合時序預期,防止系統無限期掛起。
時序參數參考表 📊
下表總結了上述討論的關鍵參數,以協助在設計審查過程中快速驗證。
| 參數 | 描述 | 典型單位 | 錯誤的影響 |
|---|---|---|---|
| 建立時間 | 資料必須在時鐘邊沿前保持穩定 | 納秒(ns) | 亞穩態、資料損壞 |
| 保持時間 | 資料必須在時鐘邊沿後保持穩定 | 納秒(ns) | 亞穩態、資料損壞 |
| 傳播延遲 | 信號通過邏輯/走線所需的時間 | 納秒(ns) | 時序違規,偏移 |
| 時鐘週期 | 兩個連續時鐘邊緣之間的時間 | 納秒(ns) | 頻率不匹配,過衝 |
| 重置脈衝寬度 | 有效重置信號的持續時間 | 納秒(ns) | 未初始化狀態,啟動失敗 |
| 偏移 | 時鐘/資料到達時間的差異 | 納秒(ns) | 捕獲錯誤,建立違規 |
圖示構建的最佳實務 🛠️
除了十項基本要素之外,時序圖的整體品質會影響其可用性。遵循這些最佳實務,以確保文件能作為可靠的參考資料。
1. 一致的對齊
盡可能確保所有訊號垂直對齊。未對齊的波形會產生視覺雜訊,並難以看出訊號之間的關係。使用格線來維持對齊。
2. 合理分組
將相關訊號集中在一起。將所有控制訊號(時鐘、重置、使能)置於上方,資料訊號置於下方,狀態訊號置於底部。這種層級結構有助於讀者理解控制流程與資料流程的差異。
3. 標註清晰
文字標註應節制但有效。不要用過多文字使圖示混亂。相反地,使用引出線指向特定功能,例如「建立視窗」或「無效區域」。
4. 版本控制
隨著設計的演進,時序圖也會不斷更新。請在文件的頁腳中包含版本號、日期與修訂歷史。這可避免團隊依據過時的規格進行工作。
5. 交叉參考
將時序圖與資料手冊或協定規格中的相關章節連結起來。若時序要求源自元件手冊的特定頁面,請直接引用。這能為要求增加權威性。
應避免的常見陷阱 ⚠️
即使經驗豐富的工程師在製作時序圖時也可能出錯。了解常見陷阱有助於維持高標準。
- 模糊的轉換:避免繪製在高電平與低電平之間呈斜線的訊號。對於數位邏輯,應使用垂直線表示瞬間轉換;若為類比特性,則需明確標示上升/下降時間。
- 忽略抖動: 真實的時鐘會有抖動。如果系統速度很高,忽略抖動將帶來風險。請在時鐘信號上標示抖動範圍。
- 過度簡化: 不要為了讓圖表看起來更乾淨就刪除細節。如果某個特定延遲很重要,就畫出來;如果等待狀態重要,就包含在內。
- 缺乏背景: 沒有標題或說明的圖表毫無用處。務必包含一個標題,說明所呈現的交易或情境。
最後的想法 🧭
繪製時序圖是一種翻譯行為。它將抽象的電氣行為轉譯為人類能夠理解、工程師能夠驗證的視覺語言。透過採用本指南中列出的十項基本要素,可確保翻譯的準確性、完整性與實用性。
這些要素構成了信號完整性與系統可靠性的基石。它們並非可有可無的裝飾;而是功能硬體的必要條件。無論您是在設計簡單的微控制器介面,還是複雜的高速記憶體匯流排,這些原則都保持不變。精確性、清晰度與完整性是成功的關鍵。
當您審查下一個設計時,請以本檢查清單作為基準。確保每個信號都有名稱,每個時間都有單位,每個狀態都已定義。這種紀律將節省時間、減少錯誤,並帶來符合預期性能的系統。投入高品質時序圖的精力,將在整個產品生命周期中帶來回報。