summaryrefslogtreecommitdiff
path: root/streebog_hash/streebog_rom_s_table.v
diff options
context:
space:
mode:
Diffstat (limited to 'streebog_hash/streebog_rom_s_table.v')
-rw-r--r--streebog_hash/streebog_rom_s_table.v299
1 files changed, 299 insertions, 0 deletions
diff --git a/streebog_hash/streebog_rom_s_table.v b/streebog_hash/streebog_rom_s_table.v
new file mode 100644
index 0000000..9779b0f
--- /dev/null
+++ b/streebog_hash/streebog_rom_s_table.v
@@ -0,0 +1,299 @@
+`timescale 1ns / 1ps
+
+module streebog_rom_s_table
+ (
+ clk, ena,
+ din, dout
+ );
+
+
+ //
+ // Ports
+ //
+ input wire clk;
+ input wire ena;
+ input wire [ 7: 0] din;
+ output wire [ 7: 0] dout;
+
+
+ //
+ // Output Register
+ //
+ reg [ 7: 0] dout_reg;
+ assign dout = dout_reg;
+
+
+ //
+ // S Transformation Lookup Table
+ //
+ always @(posedge clk) begin
+ //
+ if (ena) begin
+ //
+ case (din)
+ //
+ 8'h00: dout_reg <= 8'hFC;
+ 8'h01: dout_reg <= 8'hEE;
+ 8'h02: dout_reg <= 8'hDD;
+ 8'h03: dout_reg <= 8'h11;
+ 8'h04: dout_reg <= 8'hCF;
+ 8'h05: dout_reg <= 8'h6E;
+ 8'h06: dout_reg <= 8'h31;
+ 8'h07: dout_reg <= 8'h16;
+ 8'h08: dout_reg <= 8'hFB;
+ 8'h09: dout_reg <= 8'hC4;
+ 8'h0A: dout_reg <= 8'hFA;
+ 8'h0B: dout_reg <= 8'hDA;
+ 8'h0C: dout_reg <= 8'h23;
+ 8'h0D: dout_reg <= 8'hC5;
+ 8'h0E: dout_reg <= 8'h04;
+ 8'h0F: dout_reg <= 8'h4D;
+ 8'h10: dout_reg <= 8'hE9;
+ 8'h11: dout_reg <= 8'h77;
+ 8'h12: dout_reg <= 8'hF0;
+ 8'h13: dout_reg <= 8'hDB;
+ 8'h14: dout_reg <= 8'h93;
+ 8'h15: dout_reg <= 8'h2E;
+ 8'h16: dout_reg <= 8'h99;
+ 8'h17: dout_reg <= 8'hBA;
+ 8'h18: dout_reg <= 8'h17;
+ 8'h19: dout_reg <= 8'h36;
+ 8'h1A: dout_reg <= 8'hF1;
+ 8'h1B: dout_reg <= 8'hBB;
+ 8'h1C: dout_reg <= 8'h14;
+ 8'h1D: dout_reg <= 8'hCD;
+ 8'h1E: dout_reg <= 8'h5F;
+ 8'h1F: dout_reg <= 8'hC1;
+ 8'h20: dout_reg <= 8'hF9;
+ 8'h21: dout_reg <= 8'h18;
+ 8'h22: dout_reg <= 8'h65;
+ 8'h23: dout_reg <= 8'h5A;
+ 8'h24: dout_reg <= 8'hE2;
+ 8'h25: dout_reg <= 8'h5C;
+ 8'h26: dout_reg <= 8'hEF;
+ 8'h27: dout_reg <= 8'h21;
+ 8'h28: dout_reg <= 8'h81;
+ 8'h29: dout_reg <= 8'h1C;
+ 8'h2A: dout_reg <= 8'h3C;
+ 8'h2B: dout_reg <= 8'h42;
+ 8'h2C: dout_reg <= 8'h8B;
+ 8'h2D: dout_reg <= 8'h01;
+ 8'h2E: dout_reg <= 8'h8E;
+ 8'h2F: dout_reg <= 8'h4F;
+ 8'h30: dout_reg <= 8'h05;
+ 8'h31: dout_reg <= 8'h84;
+ 8'h32: dout_reg <= 8'h02;
+ 8'h33: dout_reg <= 8'hAE;
+ 8'h34: dout_reg <= 8'hE3;
+ 8'h35: dout_reg <= 8'h6A;
+ 8'h36: dout_reg <= 8'h8F;
+ 8'h37: dout_reg <= 8'hA0;
+ 8'h38: dout_reg <= 8'h06;
+ 8'h39: dout_reg <= 8'h0B;
+ 8'h3A: dout_reg <= 8'hED;
+ 8'h3B: dout_reg <= 8'h98;
+ 8'h3C: dout_reg <= 8'h7F;
+ 8'h3D: dout_reg <= 8'hD4;
+ 8'h3E: dout_reg <= 8'hD3;
+ 8'h3F: dout_reg <= 8'h1F;
+ 8'h40: dout_reg <= 8'hEB;
+ 8'h41: dout_reg <= 8'h34;
+ 8'h42: dout_reg <= 8'h2C;
+ 8'h43: dout_reg <= 8'h51;
+ 8'h44: dout_reg <= 8'hEA;
+ 8'h45: dout_reg <= 8'hC8;
+ 8'h46: dout_reg <= 8'h48;
+ 8'h47: dout_reg <= 8'hAB;
+ 8'h48: dout_reg <= 8'hF2;
+ 8'h49: dout_reg <= 8'h2A;
+ 8'h4A: dout_reg <= 8'h68;
+ 8'h4B: dout_reg <= 8'hA2;
+ 8'h4C: dout_reg <= 8'hFD;
+ 8'h4D: dout_reg <= 8'h3A;
+ 8'h4E: dout_reg <= 8'hCE;
+ 8'h4F: dout_reg <= 8'hCC;
+ 8'h50: dout_reg <= 8'hB5;
+ 8'h51: dout_reg <= 8'h70;
+ 8'h52: dout_reg <= 8'h0E;
+ 8'h53: dout_reg <= 8'h56;
+ 8'h54: dout_reg <= 8'h08;
+ 8'h55: dout_reg <= 8'h0C;
+ 8'h56: dout_reg <= 8'h76;
+ 8'h57: dout_reg <= 8'h12;
+ 8'h58: dout_reg <= 8'hBF;
+ 8'h59: dout_reg <= 8'h72;
+ 8'h5A: dout_reg <= 8'h13;
+ 8'h5B: dout_reg <= 8'h47;
+ 8'h5C: dout_reg <= 8'h9C;
+ 8'h5D: dout_reg <= 8'hB7;
+ 8'h5E: dout_reg <= 8'h5D;
+ 8'h5F: dout_reg <= 8'h87;
+ 8'h60: dout_reg <= 8'h15;
+ 8'h61: dout_reg <= 8'hA1;
+ 8'h62: dout_reg <= 8'h96;
+ 8'h63: dout_reg <= 8'h29;
+ 8'h64: dout_reg <= 8'h10;
+ 8'h65: dout_reg <= 8'h7B;
+ 8'h66: dout_reg <= 8'h9A;
+ 8'h67: dout_reg <= 8'hC7;
+ 8'h68: dout_reg <= 8'hF3;
+ 8'h69: dout_reg <= 8'h91;
+ 8'h6A: dout_reg <= 8'h78;
+ 8'h6B: dout_reg <= 8'h6F;
+ 8'h6C: dout_reg <= 8'h9D;
+ 8'h6D: dout_reg <= 8'h9E;
+ 8'h6E: dout_reg <= 8'hB2;
+ 8'h6F: dout_reg <= 8'hB1;
+ 8'h70: dout_reg <= 8'h32;
+ 8'h71: dout_reg <= 8'h75;
+ 8'h72: dout_reg <= 8'h19;
+ 8'h73: dout_reg <= 8'h3D;
+ 8'h74: dout_reg <= 8'hFF;
+ 8'h75: dout_reg <= 8'h35;
+ 8'h76: dout_reg <= 8'h8A;
+ 8'h77: dout_reg <= 8'h7E;
+ 8'h78: dout_reg <= 8'h6D;
+ 8'h79: dout_reg <= 8'h54;
+ 8'h7A: dout_reg <= 8'hC6;
+ 8'h7B: dout_reg <= 8'h80;
+ 8'h7C: dout_reg <= 8'hC3;
+ 8'h7D: dout_reg <= 8'hBD;
+ 8'h7E: dout_reg <= 8'h0D;
+ 8'h7F: dout_reg <= 8'h57;
+ 8'h80: dout_reg <= 8'hDF;
+ 8'h81: dout_reg <= 8'hF5;
+ 8'h82: dout_reg <= 8'h24;
+ 8'h83: dout_reg <= 8'hA9;
+ 8'h84: dout_reg <= 8'h3E;
+ 8'h85: dout_reg <= 8'hA8;
+ 8'h86: dout_reg <= 8'h43;
+ 8'h87: dout_reg <= 8'hC9;
+ 8'h88: dout_reg <= 8'hD7;
+ 8'h89: dout_reg <= 8'h79;
+ 8'h8A: dout_reg <= 8'hD6;
+ 8'h8B: dout_reg <= 8'hF6;
+ 8'h8C: dout_reg <= 8'h7C;
+ 8'h8D: dout_reg <= 8'h22;
+ 8'h8E: dout_reg <= 8'hB9;
+ 8'h8F: dout_reg <= 8'h03;
+ 8'h90: dout_reg <= 8'hE0;
+ 8'h91: dout_reg <= 8'h0F;
+ 8'h92: dout_reg <= 8'hEC;
+ 8'h93: dout_reg <= 8'hDE;
+ 8'h94: dout_reg <= 8'h7A;
+ 8'h95: dout_reg <= 8'h94;
+ 8'h96: dout_reg <= 8'hB0;
+ 8'h97: dout_reg <= 8'hBC;
+ 8'h98: dout_reg <= 8'hDC;
+ 8'h99: dout_reg <= 8'hE8;
+ 8'h9A: dout_reg <= 8'h28;
+ 8'h9B: dout_reg <= 8'h50;
+ 8'h9C: dout_reg <= 8'h4E;
+ 8'h9D: dout_reg <= 8'h33;
+ 8'h9E: dout_reg <= 8'h0A;
+ 8'h9F: dout_reg <= 8'h4A;
+ 8'hA0: dout_reg <= 8'hA7;
+ 8'hA1: dout_reg <= 8'h97;
+ 8'hA2: dout_reg <= 8'h60;
+ 8'hA3: dout_reg <= 8'h73;
+ 8'hA4: dout_reg <= 8'h1E;
+ 8'hA5: dout_reg <= 8'h00;
+ 8'hA6: dout_reg <= 8'h62;
+ 8'hA7: dout_reg <= 8'h44;
+ 8'hA8: dout_reg <= 8'h1A;
+ 8'hA9: dout_reg <= 8'hB8;
+ 8'hAA: dout_reg <= 8'h38;
+ 8'hAB: dout_reg <= 8'h82;
+ 8'hAC: dout_reg <= 8'h64;
+ 8'hAD: dout_reg <= 8'h9F;
+ 8'hAE: dout_reg <= 8'h26;
+ 8'hAF: dout_reg <= 8'h41;
+ 8'hB0: dout_reg <= 8'hAD;
+ 8'hB1: dout_reg <= 8'h45;
+ 8'hB2: dout_reg <= 8'h46;
+ 8'hB3: dout_reg <= 8'h92;
+ 8'hB4: dout_reg <= 8'h27;
+ 8'hB5: dout_reg <= 8'h5E;
+ 8'hB6: dout_reg <= 8'h55;
+ 8'hB7: dout_reg <= 8'h2F;
+ 8'hB8: dout_reg <= 8'h8C;
+ 8'hB9: dout_reg <= 8'hA3;
+ 8'hBA: dout_reg <= 8'hA5;
+ 8'hBB: dout_reg <= 8'h7D;
+ 8'hBC: dout_reg <= 8'h69;
+ 8'hBD: dout_reg <= 8'hD5;
+ 8'hBE: dout_reg <= 8'h95;
+ 8'hBF: dout_reg <= 8'h3B;
+ 8'hC0: dout_reg <= 8'h07;
+ 8'hC1: dout_reg <= 8'h58;
+ 8'hC2: dout_reg <= 8'hB3;
+ 8'hC3: dout_reg <= 8'h40;
+ 8'hC4: dout_reg <= 8'h86;
+ 8'hC5: dout_reg <= 8'hAC;
+ 8'hC6: dout_reg <= 8'h1D;
+ 8'hC7: dout_reg <= 8'hF7;
+ 8'hC8: dout_reg <= 8'h30;
+ 8'hC9: dout_reg <= 8'h37;
+ 8'hCA: dout_reg <= 8'h6B;
+ 8'hCB: dout_reg <= 8'hE4;
+ 8'hCC: dout_reg <= 8'h88;
+ 8'hCD: dout_reg <= 8'hD9;
+ 8'hCE: dout_reg <= 8'hE7;
+ 8'hCF: dout_reg <= 8'h89;
+ 8'hD0: dout_reg <= 8'hE1;
+ 8'hD1: dout_reg <= 8'h1B;
+ 8'hD2: dout_reg <= 8'h83;
+ 8'hD3: dout_reg <= 8'h49;
+ 8'hD4: dout_reg <= 8'h4C;
+ 8'hD5: dout_reg <= 8'h3F;
+ 8'hD6: dout_reg <= 8'hF8;
+ 8'hD7: dout_reg <= 8'hFE;
+ 8'hD8: dout_reg <= 8'h8D;
+ 8'hD9: dout_reg <= 8'h53;
+ 8'hDA: dout_reg <= 8'hAA;
+ 8'hDB: dout_reg <= 8'h90;
+ 8'hDC: dout_reg <= 8'hCA;
+ 8'hDD: dout_reg <= 8'hD8;
+ 8'hDE: dout_reg <= 8'h85;
+ 8'hDF: dout_reg <= 8'h61;
+ 8'hE0: dout_reg <= 8'h20;
+ 8'hE1: dout_reg <= 8'h71;
+ 8'hE2: dout_reg <= 8'h67;
+ 8'hE3: dout_reg <= 8'hA4;
+ 8'hE4: dout_reg <= 8'h2D;
+ 8'hE5: dout_reg <= 8'h2B;
+ 8'hE6: dout_reg <= 8'h09;
+ 8'hE7: dout_reg <= 8'h5B;
+ 8'hE8: dout_reg <= 8'hCB;
+ 8'hE9: dout_reg <= 8'h9B;
+ 8'hEA: dout_reg <= 8'h25;
+ 8'hEB: dout_reg <= 8'hD0;
+ 8'hEC: dout_reg <= 8'hBE;
+ 8'hED: dout_reg <= 8'hE5;
+ 8'hEE: dout_reg <= 8'h6C;
+ 8'hEF: dout_reg <= 8'h52;
+ 8'hF0: dout_reg <= 8'h59;
+ 8'hF1: dout_reg <= 8'hA6;
+ 8'hF2: dout_reg <= 8'h74;
+ 8'hF3: dout_reg <= 8'hD2;
+ 8'hF4: dout_reg <= 8'hE6;
+ 8'hF5: dout_reg <= 8'hF4;
+ 8'hF6: dout_reg <= 8'hB4;
+ 8'hF7: dout_reg <= 8'hC0;
+ 8'hF8: dout_reg <= 8'hD1;
+ 8'hF9: dout_reg <= 8'h66;
+ 8'hFA: dout_reg <= 8'hAF;
+ 8'hFB: dout_reg <= 8'hC2;
+ 8'hFC: dout_reg <= 8'h39;
+ 8'hFD: dout_reg <= 8'h4B;
+ 8'hFE: dout_reg <= 8'h63;
+ 8'hFF: dout_reg <= 8'hB6;
+ //
+ endcase // case (din)
+ //
+ end // if (ena)
+ //
+ end // always @(posedge clk)
+
+
+endmodule