Altifigence Academy

1 / 24 · 概念

將方程式轉成資料路徑契約

在算術規則之外,同時訂定位元寬度、接受事件與有效結果。

訂定電路所承諾的行為

資料路徑儲存、選擇並運算數值。控制器決定哪些數值要移動,以及何時移動。這是兩種不同的設計責任,但並非獨立執行的軟體工作。在時脈邊緣,控制訊號決定暫存器更新;這些暫存器值會在下一個週期成為組合邏輯的輸入。缺少這項時序契約的方程式,可能為錯誤的交易產生正確的數字。

我們的小型計算器接受無號八位元運算元 a、b,以及二位元操作碼。操作 0 執行加法,1 執行減法,2 執行 AND,3 執行 XOR。算術結果傳回最低八個位元,另外提供加法進位或減法借位。後續專案也會攜帶標籤。標籤不會改變運算,卻能辨識結果來自哪筆輸入,因此必須與結果一起傳遞。

契約項目本課程的選擇
運算元意義0 到 255 的無號整數
縮窄方式最低八個位元,模 256
邊界資訊ADD 進位與 SUB 借位
接受條件valid 與 ready 同時成立的上升緣
順序結果依輸入被接受的順序輸出
重設捨棄尚未完成的工作,並清除有效狀態

當 a=250、b=10 且操作為 ADD 時,數學上的總和是 260。輸出為 4,carry=1。有號解讀或飽和處理會形成不同的契約。不要讓程式語言意外的型別轉換替你決定策略。回繞算術可能適合位址計數器,而亮度計算可能需要飽和處理。

交易路徑
  1. 接受: 擷取運算元、操作碼與標籤
  2. 運算: 套用指定的數值契約
  3. 交付: 傳輸結果與相符的標籤

無效的 ALU 輸出仍可能在電氣上改變;它並不代表一筆交易。有效結果若帶著舊標籤,同樣是錯誤的。應一起檢查資料、標籤與 valid。對每筆輸出,都要回答位元代表什麼,以及消費端何時能信任它。本課程的週期模型檢查功能與順序,不檢查實體邏輯閘延遲。在為延遲或吞吐量目標選擇暫存器分界之前,先將契約轉成參考模型。

自己試試看

寫出 a=250、b=10 時的八位元 ADD 結果與進位。解釋數值 4,以及為何標籤必須與結果一起儲存。

查看解說

260=1×256+4,因此 data=4 且 carry=1。最低八位元契約會將總和對 256 取模。標籤必須在與資料相同的接受、停頓及交付條件下儲存,才能維持結果與其輸入的關聯。

此選擇適用於本瀏覽器,隨時可從頁尾變更。