⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tdes_top.vhd

📁 fpga3des加密非常有用 希望大家喜
💻 VHD
字号:
-----------------------------------------------------------------------				(c) Copyright 2006, CoreTex Systems, LLC					 ----		                   www.coretexsys.com                        --    --                                                            		 ----		This source file may be used and distributed without         ----		restriction provided that this copyright statement is not    ----		removed from the file and that any derivative work contains  ----		the original copyright notice and the associated disclaimer. ----                                                            		 ----		    THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY      ----		EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED    ----		TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS    ----		FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR       ----		OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,          ----		INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES     ----		(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE    ----		GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR         ----		BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   ----		LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT   ----		(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT   ----		OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE          ----		POSSIBILITY OF SUCH DAMAGE.                                  ----																						 ----------------------------------------------------------------------------------------------------------------------------------------------- Poject structure: --  |- tdes_top.vhd--  |--    |- des_cipher_top.vhd--    |- des_top.vhd--      |- block_top.vhd--        |- add_key.vhd--        |--        |- add_left.vhd--        |--				|- e_expansion_function.vhd--				|--				|- p_box.vhd--				|--				|- s_box.vhd--            |- s1_box.vhd--            |- s2_box.vhd--            |- s3_box.vhd--            |- s4_box.vhd--            |- s5_box.vhd--            |- s6_box.vhd--            |- s7_box.vhd--            |- s8_box.vhd--    |- key_schedule.vhd------------------------------------------------------------------------------------------------------------------------------------------------ Title       : tdes_top-- Company     : CoreTex Systems, LLC------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity tdes_top isport(		--		-- inputs for key expander		--		key1_in:		in std_logic_vector(0 to 63);		key2_in:		in std_logic_vector(0 to 63);		key3_in:		in std_logic_vector(0 to 63);				-- 		-- function	select		--		function_select:	in	std_logic; -- active when encryption, inactive when decryption				--		-- input into des_cipher_top 		--				data_in:		in std_logic_vector(0 to 63);				--		-- input into des_cipher_top 		--				data_out:	out std_logic_vector(0 to 63);		--		-- data interface to MCU		--		lddata:			in 	std_logic;	-- active when data for loading is ready		ldkey:			in 	std_logic;	-- active when key for loading is ready		out_ready:	out	std_logic;	-- active when encryption of data is done			--		-- General clock and reset		--		reset: in std_logic;		clock: in std_logic	);end tdes_top;architecture Behavioral of tdes_top iscomponent des_cipher_top isport(		--		-- inputs for key expander		--		key_in:		in std_logic_vector(0 to 63);	-- interface to MCU		--ldkey: 		in std_logic;						-- active signal for loading keys		-- 		-- function	select		--		function_select:	in	std_logic; -- active when encryption, inactive when decryption				--		-- input into des_cipher_top 		--				data_in:		in std_logic_vector(0 to 63);				--		-- input into des_cipher_top 		--				data_out:	out std_logic_vector(0 to 63);		--		-- data interface to MCU		--		lddata:			in 	std_logic;	-- active when data for loading is ready		des_out_rdy:	out	std_logic;	-- active when encryption of data is done			--		-- General clock and reset		--		reset: in std_logic;		clock: in std_logic	);end component;type statetype is (WaitKeyState, WaitDataState);signal nextstate: statetype;signal key1_in_internal: std_logic_vector(0 to 63);signal key2_in_internal: std_logic_vector(0 to 63);signal key3_in_internal: std_logic_vector(0 to 63);signal memkey1: std_logic_vector(0 to 63);signal memkey3: std_logic_vector(0 to 63);signal fsel_internal: std_logic;signal fsel_internal_inv: std_logic;signal des_out_rdy_internal: std_logic;signal des_out_rdy_internal1: std_logic; signal des_out_rdy_internal2: std_logic;signal data_in_internal: std_logic_vector(0 to 63);signal data_out_internal: std_logic_vector(0 to 63);signal data_out_internal1: std_logic_vector(0 to 63);signal data_out_internal2: std_logic_vector(0 to 63);signal lddata_internal: std_logic;beginprocess (clock)beginif rising_edge(clock) then	if reset = '1' then		nextstate		<= WaitKeyState;		lddata_internal		<= '0';		out_ready		<= '0'; 		fsel_internal		<= function_select;		fsel_internal_inv	<= not function_select;	else		data_out				<= data_out_internal;		out_ready				<= des_out_rdy_internal;		case nextstate is			--			-- wait key state			--			when WaitKeyState =>					-- wait until key is ready (as well as the function_select)				if ldkey = '0' then					nextstate		<= WaitKeyState;				else					key1_in_internal	<= key1_in;										key2_in_internal	<= key2_in;					key3_in_internal	<= key3_in;					memkey1			<= key1_in;					memkey3			<= key3_in;					nextstate		<= WaitDataState;				end if;			--			-- wait data state			--			when WaitDataState =>				-- wait until data is ready to be loaded				if lddata = '0' then					nextstate	<= WaitDataState;					lddata_internal		<= '0';				else					lddata_internal		<= '1';					if fsel_internal = '0' then						key1_in_internal <= memkey3;						key3_in_internal <= memkey1;					end if;					data_in_internal	<= data_in;					nextstate		<= WaitDataState;				end if;		end case;	end if;end if;end process;DESCIPHERTOP1: des_cipher_top port map (		key_in => key1_in_internal, -- interface to MCU				function_select => fsel_internal, -- active when encryption, inactive when decryption				data_in => data_in_internal,				data_out => data_out_internal1,		lddata => lddata_internal,	-- active when data for loading is ready		des_out_rdy => des_out_rdy_internal1,	-- active when encryption of data is done			reset => reset,		clock =>	clock);DESCIPHERTOP2: des_cipher_top port map (		key_in => key2_in_internal, --subkey_in_internal,	-- interface to MCU				function_select => fsel_internal_inv, -- active when encryption, inactive when decryption				data_in => data_out_internal1,				data_out => data_out_internal2,		lddata => des_out_rdy_internal1,	-- active when data for loading is ready		des_out_rdy => des_out_rdy_internal2,	-- active when encryption of data is done			reset => reset,		clock =>	clock);DESCIPHERTOP3: des_cipher_top port map (		key_in => key3_in_internal, -- subkey_in_internal,	-- interface to MCU				function_select => fsel_internal, -- active when encryption, inactive when decryption				data_in => data_out_internal2,				data_out => data_out_internal,		lddata => des_out_rdy_internal2,	-- active when data for loading is ready		des_out_rdy => des_out_rdy_internal,	-- active when encryption of data is done			reset => reset,		clock =>	clock);end Behavioral;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -