------------------------------------------------------------------------------- -- A Geffe Keystream Generator -- Author : Tam Paredes -- File Name : key_generator.vhd -- Architecture : structural -- Description : This keystream generator uses three LFSRs combined -- nonlinearly. Two LFSRs are inputs, while the third LFSR -- controls the output of the multiplexer. ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; library work; use work.stream_cipher_pkg.all; entity key_generator is port(clock,reset,enable : in std_logic; output : out std_logic ); end key_generator; architecture structural of key_generator is signal internal_LFSR1, internal_LFSR2, internal_LFSR3: std_logic; begin LFSR1: shift_reg13 port map(clock => clock, reset => reset, enable => enable, output => internal_LFSR1 ); LFSR2: shift_reg11 port map(clock => clock, reset => reset, enable => enable, output => internal_LFSR2 ); LFSR3: shift_reg8 port map(clock => clock, reset => reset, enable => enable, output => internal_LFSR3 ); Mux2to1: mux2_1 port map(inputA => internal_LFSR2, inputB => internal_LFSR3, sel => internal_LFSR1, output => output ); end structural;