原创 2020-09-09

2020-9-9 11:00 627 7 2 分类: FPGA/CPLD
实现的Montgomery大数相乘,如图所示; 供上一级ModExpPoweringladder 使用。
所谓的蒙哥马利形式即为模n的余数表示形式,只有当操作数转换为蒙哥马利形式时,才能使用此算法执行模乘。计算之后,操作数需要转换回正常表示。由于这些前、后计算步骤,蒙哥马利乘法并不比常规模乘快。但是,重复使用MonPro的情况下相比可以显著提高速度。当r是2的幂次时,除法可以用移位代替,余数的计算简化为位运算。n0为顶层模块中计算完成后給入的,其公式如下:


MonPro模块共8个端口,62出,inp轮流输入两个乘数,outp输出积。

 

端口名称

位宽

方向

描述

clk

 

Input

ModExpPowering时钟

reset

 

Input

重置位

start

 

Input

启动标志位

n0_data

64

Input

第一组n

n_data

64

Input

存储器給入n

inp

64

Intput

两乘数轮流由此输入

state

5

Output

显示状态机运行状态

outp

64

Output

乘积输出

MonPro模块端口定义


MonPro模块为ModExpPowering的次级调用,包含一个有10个状态的有限状态机,首先通过端口inp依次读入64位的乘数x与y,z则会初始化为0。 
第一步通过例化MulAdd模块计算
第二步把v的最低权重位记为,这里为64位,计算得到64位中间量m;
第三步MulAdd模块计算, 紧接着第四步完成 
, ... ...
运算64次之后移位约减,得到32轮中的第一轮64位输出结果z;下面继续从第一步开始做循环32次,即可得到完整的2048位Montgomery输出。

作者: 指的是在下, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3880846.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

pidaneng 2020-9-11 08:48

谢谢楼主分享!
相关推荐阅读
指的是在下 2021-03-25 14:47
从硬件看往软件--异步/同步概念
同步/异步这两个词不同领域的概念完全不同 同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。同步通信中双方使用频...
指的是在下 2020-12-10 10:16
2020-12-10
为什么支持向量机要用拉格朗日对偶算法来解最大化间隔问题? - 马同学的回答 - 知乎 https://www.zhihu.com/question/36694952/answer/161641538...
指的是在下 2020-09-20 21:42
【2020意法半导体开发大赛】ST25DV-PWM-eSET nfc感应
感谢ST给的 试用机会!这款NFC板 小巧别致,使用简单,配套说明详尽,对NFC做了很好的推广工作下载了应用后尝试用手机 与 开发板作感应,反应快速 很快成功,APP可以对 本开发板作 一定调节控制,...
指的是在下 2020-08-17 17:44
2020-08-17
本工程设计ModExpPowering为顶层模块,通过一包含11个状态的有限状态机(NONE 1, LOADC 2, WAIT_COMPUTE 3, CALC_C_BAR 4, GET_K_D 5, ...
指的是在下 2020-08-15 10:17
信息技术测试行业
测试 基于 锁了门一定要看下锁上了没的 人类心理,可能门后有对你来说重要的东西,你不信任门锁质量或是对自己的操作不确定,这都能成为测试的理由与动机。IT产业的测试据我观察有四个主要业务,软件测试 硬件...
广告
我要评论
1
7
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /4 下一条