集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1299|回复: 0

[求助]verilog语法问题!!!!!!关于sha256计算~~~~~~~~~~~~~~~~

[复制链接]
tj328111241 发表于 2013-4-25 16:15:13 | 显示全部楼层 |阅读模式
以下是本人写的verilog模块,用于计算sha256中的一个块

维基百科的伪代码表述:
http://zh.wikipedia.org/wiki/SHA ... 4.E7.AE.97.E6.B3.95



编译器:                ModelSim Se10.1a
编译环境:        win xp sp3


提示错误:

  1. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(115): near "genvar": syntax error, unexpected genvar

  2. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(116): (vlog-2730) Undefined variable: 'i'.

  3. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(116): near ")": syntax error, unexpected ')', expecting ';'

  4. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(120): near "endgenerate": syntax error, unexpected endgenerate

  5. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(123): near ")": syntax error, unexpected ')', expecting ';'

  6. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(131): near "endgenerate": syntax error, unexpected endgenerate

  7. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(144): near ")": syntax error, unexpected ')', expecting ';'

  8. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(148): (vlog-2730) Undefined variable: 's0'.

  9. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(149): near "maj": syntax error, unexpected IDENTIFIER, expecting ';'

  10. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(189): (vlog-2730) Undefined variable: 'rightrotate_32bit'.

  11. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(189): (vlog-2730) Undefined variable: 'n'.

  12. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(189): (vlog-2730) Undefined variable: 'data'.

  13. ** Error: E:\modeltech_10.1a\my project\sha-256-calcblock.v(191): near "endfunction": syntax error, unexpected endfunction
复制代码
代 码:

  1. module sha256calcblock(input [512:0] w, output reg [256:0] hash);

  2.    

  3.     reg [31:0] k256 [0:63];

  4.     reg [31:0] hh [0:7];

  5.     reg [31:0] ww [0:63];

  6.    

  7.     initial

  8.     fork

  9.         k256[0] = 32'h428a2f98;

  10.         k256[1] = 32'h71374491;

  11.         k256[2] = 32'hb5c0fbcf;

  12.         k256[3] = 32'he9b5dba5;

  13.         k256[4] = 32'h3956c25b;

  14.         k256[5] = 32'h59f111f1;

  15.         k256[6] = 32'h923f82a4;

  16.         k256[7] = 32'hab1c5ed5;

  17.         k256[8] = 32'hd807aa98;

  18.         k256[9] = 32'h12835b01;

  19.         k256[10] = 32'h243185be;

  20.         k256[11] = 32'h550c7dc3;

  21.         k256[12] = 32'h72be5d74;

  22.         k256[13] = 32'h80deb1fe;

  23.         k256[14] = 32'h9bdc06a7;

  24.         k256[15] = 32'hc19bf174;

  25.         k256[16] = 32'he49b69c1;

  26.         k256[17] = 32'hefbe4786;

  27.         k256[18] = 32'h0fc19dc6;

  28.         k256[19] = 32'h240ca1cc;

  29.         k256[20] = 32'h2de92c6f;

  30.         k256[21] = 32'h4a7484aa;

  31.         k256[22] = 32'h5cb0a9dc;

  32.         k256[23] = 32'h76f988da;

  33.         k256[24] = 32'h983e5152;

  34.         k256[25] = 32'ha831c66d;

  35.         k256[26] = 32'hb00327c8;

  36.         k256[27] = 32'hbf597fc7;

  37.         k256[28] = 32'hc6e00bf3;

  38.         k256[29] = 32'hd5a79147;

  39.         k256[30] = 32'h06ca6351;

  40.         k256[31] = 32'h14292967;

  41.         k256[32] = 32'h27b70a85;

  42.         k256[33] = 32'h2e1b2138;

  43.         k256[34] = 32'h4d2c6dfc;

  44.         k256[35] = 32'h53380d13;

  45.         k256[36] = 32'h650a7354;

  46.         k256[37] = 32'h766a0abb;

  47.         k256[38] = 32'h81c2c92e;

  48.         k256[39] = 32'h92722c85;

  49.         k256[40] = 32'ha2bfe8a1;

  50.         k256[41] = 32'ha81a664b;

  51.         k256[42] = 32'hc24b8b70;

  52.         k256[43] = 32'hc76c51a3;

  53.         k256[44] = 32'hd192e819;

  54.         k256[45] = 32'hd6990624;

  55.         k256[46] = 32'hf40e3585;

  56.         k256[47] = 32'h106aa070;

  57.         k256[48] = 32'h19a4c116;

  58.         k256[49] = 32'h1e376c08;

  59.         k256[50] = 32'h2748774c;

  60.         k256[51] = 32'h34b0bcb5;

  61.         k256[52] = 32'h391c0cb3;

  62.         k256[53] = 32'h4ed8aa4a;

  63.         k256[54] = 32'h5b9cca4f;

  64.         k256[55] = 32'h682e6ff3;

  65.         k256[56] = 32'h748f82ee;

  66.         k256[57] = 32'h78a5636f;

  67.         k256[58] = 32'h84c87814;

  68.         k256[59] = 32'h8cc70208;

  69.         k256[60] = 32'h90befffa;

  70.         k256[61] = 32'ha4506ceb;

  71.         k256[62] = 32'hbef9a3f7;

  72.         k256[63] = 32'hc67178f2;

  73.         hh[0] = 32'h6a09e667;

  74.         hh[1] = 32'hbb67ae85;

  75.         hh[2] = 32'h3c6ef372;

  76.         hh[3] = 32'ha54ff53a;

  77.         hh[4] = 32'h510e527f;

  78.         hh[5] = 32'h9b05688c;

  79.         hh[6] = 32'h1f83d9ab;

  80.         hh[7] = 32'h5be0cd19;

  81.     join

  82.    

  83.     reg [31:0] a;

  84.     reg [31:0] b;

  85.     reg [31:0] c;

  86.     reg [31:0] d;

  87.     reg [31:0] e;

  88.     reg [31:0] f;

  89.     reg [31:0] g;

  90.     reg [31:0] h;

  91.     always @(w)

  92.     begin

  93.         genvar i, s0, s1, maj, t1, t2, ch;

  94.         generate for(i = 0; i < 16 ; i = i + 1)

  95.             fork

  96.                 ww[31:0] <= w[i * 32:i * 32 + 31];

  97.             join

  98.         endgenerate

  99.         

  100.         generate for(i = 16; i < 63 ; i = i + 1)

  101.             fork

  102.                 //s0 = rightrotate_32bit(ww[i-15] , 7) ^ rightrotate_32bit(ww[i-15] , 18) ^ (ww[i-15] >> 3);

  103.                 //s1 = rightrotate_32bit(ww[i-2] , 17) ^ rightrotate_32bit(ww[i-2] , 19) ^ (ww[i-2] >> 10);

  104.                 //ww = ww[i-16] + s0 + ww[i-7] + s1;

  105.                 ww = ww[i-16] + rightrotate_32bit(ww[i-15] , 7) ^ rightrotate_32bit(ww[i-15] , 18) ^ (ww[i-15] >> 3) + ww[i-7] + rightrotate_32bit(ww[i-2] , 17) ^ rightrotate_32bit(ww[i-2] , 19) ^ (ww[i-2] >> 10);

  106.             join

  107.         endgenerate

  108.    

  109.         fork

  110.             a = hh[0]

  111.             b = hh[1]

  112.             c = hh[2]

  113.             d = hh[3]

  114.             e = hh[4]

  115.             f = hh[5]

  116.             g = hh[6]

  117.             h = hh[7]

  118.         join

  119.         

  120.         generate for(i = 0; i < 63 ; i = i + 1)

  121.             begin

  122.                 fork

  123.                     begin

  124.                         s0 = rightrotate_32bit(a , 2) ^ rightrotate_32bit(a , 13) ^ rightrotate_32bit(a , 22)

  125.                         maj = (a & b) ^ (a & c) ^ (b & c)

  126.                         t2 = s0 + maj

  127.                     end

  128.                     begin

  129.                         s1 = rightrotate_32bit(e , 6) ^ rightrotate_32bit(e , 11) ^ rightrotate_32bit(e , 25)

  130.                         ch = (e & f) ^ ((~ e) & g)

  131.                         t1 = h + s1 + ch + k + w

  132.                     end

  133.                 join

  134.                 fork

  135.                     h = g

  136.                     g = f

  137.                     f = e

  138.                     e = d + t1

  139.                     d = c

  140.                     c = b

  141.                     b = a

  142.                     a = t1 + t2

  143.                 join

  144.             end

  145.         endgenerate


  146.         fork

  147.             hh[0] = hh[0] + a

  148.             hh[1] = hh[1] + b

  149.             hh[2] = hh[2] + c

  150.             hh[3] = hh[3] + d

  151.             hh[4] = hh[4] + e

  152.             hh[5] = hh[5] + f

  153.             hh[6] = hh[6] + g

  154.             hh[7] = hh[7] + h

  155.         join

  156.     end

  157. endmodule

  158. function rightrotate_32bit(input [31:0] data, input [5:0] n);

  159. begin

  160.     rightrotate_32bit = (data[(31 - n):0] << (32 - n)) | ( data >> n);

  161. end

  162. endfunction
复制代码
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-27 13:33 , Processed in 0.061793 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表