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

Subversion Repositories md5

[/] [md5/] [trunk/] [ah_regs.v] - Diff between revs 2 and 4

Show entire file | Details | Blame | View Log

Rev 2 Rev 4
Line 1... Line 1...
 
/****************************************************************************
 
Register file
 
****************************************************************************/
 
 
 
 
 
module ah_regs (
 
 
 
               //Inputs 
 
          rst_n,
 
               clk,
 
               DataVld,
 
               DataIn,
 
               stateVld,
 
               stateAIn,
 
               stateBIn,
 
               stateCIn,
 
               stateDIn,
 
          StateAComb,
 
          StateBComb,
 
          StateCComb,
 
          StateDComb,
 
          StateEComb,
 
 
 
          //Outputs
 
          StateAReg,
 
          StateBReg,
 
          StateCReg,
 
          StateDReg,
 
               A_Reg,
 
               B_Reg,
 
               C_Reg,
 
               D_Reg,
 
               BlockOut
 
               );
 
 
 
`include "ah_params.vh"
 
 
 
input                                rst_n;
 
input                                clk;
 
input                                DataVld;
 
input  [DATA_WIDTH - 1:0]            DataIn;
 
input                                stateVld;
 
input  [STATE_DWIDTH - 1:0]          stateAIn;
 
input  [STATE_DWIDTH - 1:0]          stateBIn;
 
input  [STATE_DWIDTH - 1:0]          stateCIn;
 
input  [STATE_DWIDTH - 1:0]          stateDIn;
 
input  [STATE_DWIDTH - 1:0]          StateAComb;
 
input  [STATE_DWIDTH - 1:0]          StateBComb;
 
input  [STATE_DWIDTH - 1:0]          StateCComb;
 
input  [STATE_DWIDTH - 1:0]          StateDComb;
 
input  [STATE_DWIDTH - 1:0]          StateEComb;
 
 
 
 
 
output  [STATE_DWIDTH - 1:0]          StateAReg;
 
output  [STATE_DWIDTH - 1:0]          StateBReg;
 
output  [STATE_DWIDTH - 1:0]          StateCReg;
 
output  [STATE_DWIDTH - 1:0]          StateDReg;
 
output  [STATE_DWIDTH - 1:0]          A_Reg;
 
output  [STATE_DWIDTH - 1:0]          B_Reg;
 
output  [STATE_DWIDTH - 1:0]          C_Reg;
 
output  [STATE_DWIDTH - 1:0]          D_Reg;
 
output  [BLOCK_SIZE-1:0]              BlockOut;
 
 
 
reg  [STATE_DWIDTH - 1:0]          StateAReg;
 
reg  [STATE_DWIDTH - 1:0]          StateBReg;
 
reg  [STATE_DWIDTH - 1:0]          StateCReg;
 
reg  [STATE_DWIDTH - 1:0]          StateDReg;
 
reg  [STATE_DWIDTH - 1:0]          A_Reg;
 
reg  [STATE_DWIDTH - 1:0]          B_Reg;
 
reg  [STATE_DWIDTH - 1:0]          C_Reg;
 
reg  [STATE_DWIDTH - 1:0]          D_Reg;
 
reg  [DATA_WIDTH - 1:0]            WtData [15:0];
 
 
 
assign BlockOut = {WtData[15], WtData[14], WtData[13], WtData[12],
 
              WtData[11], WtData[10], WtData[9],  WtData[8],
 
         WtData[7],  WtData[6],  WtData[5],  WtData[4],
 
         WtData[3],  WtData[2],  WtData[1],  WtData[0]};
 
 
 
 
 
always @(posedge clk)
 
  begin
 
   if (DataVld) begin
 
     WtData[0] <= DataIn;
 
     WtData[1] <= WtData[0];
 
     WtData[2] <= WtData[1];
 
     WtData[3] <= WtData[2];
 
     WtData[4] <= WtData[3];
 
     WtData[5] <= WtData[4];
 
     WtData[6] <= WtData[5];
 
     WtData[7] <= WtData[6];
 
     WtData[8] <= WtData[7];
 
     WtData[9] <= WtData[8];
 
     WtData[10] <= WtData[9];
 
     WtData[11] <= WtData[10];
 
     WtData[12] <= WtData[11];
 
     WtData[13] <= WtData[12];
 
     WtData[14] <= WtData[13];
 
     WtData[15] <= WtData[14];
 
   end
 
  end
 
 
 
always @(posedge clk or  negedge rst_n)
 
  begin
 
    if (!rst_n) begin
 
      StateAReg <= 32'b0;
 
      StateBReg <= 32'b0;
 
      StateCReg <= 32'b0;
 
      StateDReg <= 32'b0;
 
    end
 
    else begin
 
      if (stateVld) begin
 
        StateAReg <= stateAIn;
 
        StateBReg <= stateBIn;
 
        StateCReg <= stateCIn;
 
        StateDReg <= stateDIn;
 
      end
 
      else begin
 
        StateAReg <= StateAComb;
 
        StateBReg <= StateBComb;
 
        StateCReg <= StateCComb;
 
        StateDReg <= StateDComb;
 
      end
 
    end
 
  end
 
 
 
always @(posedge clk or  negedge rst_n)
 
  begin
 
    if (!rst_n) begin
 
      A_Reg <= 32'b0;
 
      B_Reg <= 32'b0;
 
      C_Reg <= 32'b0;
 
      D_Reg <= 32'b0;
 
    end
 
    else begin
 
      if (stateVld) begin
 
        A_Reg <= stateAIn;
 
        B_Reg <= stateBIn;
 
        C_Reg <= stateCIn;
 
        D_Reg <= stateDIn;
 
      end
 
    end
 
  end
 
endmodule
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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