|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 jk38038 于 2018-5-13 15:04 编辑
刚开始学verilog一个礼拜,老师要求用verilog实现32位RSA的加密算法,我自己尝试编了一下,发现问题好多,不知道怎么改,有没有大佬帮着看一下代码,哪里需要改,主要就计算了一个求幂的运算,里面调用了一个除法求余的函数,代码如下:
module rsa(e,in,key,out);
input[31:0] e;
input[31:0] in;
input[31:0] key;
output[31:0]out;
reg [31:0] n;
integer i;
for (i=N;i>0;i=i--)
begin
n=(e[ i ] )? remainder(out*out*in,key):remainder(out*out,key);
out=n[31:0];
end
function [31:0] remainder;
input[31:0] a;
input[31:0] b;
reg[31:0] tempa;
reg[31:0] tempb;
reg[63:0] temp_a;
reg[63:0] temp_b;
integer i;
begin
tempa <= a;
tempb <= b;
temp_a = {32'h00000000,tempa};
temp_b = {tempb,32'h00000000};
for(i = 0;i < 32;i = i + 1)
begin
temp_a = {temp_a[62:0],1'b0};
if(temp_a[63:32] >= tempb)
temp_a = temp_a - temp_b + 1'b1;
else
temp_a = temp_a;
end
remainder <= temp_a[63:32];
end
endfunction
endmodule
主要报错有这两条:Error (10170): Verilog HDL syntax error at rsa.v(10) near text "for"; expecting "endmodule"
Error (10280): Verilog HDL Port Declaration error at rsa.v(12): cannot redeclare port "key" because it is already fully declared
改了半天都有问题,这个key重复定义的问题有没有人解释一下 |
|