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/] [SBox.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    : SBox block
5
Dependancy     :
6
Design doc.    :
7
References     :
8
Description    : Sbox is a lookup/substitution table to
9
                 substitute the input byte
10
Owner          : Amr Salah
11
*/
12
 
13
`timescale 1 ns/1 ps
14
 
15
module SBox
16
(
17
input clk,               //system clock
18
input reset,             //asynch active low reset
19
input valid_in,          //valid input signal
20
input [7:0] addr,        //SBox input byte
21
output reg [7:0] dout    //SBox output
22
);
23
 
24
always @ ( posedge clk or negedge reset)
25
  if (!reset) begin
26
    dout <= 8'h00;
27
  end  else begin
28
 
29
    if(valid_in) begin
30
     case (addr)          //substitution table
31
       8'h00              : dout <= 8'h63;
32
       8'h01              : dout <= 8'h7c;
33
       8'h02              : dout <= 8'h77;
34
       8'h03              : dout <= 8'h7b;
35
       8'h04              : dout <= 8'hf2;
36
       8'h05              : dout <= 8'h6b;
37
       8'h06              : dout <= 8'h6f;
38
       8'h07              : dout <= 8'hc5;
39
       8'h08              : dout <= 8'h30;
40
       8'h09              : dout <= 8'h01;
41
       8'h0a              : dout <= 8'h67;
42
       8'h0b              : dout <= 8'h2b;
43
       8'h0c              : dout <= 8'hfe;
44
       8'h0d              : dout <= 8'hd7;
45
       8'h0e              : dout <= 8'hab;
46
       8'h0f              : dout <= 8'h76;
47
    /****************************************/
48
       8'h10              : dout <= 8'hca;
49
       8'h11              : dout <= 8'h82;
50
       8'h12              : dout <= 8'hc9;
51
       8'h13              : dout <= 8'h7d;
52
       8'h14              : dout <= 8'hfa;
53
       8'h15              : dout <= 8'h59;
54
       8'h16              : dout <= 8'h47;
55
       8'h17              : dout <= 8'hf0;
56
       8'h18              : dout <= 8'had;
57
       8'h19              : dout <= 8'hd4;
58
       8'h1a              : dout <= 8'ha2;
59
       8'h1b              : dout <= 8'haf;
60
       8'h1c              : dout <= 8'h9c;
61
       8'h1d              : dout <= 8'ha4;
62
       8'h1e              : dout <= 8'h72;
63
       8'h1f              : dout <= 8'hc0;
64
    /**********************************************/
65
       8'h20              : dout <= 8'hb7;
66
       8'h21              : dout <= 8'hfd;
67
       8'h22              : dout <= 8'h93;
68
       8'h23              : dout <= 8'h26;
69
       8'h24              : dout <= 8'h36;
70
       8'h25              : dout <= 8'h3f;
71
       8'h26              : dout <= 8'hf7;
72
       8'h27              : dout <= 8'hcc;
73
       8'h28              : dout <= 8'h34;
74
       8'h29              : dout <= 8'ha5;
75
       8'h2a              : dout <= 8'he5;
76
       8'h2b              : dout <= 8'hf1;
77
       8'h2c              : dout <= 8'h71;
78
       8'h2d              : dout <= 8'hd8;
79
       8'h2e              : dout <= 8'h31;
80
       8'h2f              : dout <= 8'h15;
81
    /*****************************************/
82
       8'h30              : dout <= 8'h04;
83
       8'h31              : dout <= 8'hc7;
84
       8'h32              : dout <= 8'h23;
85
       8'h33              : dout <= 8'hc3;
86
       8'h34              : dout <= 8'h18;
87
       8'h35              : dout <= 8'h96;
88
       8'h36              : dout <= 8'h05;
89
       8'h37              : dout <= 8'h9a;
90
       8'h38              : dout <= 8'h07;
91
       8'h39              : dout <= 8'h12;
92
       8'h3a              : dout <= 8'h80;
93
       8'h3b              : dout <= 8'he2;
94
       8'h3c              : dout <= 8'heb;
95
       8'h3d              : dout <= 8'h27;
96
       8'h3e              : dout <= 8'hb2;
97
       8'h3f              : dout <= 8'h75;
98
    /*******************************************/
99
       8'h40              : dout <= 8'h09;
100
       8'h41              : dout <= 8'h83;
101
       8'h42              : dout <= 8'h2c;
102
       8'h43              : dout <= 8'h1a;
103
       8'h44              : dout <= 8'h1b;
104
       8'h45              : dout <= 8'h6e;
105
       8'h46              : dout <= 8'h5a;
106
       8'h47              : dout <= 8'ha0;
107
       8'h48              : dout <= 8'h52;
108
       8'h49              : dout <= 8'h3b;
109
       8'h4a              : dout <= 8'hd6;
110
       8'h4b              : dout <= 8'hb3;
111
       8'h4c              : dout <= 8'h29;
112
       8'h4d              : dout <= 8'he3;
113
       8'h4e              : dout <= 8'h2f;
114
       8'h4f              : dout <= 8'h84;
115
    /**********************************************/
116
       8'h50              : dout <= 8'h53;
117
       8'h51              : dout <= 8'hd1;
118
       8'h52              : dout <= 8'h00;
119
       8'h53              : dout <= 8'hed;
120
       8'h54              : dout <= 8'h20;
121
       8'h55              : dout <= 8'hfc;
122
       8'h56              : dout <= 8'hb1;
123
       8'h57              : dout <= 8'h5b;
124
       8'h58              : dout <= 8'h6a;
125
       8'h59              : dout <= 8'hcb;
126
       8'h5a              : dout <= 8'hbe;
127
       8'h5b              : dout <= 8'h39;
128
       8'h5c              : dout <= 8'h4a;
129
       8'h5d              : dout <= 8'h4c;
130
       8'h5e              : dout <= 8'h58;
131
       8'h5f              : dout <= 8'hcf;
132
       /****************************************/
133
       8'h60              : dout <= 8'hd0;
134
       8'h61              : dout <= 8'hef;
135
       8'h62              : dout <= 8'haa;
136
       8'h63              : dout <= 8'hfb;
137
       8'h64              : dout <= 8'h43;
138
       8'h65              : dout <= 8'h4d;
139
       8'h66              : dout <= 8'h33;
140
       8'h67              : dout <= 8'h85;
141
       8'h68              : dout <= 8'h45;
142
       8'h69              : dout <= 8'hf9;
143
       8'h6a              : dout <= 8'h02;
144
       8'h6b              : dout <= 8'h7f;
145
       8'h6c              : dout <= 8'h50;
146
       8'h6d              : dout <= 8'h3c;
147
       8'h6e              : dout <= 8'h9f;
148
       8'h6f              : dout <= 8'ha8;
149
    /*********************************************/
150
       8'h70              : dout <= 8'h51;
151
       8'h71              : dout <= 8'ha3;
152
       8'h72              : dout <= 8'h40;
153
       8'h73              : dout <= 8'h8f;
154
       8'h74              : dout <= 8'h92;
155
       8'h75              : dout <= 8'h9d;
156
       8'h76              : dout <= 8'h38;
157
       8'h77              : dout <= 8'hf5;
158
       8'h78              : dout <= 8'hbc;
159
       8'h79              : dout <= 8'hb6;
160
       8'h7a              : dout <= 8'hda;
161
       8'h7b              : dout <= 8'h21;
162
       8'h7c              : dout <= 8'h10;
163
       8'h7d              : dout <= 8'hff;
164
       8'h7e              : dout <= 8'hf3;
165
       8'h7f              : dout <= 8'hd2;
166
    /********************************************/
167
       8'h80              : dout <= 8'hcd;
168
       8'h81              : dout <= 8'h0c;
169
       8'h82              : dout <= 8'h13;
170
       8'h83              : dout <= 8'hec;
171
       8'h84              : dout <= 8'h5f;
172
       8'h85              : dout <= 8'h97;
173
       8'h86              : dout <= 8'h44;
174
       8'h87              : dout <= 8'h17;
175
       8'h88              : dout <= 8'hc4;
176
       8'h89              : dout <= 8'ha7;
177
       8'h8a              : dout <= 8'h7e;
178
       8'h8b              : dout <= 8'h3d;
179
       8'h8c              : dout <= 8'h64;
180
       8'h8d              : dout <= 8'h5d;
181
       8'h8e              : dout <= 8'h19;
182
       8'h8f              : dout <= 8'h73;
183
 /***********************************************/
184
       8'h90              : dout <= 8'h60;
185
       8'h91              : dout <= 8'h81;
186
       8'h92              : dout <= 8'h4f;
187
       8'h93              : dout <= 8'hdc;
188
       8'h94              : dout <= 8'h22;
189
       8'h95              : dout <= 8'h2a;
190
       8'h96              : dout <= 8'h90;
191
       8'h97              : dout <= 8'h88;
192
       8'h98              : dout <= 8'h46;
193
       8'h99              : dout <= 8'hee;
194
       8'h9a              : dout <= 8'hb8;
195
       8'h9b              : dout <= 8'h14;
196
       8'h9c              : dout <= 8'hde;
197
       8'h9d              : dout <= 8'h5e;
198
       8'h9e              : dout <= 8'h0b;
199
       8'h9f              : dout <= 8'hdb;
200
      /******************************************/
201
       8'ha0              : dout <= 8'he0;
202
       8'ha1              : dout <= 8'h32;
203
       8'ha2              : dout <= 8'h3a;
204
       8'ha3              : dout <= 8'h0a;
205
       8'ha4              : dout <= 8'h49;
206
       8'ha5              : dout <= 8'h06;
207
       8'ha6              : dout <= 8'h24;
208
       8'ha7              : dout <= 8'h5c;
209
       8'ha8              : dout <= 8'hc2;
210
       8'ha9              : dout <= 8'hd3;
211
       8'haa              : dout <= 8'hac;
212
       8'hab              : dout <= 8'h62;
213
       8'hac              : dout <= 8'h91;
214
       8'had              : dout <= 8'h95;
215
       8'hae              : dout <= 8'he4;
216
       8'haf              : dout <= 8'h79;
217
    /******************************************/
218
       8'hb0              : dout <= 8'he7;
219
       8'hb1              : dout <= 8'hc8;
220
       8'hb2              : dout <= 8'h37;
221
       8'hb3              : dout <= 8'h6d;
222
       8'hb4              : dout <= 8'h8d;
223
       8'hb5              : dout <= 8'hd5;
224
       8'hb6              : dout <= 8'h4e;
225
       8'hb7              : dout <= 8'ha9;
226
       8'hb8              : dout <= 8'h6c;
227
       8'hb9              : dout <= 8'h56;
228
       8'hba              : dout <= 8'hf4;
229
       8'hbb              : dout <= 8'hea;
230
       8'hbc              : dout <= 8'h65;
231
       8'hbd              : dout <= 8'h7a;
232
       8'hbe              : dout <= 8'hae;
233
       8'hbf              : dout <= 8'h08;
234
    /****************************************/
235
       8'hc0              : dout <= 8'hba;
236
       8'hc1              : dout <= 8'h78;
237
       8'hc2              : dout <= 8'h25;
238
       8'hc3              : dout <= 8'h2e;
239
       8'hc4              : dout <= 8'h1c;
240
       8'hc5              : dout <= 8'ha6;
241
       8'hc6              : dout <= 8'hb4;
242
       8'hc7              : dout <= 8'hc6;
243
       8'hc8              : dout <= 8'he8;
244
       8'hc9              : dout <= 8'hdd;
245
       8'hca              : dout <= 8'h74;
246
       8'hcb              : dout <= 8'h1f;
247
       8'hcc              : dout <= 8'h4b;
248
       8'hcd              : dout <= 8'hbd;
249
       8'hce              : dout <= 8'h8b;
250
       8'hcf              : dout <= 8'h8a;
251
    /****************************************/
252
       8'hd0              : dout <= 8'h70;
253
       8'hd1              : dout <= 8'h3e;
254
       8'hd2              : dout <= 8'hb5;
255
       8'hd3              : dout <= 8'h66;
256
       8'hd4              : dout <= 8'h48;
257
       8'hd5              : dout <= 8'h03;
258
       8'hd6              : dout <= 8'hf6;
259
       8'hd7              : dout <= 8'h0e;
260
       8'hd8              : dout <= 8'h61;
261
       8'hd9              : dout <= 8'h35;
262
       8'hda              : dout <= 8'h57;
263
       8'hdb              : dout <= 8'hb9;
264
       8'hdc              : dout <= 8'h86;
265
       8'hdd              : dout <= 8'hc1;
266
       8'hde              : dout <= 8'h1d;
267
       8'hdf              : dout <= 8'h9e;
268
    /*******************************************/
269
       8'he0              : dout <= 8'he1;
270
       8'he1              : dout <= 8'hf8;
271
       8'he2              : dout <= 8'h98;
272
       8'he3              : dout <= 8'h11;
273
       8'he4              : dout <= 8'h69;
274
       8'he5              : dout <= 8'hd9;
275
       8'he6              : dout <= 8'h8e;
276
       8'he7              : dout <= 8'h94;
277
       8'he8              : dout <= 8'h9b;
278
       8'he9              : dout <= 8'h1e;
279
       8'hea              : dout <= 8'h87;
280
       8'heb              : dout <= 8'he9;
281
       8'hec              : dout <= 8'hce;
282
       8'hed              : dout <= 8'h55;
283
       8'hee              : dout <= 8'h28;
284
       8'hef              : dout <= 8'hdf;
285
    /****************************************/
286
       8'hf0              : dout <= 8'h8c;
287
       8'hf1              : dout <= 8'ha1;
288
       8'hf2              : dout <= 8'h89;
289
       8'hf3              : dout <= 8'h0d;
290
       8'hf4              : dout <= 8'hbf;
291
       8'hf5              : dout <= 8'he6;
292
       8'hf6              : dout <= 8'h42;
293
       8'hf7              : dout <= 8'h68;
294
       8'hf8              : dout <= 8'h41;
295
       8'hf9              : dout <= 8'h99;
296
       8'hfa              : dout <= 8'h2d;
297
       8'hfb              : dout <= 8'h0f;
298
       8'hfc              : dout <= 8'hb0;
299
       8'hfd              : dout <= 8'h54;
300
       8'hfe              : dout <= 8'hbb;
301
       8'hff              : dout <= 8'h16;
302
       default            : dout <= 8'h00;
303
 
304
    endcase
305
  end
306
end
307
 
308
endmodule

powered by: WebSVN 2.1.0

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