OpenCores
URL https://opencores.org/ocsvn/3des_vhdl/3des_vhdl/trunk

Subversion Repositories 3des_vhdl

[/] [3des_vhdl/] [trunk/] [VHDL/] [block_top.vhd] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsocek
---------------------------------------------------------------------
2
--                              (c) Copyright 2006, CoreTex Systems, LLC                                         --
3
--                                 www.coretexsys.com                        --    
4
--                                                                       --
5
--              This source file may be used and distributed without         --
6
--              restriction provided that this copyright statement is not    --
7
--              removed from the file and that any derivative work contains  --
8
--              the original copyright notice and the associated disclaimer. --
9
--                                                                       --
10
--                  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY      --
11
--              EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED    --
12
--              TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS    --
13
--              FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR       --
14
--              OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,          --
15
--              INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES     --
16
--              (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE    --
17
--              GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR         --
18
--              BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   --
19
--              LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT   --
20
--              (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT   --
21
--              OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE          --
22
--              POSSIBILITY OF SUCH DAMAGE.                                  --
23
--                                                                                                                                                                               --
24
---------------------------------------------------------------------
25
 
26
----------------------------------------------------------------------
27
 
28
-- Poject structure: 
29
 
30
--  |- tdes_top.vhd
31
--  |
32
--    |- des_cipher_top.vhd
33
--    |- des_top.vhd
34
--      |- block_top.vhd
35
--        |- add_key.vhd
36
--        |
37
--        |- add_left.vhd
38
--        |
39
--                              |- e_expansion_function.vhd
40
--                              |
41
--                              |- p_box.vhd
42
--                              |
43
--                              |- s_box.vhd
44
--            |- s1_box.vhd
45
--            |- s2_box.vhd
46
--            |- s3_box.vhd
47
--            |- s4_box.vhd
48
--            |- s5_box.vhd
49
--            |- s6_box.vhd
50
--            |- s7_box.vhd
51
--            |- s8_box.vhd
52
--    |- key_schedule.vhd
53
 
54
----------------------------------------------------------------------
55
 
56
---------------------------------------------------------------------------------------------------
57
--
58
-- Title       : block_top
59
-- Company     : CoreTex Systems, LLC
60
--
61
---------------------------------------------------------------------------------------------------
62
 
63
library IEEE;
64
use IEEE.STD_LOGIC_1164.ALL;
65
use IEEE.STD_LOGIC_ARITH.ALL;
66
use IEEE.STD_LOGIC_UNSIGNED.ALL;
67
 
68
entity block_top is
69
port(
70
                --
71
                -- input into top level block
72
                --
73
                L_in: in std_logic_vector(0 to 31);
74
                R_in: in std_logic_vector(0 to 31);
75
 
76
                --
77
                -- output from top level block
78
           --
79
                L_out: out std_logic_vector(0 to 31);
80
                R_out: out std_logic_vector(0 to 31);
81
 
82
        --
83
                -- expanded key from key block
84
                --
85
                round_key_des: in std_logic_vector(0 to 47)      -- current round key
86
 
87
        );
88
end block_top;
89
 
90
architecture Behavioral of block_top is
91
--
92
-- DECLARATION OF MODULES IN THE BLOCK_TOP
93
--
94
 
95
--
96
--  E _ E X P A N S I O N _ F U N C T I O N
97
--
98
component e_expansion_function
99
        port(
100
                x_in: in std_logic_vector(0 to 31);
101
                block0_out: out std_logic_vector(0 to 5);
102
                        block1_out: out std_logic_vector(0 to 5);
103
                        block2_out: out std_logic_vector(0 to 5);
104
                        block3_out: out std_logic_vector(0 to 5);
105
                        block4_out: out std_logic_vector(0 to 5);
106
                        block5_out: out std_logic_vector(0 to 5);
107
                        block6_out: out std_logic_vector(0 to 5);
108
                        block7_out: out std_logic_vector(0 to 5)
109
        );
110
end component;
111
 
112
--
113
--  A D D _ K E Y
114
--
115
component add_key
116
        port(
117
                x0_in: in std_logic_vector(0 to 5);
118
                        x1_in: in std_logic_vector(0 to 5);
119
                        x2_in: in std_logic_vector(0 to 5);
120
                        x3_in: in std_logic_vector(0 to 5);
121
                        x4_in: in std_logic_vector(0 to 5);
122
                        x5_in: in std_logic_vector(0 to 5);
123
                        x6_in: in std_logic_vector(0 to 5);
124
                        x7_in: in std_logic_vector(0 to 5);
125
                        key: in std_logic_vector(0 to 47);
126
                        x0_out: out std_logic_vector(5 downto 0);
127
                        x1_out: out std_logic_vector(5 downto 0);
128
                        x2_out: out std_logic_vector(5 downto 0);
129
                        x3_out: out std_logic_vector(5 downto 0);
130
                        x4_out: out std_logic_vector(5 downto 0);
131
                        x5_out: out std_logic_vector(5 downto 0);
132
                        x6_out: out std_logic_vector(5 downto 0);
133
                        x7_out: out std_logic_vector(5 downto 0)
134
        );
135
end component;
136
 
137
--
138
--  S _ B O X
139
--
140
component s_box
141
        port(
142
                block0_in: in std_logic_vector(5 downto 0);
143
                        block1_in: in std_logic_vector(5 downto 0);
144
                        block2_in: in std_logic_vector(5 downto 0);
145
                        block3_in: in std_logic_vector(5 downto 0);
146
                        block4_in: in std_logic_vector(5 downto 0);
147
                        block5_in: in std_logic_vector(5 downto 0);
148
                        block6_in: in std_logic_vector(5 downto 0);
149
                        block7_in: in std_logic_vector(5 downto 0);
150
                        x0_out: out std_logic_vector(3 downto 0);
151
                        x1_out: out std_logic_vector(3 downto 0);
152
                        x2_out: out std_logic_vector(3 downto 0);
153
                        x3_out: out std_logic_vector(3 downto 0);
154
                        x4_out: out std_logic_vector(3 downto 0);
155
                        x5_out: out std_logic_vector(3 downto 0);
156
                        x6_out: out std_logic_vector(3 downto 0);
157
                        x7_out: out std_logic_vector(3 downto 0)
158
        );
159
end component;
160
 
161
--
162
--  P _ B O X
163
--
164
component p_box
165
        port(
166
                x0_in: in std_logic_vector(3 downto 0);
167
                        x1_in: in std_logic_vector(3 downto 0);
168
                        x2_in: in std_logic_vector(3 downto 0);
169
                        x3_in: in std_logic_vector(3 downto 0);
170
                        x4_in: in std_logic_vector(3 downto 0);
171
                        x5_in: in std_logic_vector(3 downto 0);
172
                        x6_in: in std_logic_vector(3 downto 0);
173
                        x7_in: in std_logic_vector(3 downto 0);
174
                        x_out: out std_logic_vector(0 to 31)
175
        );
176
end component;
177
 
178
--
179
--  A D D _ L E F T
180
--
181
component add_left
182
        port(
183
                x_in: in std_logic_vector(0 to 31);
184
                        left_in: in std_logic_vector(0 to 31);
185
                        x_out: out std_logic_vector(0 to 31)
186
        );
187
end component;
188
 
189
 
190
--
191
-- Signals that connects modules within block_top
192
--
193
signal a0, a1, a2, a3, a4, a5, a6, a7: std_logic_vector(0 to 5);
194
signal b0, b1, b2, b3, b4, b5, b6, b7: std_logic_vector(5 downto 0);
195
signal c0, c1, c2, c3, c4, c5, c6, c7: std_logic_vector(3 downto 0);
196
signal d0: std_logic_vector(0 to 31);
197
signal R_out_internal: std_logic_vector(0 to 31);
198
 
199
begin
200
 
201
L_out <= R_in;
202
R_out <= R_out_internal;
203
 
204
--
205
-- INSTANTIATION OF E_EXPANSIONFUNCTION
206
--
207
E_EXPANSIONFUNCTION : e_expansion_function
208
port map (
209
                        x_in => R_in,
210
                        block0_out => a0,
211
                block1_out => a1,
212
                        block2_out => a2,
213
                        block3_out => a3,
214
                        block4_out => a4,
215
                        block5_out => a5,
216
                        block6_out => a6,
217
                        block7_out => a7
218
);
219
 
220
--
221
-- INSTANTIATION OF ADDKEY
222
--
223
ADDKEY : add_key
224
port map (
225
                        x0_in => a0,
226
                x1_in => a1,
227
                        x2_in => a2,
228
                        x3_in => a3,
229
                        x4_in => a4,
230
                        x5_in => a5,
231
                        x6_in => a6,
232
                        x7_in => a7,
233
                        key => round_key_des,
234
                        x0_out => b0,
235
                x1_out => b1,
236
                        x2_out => b2,
237
                        x3_out => b3,
238
                        x4_out => b4,
239
                        x5_out => b5,
240
                        x6_out => b6,
241
                        x7_out => b7
242
);
243
 
244
--                                               
245
-- INSTANTIATION OF SBOX 
246
--
247
SBOX : s_box
248
port map (
249
                        block0_in => b0,
250
                block1_in => b1,
251
                        block2_in => b2,
252
                        block3_in => b3,
253
                        block4_in => b4,
254
                        block5_in => b5,
255
                        block6_in => b6,
256
                        block7_in => b7,
257
                        x0_out =>  c0,
258
                        x1_out =>  c1,
259
                        x2_out =>  c2,
260
                        x3_out =>  c3,
261
                        x4_out =>  c4,
262
                        x5_out =>  c5,
263
                        x6_out =>  c6,
264
                        x7_out =>  c7
265
);
266
 
267
--                                               
268
-- INSTANTIATION OF PBOX 
269
--
270
PBOX : p_box
271
port map (
272
                        x0_in => c0,
273
                        x1_in => c1,
274
                        x2_in => c2,
275
                        x3_in => c3,
276
                        x4_in => c4,
277
                        x5_in => c5,
278
                        x6_in => c6,
279
                        x7_in => c7,
280
                        x_out => d0
281
);
282
 
283
 
284
--                                               
285
-- INSTANTIATION OF ADDLEFT 
286
--
287
ADDLEFT : add_left
288
port map (
289
                        x_in => d0,
290
                        left_in => L_in,
291
                        x_out => R_out_internal
292
);
293
 
294
 
295
end Behavioral;

powered by: WebSVN 2.1.0

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