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

Subversion Repositories des

[/] [des/] [trunk/] [rtl/] [verilog/] [common/] [crp.v] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 rudi
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  CRP                                                        ////
4
////  DES Crypt Module                                           ////
5
////                                                             ////
6
////  Author: Rudolf Usselmann                                   ////
7
////          rudi@asics.ws                                      ////
8
////                                                             ////
9
/////////////////////////////////////////////////////////////////////
10
////                                                             ////
11
//// Copyright (C) 2001 Rudolf Usselmann                         ////
12
////                    rudi@asics.ws                            ////
13
////                                                             ////
14
//// This source file may be used and distributed without        ////
15
//// restriction provided that this copyright statement is not   ////
16
//// removed from the file and that any derivative work contains ////
17
//// the original copyright notice and the associated disclaimer.////
18
////                                                             ////
19
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
20
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
21
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
22
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
23
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
24
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
25
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
26
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
27
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
28
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
29
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
30
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
31
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
32
////                                                             ////
33
/////////////////////////////////////////////////////////////////////
34
 
35
module  crp(P, R, K_sub);
36
output  [1:32]  P;
37
input   [1:32]  R;
38
input   [1:48]  K_sub;
39
 
40
wire    [1:48] E;
41
wire    [1:48] X;
42 7 rudi
wire    [1:32] S;
43 5 rudi
 
44
assign E[1:48] = {      R[32], R[1], R[2], R[3], R[4], R[5], R[4], R[5],
45
                        R[6], R[7], R[8], R[9], R[8], R[9], R[10], R[11],
46
                        R[12], R[13], R[12], R[13], R[14], R[15], R[16],
47
                        R[17], R[16], R[17], R[18], R[19], R[20], R[21],
48
                        R[20], R[21], R[22], R[23], R[24], R[25], R[24],
49
                        R[25], R[26], R[27], R[28], R[29], R[28], R[29],
50
                        R[30], R[31], R[32], R[1]};
51
 
52
assign X = E ^ K_sub;
53
 
54
sbox1 u0( .addr(X[01:06]), .dout(S[01:04]) );
55
sbox2 u1( .addr(X[07:12]), .dout(S[05:08]) );
56
sbox3 u2( .addr(X[13:18]), .dout(S[09:12]) );
57
sbox4 u3( .addr(X[19:24]), .dout(S[13:16]) );
58
sbox5 u4( .addr(X[25:30]), .dout(S[17:20]) );
59
sbox6 u5( .addr(X[31:36]), .dout(S[21:24]) );
60
sbox7 u6( .addr(X[37:42]), .dout(S[25:28]) );
61
sbox8 u7( .addr(X[43:48]), .dout(S[29:32]) );
62
 
63
assign P[1:32] = {      S[16], S[7], S[20], S[21], S[29], S[12], S[28],
64
                        S[17], S[1], S[15], S[23], S[26], S[5], S[18],
65
                        S[31], S[10], S[2], S[8], S[24], S[14], S[32],
66
                        S[27], S[3], S[9], S[19], S[13], S[30], S[6],
67
                        S[22], S[11], S[4], S[25]};
68
 
69
endmodule

powered by: WebSVN 2.1.0

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