RTL 設計:CNN 加速器
學習卷積索引與整數數值契約,再進入串流視窗、PE 映射與分塊。驗證可執行參考與小型推論路徑,同時區分數值、排程估計與流量。
您將學到什麼
- 計算卷積形狀與索引,包含步幅、填補、膨脹與通道
- 訂定定點單位、尺度、零點、累加器位元寬度、捨入與飽和
- 比較直接卷積與 im2col 黃金模型
- 以行緩衝器及能保留暫停狀態的傳輸接受機制產生視窗
- 計算 PE 重用、分塊儲存、流量與排程假設
- 回報小型推論路徑的數值結果與證據限制
開始之前
瀏覽器練習使用教學模型,不會編譯或執行 HDL。如需另外執行提供的原始碼,請依照適用於您作業系統的 Digital Design Studio 指南,並在操作要求時登入。
安裝與首次啟動 ↗ · 下載 ↗課程大綱
- 推論契約
- 推論與訓練概念
若只有輸出通道從三增加到六,MAC 次數與儲存的偏置數量如何變化?
- 卷積與互相關概念
對 [1,2;4,5] 使用核心 [1,0;0,-1],互相關與反轉核心的結果各是多少?
- 形狀、步幅、填補與膨脹概念
H=7、R=3、步幅 2、上方填補 0、下方填補 1、膨脹 2 時,計算 Ho 與 h=1,r=2 的輸入座標。
- 檢核:形狀與 MAC 次數理解測驗
使用 N=1、C=2、H=W=5、M=3、3×3 核心、步幅 2、四側填補各一,以及膨脹一。輸出形狀與 MAC 次數各是多少?
- 數值契約
- 定點位元與單位概念
以 F=4 將 0.5 與 −1.25 相乘,再加入 F=8 的偏置 0.25。累加器編碼與實數值各是多少?
- 尺度與零點概念
sx=0.25、zx=128 時,填補編碼與 q=132 的實數值各是多少?sw=0.5 時,哪個偏置編碼代表 0.75?
- 累加器位元寬度、捨入與飽和概念
九個 signed-int8 乘積且偏置為零時,十八位元有號數是否足夠?
- 實作:執行量化契約實作
以相同 uint8 設定量化 −40。其編碼與反量化值各是多少?你會新增哪個斷言?
- 參考運算子
- 直接卷積參考概念
輸入 [2,3]、權重 [4,−1]、偏置一時,若每個輸入通道迭代都加一次偏置,會得到哪個錯誤結果?
- im2col 與矩陣乘法概念
H=W=4、C=1,使用無填補的有效 3×3 核心,求原輸入元素數、P、K 與展開視窗元素數。
- 連接 ReLU 與最大池化概念
uint8 輸出零點為 100,對 [98,103;101,97] 套用 ReLU 與 2×2 最大池化。
- 檢核:輸出處理順序理解測驗
對累加器 [−1,2;3,−4] 套用乘數 0.5、zy=0、最近偶數捨入、int8 飽和、ReLU 與 2×2 最大池化。最終編碼是多少?
- 串流視窗生成
- 行緩衝器與 3×3 視窗概念
W=8、H=6 時,計算儲存槽數、第一個有效的已接受輸入索引,以及總視窗數。
- Ready/valid 與停頓狀態概念
輸出級在 out_ready=0 時保持 A,輸入 B 同時有效。下一個邊緣,該級與產生端必須如何處理?
- 實作:能承受暫停的視窗實作
若改在週期零、一、二暫停,且所有輸入最終都被接受,視窗數值或數量會改變嗎?總週期數是多少?
- 檢核:第一個視窗時序理解測驗
4×4、寬度四、無填補有效 3×3 生成器,前四週期不接受輸入,之後每週期一個像素。第一個視窗的已接受輸入索引與經過週期各是多少?兩者皆從零起算。
- 映射至 PE 與記憶體
- PE、資料流與 MAC 重用概念
將 P=3、M=2、K=8 映射至四個輸出駐留 PE。排除寫入,MAC 週期數與有效 MAC 槽利用率各是多少?
- 分塊、周邊資料與部分和概念
Th=Tw=2、Tc=1、Tm=2、3×3 核心、步幅二、膨脹一時,計算單緩衝輸入、權重、32 位元總和與偏置的位元組數。
- 頻寬與運算下界概念
1152 次 MAC、224 位元組,使用八個 PE,但頻寬保持每週期 0.5 位元組。完美重疊的下界是多少?
- 排程、尾部與雙緩衝概念
K=10、四個輸出、三個 PE,每個輸出增加一週期,計算模型週期與僅計 MAC 的利用率。
- 驗證與可量測的總整實作
- 黃金模型與失敗分類概念
參考 [37,47;67,77] 與 [38,48;68,78] 不同。你會先檢查什麼,又會記錄什麼?
- 實作:挑戰邊界案例實作
填補測試資料中,將所有核心權重改為一。第一個輸出是多少?為何只測中心不足?
- 總整實作:小型推論路徑與報告實作
保持 K=9、四個輸出與各輸出額外一週期,改用三個 PE。模型總週期與僅計 MAC 的槽利用率各是多少?
- 最終檢核:主張與證據理解測驗
總整實作的 Node 執行驗證數值一致、36 次 MAC、24 週期排程模型與 90% MAC 槽使用率。哪個完成敘述準確?