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

Subversion Repositories md5

[/] [md5/] [trunk/] [hash_core.v] - Blame information for rev 6

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

Line No. Rev Author Line
1 2 verilogcor
/********************************************************************************
2
* Module Name : hash_core
3
* Description : MD5 computation
4
*               Outputs Message Digest
5
*
6
*
7
********************************************************************************
8
*          Esencia Technology Proprietary and Confidential
9
*          All rights reserved (c) 2004 by Esencia Technolgy
10
********************************************************************************/
11
module hash_core (
12
 
13
               //Inputs
14
                 clk,
15
                 rst_n,
16
                 stateVld,
17
                 stateAIn,
18
                 stateBIn,
19
                 stateCIn,
20
                 stateDIn,
21
                 dataIn,
22
                 dataVld,
23
                 RoundNum,
24
 
25
                //Outputs
26
                 msgDgstVld,
27
                 msgDigest
28
         );
29
 
30
`include "md5_params.vh"
31
`include "ah_params.vh"
32
 
33
input                                clk;
34
input                                rst_n;
35
input                                dataVld;
36
input  [DATA_WIDTH - 1:0]            dataIn;
37
input                                stateVld;
38
input  [STATE_DWIDTH - 1:0]          stateAIn;
39
input  [STATE_DWIDTH - 1:0]          stateBIn;
40
input  [STATE_DWIDTH - 1:0]          stateCIn;
41
input  [STATE_DWIDTH - 1:0]          stateDIn;
42
 
43
output                               msgDgstVld;
44
output [DATA_WIDTH -1:0]             msgDigest;
45
output [5:0]                         RoundNum;
46
 
47
wire  [STATE_DWIDTH - 1:0]          StateAReg;
48
wire  [STATE_DWIDTH - 1:0]          StateBReg;
49
wire  [STATE_DWIDTH - 1:0]          StateCReg;
50
wire  [STATE_DWIDTH - 1:0]          StateDReg;
51
wire  [STATE_DWIDTH - 1:0]          A_Reg;
52
wire  [STATE_DWIDTH - 1:0]          B_Reg;
53
wire  [STATE_DWIDTH - 1:0]          C_Reg;
54
wire  [STATE_DWIDTH - 1:0]          D_Reg;
55
wire  [STATE_DWIDTH - 1:0]          Md5StateAComb;
56
wire  [STATE_DWIDTH - 1:0]          Md5StateBComb;
57
wire  [STATE_DWIDTH - 1:0]          Md5StateCComb;
58
wire  [STATE_DWIDTH - 1:0]          Md5StateDComb;
59
wire  [STATE_DWIDTH - 1:0]          MuxedStateAComb;
60
wire  [STATE_DWIDTH - 1:0]          MuxedStateBComb;
61
wire  [STATE_DWIDTH - 1:0]          MuxedStateCComb;
62
wire  [STATE_DWIDTH - 1:0]          MuxedStateDComb;
63
wire  [STATE_DWIDTH - 1:0]          MuxedStateEComb;
64
wire  [STATE_DWIDTH - 1:0]          ResStateAReg;
65
wire  [STATE_DWIDTH - 1:0]          ResStateBReg;
66
wire  [STATE_DWIDTH - 1:0]          ResStateCReg;
67
wire  [STATE_DWIDTH - 1:0]          ResStateDReg;
68
wire  [BLOCK_SIZE-1:0]              BlockData;
69
wire  [DATA_WIDTH - 1 :0]           WtDataIntmdt;
70
wire  [STATE_DWIDTH - 1:0]          AddResFinal1;
71
wire  [STATE_DWIDTH - 1:0]          AddResFinal2;
72
wire  [STATE_DWIDTH - 1:0]          AddResFinal3;
73
wire                                msgDgstVld;
74
wire [DATA_WIDTH -1:0]              msgDigest;
75
wire                                Md5MsgDgstVld;
76
wire [MD5_MSG_DIGEST -1:0]          Md5MsgDigest;
77
wire [DATA_WIDTH -1 :0]             Md5DataIn;
78
wire                                MuxedDataVld;
79
wire [DATA_WIDTH -1 :0]             MuxedDataIn;
80
wire [STATE_DWIDTH - 1:0]           Md5Addend0A;
81
wire [STATE_DWIDTH - 1:0]           Md5Addend0B;
82
wire [STATE_DWIDTH - 1:0]           Md5Addend1A;
83
wire [STATE_DWIDTH - 1:0]           Md5Addend1B;
84
wire [STATE_DWIDTH - 1:0]           Md5Addend3A;
85
wire [STATE_DWIDTH - 1:0]           Md5Addend3B;
86
wire [STATE_DWIDTH - 1:0]           MuxedAddend0A;
87
wire [STATE_DWIDTH - 1:0]           MuxedAddend0B;
88
wire [STATE_DWIDTH - 1:0]           MuxedAddend1A;
89
wire [STATE_DWIDTH - 1:0]           MuxedAddend1B;
90
wire [STATE_DWIDTH - 1:0]           MuxedAddend2A;
91
wire [STATE_DWIDTH - 1:0]           MuxedAddend2B;
92
wire [5:0]                          RoundNum;
93
 
94
md5_top u_md5_top_0 (
95
 
96
                 .clk(clk),
97
                 .rst_n(rst_n),
98
                 .dataIn(dataIn),
99
                 .dataVld(dataVld),
100
 
101
                 .ResStateAReg(ResStateAReg),
102
                 .ResStateBReg(ResStateBReg),
103
                 .ResStateCReg(ResStateCReg),
104
                 .ResStateDReg(ResStateDReg),
105
                 .AddRes1(AddResFinal1),
106
                 .AddRes2(AddResFinal3),
107
 
108
                 .StateAReg(StateAReg),
109
                 .StateBReg(StateBReg),
110
                 .StateCReg(StateCReg),
111
                 .StateDReg(StateDReg),
112
                 .BlockData(BlockData),
113
 
114
                 .Md5FuncValue(Md5Addend0A),
115
                 .TValue(Md5Addend1B),
116
                 .XValue(Md5Addend1A),
117
                 .AddendState1(Md5Addend0B),
118
                 .AddendState2(Md5Addend3B),
119
                 .ShiftedAddend(Md5Addend3A),
120
                 .RoundNum(RoundNum),
121
 
122
                 .Md5Data(Md5DataIn),
123
                 .StateAComb(Md5StateAComb),
124
                 .StateBComb(Md5StateBComb),
125
                 .StateCComb(Md5StateCComb),
126
                 .StateDComb(Md5StateDComb),
127
 
128
                 .msgDgstVld(Md5MsgDgstVld),
129
                 .msgDigest(msgDigest)
130
 
131
);
132
 
133
adders u_adders_0   (
134
                       //Inputs
135
                       .Addend0A(MuxedAddend0A),
136
                       .Addend0B(MuxedAddend0B),
137
                       .Addend1A(MuxedAddend1A),
138
                       .Addend1B(MuxedAddend1B),
139
                       .Addend2A(32'b0),
140
                       .Addend3A(Md5Addend3A),
141
                       .Addend3B(Md5Addend3B),
142
                       .StateAReg(StateAReg),
143
                       .StateBReg(StateBReg),
144
                       .StateCReg(StateCReg),
145
                       .StateDReg(StateDReg),
146
                       .A_Reg(A_Reg),
147
                       .B_Reg(B_Reg),
148
                       .C_Reg(C_Reg),
149
                       .D_Reg(D_Reg),
150
 
151
                       //Outputs
152
                       .ResStateAReg(ResStateAReg),
153
                       .ResStateBReg(ResStateBReg),
154
                       .ResStateCReg(ResStateCReg),
155
                       .ResStateDReg(ResStateDReg),
156
                       .AddResFinal1(AddResFinal1),
157
                       .AddResFinal2(AddResFinal2),
158
                       .AddResFinal3(AddResFinal3)
159
                    );
160
 
161
 
162
ah_regs u_regs_0 (
163
                      //Inputs
164
                      .rst_n(rst_n),
165
                      .clk(clk),
166
                      .DataVld(MuxedDataVld),
167
                      .DataIn(MuxedDataIn),
168
                      .stateVld(stateVld),
169
                      .stateAIn(stateAIn),
170
                      .stateBIn(stateBIn),
171
                      .stateCIn(stateCIn),
172
                      .stateDIn(stateDIn),
173
                      .StateAComb(MuxedStateAComb),
174
                      .StateBComb(MuxedStateBComb),
175
                      .StateCComb(MuxedStateCComb),
176
                      .StateDComb(MuxedStateDComb),
177
                      .StateEComb(MuxedStateEComb),
178
 
179
              //Outputs
180
                      .StateAReg(StateAReg),
181
                      .StateBReg(StateBReg),
182
                      .StateCReg(StateCReg),
183
                      .StateDReg(StateDReg),
184
                      .A_Reg(A_Reg),
185
                      .B_Reg(B_Reg),
186
                      .C_Reg(C_Reg),
187
                      .D_Reg(D_Reg),
188
                      .BlockOut(BlockData)
189
                    );
190
 
191
hash_misc u_hash_misc_0 (
192
 
193
         //Inputs
194
                 .Md5MsgDgstVld(Md5MsgDgstVld),
195
                 .Md5DataIn(Md5DataIn),
196
                 .Md5DataVld(dataVld),
197
                 .Md5StateAComb(Md5StateAComb),
198
                 .Md5StateBComb(Md5StateBComb),
199
                 .Md5StateCComb(Md5StateCComb),
200
                 .Md5StateDComb(Md5StateDComb),
201
                 .Md5Addend0A(Md5Addend0A),
202
                 .Md5Addend0B(Md5Addend0B),
203
                 .Md5Addend1A(Md5Addend1A),
204
                 .Md5Addend1B(Md5Addend1B),
205
 
206
                 //Output
207
                 .msgDgstVld(msgDgstVld),
208
                 .MuxedDataIn(MuxedDataIn),
209
                 .MuxedDataVld(MuxedDataVld),
210
                 .MuxedStateAComb(MuxedStateAComb),
211
                 .MuxedStateBComb(MuxedStateBComb),
212
                 .MuxedStateCComb(MuxedStateCComb),
213
                 .MuxedStateDComb(MuxedStateDComb),
214
                 .MuxedStateEComb(MuxedStateEComb),
215
                 .MuxedAddend0A(MuxedAddend0A),
216
                 .MuxedAddend0B(MuxedAddend0B),
217
                 .MuxedAddend1A(MuxedAddend1A),
218
                 .MuxedAddend1B(MuxedAddend1B)
219
 
220
         );
221
 
222
endmodule

powered by: WebSVN 2.1.0

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