Skip to content
ChenSaitePublic

About

4096 point NTT

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NTT-4096

一个面向硬件实现的 4096 点、64 位全流水 NTT/INTT 原型。模数和旋转因子可配置,仓库包含 RTL、生成的乘法器 VHDL、Python 参考模型、测试向量、SystemVerilog testbench 以及交付文档。

目录结构

  • rtl/: NTT 顶层、控制器、PE、RAM/FIFO、模加减、Barrett 模约简和生成的 VHDL 乘法器。
  • sim/: Python 参考模型、FNTT/INTT 旋转因子、FNTT golden result 和顶层 testbench。
  • ip/: 模加与 Barrett 模约简的独立源码和原始 IP 手册。
  • docs/: 4096 点全流水 NTT 使用手册。

RTL 顶层

顶层模块为:

rtl/ntt_top_64_4096_11.v

主要特性:

  • 4096 点 FNTT/INTT;
  • 64 位数据与模数;
  • 双端口系数 RAM;
  • 独立的 FNTT/INTT 旋转因子输入;
  • 全流水 PE 和 Barrett 模约简;
  • start_fntt、start_intt 启动,done 指示完成。

测试向量使用的参数为:

p    = 18446744073709436929
mu   = 0x800000000000dfff8
inv2 = 9223372036854718465

接口时序和数据装载流程见 docs/全流水NTT使用手册.docx。

生成参考向量

Python 参考模型依赖 Python 3.9+ 和 galois:

python3 -m pip install -r requirements.txt
python3 sim/Ntt.py

脚本会在 sim/ 中生成:

  • fntt_zetas.txt
  • intt_zetas.txt
  • fntt_result.txt

并检查 INTT(FNTT([1, 2, ..., 4096])) 是否恢复原输入。

RTL 仿真

testbench 为 sim/ntt_top_tb.sv。设计同时包含 VHDL、Verilog 和 SystemVerilog,需要支持 mixed-language 的仿真器,例如 Vivado XSim、QuestaSim 或其他等价工具。

建议按以下依赖顺序加入工程:

  1. rtl/64_64_600M_karatsu_irregu_dsp_1pipe.vhdl
  2. rtl/66_68.vhdl
  3. rtl/64_65.vhdl
  4. rtl/mod_add_comb.sv、rtl/mod_sub_comb.sv
  5. rtl/barrett_redu_pipe.sv、rtl/PE_pipe.sv
  6. rtl/dp_nc_ram.sv、rtl/fifo_loop_sync.sv
  7. rtl/mem_control_64_4096_11.v
  8. rtl/ntt_top_64_4096_11.v
  9. sim/ntt_top_tb.sv

运行仿真时将工作目录设为 sim/,使 testbench 能读取旋转因子文件。

说明

rtl/ 是顶层 NTT 所需的完整源码集合;ip/ 保留交付包中的独立算术 IP 与文档,便于单模块验证和复用。仓库不包含特定 FPGA 工程文件,综合约束、器件型号和时钟配置需按目标平台补充。

About

4096 point NTT

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages