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

Subversion Repositories present

[/] [present/] [trunk/] [32BitIO/] [rtl/] [vhdl/] [keyupd.vhd] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 gajos
-----------------------------------------------------------------------
2
----                                                               ----
3
---- Present - a lightweight block cipher project                  ----
4
----                                                               ----
5
---- This file is part of the Present - a lightweight block        ----
6
---- cipher project                                                ----
7
---- http://www.http://opencores.org/project,present               ----
8
----                                                               ----
9
---- Description:                                                  ----
10
----     Key update module for present cipher it is 'signal        ----
11
---- mixing' made by rotation left by 61 bits, using one s-box,    ----
12
---- and output of the counter. For more information see           ----
13
---- http://homes.esat.kuleuven.be/~abogdano/papers/               ----
14
---- present_ches07.pdf                                            ----
15
---- To Do:                                                        ----
16
----                                                               ----
17
---- Author(s):                                                    ----
18
---- - Krzysztof Gajewski, gajos@opencores.org                     ----
19
----                       k.gajewski@gmail.com                    ----
20
----                                                               ----
21
-----------------------------------------------------------------------
22
----                                                               ----
23
---- Copyright (C) 2013 Authors and OPENCORES.ORG                  ----
24
----                                                               ----
25
---- This source file may be used and distributed without          ----
26
---- restriction provided that this copyright statement is not     ----
27
---- removed from the file and that any derivative work contains   ----
28
---- the original copyright notice and the associated disclaimer.  ----
29
----                                                               ----
30
---- This source file is free software; you can redistribute it    ----
31
---- and-or modify it under the terms of the GNU Lesser General    ----
32
---- Public License as published by the Free Software Foundation;  ----
33
---- either version 2.1 of the License, or (at your option) any    ----
34
---- later version.                                                ----
35
----                                                               ----
36
---- This source is distributed in the hope that it will be        ----
37
---- useful, but WITHOUT ANY WARRANTY; without even the implied    ----
38
---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR       ----
39
---- PURPOSE. See the GNU Lesser General Public License for more   ----
40
---- details.                                                      ----
41
----                                                               ----
42
---- You should have received a copy of the GNU Lesser General     ----
43
---- Public License along with this source; if not, download it    ----
44
---- from http://www.opencores.org/lgpl.shtml                      ----
45
----                                                               ----
46
-----------------------------------------------------------------------
47 2 gajos
library IEEE;
48
use IEEE.STD_LOGIC_1164.ALL;
49
use IEEE.STD_LOGIC_ARITH.ALL;
50
use IEEE.STD_LOGIC_UNSIGNED.ALL;
51
 
52
entity keyupd is
53
        generic(
54
                w_80: integer := 80;
55
                w_5 : integer := 5;
56
                w_4 : integer := 4);
57
        port(
58
                key : in std_logic_vector(w_80-1 downto 0);
59
                num : in std_logic_vector(w_5-1 downto 0);
60
                keyout : out std_logic_vector(w_80-1 downto 0)
61
        );
62
end keyupd;
63
 
64
architecture Behavioral of keyupd is
65
 
66
        component slayer is
67
                generic(w_4: integer := 4);
68
                port(
69
                        input : in std_logic_vector(w_4-1 downto 0);
70
                        output : out std_logic_vector(w_4-1 downto 0)
71
                );
72
        end component;
73
 
74
        signal changed : std_logic_vector(w_4-1 downto 0);
75
        signal changin : std_logic_vector(w_4-1 downto 0);
76
        signal keytemp : std_logic_vector(w_80-1 downto 0);
77
 
78
        begin
79
                s1: slayer port map(input => changin, output => changed);
80
                changin <= keytemp(79 downto 76);
81
                keytemp <= key(18 downto 0) & key(79 downto 19);
82
                keyout(79 downto 76)<= changed;
83
                keyout(75 downto 20) <= keytemp(75 downto 20);
84
                keyout(19 downto 15)<= keytemp(19 downto 15) xor num;
85
                keyout(14 downto 0) <= keytemp(14 downto 0);
86
        end Behavioral;

powered by: WebSVN 2.1.0

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