SpinalHDL AdderNet MNIST 这是一个瞎写的理论上可以部署在FPGA上的用SpinalHDL写的针对MNIST的AdderNet,参考了华为的那篇论文,python代码调用了华为开源的那个代码。 训练也是瞎训练的,权重可能不太好,所以准确率很低,浮点精度97%多,量化后就更差了(9659/9998)。 FPGA代码中LayerCore这个核心模块和它下属的模块用比较基础的写法写的,思路就是传统的写rtl的思路,可以理解为相当于是verilog翻译来的。它的外层Layer ANN等模块用了一些略微高级点的技巧。 就设计思路来说还有很多可以优化的地方,例如,前两层量化位宽压根不需要这么宽,可以节约大量的资源。再就是不同层计算的所用时间不一样,所以也存在大量资源浪费。 生成代码ANN.scala是ANN.scala中的annTop , testANN.scala是testA