OpenCores
URL https://opencores.org/ocsvn/md5_pipelined/md5_pipelined/trunk

Subversion Repositories md5_pipelined

[/] [md5_pipelined/] [trunk/] [Md5Core.v] - Blame information for rev 3

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 JohnLeitch
/*
2
Copyright (C) 2014 John Leitch (johnleitch@outlook.com)
3
 
4
This program is free software: you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation, either version 3 of the License, or
7
(at your option) any later version.
8
 
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
GNU General Public License for more details.
13
 
14
You should have received a copy of the GNU General Public License
15
along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
*/
17
 
18 2 JohnLeitch
`define CopyChunkWords(__lhs, __rhs) \
19
  __lhs[0] <= __rhs[0];         \
20
  __lhs[1] <= __rhs[1];         \
21
  __lhs[2] <= __rhs[2];         \
22
  __lhs[3] <= __rhs[3];         \
23
  __lhs[4] <= __rhs[4];         \
24
  __lhs[5] <= __rhs[5];         \
25
  __lhs[6] <= __rhs[6];         \
26
  __lhs[7] <= __rhs[7];         \
27
  __lhs[8] <= __rhs[8];         \
28
  __lhs[9] <= __rhs[9];         \
29
  __lhs[10] <= __rhs[10];       \
30
  __lhs[11] <= __rhs[11];       \
31
  __lhs[12] <= __rhs[12];       \
32
  __lhs[13] <= __rhs[13];       \
33
  __lhs[14] <= __rhs[14];       \
34
  __lhs[15] <= __rhs[15];       \
35
 
36
`define CopyDigestWords(__lhs1, __rhs1, __lhs2, __rhs2, __lhs3, __rhs3) \
37
  __lhs1 <= __rhs1;                                                     \
38
  __lhs2 <= __rhs2;                                                     \
39
  __lhs3 <= __rhs3;                                                     \
40
 
41
module Md5Core (
42
  input wire clk,
43
  input wire [511:0] wb,
44
  input wire [31:0] a0,
45
  input wire [31:0] b0,
46
  input wire [31:0] c0,
47
  input wire [31:0] d0,
48
  output reg [31:0] a64,
49
  output reg [31:0] b64,
50
  output reg [31:0] c64,
51
  output reg [31:0] d64);
52
 
53
  wire [31:0] w0 [0:15];
54
  assign w0[0] = wb[31:0];
55
  assign w0[1] = wb[63:32];
56
  assign w0[2] = wb[95:64];
57
  assign w0[3] = wb[127:96];
58
  assign w0[4] = wb[159:128];
59
  assign w0[5] = wb[191:160];
60
  assign w0[6] = wb[223:192];
61
  assign w0[7] = wb[255:224];
62
  assign w0[8] = wb[287:256];
63
  assign w0[9] = wb[319:288];
64
  assign w0[10] = wb[351:320];
65
  assign w0[11] = wb[383:352];
66
  assign w0[12] = wb[415:384];
67
  assign w0[13] = wb[447:416];
68
  assign w0[14] = wb[479:448];
69
  assign w0[15] = wb[511:480];
70
 
71
  reg [31:0]
72
  a1, b1, c1, d1,
73
  a2, b2, c2, d2,
74
  a3, b3, c3, d3,
75
  a4, b4, c4, d4,
76
  a5, b5, c5, d5,
77
  a6, b6, c6, d6,
78
  a7, b7, c7, d7,
79
  a8, b8, c8, d8,
80
  a9, b9, c9, d9,
81
  a10, b10, c10, d10,
82
  a11, b11, c11, d11,
83
  a12, b12, c12, d12,
84
  a13, b13, c13, d13,
85
  a14, b14, c14, d14,
86
  a15, b15, c15, d15,
87
  a16, b16, c16, d16,
88
  a17, b17, c17, d17,
89
  a18, b18, c18, d18,
90
  a19, b19, c19, d19,
91
  a20, b20, c20, d20,
92
  a21, b21, c21, d21,
93
  a22, b22, c22, d22,
94
  a23, b23, c23, d23,
95
  a24, b24, c24, d24,
96
  a25, b25, c25, d25,
97
  a26, b26, c26, d26,
98
  a27, b27, c27, d27,
99
  a28, b28, c28, d28,
100
  a29, b29, c29, d29,
101
  a30, b30, c30, d30,
102
  a31, b31, c31, d31,
103
  a32, b32, c32, d32,
104
  a33, b33, c33, d33,
105
  a34, b34, c34, d34,
106
  a35, b35, c35, d35,
107
  a36, b36, c36, d36,
108
  a37, b37, c37, d37,
109
  a38, b38, c38, d38,
110
  a39, b39, c39, d39,
111
  a40, b40, c40, d40,
112
  a41, b41, c41, d41,
113
  a42, b42, c42, d42,
114
  a43, b43, c43, d43,
115
  a44, b44, c44, d44,
116
  a45, b45, c45, d45,
117
  a46, b46, c46, d46,
118
  a47, b47, c47, d47,
119
  a48, b48, c48, d48,
120
  a49, b49, c49, d49,
121
  a50, b50, c50, d50,
122
  a51, b51, c51, d51,
123
  a52, b52, c52, d52,
124
  a53, b53, c53, d53,
125
  a54, b54, c54, d54,
126
  a55, b55, c55, d55,
127
  a56, b56, c56, d56,
128
  a57, b57, c57, d57,
129
  a58, b58, c58, d58,
130
  a59, b59, c59, d59,
131
  a60, b60, c60, d60,
132
  a61, b61, c61, d61,
133
  a62, b62, c62, d62,
134
  a63, b63, c63, d63
135
  ;
136
 
137
  reg [31:0] w1 [0:15];
138
  reg [31:0] w2 [0:15];
139
  reg [31:0] w3 [0:15];
140
  reg [31:0] w4 [0:15];
141
  reg [31:0] w5 [0:15];
142
  reg [31:0] w6 [0:15];
143
  reg [31:0] w7 [0:15];
144
  reg [31:0] w8 [0:15];
145
  reg [31:0] w9 [0:15];
146
  reg [31:0] w10 [0:15];
147
  reg [31:0] w11 [0:15];
148
  reg [31:0] w12 [0:15];
149
  reg [31:0] w13 [0:15];
150
  reg [31:0] w14 [0:15];
151
  reg [31:0] w15 [0:15];
152
  reg [31:0] w16 [0:15];
153
  reg [31:0] w17 [0:15];
154
  reg [31:0] w18 [0:15];
155
  reg [31:0] w19 [0:15];
156
  reg [31:0] w20 [0:15];
157
  reg [31:0] w21 [0:15];
158
  reg [31:0] w22 [0:15];
159
  reg [31:0] w23 [0:15];
160
  reg [31:0] w24 [0:15];
161
  reg [31:0] w25 [0:15];
162
  reg [31:0] w26 [0:15];
163
  reg [31:0] w27 [0:15];
164
  reg [31:0] w28 [0:15];
165
  reg [31:0] w29 [0:15];
166
  reg [31:0] w30 [0:15];
167
  reg [31:0] w31 [0:15];
168
  reg [31:0] w32 [0:15];
169
  reg [31:0] w33 [0:15];
170
  reg [31:0] w34 [0:15];
171
  reg [31:0] w35 [0:15];
172
  reg [31:0] w36 [0:15];
173
  reg [31:0] w37 [0:15];
174
  reg [31:0] w38 [0:15];
175
  reg [31:0] w39 [0:15];
176
  reg [31:0] w40 [0:15];
177
  reg [31:0] w41 [0:15];
178
  reg [31:0] w42 [0:15];
179
  reg [31:0] w43 [0:15];
180
  reg [31:0] w44 [0:15];
181
  reg [31:0] w45 [0:15];
182
  reg [31:0] w46 [0:15];
183
  reg [31:0] w47 [0:15];
184
  reg [31:0] w48 [0:15];
185
  reg [31:0] w49 [0:15];
186
  reg [31:0] w50 [0:15];
187
  reg [31:0] w51 [0:15];
188
  reg [31:0] w52 [0:15];
189
  reg [31:0] w53 [0:15];
190
  reg [31:0] w54 [0:15];
191
  reg [31:0] w55 [0:15];
192
  reg [31:0] w56 [0:15];
193
  reg [31:0] w57 [0:15];
194
  reg [31:0] w58 [0:15];
195
  reg [31:0] w59 [0:15];
196
  reg [31:0] w60 [0:15];
197
  reg [31:0] w61 [0:15];
198
  reg [31:0] w62 [0:15];
199
  reg [31:0] w63 [0:15];
200
 
201
  always @(posedge clk)
202
    begin
203
      `CopyDigestWords(a1, d0, d1, c0, c1, b0)
204
      b1 <= b0 + ((((a0 + ((b0 & c0) | ((~b0) & d0)) + 'hd76aa478 + w0[0]) << 7) | ((a0 + ((b0 & c0) | ((~b0) & d0)) + 'hd76aa478 + w0[0]) >> (32 - 7))));
205
      `CopyChunkWords(w1, w0)
206
 
207
      `CopyDigestWords(a2, d1, d2, c1, c2, b1)
208
      b2 <= b1 + (((a1 + ((b1 & c1) | ((~b1) & d1)) + 'he8c7b756 + w1[1]) << 12) | ((a1 + ((b1 & c1) | ((~b1) & d1)) + 'he8c7b756 + w1[1]) >> (32 - 12)));
209
      `CopyChunkWords(w2, w1)
210
 
211
      `CopyDigestWords(a3, d2, d3, c2, c3, b2)
212
      b3 <= b2 + (((a2 + ((b2 & c2) | ((~b2) & d2)) + 'h242070db + w2[2]) << 17) | ((a2 + ((b2 & c2) | ((~b2) & d2)) + 'h242070db + w2[2]) >> (32 - 17)));
213
      `CopyChunkWords(w3, w2)
214
 
215
      `CopyDigestWords(a4, d3, d4, c3, c4, b3)
216
      b4 <= b3 + (((a3 + ((b3 & c3) | ((~b3) & d3)) + 'hc1bdceee + w3[3]) << 22) | ((a3 + ((b3 & c3) | ((~b3) & d3)) + 'hc1bdceee + w3[3]) >> (32 - 22)));
217
      `CopyChunkWords(w4, w3)
218
 
219
      `CopyDigestWords(a5, d4, d5, c4, c5, b4)
220
      b5 <= b4 + (((a4 + ((b4 & c4) | ((~b4) & d4)) + 'hf57c0faf + w4[4]) << 7) | ((a4 + ((b4 & c4) | ((~b4) & d4)) + 'hf57c0faf + w4[4]) >> (32 - 7)));
221
      `CopyChunkWords(w5, w4)
222
 
223
      `CopyDigestWords(a6, d5, d6, c5, c6, b5)
224
      b6 <= b5 + (((a5 + ((b5 & c5) | ((~b5) & d5)) + 'h4787c62a + w5[5]) << 12) | ((a5 + ((b5 & c5) | ((~b5) & d5)) + 'h4787c62a + w5[5]) >> (32 - 12)));
225
      `CopyChunkWords(w6, w5)
226
 
227
      `CopyDigestWords(a7, d6, d7, c6, c7, b6)
228
      b7 <= b6 + (((a6 + ((b6 & c6) | ((~b6) & d6)) + 'ha8304613 + w6[6]) << 17) | ((a6 + ((b6 & c6) | ((~b6) & d6)) + 'ha8304613 + w6[6]) >> (32 - 17)));
229
      `CopyChunkWords(w7, w6)
230
 
231
      `CopyDigestWords(a8, d7, d8, c7, c8, b7)
232
      b8 <= b7 + (((a7 + ((b7 & c7) | ((~b7) & d7)) + 'hfd469501 + w7[7]) << 22) | ((a7 + ((b7 & c7) | ((~b7) & d7)) + 'hfd469501 + w7[7]) >> (32 - 22)));
233
      `CopyChunkWords(w8, w7)
234
 
235
      `CopyDigestWords(a9, d8, d9, c8, c9, b8)
236
      b9 <= b8 + (((a8 + ((b8 & c8) | ((~b8) & d8)) + 'h698098d8 + w8[8]) << 7) | ((a8 + ((b8 & c8) | ((~b8) & d8)) + 'h698098d8 + w8[8]) >> (32 - 7)));
237
      `CopyChunkWords(w9, w8)
238
 
239
      `CopyDigestWords(a10, d9, d10, c9, c10, b9)
240
      b10 <= b9 + (((a9 + ((b9 & c9) | ((~b9) & d9)) + 'h8b44f7af + w9[9]) << 12) | ((a9 + ((b9 & c9) | ((~b9) & d9)) + 'h8b44f7af + w9[9]) >> (32 - 12)));
241
      `CopyChunkWords(w10, w9)
242
 
243
      `CopyDigestWords(a11, d10, d11, c10, c11, b10)
244
      b11 <= b10 + (((a10 + ((b10 & c10) | ((~b10) & d10)) + 'hffff5bb1 + w10[10]) << 17) | ((a10 + ((b10 & c10) | ((~b10) & d10)) + 'hffff5bb1 + w10[10]) >> (32 - 17)));
245
      `CopyChunkWords(w11, w10)
246
 
247
      `CopyDigestWords(a12, d11, d12, c11, c12, b11)
248
      b12 <= b11 + (((a11 + ((b11 & c11) | ((~b11) & d11)) + 'h895cd7be + w11[11]) << 22) | ((a11 + ((b11 & c11) | ((~b11) & d11)) + 'h895cd7be + w11[11]) >> (32 - 22)));
249
      `CopyChunkWords(w12, w11)
250
 
251
      `CopyDigestWords(a13, d12, d13, c12, c13, b12)
252
      b13 <= b12 + (((a12 + ((b12 & c12) | ((~b12) & d12)) + 'h6b901122 + w12[12]) << 7) | ((a12 + ((b12 & c12) | ((~b12) & d12)) + 'h6b901122 + w12[12]) >> (32 - 7)));
253
      `CopyChunkWords(w13, w12)
254
 
255
      `CopyDigestWords(a14, d13, d14, c13, c14, b13)
256
      b14 <= b13 + (((a13 + ((b13 & c13) | ((~b13) & d13)) + 'hfd987193 + w13[13]) << 12) | ((a13 + ((b13 & c13) | ((~b13) & d13)) + 'hfd987193 + w13[13]) >> (32 - 12)));
257
      `CopyChunkWords(w14, w13)
258
 
259
      `CopyDigestWords(a15, d14, d15, c14, c15, b14)
260
      b15 <= b14 + (((a14 + ((b14 & c14) | ((~b14) & d14)) + 'ha679438e + w14[14]) << 17) | ((a14 + ((b14 & c14) | ((~b14) & d14)) + 'ha679438e + w14[14]) >> (32 - 17)));
261
      `CopyChunkWords(w15, w14)
262
 
263
      `CopyDigestWords(a16, d15, d16, c15, c16, b15)
264
      b16 <= b15 + (((a15 + ((b15 & c15) | ((~b15) & d15)) + 'h49b40821 + w15[15]) << 22) | ((a15 + ((b15 & c15) | ((~b15) & d15)) + 'h49b40821 + w15[15]) >> (32 - 22)));
265
      `CopyChunkWords(w16, w15)
266
 
267
      `CopyDigestWords(a17, d16, d17, c16, c17, b16)
268
      b17 <= b16 + (((a16 + ((d16 & b16) | ((~d16) & c16)) + 'hf61e2562 + w16[(5 * 16 + 1) % 16]) << 5) | ((a16 + ((d16 & b16) | ((~d16) & c16)) + 'hf61e2562 + w16[(5 * 16 + 1) % 16]) >> (32 - 5)));
269
      `CopyChunkWords(w17, w16)
270
 
271
      `CopyDigestWords(a18, d17, d18, c17, c18, b17)
272
      b18 <= b17 + (((a17 + ((d17 & b17) | ((~d17) & c17)) + 'hc040b340 + w17[(5 * 17 + 1) % 16]) << 9) | ((a17 + ((d17 & b17) | ((~d17) & c17)) + 'hc040b340 + w17[(5 * 17 + 1) % 16]) >> (32 - 9)));
273
      `CopyChunkWords(w18, w17)
274
 
275
      `CopyDigestWords(a19, d18, d19, c18, c19, b18)
276
      b19 <= b18 + (((a18 + ((d18 & b18) | ((~d18) & c18)) + 'h265e5a51 + w18[(5 * 18 + 1) % 16]) << 14) | ((a18 + ((d18 & b18) | ((~d18) & c18)) + 'h265e5a51 + w18[(5 * 18 + 1) % 16]) >> (32 - 14)));
277
      `CopyChunkWords(w19, w18)
278
 
279
      `CopyDigestWords(a20, d19, d20, c19, c20, b19)
280
      b20 <= b19 + (((a19 + ((d19 & b19) | ((~d19) & c19)) + 'he9b6c7aa + w19[(5 * 19 + 1) % 16]) << 20) | ((a19 + ((d19 & b19) | ((~d19) & c19)) + 'he9b6c7aa + w19[(5 * 19 + 1) % 16]) >> (32 - 20)));
281
      `CopyChunkWords(w20, w19)
282
 
283
      `CopyDigestWords(a21, d20, d21, c20, c21, b20)
284
      b21 <= b20 + (((a20 + ((d20 & b20) | ((~d20) & c20)) + 'hd62f105d + w20[(5 * 20 + 1) % 16]) << 5) | ((a20 + ((d20 & b20) | ((~d20) & c20)) + 'hd62f105d + w20[(5 * 20 + 1) % 16]) >> (32 - 5)));
285
      `CopyChunkWords(w21, w20)
286
 
287
      `CopyDigestWords(a22, d21, d22, c21, c22, b21)
288
      b22 <= b21 + (((a21 + ((d21 & b21) | ((~d21) & c21)) + 'h02441453 + w21[(5 * 21 + 1) % 16]) << 9) | ((a21 + ((d21 & b21) | ((~d21) & c21)) + 'h02441453 + w21[(5 * 21 + 1) % 16]) >> (32 - 9)));
289
      `CopyChunkWords(w22, w21)
290
 
291
      `CopyDigestWords(a23, d22, d23, c22, c23, b22)
292
      b23 <= b22 + (((a22 + ((d22 & b22) | ((~d22) & c22)) + 'hd8a1e681 + w22[(5 * 22 + 1) % 16]) << 14) | ((a22 + ((d22 & b22) | ((~d22) & c22)) + 'hd8a1e681 + w22[(5 * 22 + 1) % 16]) >> (32 - 14)));
293
      `CopyChunkWords(w23, w22)
294
 
295
      `CopyDigestWords(a24, d23, d24, c23, c24, b23)
296
      b24 <= b23 + (((a23 + ((d23 & b23) | ((~d23) & c23)) + 'he7d3fbc8 + w23[(5 * 23 + 1) % 16]) << 20) | ((a23 + ((d23 & b23) | ((~d23) & c23)) + 'he7d3fbc8 + w23[(5 * 23 + 1) % 16]) >> (32 - 20)));
297
      `CopyChunkWords(w24, w23)
298
 
299
      `CopyDigestWords(a25, d24, d25, c24, c25, b24)
300
      b25 <= b24 + (((a24 + ((d24 & b24) | ((~d24) & c24)) + 'h21e1cde6 + w24[(5 * 24 + 1) % 16]) << 5) | ((a24 + ((d24 & b24) | ((~d24) & c24)) + 'h21e1cde6 + w24[(5 * 24 + 1) % 16]) >> (32 - 5)));
301
      `CopyChunkWords(w25, w24)
302
 
303
      `CopyDigestWords(a26, d25, d26, c25, c26, b25)
304
      b26 <= b25 + (((a25 + ((d25 & b25) | ((~d25) & c25)) + 'hc33707d6 + w25[(5 * 25 + 1) % 16]) << 9) | ((a25 + ((d25 & b25) | ((~d25) & c25)) + 'hc33707d6 + w25[(5 * 25 + 1) % 16]) >> (32 - 9)));
305
      `CopyChunkWords(w26, w25)
306
 
307
      `CopyDigestWords(a27, d26, d27, c26, c27, b26)
308
      b27 <= b26 + (((a26 + ((d26 & b26) | ((~d26) & c26)) + 'hf4d50d87 + w26[(5 * 26 + 1) % 16]) << 14) | ((a26 + ((d26 & b26) | ((~d26) & c26)) + 'hf4d50d87 + w26[(5 * 26 + 1) % 16]) >> (32 - 14)));
309
      `CopyChunkWords(w27, w26)
310
 
311
      `CopyDigestWords(a28, d27, d28, c27, c28, b27)
312
      b28 <= b27 + (((a27 + ((d27 & b27) | ((~d27) & c27)) + 'h455a14ed + w27[(5 * 27 + 1) % 16]) << 20) | ((a27 + ((d27 & b27) | ((~d27) & c27)) + 'h455a14ed + w27[(5 * 27 + 1) % 16]) >> (32 - 20)));
313
      `CopyChunkWords(w28, w27)
314
 
315
      `CopyDigestWords(a29, d28, d29, c28, c29, b28)
316
      b29 <= b28 + (((a28 + ((d28 & b28) | ((~d28) & c28)) + 'ha9e3e905 + w28[(5 * 28 + 1) % 16]) << 5) | ((a28 + ((d28 & b28) | ((~d28) & c28)) + 'ha9e3e905 + w28[(5 * 28 + 1) % 16]) >> (32 - 5)));
317
      `CopyChunkWords(w29, w28)
318
 
319
      `CopyDigestWords(a30, d29, d30, c29, c30, b29)
320
      b30 <= b29 + (((a29 + ((d29 & b29) | ((~d29) & c29)) + 'hfcefa3f8 + w29[(5 * 29 + 1) % 16]) << 9) | ((a29 + ((d29 & b29) | ((~d29) & c29)) + 'hfcefa3f8 + w29[(5 * 29 + 1) % 16]) >> (32 - 9)));
321
      `CopyChunkWords(w30, w29)
322
 
323
      `CopyDigestWords(a31, d30, d31, c30, c31, b30)
324
      b31 <= b30 + (((a30 + ((d30 & b30) | ((~d30) & c30)) + 'h676f02d9 + w30[(5 * 30 + 1) % 16]) << 14) | ((a30 + ((d30 & b30) | ((~d30) & c30)) + 'h676f02d9 + w30[(5 * 30 + 1) % 16]) >> (32 - 14)));
325
      `CopyChunkWords(w31, w30)
326
 
327
      `CopyDigestWords(a32, d31, d32, c31, c32, b31)
328
      b32 <= b31 + (((a31 + ((d31 & b31) | ((~d31) & c31)) + 'h8d2a4c8a + w31[(5 * 31 + 1) % 16]) << 20) | ((a31 + ((d31 & b31) | ((~d31) & c31)) + 'h8d2a4c8a + w31[(5 * 31 + 1) % 16]) >> (32 - 20)));
329
      `CopyChunkWords(w32, w31)
330
 
331
      `CopyDigestWords(a33, d32, d33, c32, c33, b32)
332
      b33 <= b32 + (((a32 + (b32 ^ c32 ^ d32) + 'hfffa3942 + w32[(3 * 32 + 5) % 16]) << 4) | ((a32 + (b32 ^ c32 ^ d32) + 'hfffa3942 + w32[(3 * 32 + 5) % 16]) >> (32 - 4)));
333
      `CopyChunkWords(w33, w32)
334
 
335
      `CopyDigestWords(a34, d33, d34, c33, c34, b33)
336
      b34 <= b33 + (((a33 + (b33 ^ c33 ^ d33) + 'h8771f681 + w33[(3 * 33 + 5) % 16]) << 11) | ((a33 + (b33 ^ c33 ^ d33) + 'h8771f681 + w33[(3 * 33 + 5) % 16]) >> (32 - 11)));
337
      `CopyChunkWords(w34, w33)
338
 
339
      `CopyDigestWords(a35, d34, d35, c34, c35, b34)
340
      b35 <= b34 + (((a34 + (b34 ^ c34 ^ d34) + 'h6d9d6122 + w34[(3 * 34 + 5) % 16]) << 16) | ((a34 + (b34 ^ c34 ^ d34) + 'h6d9d6122 + w34[(3 * 34 + 5) % 16]) >> (32 - 16)));
341
      `CopyChunkWords(w35, w34)
342
 
343
      `CopyDigestWords(a36, d35, d36, c35, c36, b35)
344
      b36 <= b35 + (((a35 + (b35 ^ c35 ^ d35) + 'hfde5380c + w35[(3 * 35 + 5) % 16]) << 23) | ((a35 + (b35 ^ c35 ^ d35) + 'hfde5380c + w35[(3 * 35 + 5) % 16]) >> (32 - 23)));
345
      `CopyChunkWords(w36, w35)
346
 
347
      `CopyDigestWords(a37, d36, d37, c36, c37, b36)
348
      b37 <= b36 + (((a36 + (b36 ^ c36 ^ d36) + 'ha4beea44 + w36[(3 * 36 + 5) % 16]) << 4) | ((a36 + (b36 ^ c36 ^ d36) + 'ha4beea44 + w36[(3 * 36 + 5) % 16]) >> (32 - 4)));
349
      `CopyChunkWords(w37, w36)
350
 
351
      `CopyDigestWords(a38, d37, d38, c37, c38, b37)
352
      b38 <= b37 + (((a37 + (b37 ^ c37 ^ d37) + 'h4bdecfa9 + w37[(3 * 37 + 5) % 16]) << 11) | ((a37 + (b37 ^ c37 ^ d37) + 'h4bdecfa9 + w37[(3 * 37 + 5) % 16]) >> (32 - 11)));
353
      `CopyChunkWords(w38, w37)
354
 
355
      `CopyDigestWords(a39, d38, d39, c38, c39, b38)
356
      b39 <= b38 + (((a38 + (b38 ^ c38 ^ d38) + 'hf6bb4b60 + w38[(3 * 38 + 5) % 16]) << 16) | ((a38 + (b38 ^ c38 ^ d38) + 'hf6bb4b60 + w38[(3 * 38 + 5) % 16]) >> (32 - 16)));
357
      `CopyChunkWords(w39, w38)
358
 
359
      `CopyDigestWords(a40, d39, d40, c39, c40, b39)
360
      b40 <= b39 + (((a39 + (b39 ^ c39 ^ d39) + 'hbebfbc70 + w39[(3 * 39 + 5) % 16]) << 23) | ((a39 + (b39 ^ c39 ^ d39) + 'hbebfbc70 + w39[(3 * 39 + 5) % 16]) >> (32 - 23)));
361
      `CopyChunkWords(w40, w39)
362
 
363
      `CopyDigestWords(a41, d40, d41, c40, c41, b40)
364
      b41 <= b40 + (((a40 + (b40 ^ c40 ^ d40) + 'h289b7ec6 + w40[(3 * 40 + 5) % 16]) << 4) | ((a40 + (b40 ^ c40 ^ d40) + 'h289b7ec6 + w40[(3 * 40 + 5) % 16]) >> (32 - 4)));
365
      `CopyChunkWords(w41, w40)
366
 
367
      `CopyDigestWords(a42, d41, d42, c41, c42, b41)
368
      b42 <= b41 + (((a41 + (b41 ^ c41 ^ d41) + 'heaa127fa + w41[(3 * 41 + 5) % 16]) << 11) | ((a41 + (b41 ^ c41 ^ d41) + 'heaa127fa + w41[(3 * 41 + 5) % 16]) >> (32 - 11)));
369
      `CopyChunkWords(w42, w41)
370
 
371
      `CopyDigestWords(a43, d42, d43, c42, c43, b42)
372
      b43 <= b42 + (((a42 + (b42 ^ c42 ^ d42) + 'hd4ef3085 + w42[(3 * 42 + 5) % 16]) << 16) | ((a42 + (b42 ^ c42 ^ d42) + 'hd4ef3085 + w42[(3 * 42 + 5) % 16]) >> (32 - 16)));
373
      `CopyChunkWords(w43, w42)
374
 
375
      `CopyDigestWords(a44, d43, d44, c43, c44, b43)
376
      b44 <= b43 + (((a43 + (b43 ^ c43 ^ d43) + 'h04881d05 + w43[(3 * 43 + 5) % 16]) << 23) | ((a43 + (b43 ^ c43 ^ d43) + 'h04881d05 + w43[(3 * 43 + 5) % 16]) >> (32 - 23)));
377
      `CopyChunkWords(w44, w43)
378
 
379
      `CopyDigestWords(a45, d44, d45, c44, c45, b44)
380
      b45 <= b44 + (((a44 + (b44 ^ c44 ^ d44) + 'hd9d4d039 + w44[(3 * 44 + 5) % 16]) << 4) | ((a44 + (b44 ^ c44 ^ d44) + 'hd9d4d039 + w44[(3 * 44 + 5) % 16]) >> (32 - 4)));
381
      `CopyChunkWords(w45, w44)
382
 
383
      `CopyDigestWords(a46, d45, d46, c45, c46, b45)
384
      b46 <= b45 + (((a45 + (b45 ^ c45 ^ d45) + 'he6db99e5 + w45[(3 * 45 + 5) % 16]) << 11) | ((a45 + (b45 ^ c45 ^ d45) + 'he6db99e5 + w45[(3 * 45 + 5) % 16]) >> (32 - 11)));
385
      `CopyChunkWords(w46, w45)
386
 
387
      `CopyDigestWords(a47, d46, d47, c46, c47, b46)
388
      b47 <= b46 + (((a46 + (b46 ^ c46 ^ d46) + 'h1fa27cf8 + w46[(3 * 46 + 5) % 16]) << 16) | ((a46 + (b46 ^ c46 ^ d46) + 'h1fa27cf8 + w46[(3 * 46 + 5) % 16]) >> (32 - 16)));
389
      `CopyChunkWords(w47, w46)
390
 
391
      `CopyDigestWords(a48, d47, d48, c47, c48, b47)
392
      b48 <= b47 + (((a47 + (b47 ^ c47 ^ d47) + 'hc4ac5665 + w47[(3 * 47 + 5) % 16]) << 23) | ((a47 + (b47 ^ c47 ^ d47) + 'hc4ac5665 + w47[(3 * 47 + 5) % 16]) >> (32 - 23)));
393
      `CopyChunkWords(w48, w47)
394
 
395
      `CopyDigestWords(a49, d48, d49, c48, c49, b48)
396
      b49 <= b48 + (((a48 + (c48 ^ (b48 | (~d48))) + 'hf4292244 + w48[(7 * 48) % 16]) << 6) | ((a48 + (c48 ^ (b48 | (~d48))) + 'hf4292244 + w48[(7 * 48) % 16]) >> (32 - 6)));
397
      `CopyChunkWords(w49, w48)
398
 
399
      `CopyDigestWords(a50, d49, d50, c49, c50, b49)
400
      b50 <= b49 + (((a49 + (c49 ^ (b49 | (~d49))) + 'h432aff97 + w49[(7 * 49) % 16]) << 10) | ((a49 + (c49 ^ (b49 | (~d49))) + 'h432aff97 + w49[(7 * 49) % 16]) >> (32 - 10)));
401
      `CopyChunkWords(w50, w49)
402
 
403
      `CopyDigestWords(a51, d50, d51, c50, c51, b50)
404
      b51 <= b50 + (((a50 + (c50 ^ (b50 | (~d50))) + 'hab9423a7 + w50[(7 * 50) % 16]) << 15) | ((a50 + (c50 ^ (b50 | (~d50))) + 'hab9423a7 + w50[(7 * 50) % 16]) >> (32 - 15)));
405
      `CopyChunkWords(w51, w50)
406
 
407
      `CopyDigestWords(a52, d51, d52, c51, c52, b51)
408
      b52 <= b51 + (((a51 + (c51 ^ (b51 | (~d51))) + 'hfc93a039 + w51[(7 * 51) % 16]) << 21) | ((a51 + (c51 ^ (b51 | (~d51))) + 'hfc93a039 + w51[(7 * 51) % 16]) >> (32 - 21)));
409
      `CopyChunkWords(w52, w51)
410
 
411
      `CopyDigestWords(a53, d52, d53, c52, c53, b52)
412
      b53 <= b52 + (((a52 + (c52 ^ (b52 | (~d52))) + 'h655b59c3 + w52[(7 * 52) % 16]) << 6) | ((a52 + (c52 ^ (b52 | (~d52))) + 'h655b59c3 + w52[(7 * 52) % 16]) >> (32 - 6)));
413
      `CopyChunkWords(w53, w52)
414
 
415
      `CopyDigestWords(a54, d53, d54, c53, c54, b53)
416
      b54 <= b53 + (((a53 + (c53 ^ (b53 | (~d53))) + 'h8f0ccc92 + w53[(7 * 53) % 16]) << 10) | ((a53 + (c53 ^ (b53 | (~d53))) + 'h8f0ccc92 + w53[(7 * 53) % 16]) >> (32 - 10)));
417
      `CopyChunkWords(w54, w53)
418
 
419
      `CopyDigestWords(a55, d54, d55, c54, c55, b54)
420
      b55 <= b54 + (((a54 + (c54 ^ (b54 | (~d54))) + 'hffeff47d + w54[(7 * 54) % 16]) << 15) | ((a54 + (c54 ^ (b54 | (~d54))) + 'hffeff47d + w54[(7 * 54) % 16]) >> (32 - 15)));
421
      `CopyChunkWords(w55, w54)
422
 
423
      `CopyDigestWords(a56, d55, d56, c55, c56, b55)
424
      b56 <= b55 + (((a55 + (c55 ^ (b55 | (~d55))) + 'h85845dd1 + w55[(7 * 55) % 16]) << 21) | ((a55 + (c55 ^ (b55 | (~d55))) + 'h85845dd1 + w55[(7 * 55) % 16]) >> (32 - 21)));
425
      `CopyChunkWords(w56, w55)
426
 
427
      `CopyDigestWords(a57, d56, d57, c56, c57, b56)
428
      b57 <= b56 + (((a56 + (c56 ^ (b56 | (~d56))) + 'h6fa87e4f + w56[(7 * 56) % 16]) << 6) | ((a56 + (c56 ^ (b56 | (~d56))) + 'h6fa87e4f + w56[(7 * 56) % 16]) >> (32 - 6)));
429
      `CopyChunkWords(w57, w56)
430
 
431
      `CopyDigestWords(a58, d57, d58, c57, c58, b57)
432
      b58 <= b57 + (((a57 + (c57 ^ (b57 | (~d57))) + 'hfe2ce6e0 + w57[(7 * 57) % 16]) << 10) | ((a57 + (c57 ^ (b57 | (~d57))) + 'hfe2ce6e0 + w57[(7 * 57) % 16]) >> (32 - 10)));
433
      `CopyChunkWords(w58, w57)
434
 
435
      `CopyDigestWords(a59, d58, d59, c58, c59, b58)
436
      b59 <= b58 + (((a58 + (c58 ^ (b58 | (~d58))) + 'ha3014314 + w58[(7 * 58) % 16]) << 15) | ((a58 + (c58 ^ (b58 | (~d58))) + 'ha3014314 + w58[(7 * 58) % 16]) >> (32 - 15)));
437
      `CopyChunkWords(w59, w58)
438
 
439
      `CopyDigestWords(a60, d59, d60, c59, c60, b59)
440
      b60 <= b59 + (((a59 + (c59 ^ (b59 | (~d59))) + 'h4e0811a1 + w59[(7 * 59) % 16]) << 21) | ((a59 + (c59 ^ (b59 | (~d59))) + 'h4e0811a1 + w59[(7 * 59) % 16]) >> (32 - 21)));
441
      `CopyChunkWords(w60, w59)
442
 
443
      `CopyDigestWords(a61, d60, d61, c60, c61, b60)
444
      b61 <= b60 + (((a60 + (c60 ^ (b60 | (~d60))) + 'hf7537e82 + w60[(7 * 60) % 16]) << 6) | ((a60 + (c60 ^ (b60 | (~d60))) + 'hf7537e82 + w60[(7 * 60) % 16]) >> (32 - 6)));
445
      `CopyChunkWords(w61, w60)
446
 
447
      `CopyDigestWords(a62, d61, d62, c61, c62, b61)
448
      b62 <= b61 + (((a61 + (c61 ^ (b61 | (~d61))) + 'hbd3af235 + w61[(7 * 61) % 16]) << 10) | ((a61 + (c61 ^ (b61 | (~d61))) + 'hbd3af235 + w61[(7 * 61) % 16]) >> (32 - 10)));
449
      `CopyChunkWords(w62, w61)
450
 
451
      `CopyDigestWords(a63, d62, d63, c62, c63, b62)
452
      b63 <= b62 + (((a62 + (c62 ^ (b62 | (~d62))) + 'h2ad7d2bb + w62[(7 * 62) % 16]) << 15) | ((a62 + (c62 ^ (b62 | (~d62))) + 'h2ad7d2bb + w62[(7 * 62) % 16]) >> (32 - 15)));
453
      `CopyChunkWords(w63, w62)
454
 
455
      `CopyDigestWords(a64, d63, d64, c63, c64, b63)
456
      b64 <= b63 + (((a63 + (c63 ^ (b63 | (~d63))) + 'heb86d391 + w63[(7 * 63) % 16]) << 21) | ((a63 + (c63 ^ (b63 | (~d63))) + 'heb86d391 + w63[(7 * 63) % 16]) >> (32 - 21)));
457
    end
458
endmodule
459
 
460
 
461
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.