|
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 2021/06/28 22:02:04
- // Design Name:
- // Module Name: keccak_256
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
-
-
- module keccak_256(
- input wire clk,
- input wire rst,
- input wire [31:0]l,
- input wire [767:0]M,
- output wire [255:0]O,
- output reg finished
- );
-
- localparam r = 1088;
- localparam c = 512;
- localparam n = 256;
-
-
- wire [64:0]RC[23:0];
- assign RC[0] = 64'h0000000000000001;assign RC[1] = 64'h0000000000008082;assign RC[2] = 64'h800000000000808a;
- assign RC[3] = 64'h8000000080008000;assign RC[4] = 64'h000000000000808b;assign RC[5] = 64'h0000000080000001;
- assign RC[6] = 64'h8000000080008081;assign RC[7] = 64'h8000000000008009;assign RC[8] = 64'h000000000000008a;
- assign RC[9] = 64'h0000000000000088;assign RC[10] = 64'h0000000080008009;assign RC[11] = 64'h000000008000000a;
- assign RC[12] = 64'h000000008000808b;assign RC[13] = 64'h800000000000008b;assign RC[14] = 64'h8000000000008089;
- assign RC[15] = 64'h8000000000008003;assign RC[16] = 64'h8000000000008002;assign RC[17] = 64'h8000000000000080;
- assign RC[18] = 64'h000000000000800a;assign RC[19] = 64'h800000008000000a;assign RC[20] = 64'h8000000080008081;
- assign RC[21] = 64'h8000000000008080;assign RC[22] = 64'h0000000080000001;assign RC[23] = 64'h8000000080008008;
-
- reg [1599:0]A;
- wire [7:0]P[255:0];
-
- wire [1599:0]A_middle;
- //reg [63:0]A_out[24:0];
-
- wire [31:0]blocks;
- wire [31:0]block_len;
- assign blocks = {2'b0,l[31:2]};
- reg l_pad;
- reg [7:0]keccak_times;
- reg [64:0]RC_choosed;
-
-
- integer i,j,k;
-
- keccakf_1t r0(
- .in(A),
- .RC(RC_choosed),
- .out(A_middle)
- );
-
-
- /*keccakf_1t r1(
- .in(A_middle[0]),
- .RC(RC[1]),
- .out(A_middle[1])
- );
- keccakf_1t r2(
- .in(A_middle[1]),
- .RC(RC[2]),
- .out(A_middle[2])
- );
- keccakf_1t r3(
- .in(A_middle[2]),
- .RC(RC[3]),
- .out(A_middle[3])
- );
- keccakf_1t r4(
- .in(A_middle[3]),
- .RC(RC[4]),
- .out(A_middle[4])
- );
- keccakf_1t r5(
- .in(A_middle[4]),
- .RC(RC[5]),
- .out(A_middle[5])
- );
- keccakf_1t r6(
- .in(A_middle[5]),
- .RC(RC[6]),
- .out(A_middle[6])
- );
- keccakf_1t r7(
- .in(A_middle[6]),
- .RC(RC[7]),
- .out(A_middle[7])
- );
- keccakf_1t r8(
- .in(A_middle[7]),
- .RC(RC[8]),
- .out(A_middle[8])
- );
- keccakf_1t r9(
- .in(A_middle[8]),
- .RC(RC[9]),
- .out(A_middle[9])
- );
- keccakf_1t r10(
- .in(A_middle[9]),
- .RC(RC[10]),
- .out(A_middle[10])
- );
- keccakf_1t r11(
- .in(A_middle[10]),
- .RC(RC[11]),
- .out(A_middle[11])
- );
- keccakf_1t r12(
- .in(A_middle[11]),
- .RC(RC[12]),
- .out(A_middle[12])
- );
- keccakf_1t r13(
- .in(A_middle[12]),
- .RC(RC[13]),
- .out(A_middle[13])
- );
- keccakf_1t r14(
- .in(A_middle[13]),
- .RC(RC[14]),
- .out(A_middle[14])
- );
- keccakf_1t r15(
- .in(A_middle[14]),
- .RC(RC[15]),
- .out(A_middle[15])
- );
- keccakf_1t r16(
- .in(A_middle[15]),
- .RC(RC[16]),
- .out(A_middle[16])
- );
- keccakf_1t r17(
- .in(A_middle[16]),
- .RC(RC[17]),
- .out(A_middle[17])
- );
- keccakf_1t r18(
- .in(A_middle[17]),
- .RC(RC[18]),
- .out(A_middle[18])
- );
- keccakf_1t r19(
- .in(A_middle[18]),
- .RC(RC[19]),
- .out(A_middle[19])
- );
- keccakf_1t r20(
- .in(A_middle[19]),
- .RC(RC[20]),
- .out(A_middle[20])
- );
- keccakf_1t r21(
- .in(A_middle[20]),
- .RC(RC[21]),
- .out(A_middle[21])
- );
- keccakf_1t r22(
- .in(A_middle[21]),
- .RC(RC[22]),
- .out(A_middle[22])
- );
- keccakf_1t r23(
- .in(A_middle[22]),
- .RC(RC[23]),
- .out(A_middle[23])
- );*/
-
- assign P[ 0 ] = l< 1 ? 0 :M[ 7 : 0 ];
- assign P[ 1 ] = l< 2 ? 0 :M[ 15 : 8 ];
- assign P[ 2 ] = l< 3 ? 0 :M[ 23 : 16 ];
- assign P[ 3 ] = l< 4 ? 0 :M[ 31 : 24 ];
- assign P[ 4 ] = l< 5 ? 0 :M[ 39 : 32 ];
- assign P[ 5 ] = l< 6 ? 0 :M[ 47 : 40 ];
- assign P[ 6 ] = l< 7 ? 0 :M[ 55 : 48 ];
- assign P[ 7 ] = l< 8 ? 0 :M[ 63 : 56 ];
- assign P[ 8 ] = l< 9 ? 0 :M[ 71 : 64 ];
- assign P[ 9 ] = l< 10 ? 0 :M[ 79 : 72 ];
- assign P[ 10 ] = l< 11 ? 0 :M[ 87 : 80 ];
- assign P[ 11 ] = l< 12 ? 0 :M[ 95 : 88 ];
- assign P[ 12 ] = l< 13 ? 0 :M[ 103 : 96 ];
- assign P[ 13 ] = l< 14 ? 0 :M[ 111 : 104 ];
- assign P[ 14 ] = l< 15 ? 0 :M[ 119 : 112 ];
- assign P[ 15 ] = l< 16 ? 0 :M[ 127 : 120 ];
- assign P[ 16 ] = l< 17 ? 0 :M[ 135 : 128 ];
- assign P[ 17 ] = l< 18 ? 0 :M[ 143 : 136 ];
- assign P[ 18 ] = l< 19 ? 0 :M[ 151 : 144 ];
- assign P[ 19 ] = l< 20 ? 0 :M[ 159 : 152 ];
- assign P[ 20 ] = l< 21 ? 0 :M[ 167 : 160 ];
- assign P[ 21 ] = l< 22 ? 0 :M[ 175 : 168 ];
- assign P[ 22 ] = l< 23 ? 0 :M[ 183 : 176 ];
- assign P[ 23 ] = l< 24 ? 0 :M[ 191 : 184 ];
- assign P[ 24 ] = l< 25 ? 0 :M[ 199 : 192 ];
- assign P[ 25 ] = l< 26 ? 0 :M[ 207 : 200 ];
- assign P[ 26 ] = l< 27 ? 0 :M[ 215 : 208 ];
- assign P[ 27 ] = l< 28 ? 0 :M[ 223 : 216 ];
- assign P[ 28 ] = l< 29 ? 0 :M[ 231 : 224 ];
- assign P[ 29 ] = l< 30 ? 0 :M[ 239 : 232 ];
- assign P[ 30 ] = l< 31 ? 0 :M[ 247 : 240 ];
- assign P[ 31 ] = l< 32 ? 0 :M[ 255 : 248 ];
- assign P[ 32 ] = l< 33 ? 0 :M[ 263 : 256 ];
- assign P[ 33 ] = l< 34 ? 0 :M[ 271 : 264 ];
- assign P[ 34 ] = l< 35 ? 0 :M[ 279 : 272 ];
- assign P[ 35 ] = l< 36 ? 0 :M[ 287 : 280 ];
- assign P[ 36 ] = l< 37 ? 0 :M[ 295 : 288 ];
- assign P[ 37 ] = l< 38 ? 0 :M[ 303 : 296 ];
- assign P[ 38 ] = l< 39 ? 0 :M[ 311 : 304 ];
- assign P[ 39 ] = l< 40 ? 0 :M[ 319 : 312 ];
- assign P[ 40 ] = l< 41 ? 0 :M[ 327 : 320 ];
- assign P[ 41 ] = l< 42 ? 0 :M[ 335 : 328 ];
- assign P[ 42 ] = l< 43 ? 0 :M[ 343 : 336 ];
- assign P[ 43 ] = l< 44 ? 0 :M[ 351 : 344 ];
- assign P[ 44 ] = l< 45 ? 0 :M[ 359 : 352 ];
- assign P[ 45 ] = l< 46 ? 0 :M[ 367 : 360 ];
- assign P[ 46 ] = l< 47 ? 0 :M[ 375 : 368 ];
- assign P[ 47 ] = l< 48 ? 0 :M[ 383 : 376 ];
- assign P[ 48 ] = l< 49 ? 0 :M[ 391 : 384 ];
- assign P[ 49 ] = l< 50 ? 0 :M[ 399 : 392 ];
- assign P[ 50 ] = l< 51 ? 0 :M[ 407 : 400 ];
- assign P[ 51 ] = l< 52 ? 0 :M[ 415 : 408 ];
- assign P[ 52 ] = l< 53 ? 0 :M[ 423 : 416 ];
- assign P[ 53 ] = l< 54 ? 0 :M[ 431 : 424 ];
- assign P[ 54 ] = l< 55 ? 0 :M[ 439 : 432 ];
- assign P[ 55 ] = l< 56 ? 0 :M[ 447 : 440 ];
- assign P[ 56 ] = l< 57 ? 0 :M[ 455 : 448 ];
- assign P[ 57 ] = l< 58 ? 0 :M[ 463 : 456 ];
- assign P[ 58 ] = l< 59 ? 0 :M[ 471 : 464 ];
- assign P[ 59 ] = l< 60 ? 0 :M[ 479 : 472 ];
- assign P[ 60 ] = l< 61 ? 0 :M[ 487 : 480 ];
- assign P[ 61 ] = l< 62 ? 0 :M[ 495 : 488 ];
- assign P[ 62 ] = l< 63 ? 0 :M[ 503 : 496 ];
- assign P[ 63 ] = l< 64 ? 0 :M[ 511 : 504 ];
- assign P[ 64 ] = l< 65 ? 0 :M[ 519 : 512 ];
- assign P[ 65 ] = l< 66 ? 0 :M[ 527 : 520 ];
- assign P[ 66 ] = l< 67 ? 0 :M[ 535 : 528 ];
- assign P[ 67 ] = l< 68 ? 0 :M[ 543 : 536 ];
- assign P[ 68 ] = l< 69 ? 0 :M[ 551 : 544 ];
- assign P[ 69 ] = l< 70 ? 0 :M[ 559 : 552 ];
- assign P[ 70 ] = l< 71 ? 0 :M[ 567 : 560 ];
- assign P[ 71 ] = l< 72 ? 0 :M[ 575 : 568 ];
- assign P[ 72 ] = l< 73 ? 0 :M[ 583 : 576 ];
- assign P[ 73 ] = l< 74 ? 0 :M[ 591 : 584 ];
- assign P[ 74 ] = l< 75 ? 0 :M[ 599 : 592 ];
- assign P[ 75 ] = l< 76 ? 0 :M[ 607 : 600 ];
- assign P[ 76 ] = l< 77 ? 0 :M[ 615 : 608 ];
- assign P[ 77 ] = l< 78 ? 0 :M[ 623 : 616 ];
- assign P[ 78 ] = l< 79 ? 0 :M[ 631 : 624 ];
- assign P[ 79 ] = l< 80 ? 0 :M[ 639 : 632 ];
- assign P[ 80 ] = l< 81 ? 0 :M[ 647 : 640 ];
- assign P[ 81 ] = l< 82 ? 0 :M[ 655 : 648 ];
- assign P[ 82 ] = l< 83 ? 0 :M[ 663 : 656 ];
- assign P[ 83 ] = l< 84 ? 0 :M[ 671 : 664 ];
- assign P[ 84 ] = l< 85 ? 0 :M[ 679 : 672 ];
- assign P[ 85 ] = l< 86 ? 0 :M[ 687 : 680 ];
- assign P[ 86 ] = l< 87 ? 0 :M[ 695 : 688 ];
- assign P[ 87 ] = l< 88 ? 0 :M[ 703 : 696 ];
- assign P[ 88 ] = l< 89 ? 0 :M[ 711 : 704 ];
- assign P[ 89 ] = l< 90 ? 0 :M[ 719 : 712 ];
- assign P[ 90 ] = l< 91 ? 0 :M[ 727 : 720 ];
- assign P[ 91 ] = l< 92 ? 0 :M[ 735 : 728 ];
- assign P[ 92 ] = l< 93 ? 0 :M[ 743 : 736 ];
- assign P[ 93 ] = l< 94 ? 0 :M[ 751 : 744 ];
- assign P[ 94 ] = l< 95 ? 0 :M[ 759 : 752 ];
- assign P[ 95 ] = l< 96 ? 0 :M[ 767 : 760 ];
- assign P[ 96 ] = 0;
- assign P[ 97 ] =0;
- assign P[ 98 ] =0;
- assign P[ 99 ] =0;
- assign P[ 100 ] =0;
- assign P[ 101 ] =0;
- assign P[ 102 ] =0;
- assign P[ 103 ] =0;
- assign P[ 104 ] =0;
- assign P[ 105 ] =0;
- assign P[ 106 ] =0;
- assign P[ 107 ] =0;
- assign P[ 108 ] =0;
- assign P[ 109 ] =0;
- assign P[ 110 ] =0;
- assign P[ 111 ] =0;
- assign P[ 112 ] =0;
- assign P[ 113 ] =0;
- assign P[ 114 ] =0;
- assign P[ 115 ] =0;
- assign P[ 116 ] =0;
- assign P[ 117 ] =0;
- assign P[ 118 ] =0;
- assign P[ 119 ] =0;
- assign P[ 120 ] =0;
- assign P[ 121 ] =0;
- assign P[ 122 ] =0;
- assign P[ 123 ] =0;
- assign P[ 124 ] =0;
- assign P[ 125 ] =0;
- assign P[ 126 ] =0;
- assign P[ 127 ] =0;
- assign P[ 128 ] =0;
- assign P[ 129 ] =0;
- assign P[ 130 ] =0;
- assign P[ 131 ] =0;
- assign P[ 132 ] =0;
- assign P[ 133 ] =0;
- assign P[ 134 ] =0;
- assign P[ 135 ] =0;
- assign P[ 136 ] =0;
- assign P[ 137 ] =0;
- assign P[ 138 ] =0;
- assign P[ 139 ] =0;
- assign P[ 140 ] =0;
- assign P[ 141 ] =0;
- assign P[ 142 ] =0;
- assign P[ 143 ] =0;
- assign P[ 144 ] =0;
- assign P[ 145 ] =0;
- assign P[ 146 ] =0;
- assign P[ 147 ] =0;
- assign P[ 148 ] =0;
- assign P[ 149 ] =0;
- assign P[ 150 ] =0;
- assign P[ 151 ] =0;
- assign P[ 152 ] =0;
- assign P[ 153 ] =0;
- assign P[ 154 ] =0;
- assign P[ 155 ] =0;
- assign P[ 156 ] =0;
- assign P[ 157 ] =0;
- assign P[ 158 ] =0;
- assign P[ 159 ] =0;
- assign P[ 160 ] =0;
- assign P[ 161 ] =0;
- assign P[ 162 ] =0;
- assign P[ 163 ] =0;
- assign P[ 164 ] =0;
- assign P[ 165 ] =0;
- assign P[ 166 ] =0;
- assign P[ 167 ] =0;
- assign P[ 168 ] =0;
- assign P[ 169 ] =0;
- assign P[ 170 ] =0;
- assign P[ 171 ] =0;
- assign P[ 172 ] =0;
- assign P[ 173 ] =0;
- assign P[ 174 ] =0;
- assign P[ 175 ] =0;
- assign P[ 176 ] =0;
- assign P[ 177 ] =0;
- assign P[ 178 ] =0;
- assign P[ 179 ] =0;
- assign P[ 180 ] =0;
- assign P[ 181 ] =0;
- assign P[ 182 ] =0;
- assign P[ 183 ] =0;
- assign P[ 184 ] =0;
- assign P[ 185 ] =0;
- assign P[ 186 ] =0;
- assign P[ 187 ] =0;
- assign P[ 188 ] =0;
- assign P[ 189 ] =0;
- assign P[ 190 ] =0;
- assign P[ 191 ] =0;
- assign P[ 192 ] =0;
- assign P[ 193 ] =0;
- assign P[ 194 ] =0;
- assign P[ 195 ] =0;
- assign P[ 196 ] =0;
- assign P[ 197 ] =0;
- assign P[ 198 ] =0;
- assign P[ 199 ] =0;
- assign P[ 200 ] =0;
- assign P[ 201 ] =0;
- assign P[ 202 ] =0;
- assign P[ 203 ] =0;
- assign P[ 204 ] =0;
- assign P[ 205 ] =0;
- assign P[ 206 ] =0;
- assign P[ 207 ] =0;
- assign P[ 208 ] =0;
- assign P[ 209 ] =0;
- assign P[ 210 ] =0;
- assign P[ 211 ] =0;
- assign P[ 212 ] =0;
- assign P[ 213 ] =0;
- assign P[ 214 ] =0;
- assign P[ 215 ] =0;
- assign P[ 216 ] =0;
- assign P[ 217 ] =0;
- assign P[ 218 ] =0;
- assign P[ 219 ] =0;
- assign P[ 220 ] =0;
- assign P[ 221 ] =0;
- assign P[ 222 ] =0;
- assign P[ 223 ] =0;
- assign P[ 224 ] =0;
- assign P[ 225 ] =0;
- assign P[ 226 ] =0;
- assign P[ 227 ] =0;
- assign P[ 228 ] =0;
- assign P[ 229 ] =0;
- assign P[ 230 ] =0;
- assign P[ 231 ] =0;
- assign P[ 232 ] =0;
- assign P[ 233 ] =0;
- assign P[ 234 ] =0;
- assign P[ 235 ] =0;
- assign P[ 236 ] =0;
- assign P[ 237 ] =0;
- assign P[ 238 ] =0;
- assign P[ 239 ] =0;
- assign P[ 240 ] =0;
- assign P[ 241 ] =0;
- assign P[ 242 ] =0;
- assign P[ 243 ] =0;
- assign P[ 244 ] =0;
- assign P[ 245 ] =0;
- assign P[ 246 ] =0;
- assign P[ 247 ] =0;
- assign P[ 248 ] =0;
- assign P[ 249 ] =0;
- assign P[ 250 ] =0;
- assign P[ 251 ] =0;
- assign P[ 252 ] =0;
- assign P[ 253 ] =0;
- assign P[ 254 ] =0;
- assign P[ 255 ] =0;
-
- assign block_len = (blocks + 1) * 136;
-
-
- always @(posedge clk) begin
-
- if(rst)begin
-
-
-
- A[ 63 : 0 ] <= {P[ 7 ],P[ 6 ],P[ 5 ],P[ 4 ],P[ 3 ],P[ 2 ],P[ 1 ],P[ 0 ]} ;
- A[ 127 : 64 ] <= {P[ 15 ],P[ 14 ],P[ 13 ],P[ 12 ],P[ 11 ],P[ 10 ],P[ 9 ],P[ 8 ]} ;
- A[ 191 : 128 ] <= {P[ 23 ],P[ 22 ],P[ 21 ],P[ 20 ],P[ 19 ],P[ 18 ],P[ 17 ],P[ 16 ]} ;
- A[ 255 : 192 ] <= {P[ 31 ],P[ 30 ],P[ 29 ],P[ 28 ],P[ 27 ],P[ 26 ],P[ 25 ],P[ 24 ]} ;
- A[ 319 : 256 ] <= {P[ 39 ],P[ 38 ],P[ 37 ],P[ 36 ],P[ 35 ],P[ 34 ],P[ 33 ],P[ 32 ]} ;
- A[ 383 : 320 ] <= {P[ 47 ],P[ 46 ],P[ 45 ],P[ 44 ],P[ 43 ],P[ 42 ],P[ 41 ],P[ 40 ]} ;
- A[ 447 : 384 ] <= {P[ 55 ],P[ 54 ],P[ 53 ],P[ 52 ],P[ 51 ],P[ 50 ],P[ 49 ],P[ 48 ]} ;
- A[ 511 : 448 ] <= {P[ 63 ],P[ 62 ],P[ 61 ],P[ 60 ],P[ 59 ],P[ 58 ],P[ 57 ],P[ 56 ]} ;
- A[ 575 : 512 ] <= {P[ 71 ],P[ 70 ],P[ 69 ],P[ 68 ],P[ 67 ],P[ 66 ],P[ 65 ],P[ 64 ]} ;
- A[ 639 : 576 ] <= {P[ 79 ],P[ 78 ],P[ 77 ],P[ 76 ],P[ 75 ],P[ 74 ],P[ 73 ],P[ 72 ]} ;
- A[ 703 : 640 ] <= {P[ 87 ],P[ 86 ],P[ 85 ],P[ 84 ],P[ 83 ],P[ 82 ],P[ 81 ],P[ 80 ]} ;
- A[ 767 : 704 ] <= {P[ 95 ],P[ 94 ],P[ 93 ],P[ 92 ],P[ 91 ],P[ 90 ],P[ 89 ],P[ 88 ]} ;
- A[ 831 : 768 ] <= {P[ 103 ],P[ 102 ],P[ 101 ],P[ 100 ],P[ 99 ],P[ 98 ],P[ 97 ],P[ 96 ]} ;
- A[ 895 : 832 ] <= {P[ 111 ],P[ 110 ],P[ 109 ],P[ 108 ],P[ 107 ],P[ 106 ],P[ 105 ],P[ 104 ]} ;
- A[ 959 : 896 ] <= {P[ 119 ],P[ 118 ],P[ 117 ],P[ 116 ],P[ 115 ],P[ 114 ],P[ 113 ],P[ 112 ]} ;
- A[ 1023 : 960 ] <= {P[ 127 ],P[ 126 ],P[ 125 ],P[ 124 ],P[ 123 ],P[ 122 ],P[ 121 ],P[ 120 ]} ;
- A[ 1087 : 1024 ] <= {P[ 135 ],P[ 134 ],P[ 133 ],P[ 132 ],P[ 131 ],P[ 130 ],P[ 129 ],P[ 128 ]} ;
- A[ 1151 : 1088 ] <= {P[ 143 ],P[ 142 ],P[ 141 ],P[ 140 ],P[ 139 ],P[ 138 ],P[ 137 ],P[ 136 ]} ;
- A[ 1215 : 1152 ] <= {P[ 151 ],P[ 150 ],P[ 149 ],P[ 148 ],P[ 147 ],P[ 146 ],P[ 145 ],P[ 144 ]} ;
- A[ 1279 : 1216 ] <= {P[ 159 ],P[ 158 ],P[ 157 ],P[ 156 ],P[ 155 ],P[ 154 ],P[ 153 ],P[ 152 ]} ;
- A[ 1343 : 1280 ] <= {P[ 167 ],P[ 166 ],P[ 165 ],P[ 164 ],P[ 163 ],P[ 162 ],P[ 161 ],P[ 160 ]} ;
- A[ 1407 : 1344 ] <= {P[ 175 ],P[ 174 ],P[ 173 ],P[ 172 ],P[ 171 ],P[ 170 ],P[ 169 ],P[ 168 ]} ;
- A[ 1471 : 1408 ] <= {P[ 183 ],P[ 182 ],P[ 181 ],P[ 180 ],P[ 179 ],P[ 178 ],P[ 177 ],P[ 176 ]} ;
- A[ 1535 : 1472 ] <= {P[ 191 ],P[ 190 ],P[ 189 ],P[ 188 ],P[ 187 ],P[ 186 ],P[ 185 ],P[ 184 ]} ;
- A[ 1599 : 1536 ] <= {P[ 199 ],P[ 198 ],P[ 197 ],P[ 196 ],P[ 195 ],P[ 194 ],P[ 193 ],P[ 192 ]} ;
-
-
- A[(l<<3)] <= 1;
- A[(l<<3)+1] <= 0;
- A[(l<<3)+2] <= 0;
- A[(l<<3)+3] <= 0;
- A[(l<<3)+4] <= 0;
- A[(l<<3)+5] <= 0;
- A[(l<<3)+6] <= 0;
- A[(l<<3)+7] <= 0;
-
- A[(block_len<<3) - 1] <= 1;
- A[(block_len<<3) - 2] <= 0;
- A[(block_len<<3) - 3] <= 0;
- A[(block_len<<3) - 4] <= 0;
- A[(block_len<<3) - 5] <= 0;
- A[(block_len<<3) - 6] <= 0;
- A[(block_len<<3) - 7] <= 0;
- A[(block_len<<3) - 8] <= 0;
-
- keccak_times <= 0;
- RC_choosed <= RC[0];
- finished <= 0;
-
- end
- else begin
-
- if(keccak_times < 24)begin
- keccak_times <= keccak_times + 1;
- RC_choosed <= RC[keccak_times + 1];
-
- A<=A_middle;
- //l_pad = block_len;
- //absorbing
- //keccakf
- //squeezing
- end
- else begin
- finished<=1;
- end
- end
-
- end
- assign O[255:0] = A[255:0];
-
- endmodule
|