最近整理之前的多项式乘法的硬件实现代码,今天又回顾了一下。记录一下之前多项式乘法的硬件实现,对于kyber中的q=3329,所以没有512次的原根无法对256阶的进行预处理操作,需要把256阶的NTT转成128阶的NTT计算。清华的文章里面理论有一些小瑕疵,但是结果是对的,中间的证明很不清楚,还存在一些问题。
将清华的方案用python实现如下图所示:
里面需要实现5次乘法,我从师兄的论文里面找到实现灵感,BRAM里面的数据流如下:
最终软硬件结果一致。结果在周报里面。
上面提到的文件都放在百度网盘里面了。
链接:https://pan.baidu.com/s/1PExUGmmW9BLpWeVoz3a-JA?pwd=z13b
提取码:z13b