[发明专利]基于FPGA的高基模乘器无效
申请号: | 201310696478.8 | 申请日: | 2013-12-18 |
公开(公告)号: | CN103645883A | 公开(公告)日: | 2014-03-19 |
发明(设计)人: | 吴汶泰 | 申请(专利权)人: | 四川卫士通信息安全平台技术有限公司 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 成都金英专利代理事务所 51218 | 代理人: | 袁英 |
地址: | 610000 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 fpga 高基模乘器 | ||
1.基于FPGA的高基模乘器,用于计算大数模乘式A*B %N,其中A≥0,B<N,A、B和N均为二进制无符号大数,其特征在于:它包括MMM_CONTROL模块、第一乘法器、第一加法器、第二乘法器、第二加法器、Cbuf update模块和DATA_OUT模块,数据输入MMM_CONTROL模块中,MMM_CONTROL模块的输出端分别与第一乘法器、第二乘法器和Cbuf update模块相连,MMM_CONTROL模块用于对输入的数据进行管理,并控制数据的模乘过程,第一乘法器用于完成Bi*Aj的运算,第一乘法器的输出端通过第一加法器与Cbuf update模块相连,第一加法器用于完成Bi*Aj与进位Carry的和运算,Cbuf update模块用于存储、更新运算结果,并控制每一次循环运算,Cbuf update模块通过第二乘法器与第二加法器相连,第二乘法器用于完成q*Nj的运算,第二加法器用于完成q*Nj与进位Carry的和运算,第二加法器的输出与Cbuf update模块相连,更新Cbuf update模块中的数据,Cbuf update模块在每一次更新后读入一个新的Bi数据送给第一乘法器,在第一乘法器中进行Bi*Aj的运算,DATA_OUT模块的输入端与Cbuf update模块的数据输出端相连,接收并处理Cbuf update模块输出的数据,产生最终结果。
2.根据权利要求1所述的基于FPGA的高基模乘器,其特征在于:所述的MMM_CONTROL模块包括DATA_IN子模块、Init子模块、Counter control子模块、A_BUF子模块和N_BUF子模块,数据A、B、N、n0通过DATA_IN子模块输入,Init子模块用于完成计数器的初始化,以及对Cbuf全部清零的命令,Counter control子模块用于控制模乘运算的启动或停止,A_BUF子模块用于存储数据A,N_BUF子模块用于存储数据N。
3.根据权利要求1所述的基于FPGA的高基模乘器,其特征在于:所述的DATA_OUT模块包括Cbuf-N子模块和比较模块,Cbuf-N子模块用于接收Cbuf update模块输出的Cbuf数据、进位Carry数据和N数据,对Cbuf数据和N数据进行借位减法操作,并在完成循环借位减法操作后产生借位数据C,比较模块用于判断进位Carry数据与借位数据C的关系,并产生最终结果。
4.根据权利要求3所述的基于FPGA的高基模乘器,其特征在于:所述的比较模块产生最终结果具体包括:①若进位Carry==1,则直接输出Cbuf数据和N数据进行借位减法所产生的结果;②若进位Carry==0且借位数据C==0,则直接输出Cbuf数据和N数据进行借位减法所产生的结果;③进位Carry==0且借位数据C==1,则直接输出Cbuf数据。
5.根据权利要求1所述的基于FPGA的高基模乘器,其特征在于:在计算大数模乘式A*B %N时,将求A*B %N转换为C'=(C'+A*B+q*N)/r,并将C'=(C'+A*B+q*N)/r分解为以下三个式子进行计算:
(1)C'=C'+A*B;
(2)C'=C'+q*N;
(3)C'= C'/r,其中q=(C'[0]+A*B[0])*m %r,r为任何值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川卫士通信息安全平台技术有限公司,未经四川卫士通信息安全平台技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310696478.8/1.html,转载请声明来源钻瓜专利网。