OpenCores
URL https://opencores.org/ocsvn/aes-128_pipelined_encryption/aes-128_pipelined_encryption/trunk

Subversion Repositories aes-128_pipelined_encryption

[/] [aes-128_pipelined_encryption/] [tags/] [R0/] [rtl/] [ShiftRows.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 Amr_Salah
/*
2
Project         : AES
3
Standard doc.   : FIPS 197
4
Module name     : ShiftRows block
5
Dependancy      :
6
Design doc.     :
7
References      :
8
Description     : this module is used to arrange data in the state array
9
                  and shifting rows of this array as declared on the standard document
10
Owner           : Amr Salah
11
*/
12
 
13
`timescale 1 ns/1 ps
14
 
15
module ShiftRows
16
#
17
(
18
parameter DATA_W = 128       //data width
19
)
20
(
21
input clk,                  //system clock
22
input reset,                //asynch active low reset
23
input valid_in,             //input valid signal   
24
input [DATA_W-1:0] data_in,  //input data
25
output reg valid_out,         //output valid signal
26
output reg [DATA_W-1:0] data_out //output data
27
)
28
;
29
 
30
wire [7:0] State [0:15];   //array of wires to form state array     
31
 
32
genvar i ;
33
generate
34
// filling state array as each row represents one byte ex: state[0] means first byte and so on
35
for(i=0;i<=15;i=i+1) begin :STATE
36
 assign State[i]= data_in[(((15-i)*8)+7):((15-i)*8)];
37
end
38
endgenerate
39
 
40
always @(posedge clk or negedge reset)
41
 
42
if(!reset)begin
43
    valid_out <= 1'b0;
44
    data_out <= 'b0;
45
end else begin
46
 
47
 if(valid_in)begin   //shifting state rows as delared in fips197 standard document
48
    data_out[(15*8)+7:(12*8)] <= {State[0],State[5],State[10],State[15]};
49
    data_out[(11*8)+7:(8*8)] <= {State[4],State[9],State[14],State[3]};
50
    data_out[(7*8)+7:(4*8)]  <= {State[8],State[13],State[2],State[7]};
51
    data_out[(3*8)+7:(0*8)]  <=  {State[12],State[1],State[6],State[11]};
52
 end
53
    valid_out <= valid_in;
54
end
55
 
56
endmodule
57
 
58
 

powered by: WebSVN 2.1.0

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