📄 md5_comb.v
字号:
/********************************************************************************
* Module Name : md5_comb
* Description : MD5 computation combologic
*
*
* *******************************************************************************/
module md5_comb (
//Inputs
RoundNum,
StateAReg,
StateBReg,
StateCReg,
StateDReg,
DataVld,
DataIn,
BlockIn,
AddRes1,
AddRes2,
//Outputs
Md5FuncValue,
TValue,
XValue,
StateAComb,
StateBComb,
StateCComb,
StateDComb,
AddendState1,
AddendState2,
ShiftedAddend
);
`include "ah_params.vh"
`include "md5_params.vh"
`include "md5_func.vh"
input [5:0] RoundNum;
input [STATE_DWIDTH - 1:0] StateAReg;
input [STATE_DWIDTH - 1:0] StateBReg;
input [STATE_DWIDTH - 1:0] StateCReg;
input [STATE_DWIDTH - 1:0] StateDReg;
input [BLOCK_SIZE - 1:0] BlockIn;
input [DATA_WIDTH - 1:0] DataIn;
input DataVld;
input [STATE_DWIDTH - 1:0] AddRes1;
input [STATE_DWIDTH - 1:0] AddRes2;
output [STATE_DWIDTH - 1:0] Md5FuncValue;
output [STATE_DWIDTH - 1:0] TValue;
output [STATE_DWIDTH - 1:0] XValue;
output [STATE_DWIDTH - 1:0] StateAComb;
output [STATE_DWIDTH - 1:0] StateBComb;
output [STATE_DWIDTH - 1:0] StateCComb;
output [STATE_DWIDTH - 1:0] StateDComb;
output [STATE_DWIDTH - 1:0] AddendState1;
output [STATE_DWIDTH - 1:0] AddendState2;
output [STATE_DWIDTH - 1:0] ShiftedAddend;
reg [STATE_DWIDTH - 1:0] Md5FuncValue;
reg [STATE_DWIDTH - 1:0] TValue;
reg [STATE_DWIDTH - 1:0] XValue;
reg [STATE_DWIDTH - 1:0] StateAComb;
reg [STATE_DWIDTH - 1:0] StateBComb;
reg [STATE_DWIDTH - 1:0] StateCComb;
reg [STATE_DWIDTH - 1:0] StateDComb;
reg [STATE_DWIDTH - 1:0] AddendState1;
reg [STATE_DWIDTH - 1:0] AddendState2;
reg [STATE_DWIDTH - 1:0] ShiftedAddend;
always @(RoundNum or StateAReg or StateBReg or StateCReg or
StateDReg or BlockIn or DataVld)
begin
Md5FuncValue = 0;
XValue = 0;
TValue = 0;
if (DataVld) begin
case(RoundNum)
0 : begin
Md5FuncValue = F(StateBReg, StateCReg, StateDReg);
XValue = byte_flip(DataIn);
TValue = T01;
end
1 : begin
Md5FuncValue = F(StateAReg, StateBReg, StateCReg);
XValue = byte_flip(DataIn);
TValue = T02;
end
2 : begin
Md5FuncValue = F(StateDReg, StateAReg, StateBReg);
XValue = byte_flip(DataIn);
TValue = T03;
end
3 : begin
Md5FuncValue = F(StateCReg, StateDReg, StateAReg);
XValue = byte_flip(DataIn);
TValue = T04;
end
4 : begin
Md5FuncValue = F(StateBReg, StateCReg, StateDReg);
XValue = byte_flip(DataIn);
TValue = T05;
end
5 : begin
Md5FuncValue = F(StateAReg, StateBReg, StateCReg);
XValue = byte_flip(DataIn);
TValue = T06;
end
6 : begin
Md5FuncValue = F(StateDReg, StateAReg, StateBReg);
XValue = byte_flip(DataIn);
TValue = T07;
end
7 : begin
Md5FuncValue = F(StateCReg, StateDReg, StateAReg);
XValue = byte_flip(DataIn);
TValue = T08;
end
8 : begin
Md5FuncValue = F(StateBReg, StateCReg, StateDReg);
XValue = byte_flip(DataIn);
TValue = T09;
end
9 : begin
Md5FuncValue = F(StateAReg, StateBReg, StateCReg);
XValue = byte_flip(DataIn);
TValue = T10;
end
10 : begin
Md5FuncValue = F(StateDReg, StateAReg, StateBReg);
XValue = byte_flip(DataIn);
TValue = T11;
end
11 : begin
Md5FuncValue = F(StateCReg, StateDReg, StateAReg);
XValue = byte_flip(DataIn);
TValue = T12;
end
12 : begin
Md5FuncValue = F(StateBReg, StateCReg, StateDReg);
XValue = byte_flip(DataIn);
TValue = T13;
end
13 : begin
Md5FuncValue = F(StateAReg, StateBReg, StateCReg);
XValue = byte_flip(DataIn);
TValue = T14;
end
14 : begin
Md5FuncValue = F(StateDReg, StateAReg, StateBReg);
XValue = byte_flip(DataIn);
TValue = T15;
end
15 : begin
Md5FuncValue = F(StateCReg, StateDReg, StateAReg);
XValue = byte_flip(DataIn);
TValue = T16;
end
16 : begin
Md5FuncValue = G(StateBReg, StateCReg, StateDReg);
XValue = FX(BlockIn, 1);
TValue = T17;
end
17 : begin
Md5FuncValue = G(StateAReg, StateBReg, StateCReg);
XValue = FX(BlockIn, 6);
TValue = T18;
end
18 : begin
Md5FuncValue = G(StateDReg, StateAReg, StateBReg);
XValue = FX(BlockIn, 11);
TValue = T19;
end
19 : begin
Md5FuncValue = G(StateCReg, StateDReg, StateAReg);
XValue = FX(BlockIn, 0);
TValue = T20;
end
20 : begin
Md5FuncValue = G(StateBReg, StateCReg, StateDReg);
XValue = FX(BlockIn, 5);
TValue = T21;
end
21 : begin
Md5FuncValue = G(StateAReg, StateBReg, StateCReg);
XValue = FX(BlockIn, 10);
TValue = T22;
end
22 : begin
Md5FuncValue = G(StateDReg, StateAReg, StateBReg);
XValue = FX(BlockIn, 15);
TValue = T23;
end
23 : begin
Md5FuncValue = G(StateCReg, StateDReg, StateAReg);
XValue = FX(BlockIn, 4);
TValue = T24;
end
24 : begin
Md5FuncValue = G(StateBReg, StateCReg, StateDReg);
XValue = FX(BlockIn, 9);
TValue = T25;
end
25 : begin
Md5FuncValue = G(StateAReg, StateBReg, StateCReg);
XValue = FX(BlockIn, 14);
TValue = T26;
end
26 : begin
Md5FuncValue = G(StateDReg, StateAReg, StateBReg);
XValue = FX(BlockIn, 3);
TValue = T27;
end
27 : begin
Md5FuncValue = G(StateCReg, StateDReg, StateAReg);
XValue = FX(BlockIn, 8);
TValue = T28;
end
28 : begin
Md5FuncValue = G(StateBReg, StateCReg, StateDReg);
XValue = FX(BlockIn, 13);
TValue = T29;
end
29 : begin
Md5FuncValue = G(StateAReg, StateBReg, StateCReg);
XValue = FX(BlockIn, 2);
TValue = T30;
end
30 : begin
Md5FuncValue = G(StateDReg, StateAReg, StateBReg);
XValue = FX(BlockIn, 7);
TValue = T31;
end
31 : begin
Md5FuncValue = G(StateCReg, StateDReg, StateAReg);
XValue = FX(BlockIn, 12);
TValue = T32;
end
32 : begin
Md5FuncValue = H(StateBReg, StateCReg, StateDReg);
XValue = FX(BlockIn, 5);
TValue = T33;
end
33 : begin
Md5FuncValue = H(StateAReg, StateBReg, StateCReg);
XValue = FX(BlockIn, 8);
TValue = T34;
end
34 : begin
Md5FuncValue = H(StateDReg, StateAReg, StateBReg);
XValue = FX(BlockIn, 11);
TValue = T35;
end
35 : begin
Md5FuncValue = H(StateCReg, StateDReg, StateAReg);
XValue = FX(BlockIn, 14);
TValue = T36;
end
36 : begin
Md5FuncValue = H(StateBReg, StateCReg, StateDReg);
XValue = FX(BlockIn, 1);
TValue = T37;
end
37 : begin
Md5FuncValue = H(StateAReg, StateBReg, StateCReg);
XValue = FX(BlockIn, 4);
TValue = T38;
end
38 : begin
Md5FuncValue = H(StateDReg, StateAReg, StateBReg);
XValue = FX(BlockIn, 7);
TValue = T39;
end
39 : begin
Md5FuncValue = H(StateCReg, StateDReg, StateAReg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -