---
# System prepended metadata

title: Final project

---

## Contribition
* Operator: paper study
* IOP: NTT address generator

## Study notes : Paper & Structure
* [DPFP multiplier implementation](https://hackmd.io/lhyaOFV-Qby3-fdi5OGt9A)
* [IOP structure study](https://hackmd.io/@muscat/SkSuGnfGle)
## NTT address generator
NTT Address Generator 架構大致參考 FFT 的位址產生器邏輯，以便之後合併不同模式的address generator，但因 NTT 本身資料特性，進行了以下幾點修改：
* Transmition rate (IOP -> kernal):
**NTT 共處理 1024 筆輸入資料，每筆資料為 16 bits。**
雖然 IOP 到 kernel 的頻寬足夠支援每 cycle 傳入一筆資料，但為了配合 kernel 內部 SRAM 的讀寫時序，調整為每兩個 cycle 傳送一筆資料，避免 SRAM 在過高頻率下出現 timing violation。
* 10-stage & SRAM usage
NTT 的butterfly運算需要進行 10 個 stage，而這些 stage 的中間結果全部透過 SRAM 儲存與交換，為了避免浪費大量sram，address generator 根據目前所在 stage，決定讀寫 SRAM 的位址與選擇對應的資料進行計算，詳細配對列在下列excel 檔案。

## Related files
目前我們已有較完整的 FFT 運算實作，NTT 則為後續發展的目標。由於 NTT 尚未整合進 `kernal.v`，目前暫時將相關檔案放置於我個人的 GitHub（連結如下）。待整合完成後，將會一併納入 `final_project_2025` 中。
* Excel
* NTT address generator 

Above files in my github link: https://github.com/nina1032024
