summaryrefslogtreecommitdiff
path: root/streebog_hash/streebog_rom_c_array.v
diff options
context:
space:
mode:
Diffstat (limited to 'streebog_hash/streebog_rom_c_array.v')
-rw-r--r--streebog_hash/streebog_rom_c_array.v58
1 files changed, 58 insertions, 0 deletions
diff --git a/streebog_hash/streebog_rom_c_array.v b/streebog_hash/streebog_rom_c_array.v
new file mode 100644
index 0000000..e31b5c0
--- /dev/null
+++ b/streebog_hash/streebog_rom_c_array.v
@@ -0,0 +1,58 @@
+`timescale 1ns / 1ps
+
+module streebog_rom_c_array
+ (
+ clk, ena,
+ din, dout
+ );
+
+
+ //
+ // Ports
+ //
+ input wire clk;
+ input wire ena;
+ input wire [ 3:0] din;
+ output wire [511:0] dout;
+
+
+ //
+ // Output Register
+ //
+ reg [511:0] dout_reg;
+ assign dout = dout_reg;
+
+
+ //
+ // C Round Constants Array
+ //
+ always @(posedge clk) begin
+ //
+ if (ena) begin
+ //
+ case (din)
+ //
+ 4'h0: dout_reg <= 512'hB1085BDA1ECADAE9EBCB2F81C0657C1F2F6A76432E45D016714EB88D7585C4FC4B7CE09192676901A2422A08A460D31505767436CC744D23DD806559F2A64507;
+ 4'h1: dout_reg <= 512'h6FA3B58AA99D2F1A4FE39D460F70B5D7F3FEEA720A232B9861D55E0F16B501319AB5176B12D699585CB561C2DB0AA7CA55DDA21BD7CBCD56E679047021B19BB7;
+ 4'h2: dout_reg <= 512'hF574DCAC2BCE2FC70A39FC286A3D843506F15E5F529C1F8BF2EA7514B1297B7BD3E20FE490359EB1C1C93A376062DB09C2B6F443867ADB31991E96F50ABA0AB2;
+ 4'h3: dout_reg <= 512'hEF1FDFB3E81566D2F948E1A05D71E4DD488E857E335C3C7D9D721CAD685E353FA9D72C82ED03D675D8B71333935203BE3453EAA193E837F1220CBEBC84E3D12E;
+ //
+ 4'h4: dout_reg <= 512'h4BEA6BACAD4747999A3F410C6CA923637F151C1F1686104A359E35D7800FFFBDBFCD1747253AF5A3DFFF00B723271A167A56A27EA9EA63F5601758FD7C6CFE57;
+ 4'h5: dout_reg <= 512'hAE4FAEAE1D3AD3D96FA4C33B7A3039C02D66C4F95142A46C187F9AB49AF08EC6CFFAA6B71C9AB7B40AF21F66C2BEC6B6BF71C57236904F35FA68407A46647D6E;
+ 4'h6: dout_reg <= 512'hF4C70E16EEAAC5EC51AC86FEBF240954399EC6C7E6BF87C9D3473E33197A93C90992ABC52D822C3706476983284A05043517454CA23C4AF38886564D3A14D493;
+ 4'h7: dout_reg <= 512'h9B1F5B424D93C9A703E7AA020C6E41414EB7F8719C36DE1E89B4443B4DDBC49AF4892BCB929B069069D18D2BD1A5C42F36ACC2355951A8D9A47F0DD4BF02E71E;
+ //
+ 4'h8: dout_reg <= 512'h378F5A541631229B944C9AD8EC165FDE3A7D3A1B258942243CD955B7E00D0984800A440BDBB2CEB17B2B8A9AA6079C540E38DC92CB1F2A607261445183235ADB;
+ 4'h9: dout_reg <= 512'hABBEDEA680056F52382AE548B2E4F3F38941E71CFF8A78DB1FFFE18A1B3361039FE76702AF69334B7A1E6C303B7652F43698FAD1153BB6C374B4C7FB98459CED;
+ 4'hA: dout_reg <= 512'h7BCD9ED0EFC889FB3002C6CD635AFE94D8FA6BBBEBAB076120018021148466798A1D71EFEA48B9CAEFBACD1D7D476E98DEA2594AC06FD85D6BCAA4CD81F32D1B;
+ 4'hB: dout_reg <= 512'h378EE767F11631BAD21380B00449B17ACDA43C32BCDF1D77F82012D430219F9B5D80EF9D1891CC86E71DA4AA88E12852FAF417D5D9B21B9948BC924AF11BD720;
+ //
+ default: dout_reg <= {512{1'bX}};
+ //
+ endcase // case (din)
+ //
+ end // if (ena)
+ //
+ end // always @(posedge clk)
+
+endmodule