--5db8 0006bbca98980030001 Page 1 of addr_key.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· f06e63 -- Date ···········: ·09/19/97 ································· 704774 -- Description¤ ···: ·UProcessor interface b65356 -------------------------------------------------------------------------------- 407faf library ieee; 6411e9 use IEEE.std_logic_1164.all; b3da83 use IEEE.std_logic_arith.all; a0e105 use IEEE.std_logic_unsigned.all; 325356 -------------------------------------------------------------------------------- 426895 entity ADDR_KEY is 9daf5a 5914be port( ·· c300c5 ········ADDSEL2 ·······¤: in ····std_logic; 4943c8 ········CHIP_EN ·······¤: in ····std_logic; 53a88e ········ADDR ······¤ : in ····std_logic_vector(7 downto 0); 7faf5a dae24a ········ADDR_KEY0 ·····¤: out ···std_logic_vector(6 ·downto 0); efaf30 ········ADDR_KEY1 ·····¤: out ···std_logic_vector(6 ·downto 0); cf78be ········ADDR_KEY2 ·····¤: out ···std_logic_vector(6 ·downto 0); a835c4 ········ADDR_KEY3 ·····¤: out ···std_logic_vector(6 ·downto 0); 34dfb3 ········ADDR_KEY4 ·····¤: out ···std_logic_vector(6 ·downto 0); b292c9 ········ADDR_KEY5 ·····¤: out ···std_logic_vector(6 ·downto 0); e54547 ········ADDR_KEY6 ·····¤: out ···std_logic_vector(6 ·downto 0); 3f083d ········ADDR_KEY7 ·····¤: out ···std_logic_vector(6 ·downto 0); 8b99b8 ········ADDR_KEY8 ·····¤: out ···std_logic_vector(6 ·downto 0); 46d4c2 ········ADDR_KEY9 ·····¤: out ···std_logic_vector(6 ·downto 0); 0d593c ········ADDR_KEY10 ····¤: out ···std_logic_vector(6 ·downto 0); a25f83 ········ADDR_KEY11 ····¤: out ···std_logic_vector(6 ·downto 0); 6a5442 ········ADDR_KEY12 ····¤: out ···std_logic_vector(6 ·downto 0); fd52fd ········ADDR_KEY13 ····¤: out ···std_logic_vector(6 ·downto 0); 2b43c0 ········ADDR_KEY14 ····¤: out ···std_logic_vector(6 ·downto 0); 98457f ········ADDR_KEY15 ····¤: out ···std_logic_vector(6 ·downto 0); b44ebe ········ADDR_KEY16 ····¤: out ···std_logic_vector(6 ·downto 0); b94801 ········ADDR_KEY17 ····¤: out ···std_logic_vector(6 ·downto 0); 1a6cc4 ········ADDR_KEY18 ····¤: out ···std_logic_vector(6 ·downto 0); d66a7b ········ADDR_KEY19 ····¤: out ···std_logic_vector(6 ·downto 0); 638eb2 ········ADDR_KEY20 ····¤: out ···std_logic_vector(6 ·downto 0); ca880d ········ADDR_KEY21 ····¤: out ···std_logic_vector(6 ·downto 0); ae83cc ········ADDR_KEY22 ····¤: out ···std_logic_vector(6 ·downto 0); d58573 ········ADDR_KEY23 ····¤: out ···std_logic_vector(6 ·downto 0); ba19f8 ········DATAI ······¤ : in ····std_logic_vector(7 downto 0) 61737c ····); 56af5a 83af5a aae532 end ADDR_KEY; e6af5a e35356 -------------------------------------------------------------------------------- 337e4e architecture beh of ADDR_KEY is 455356 -------------------------------------------------------------------------------- a5af5a a50f89 begin fed83c · 27337d ADDR_KEY0(0) <= ·'1' when ((ADDR = ·"01000000") and (CHIP_EN = '1') and (ADDSEL¶ 128ba3 2 = '0')) else '0'; 9b8baa ADDR_KEY0(1) <= ·'1' when ((ADDR = ·"01000001") and (CHIP_EN = '1') and (ADDSEL¶ 8d8ba3 2 = '0')) else '0'; 209ca5 ADDR_KEY0(2) <= ·'1' when ((ADDR = ·"01000010") and (CHIP_EN = '1') and (ADDSEL¶ b28ba3 2 = '0')) else '0'; c72472 ADDR_KEY0(3) <= ·'1' when ((ADDR = ·"01000011") and (CHIP_EN = '1') and (ADDSEL¶ a68ba3 2 = '0')) else '0'; 3e73b3 ADDR_KEY0(4) <= ·'1' when ((ADDR = ·"01000100") and (CHIP_EN = '1') and (ADDSEL¶ 258ba3 2 = '0')) else '0'; 89cb64 ADDR_KEY0(5) <= ·'1' when ((ADDR = ·"01000101") and (CHIP_EN = '1') and (ADDSEL¶ 388ba3 2 = '0')) else '0'; 74dc6b ADDR_KEY0(6) <= ·'1' when ((ADDR = ·"01000110") and (CHIP_EN = '1') and (ADDSEL¶ fa8ba3 2 = '0')) else '0'; d3af5a e65c59 ADDR_KEY1(0) <= ·'1' when ((ADDR = ·"01001000") and (CHIP_EN = '1') and (ADDSEL¶ fc8ba3 2 = '0')) else '0'; 76e48e ADDR_KEY1(1) <= ·'1' when ((ADDR = ·"01001001") and (CHIP_EN = '1') and (ADDSEL¶ 6b8ba3 2 = '0')) else '0'; --35c1 0004198492480030001 Page 2 of addr_key.vhd bcf381 ADDR_KEY1(2) <= ·'1' when ((ADDR = ·"01001010") and (CHIP_EN = '1') and (ADDSEL¶ 858ba3 2 = '0')) else '0'; a84b56 ADDR_KEY1(3) <= ·'1' when ((ADDR = ·"01001011") and (CHIP_EN = '1') and (ADDSEL¶ de8ba3 2 = '0')) else '0'; 6e1c97 ADDR_KEY1(4) <= ·'1' when ((ADDR = ·"01001100") and (CHIP_EN = '1') and (ADDSEL¶ 0a8ba3 2 = '0')) else '0'; c0a440 ADDR_KEY1(5) <= ·'1' when ((ADDR = ·"01001101") and (CHIP_EN = '1') and (ADDSEL¶ 0d8ba3 2 = '0')) else '0'; 16b34f ADDR_KEY1(6) <= ·'1' when ((ADDR = ·"01001110") and (CHIP_EN = '1') and (ADDSEL¶ 068ba3 2 = '0')) else '0'; deaf5a 096f96 ADDR_KEY2(0) <= ·'1' when ((ADDR = ·"01010000") and (CHIP_EN = '1') and (ADDSEL¶ a18ba3 2 = '0')) else '0'; 49d741 ADDR_KEY2(1) <= ·'1' when ((ADDR = ·"01010001") and (CHIP_EN = '1') and (ADDSEL¶ c48ba3 2 = '0')) else '0'; 5fc04e ADDR_KEY2(2) <= ·'1' when ((ADDR = ·"01010010") and (CHIP_EN = '1') and (ADDSEL¶ d08ba3 2 = '0')) else '0'; 747899 ADDR_KEY2(3) <= ·'1' when ((ADDR = ·"01010011") and (CHIP_EN = '1') and (ADDSEL¶ a38ba3 2 = '0')) else '0'; 682f58 ADDR_KEY2(4) <= ·'1' when ((ADDR = ·"01010100") and (CHIP_EN = '1') and (ADDSEL¶ ed8ba3 2 = '0')) else '0'; a1978f ADDR_KEY2(5) <= ·'1' when ((ADDR = ·"01010101") and (CHIP_EN = '1') and (ADDSEL¶ 528ba3 2 = '0')) else '0'; dd8080 ADDR_KEY2(6) <= ·'1' when ((ADDR = ·"01010110") and (CHIP_EN = '1') and (ADDSEL¶ 538ba3 2 = '0')) else '0'; c5af5a dd00b2 ADDR_KEY3(0) <= ·'1' when ((ADDR = ·"01011000") and (CHIP_EN = '1') and (ADDSEL¶ 0f8ba3 2 = '0')) else '0'; bab865 ADDR_KEY3(1) <= ·'1' when ((ADDR = ·"01011001") and (CHIP_EN = '1') and (ADDSEL¶ aa8ba3 2 = '0')) else '0'; 17af6a ADDR_KEY3(2) <= ·'1' when ((ADDR = ·"01011010") and (CHIP_EN = '1') and (ADDSEL¶ 318ba3 2 = '0')) else '0'; 7d17bd ADDR_KEY3(3) <= ·'1' when ((ADDR = ·"01011011") and (CHIP_EN = '1') and (ADDSEL¶ b88ba3 2 = '0')) else '0'; 8b407c ADDR_KEY3(4) <= ·'1' when ((ADDR = ·"01011100") and (CHIP_EN = '1') and (ADDSEL¶ f68ba3 2 = '0')) else '0'; 24f8ab ADDR_KEY3(5) <= ·'1' when ((ADDR = ·"01011101") and (CHIP_EN = '1') and (ADDSEL¶ 7c8ba3 2 = '0')) else '0'; dfefa4 ADDR_KEY3(6) <= ·'1' when ((ADDR = ·"01011110") and (CHIP_EN = '1') and (ADDSEL¶ bb8ba3 2 = '0')) else '0'; 46af5a b81db8 ADDR_KEY4(0) <= ·'1' when ((ADDR = ·"01100000") and (CHIP_EN = '1') and (ADDSEL¶ 378ba3 2 = '0')) else '0'; 12a56f ADDR_KEY4(1) <= ·'1' when ((ADDR = ·"01100001") and (CHIP_EN = '1') and (ADDSEL¶ 7e8ba3 2 = '0')) else '0'; eeb260 ADDR_KEY4(2) <= ·'1' when ((ADDR = ·"01100010") and (CHIP_EN = '1') and (ADDSEL¶ f28ba3 2 = '0')) else '0'; bb0ab7 ADDR_KEY4(3) <= ·'1' when ((ADDR = ·"01100011") and (CHIP_EN = '1') and (ADDSEL¶ 178ba3 2 = '0')) else '0'; b55d76 ADDR_KEY4(4) <= ·'1' when ((ADDR = ·"01100100") and (CHIP_EN = '1') and (ADDSEL¶ 118ba3 2 = '0')) else '0'; e4e5a1 ADDR_KEY4(5) <= ·'1' when ((ADDR = ·"01100101") and (CHIP_EN = '1') and (ADDSEL¶ 4a8ba3 2 = '0')) else '0'; 93f2ae ADDR_KEY4(6) <= ·'1' when ((ADDR = ·"01100110") and (CHIP_EN = '1') and (ADDSEL¶ a68ba3 2 = '0')) else '0'; 5eaf5a 81fd36 ADDR_KEY5(0) <=¤ '1' when ((ADDR = ·"01101000") and (CHIP_EN = '1') and (ADDSEL¶ e08ba3 2 = '0')) else '0'; 7245e1 ADDR_KEY5(1) <=¤ '1' when ((ADDR = ·"01101001") and (CHIP_EN = '1') and (ADDSEL¶ 918ba3 2 = '0')) else '0'; cb52ee ADDR_KEY5(2) <=¤ '1' when ((ADDR = ·"01101010") and (CHIP_EN = '1') and (ADDSEL¶ 398ba3 2 = '0')) else '0'; d7ea39 ADDR_KEY5(3) <=¤ '1' when ((ADDR = ·"01101011") and (CHIP_EN = '1') and (ADDSEL¶ d48ba3 2 = '0')) else '0'; dcbdf8 ADDR_KEY5(4) <=¤ '1' when ((ADDR = ·"01101100") and (CHIP_EN = '1') and (ADDSEL¶ 818ba3 2 = '0')) else '0'; 0e052f ADDR_KEY5(5) <=¤ '1' when ((ADDR = ·"01101101") and (CHIP_EN = '1') and (ADDSEL¶ f08ba3 2 = '0')) else '0'; e41220 ADDR_KEY5(6) <=¤ '1' when ((ADDR = ·"01101110") and (CHIP_EN = '1') and (ADDSEL¶ 9e8ba3 2 = '0')) else '0'; 61af5a 41cef9 ADDR_KEY6(0) <=¤ '1' when ((ADDR = ·"01110000") and (CHIP_EN = '1') and (ADDSEL¶ --4472 0008b773b2580030001 Page 3 of addr_key.vhd 128ba3 2 = '0')) else '0'; b2762e ADDR_KEY6(1) <=¤ '1' when ((ADDR = ·"01110001") and (CHIP_EN = '1') and (ADDSEL¶ 378ba3 2 = '0')) else '0'; f56121 ADDR_KEY6(2) <=¤ '1' when ((ADDR = ·"01110010") and (CHIP_EN = '1') and (ADDSEL¶ c98ba3 2 = '0')) else '0'; 4ed9f6 ADDR_KEY6(3) <=¤ '1' when ((ADDR = ·"01110011") and (CHIP_EN = '1') and (ADDSEL¶ 8e8ba3 2 = '0')) else '0'; 6b8e37 ADDR_KEY6(4) <=¤ '1' when ((ADDR = ·"01110100") and (CHIP_EN = '1') and (ADDSEL¶ 508ba3 2 = '0')) else '0'; 5136e0 ADDR_KEY6(5) <=¤ '1' when ((ADDR = ·"01110101") and (CHIP_EN = '1') and (ADDSEL¶ c28ba3 2 = '0')) else '0'; a021ef ADDR_KEY6(6) <=¤ '1' when ((ADDR = ·"01110110") and (CHIP_EN = '1') and (ADDSEL¶ 748ba3 2 = '0')) else '0'; 6faf5a 9ea1dd ADDR_KEY7(0) <=¤ '1' when ((ADDR = ·"01111000") and (CHIP_EN = '1') and (ADDSEL¶ 1f8ba3 2 = '0')) else '0'; d9190a ADDR_KEY7(1) <=¤ '1' when ((ADDR = ·"01111001") and (CHIP_EN = '1') and (ADDSEL¶ cb8ba3 2 = '0')) else '0'; df0e05 ADDR_KEY7(2) <=¤ '1' when ((ADDR = ·"01111010") and (CHIP_EN = '1') and (ADDSEL¶ 908ba3 2 = '0')) else '0'; fdb6d2 ADDR_KEY7(3) <=¤ '1' when ((ADDR = ·"01111011") and (CHIP_EN = '1') and (ADDSEL¶ 8d8ba3 2 = '0')) else '0'; 4be113 ADDR_KEY7(4) <=¤ '1' when ((ADDR = ·"01111100") and (CHIP_EN = '1') and (ADDSEL¶ c98ba3 2 = '0')) else '0'; f859c4 ADDR_KEY7(5) <=¤ '1' when ((ADDR = ·"01111101") and (CHIP_EN = '1') and (ADDSEL¶ 508ba3 2 = '0')) else '0'; 1f4ecb ADDR_KEY7(6) <=¤ '1' when ((ADDR = ·"01111110") and (CHIP_EN = '1') and (ADDSEL¶ fe8ba3 2 = '0')) else '0'; 86af5a 824397 ADDR_KEY8(0) <=¤ '1' when ((ADDR = ·"10000000") and (CHIP_EN = '1') and (ADDSEL¶ 178ba3 2 = '0')) else '0'; 39fb40 ADDR_KEY8(1) <=¤ '1' when ((ADDR = ·"10000001") and (CHIP_EN = '1') and (ADDSEL¶ 768ba3 2 = '0')) else '0'; e9ec4f ADDR_KEY8(2) <=¤ '1' when ((ADDR = ·"10000010") and (CHIP_EN = '1') and (ADDSEL¶ c18ba3 2 = '0')) else '0'; 575498 ADDR_KEY8(3) <=¤ '1' when ((ADDR = ·"10000011") and (CHIP_EN = '1') and (ADDSEL¶ ff8ba3 2 = '0')) else '0'; 720359 ADDR_KEY8(4) <=¤ '1' when ((ADDR = ·"10000100") and (CHIP_EN = '1') and (ADDSEL¶ d58ba3 2 = '0')) else '0'; 28bb8e ADDR_KEY8(5) <=¤ '1' when ((ADDR = ·"10000101") and (CHIP_EN = '1') and (ADDSEL¶ 998ba3 2 = '0')) else '0'; 1cac81 ADDR_KEY8(6) <=¤ '1' when ((ADDR = ·"10000110") and (CHIP_EN = '1') and (ADDSEL¶ 288ba3 2 = '0')) else '0'; 6daf5a af2cb3 ADDR_KEY9(0) <=¤ '1' when ((ADDR = ·"10001000") and (CHIP_EN = '1') and (ADDSEL¶ 498ba3 2 = '0')) else '0'; 389464 ADDR_KEY9(1) <=¤ '1' when ((ADDR = ·"10001001") and (CHIP_EN = '1') and (ADDSEL¶ cc8ba3 2 = '0')) else '0'; 17836b ADDR_KEY9(2) <=¤ '1' when ((ADDR = ·"10001010") and (CHIP_EN = '1') and (ADDSEL¶ 7d8ba3 2 = '0')) else '0'; 673bbc ADDR_KEY9(3) <=¤ '1' when ((ADDR = ·"10001011") and (CHIP_EN = '1') and (ADDSEL¶ f68ba3 2 = '0')) else '0'; 1f6c7d ADDR_KEY9(4) <=¤ '1' when ((ADDR = ·"10001100") and (CHIP_EN = '1') and (ADDSEL¶ d98ba3 2 = '0')) else '0'; e9d4aa ADDR_KEY9(5) <=¤ '1' when ((ADDR = ·"10001101") and (CHIP_EN = '1') and (ADDSEL¶ c58ba3 2 = '0')) else '0'; afc3a5 ADDR_KEY9(6) <=¤ '1' when ((ADDR = ·"10001110") and (CHIP_EN = '1') and (ADDSEL¶ 558ba3 2 = '0')) else '0'; 32af5a 428dee ADDR_KEY10(0) <= '1' when ((ADDR = ·"10010000") and (CHIP_EN = '1') and (ADDSEL¶ bd8ba3 2 = '0')) else '0'; feaf93 ADDR_KEY10(1) <= '1' when ((ADDR = ·"10010001") and (CHIP_EN = '1') and (ADDSEL¶ c18ba3 2 = '0')) else '0'; 4d1f73 ADDR_KEY10(2) <= '1' when ((ADDR = ·"10010010") and (CHIP_EN = '1') and (ADDSEL¶ cb8ba3 2 = '0')) else '0'; 953d0e ADDR_KEY10(3) <= '1' when ((ADDR = ·"10010011") and (CHIP_EN = '1') and (ADDSEL¶ 1f8ba3 2 = '0')) else '0'; d7b7aa ADDR_KEY10(4) <= '1' when ((ADDR = ·"10010100") and (CHIP_EN = '1') and (ADDSEL¶ 458ba3 2 = '0')) else '0'; 2a95d7 ADDR_KEY10(5) <= '1' when ((ADDR = ·"10010101") and (CHIP_EN = '1') and (ADDSEL¶ 198ba3 2 = '0')) else '0'; 8b2537 ADDR_KEY10(6) <= '1' when ((ADDR = ·"10010110") and (CHIP_EN = '1') and (ADDSEL¶ --8378 000d61250cd80030001 Page 4 of addr_key.vhd 128ba3 2 = '0')) else '0'; 1eaf5a 678b96 ADDR_KEY11(0) <= '1' when ((ADDR = ·"10011000") and (CHIP_EN = '1') and (ADDSEL¶ 2d8ba3 2 = '0')) else '0'; 5da9eb ADDR_KEY11(1) <= '1' when ((ADDR = ·"10011001") and (CHIP_EN = '1') and (ADDSEL¶ 3d8ba3 2 = '0')) else '0'; 71190b ADDR_KEY11(2) <= '1' when ((ADDR = ·"10011010") and (CHIP_EN = '1') and (ADDSEL¶ bc8ba3 2 = '0')) else '0'; a93b76 ADDR_KEY11(3) <= '1' when ((ADDR = ·"10011011") and (CHIP_EN = '1') and (ADDSEL¶ 418ba3 2 = '0')) else '0'; 7fb1d2 ADDR_KEY11(4) <= '1' when ((ADDR = ·"10011100") and (CHIP_EN = '1') and (ADDSEL¶ 828ba3 2 = '0')) else '0'; 1893af ADDR_KEY11(5) <= '1' when ((ADDR = ·"10011101") and (CHIP_EN = '1') and (ADDSEL¶ 868ba3 2 = '0')) else '0'; fc234f ADDR_KEY11(6) <= '1' when ((ADDR = ·"10011110") and (CHIP_EN = '1') and (ADDSEL¶ 628ba3 2 = '0')) else '0'; e3af5a 5ba111 ADDR_KEY12(0) <= '1' when ((ADDR = ·"10100000") and (CHIP_EN = '1') and (ADDSEL¶ 2e8ba3 2 = '0')) else '0'; 94836c ADDR_KEY12(1) <= '1' when ((ADDR = ·"10100001") and (CHIP_EN = '1') and (ADDSEL¶ 918ba3 2 = '0')) else '0'; 3d338c ADDR_KEY12(2) <= '1' when ((ADDR = ·"10100010") and (CHIP_EN = '1') and (ADDSEL¶ da8ba3 2 = '0')) else '0'; f211f1 ADDR_KEY12(3) <= '1' when ((ADDR = ·"10100011") and (CHIP_EN = '1') and (ADDSEL¶ 328ba3 2 = '0')) else '0'; 259b55 ADDR_KEY12(4) <= '1' when ((ADDR = ·"10100100") and (CHIP_EN = '1') and (ADDSEL¶ 1d8ba3 2 = '0')) else '0'; 4fb928 ADDR_KEY12(5) <= '1' when ((ADDR = ·"10100101") and (CHIP_EN = '1') and (ADDSEL¶ 208ba3 2 = '0')) else '0'; bf09c8 ADDR_KEY12(6) <= '1' when ((ADDR = ·"10100110") and (CHIP_EN = '1') and (ADDSEL¶ 7f8ba3 2 = '0')) else '0'; beaf5a f9a769 ADDR_KEY13(0) <= '1' when ((ADDR = ·"10101000") and (CHIP_EN = '1') and (ADDSEL¶ 298ba3 2 = '0')) else '0'; e48514 ADDR_KEY13(1) <= '1' when ((ADDR = ·"10101001") and (CHIP_EN = '1') and (ADDSEL¶ 4e8ba3 2 = '0')) else '0'; 9c35f4 ADDR_KEY13(2) <= '1' when ((ADDR = ·"10101010") and (CHIP_EN = '1') and (ADDSEL¶ b28ba3 2 = '0')) else '0'; 411789 ADDR_KEY13(3) <= '1' when ((ADDR = ·"10101011") and (CHIP_EN = '1') and (ADDSEL¶ 6e8ba3 2 = '0')) else '0'; 0e9d2d ADDR_KEY13(4) <= '1' when ((ADDR = ·"10101100") and (CHIP_EN = '1') and (ADDSEL¶ bf8ba3 2 = '0')) else '0'; c5bf50 ADDR_KEY13(5) <= '1' when ((ADDR = ·"10101101") and (CHIP_EN = '1') and (ADDSEL¶ 8c8ba3 2 = '0')) else '0'; 7b0fb0 ADDR_KEY13(6) <= '1' when ((ADDR = ·"10101110") and (CHIP_EN = '1') and (ADDSEL¶ 798ba3 2 = '0')) else '0'; b3af5a 8d0e4a ADDR_KEY14(0) <= '1' when ((ADDR = ·"10110000") and (CHIP_EN = '1') and (ADDSEL¶ a98ba3 2 = '0')) else '0'; 8d2c37 ADDR_KEY14(1) <= '1' when ((ADDR = ·"10110001") and (CHIP_EN = '1') and (ADDSEL¶ 608ba3 2 = '0')) else '0'; ac9cd7 ADDR_KEY14(2) <= '1' when ((ADDR = ·"10110010") and (CHIP_EN = '1') and (ADDSEL¶ 9b8ba3 2 = '0')) else '0'; 2abeaa ADDR_KEY14(3) <= '1' when ((ADDR = ·"10110011") and (CHIP_EN = '1') and (ADDSEL¶ c08ba3 2 = '0')) else '0'; 9b340e ADDR_KEY14(4) <= '1' when ((ADDR = ·"10110100") and (CHIP_EN = '1') and (ADDSEL¶ ef8ba3 2 = '0')) else '0'; a51673 ADDR_KEY14(5) <= '1' when ((ADDR = ·"10110101") and (CHIP_EN = '1') and (ADDSEL¶ 948ba3 2 = '0')) else '0'; eca693 ADDR_KEY14(6) <= '1' when ((ADDR = ·"10110110") and (CHIP_EN = '1') and (ADDSEL¶ e08ba3 2 = '0')) else '0'; 52af5a 990832 ADDR_KEY15(0) <= '1' when ((ADDR = ·"10111000") and (CHIP_EN = '1') and (ADDSEL¶ 1c8ba3 2 = '0')) else '0'; 702a4f ADDR_KEY15(1) <= '1' when ((ADDR = ·"10111001") and (CHIP_EN = '1') and (ADDSEL¶ 478ba3 2 = '0')) else '0'; 5c9aaf ADDR_KEY15(2) <= '1' when ((ADDR = ·"10111010") and (CHIP_EN = '1') and (ADDSEL¶ d78ba3 2 = '0')) else '0'; 94b8d2 ADDR_KEY15(3) <= '1' when ((ADDR = ·"10111011") and (CHIP_EN = '1') and (ADDSEL¶ 4e8ba3 2 = '0')) else '0'; a83276 ADDR_KEY15(4) <= '1' when ((ADDR = ·"10111100") and (CHIP_EN = '1') and (ADDSEL¶ d68ba3 2 = '0')) else '0'; --2e62 000ddaca1ad80030001 Page 5 of addr_key.vhd 24100b ADDR_KEY15(5) <= '1' when ((ADDR = ·"10111101") and (CHIP_EN = '1') and (ADDSEL¶ e98ba3 2 = '0')) else '0'; b0a0eb ADDR_KEY15(6) <= '1' when ((ADDR = ·"10111110") and (CHIP_EN = '1') and (ADDSEL¶ 448ba3 2 = '0')) else '0'; e8af5a e24d71 ADDR_KEY16(0) <= '1' when ((ADDR = ·"11000000") and (CHIP_EN = '1') and (ADDSEL¶ a58ba3 2 = '0')) else '0'; 486f0c ADDR_KEY16(1) <= '1' when ((ADDR = ·"11000001") and (CHIP_EN = '1') and (ADDSEL¶ 888ba3 2 = '0')) else '0'; 83dfec ADDR_KEY16(2) <= '1' when ((ADDR = ·"11000010") and (CHIP_EN = '1') and (ADDSEL¶ 568ba3 2 = '0')) else '0'; bbfd91 ADDR_KEY16(3) <= '1' when ((ADDR = ·"11000011") and (CHIP_EN = '1') and (ADDSEL¶ 388ba3 2 = '0')) else '0'; 0f7735 ADDR_KEY16(4) <= '1' when ((ADDR = ·"11000100") and (CHIP_EN = '1') and (ADDSEL¶ f18ba3 2 = '0')) else '0'; a85548 ADDR_KEY16(5) <= '1' when ((ADDR = ·"11000101") and (CHIP_EN = '1') and (ADDSEL¶ 578ba3 2 = '0')) else '0'; 84e5a8 ADDR_KEY16(6) <= '1' when ((ADDR = ·"11000110") and (CHIP_EN = '1') and (ADDSEL¶ 038ba3 2 = '0')) else '0'; 08af5a 554b09 ADDR_KEY17(0) <= '1' when ((ADDR = ·"11001000") and (CHIP_EN = '1') and (ADDSEL¶ 9f8ba3 2 = '0')) else '0'; 6b6974 ADDR_KEY17(1) <= '1' when ((ADDR = ·"11001001") and (CHIP_EN = '1') and (ADDSEL¶ 388ba3 2 = '0')) else '0'; 40d994 ADDR_KEY17(2) <= '1' when ((ADDR = ·"11001010") and (CHIP_EN = '1') and (ADDSEL¶ 308ba3 2 = '0')) else '0'; 4cfbe9 ADDR_KEY17(3) <= '1' when ((ADDR = ·"11001011") and (CHIP_EN = '1') and (ADDSEL¶ 4a8ba3 2 = '0')) else '0'; 1f714d ADDR_KEY17(4) <= '1' when ((ADDR = ·"11001100") and (CHIP_EN = '1') and (ADDSEL¶ 208ba3 2 = '0')) else '0'; 4e5330 ADDR_KEY17(5) <= '1' when ((ADDR = ·"11001101") and (CHIP_EN = '1') and (ADDSEL¶ 138ba3 2 = '0')) else '0'; bbe3d0 ADDR_KEY17(6) <= '1' when ((ADDR = ·"11001110") and (CHIP_EN = '1') and (ADDSEL¶ 688ba3 2 = '0')) else '0'; 32af5a 09a03a ADDR_KEY18(0) <= '1' when ((ADDR = ·"11010000") and (CHIP_EN = '1') and (ADDSEL¶ f58ba3 2 = '0')) else '0'; 888247 ADDR_KEY18(1) <= '1' when ((ADDR = ·"11010001") and (CHIP_EN = '1') and (ADDSEL¶ e18ba3 2 = '0')) else '0'; da32a7 ADDR_KEY18(2) <= '1' when ((ADDR = ·"11010010") and (CHIP_EN = '1') and (ADDSEL¶ 3f8ba3 2 = '0')) else '0'; 3610da ADDR_KEY18(3) <= '1' when ((ADDR = ·"11010011") and (CHIP_EN = '1') and (ADDSEL¶ 648ba3 2 = '0')) else '0'; a99a7e ADDR_KEY18(4) <= '1' when ((ADDR = ·"11010100") and (CHIP_EN = '1') and (ADDSEL¶ ad8ba3 2 = '0')) else '0'; deb803 ADDR_KEY18(5) <= '1' when ((ADDR = ·"11010101") and (CHIP_EN = '1') and (ADDSEL¶ c88ba3 2 = '0')) else '0'; 1608e3 ADDR_KEY18(6) <= '1' when ((ADDR = ·"11010110") and (CHIP_EN = '1') and (ADDSEL¶ c48ba3 2 = '0')) else '0'; b9af5a 66a642 ADDR_KEY19(0) <= '1' when ((ADDR = ·"11011000") and (CHIP_EN = '1') and (ADDSEL¶ be8ba3 2 = '0')) else '0'; 17843f ADDR_KEY19(1) <= '1' when ((ADDR = ·"11011001") and (CHIP_EN = '1') and (ADDSEL¶ 678ba3 2 = '0')) else '0'; 7d34df ADDR_KEY19(2) <= '1' when ((ADDR = ·"11011010") and (CHIP_EN = '1') and (ADDSEL¶ 8e8ba3 2 = '0')) else '0'; 1616a2 ADDR_KEY19(3) <= '1' when ((ADDR = ·"11011011") and (CHIP_EN = '1') and (ADDSEL¶ 278ba3 2 = '0')) else '0'; 089c06 ADDR_KEY19(4) <= '1' when ((ADDR = ·"11011100") and (CHIP_EN = '1') and (ADDSEL¶ e48ba3 2 = '0')) else '0'; 71be7b ADDR_KEY19(5) <= '1' when ((ADDR = ·"11011101") and (CHIP_EN = '1') and (ADDSEL¶ 748ba3 2 = '0')) else '0'; bc0e9b ADDR_KEY19(6) <= '1' when ((ADDR = ·"11011110") and (CHIP_EN = '1') and (ADDSEL¶ 6d8ba3 2 = '0')) else '0'; 88af5a 7a7d73 ADDR_KEY20(0) <= '1' when ((ADDR = ·"11100000") and (CHIP_EN = '1') and (ADDSEL¶ ac8ba3 2 = '0')) else '0'; 8f5f0e ADDR_KEY20(1) <= '1' when ((ADDR = ·"11100001") and (CHIP_EN = '1') and (ADDSEL¶ 578ba3 2 = '0')) else '0'; 64efee ADDR_KEY20(2) <= '1' when ((ADDR = ·"11100010") and (CHIP_EN = '1') and (ADDSEL¶ f48ba3 2 = '0')) else '0'; ddcd93 ADDR_KEY20(3) <= '1' when ((ADDR = ·"11100011") and (CHIP_EN = '1') and (ADDSEL¶ --e4fc 0017e2d76cd80030001 Page 6 of addr_key.vhd 128ba3 2 = '0')) else '0'; fe4737 ADDR_KEY20(4) <= '1' when ((ADDR = ·"11100100") and (CHIP_EN = '1') and (ADDSEL¶ e68ba3 2 = '0')) else '0'; 6e654a ADDR_KEY20(5) <= '1' when ((ADDR = ·"11100101") and (CHIP_EN = '1') and (ADDSEL¶ 7e8ba3 2 = '0')) else '0'; 52d5aa ADDR_KEY20(6) <= '1' when ((ADDR = ·"11100110") and (CHIP_EN = '1') and (ADDSEL¶ 878ba3 2 = '0')) else '0'; 34af5a b97b0b ADDR_KEY21(0) <= '1' when ((ADDR = ·"11101000") and (CHIP_EN = '1') and (ADDSEL¶ 4c8ba3 2 = '0')) else '0'; 7a5976 ADDR_KEY21(1) <= '1' when ((ADDR = ·"11101001") and (CHIP_EN = '1') and (ADDSEL¶ d88ba3 2 = '0')) else '0'; aae996 ADDR_KEY21(2) <= '1' when ((ADDR = ·"11101010") and (CHIP_EN = '1') and (ADDSEL¶ b58ba3 2 = '0')) else '0'; 53cbeb ADDR_KEY21(3) <= '1' when ((ADDR = ·"11101011") and (CHIP_EN = '1') and (ADDSEL¶ 618ba3 2 = '0')) else '0'; 9d414f ADDR_KEY21(4) <= '1' when ((ADDR = ·"11101100") and (CHIP_EN = '1') and (ADDSEL¶ 7d8ba3 2 = '0')) else '0'; fb6332 ADDR_KEY21(5) <= '1' when ((ADDR = ·"11101101") and (CHIP_EN = '1') and (ADDSEL¶ 918ba3 2 = '0')) else '0'; 36d3d2 ADDR_KEY21(6) <= '1' when ((ADDR = ·"11101110") and (CHIP_EN = '1') and (ADDSEL¶ 2f8ba3 2 = '0')) else '0'; f4af5a 8af320 ADDR_KEY22(0) <= '1' when ((ADDR = ·"11110000") and (CHIP_EN = '1') and (ADDSEL¶ 5d8ba3 2 = '0')) else '0'; 74d15d ADDR_KEY22(1) <= '1' when ((ADDR = ·"11110001") and (CHIP_EN = '1') and (ADDSEL¶ b78ba3 2 = '0')) else '0'; db61bd ADDR_KEY22(2) <= '1' when ((ADDR = ·"11110010") and (CHIP_EN = '1') and (ADDSEL¶ c88ba3 2 = '0')) else '0'; ef43c0 ADDR_KEY22(3) <= '1' when ((ADDR = ·"11110011") and (CHIP_EN = '1') and (ADDSEL¶ c18ba3 2 = '0')) else '0'; 19c964 ADDR_KEY22(4) <= '1' when ((ADDR = ·"11110100") and (CHIP_EN = '1') and (ADDSEL¶ 238ba3 2 = '0')) else '0'; f0eb19 ADDR_KEY22(5) <= '1' when ((ADDR = ·"11110101") and (CHIP_EN = '1') and (ADDSEL¶ db8ba3 2 = '0')) else '0'; d05bf9 ADDR_KEY22(6) <= '1' when ((ADDR = ·"11110110") and (CHIP_EN = '1') and (ADDSEL¶ 038ba3 2 = '0')) else '0'; fcaf5a 91f558 ADDR_KEY23(0) <= '1' when ((ADDR = ·"11111000") and (CHIP_EN = '1') and (ADDSEL¶ c18ba3 2 = '0')) else '0'; 78d725 ADDR_KEY23(1) <= '1' when ((ADDR = ·"11111001") and (CHIP_EN = '1') and (ADDSEL¶ 288ba3 2 = '0')) else '0'; 6467c5 ADDR_KEY23(2) <= '1' when ((ADDR = ·"11111010") and (CHIP_EN = '1') and (ADDSEL¶ 178ba3 2 = '0')) else '0'; c345b8 ADDR_KEY23(3) <= '1' when ((ADDR = ·"11111011") and (CHIP_EN = '1') and (ADDSEL¶ d48ba3 2 = '0')) else '0'; c5cf1c ADDR_KEY23(4) <= '1' when ((ADDR = ·"11111100") and (CHIP_EN = '1') and (ADDSEL¶ bd8ba3 2 = '0')) else '0'; 78ed61 ADDR_KEY23(5) <= '1' when ((ADDR = ·"11111101") and (CHIP_EN = '1') and (ADDSEL¶ b78ba3 2 = '0')) else '0'; c65d81 ADDR_KEY23(6) <= '1' when ((ADDR = ·"11111110") and (CHIP_EN = '1') and (ADDSEL¶ 348ba3 2 = '0')) else '0'; 7faf5a 605356 -------------------------------------------------------------------------------- c0b08a end beh; 9c5356 -------------------------------------------------------------------------------- 7eaf5a --f530 0001ae1063b80030002 Page 1 of des.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· bf8d0a -- Date ···········: ·09/27/97 ································· b4d6cd -- Description¤ ···: ·Left and Right 32-bit registers ·············· a5625a -- ----------------------------------------------------------------------------- aa7faf library ieee; 5211e9 use IEEE.std_logic_1164.all; cada83 use IEEE.std_logic_arith.all; 77e105 use IEEE.std_logic_unsigned.all; df625a -- ----------------------------------------------------------------------------- 4d7373 entity MESG is a7af5a e1c57e port( ··CLK ·¤ ···¤ : in ····std_logic; 363f61 ········RST_N ·¤ ··¤ : in ····std_logic; d21689 ········START¤ ···¤ : in ····std_logic; fd4f77 ¤ DONE ····¤ : in ····std_logic; e91049 ¤ MESSAGE ····¤ : in ····std_logic_vector(63 downto 0); ea38ba ¤ SUBKEY ····¤ : in ····std_logic_vector(47 downto 0); b1a256 ·······¤RESULT ··¤ : out ···std_logic_vector(63 downto 0) dd737c ····); a9af5a 735a26 end MESG; daaf5a be625a -- ----------------------------------------------------------------------------- 1e4170 architecture beh of MESG is c8625a -- ----------------------------------------------------------------------------- 4daf5a c739ea signal IP_KEY ··¤ : std_logic_vector(63 downto 0); 97e79c signal MESG_LEFT ¤ : std_logic_vector(31 downto 0); cf7187 signal MESG_RIGHT ¤ : std_logic_vector(31 downto 0); 02342b signal NEW_L ·¤ ¤ : std_logic_vector(31 downto 0); 1ea3a1 signal L ·····¤ ¤ : std_logic_vector(31 downto 0); 814d49 signal R ·····¤ ¤ : std_logic_vector(31 downto 0); e1d2c1 signal EXPANDED_R¤ : std_logic_vector(47 downto 0); 73178d signal X_KEY¤ ¤ : std_logic_vector(47 downto 0); b2deb0 signal S_OUT ··¤¤ : std_logic_vector(31 downto 0); 9e1cda signal FP_IN ¤ ¤ : std_logic_vector(63 downto 0); c90d80 signal FP_OUT ¤ ¤ : std_logic_vector(63 downto 0); ff907c signal P_IN ¤ ¤ : std_logic_vector(31 downto 0); b66db2 signal P_OUT ¤ ¤ : std_logic_vector(31 downto 0); ddaf5a f02f82 component EX f214be port( ·· 5913ef ········EX_IN ··········: in ···std_logic_vector(31 downto 0); d5f417 ········EX_OUT ·········: out ···std_logic_vector(47 downto 0)); b1e2c6 end component; 10af5a cc44e1 component IP f5cc6d port( 86b12b ········IP_IN ··········: in ····std_logic_vector(63 downto 0); 5e694d ········IP_OUT ·········: out ···std_logic_vector(63 downto 0)); f0e2c6 end component; 44af5a d00e26 component FP 36cc6d port( ed41a9 ········FP_IN ··········: in ····std_logic_vector(63 downto 0); 81cea7 ········FP_OUT ·········: out ···std_logic_vector(63 downto 0)); 18e2c6 end component; 6caf5a 8d6a7a component P 7ecc6d port( e4e2cc ········P_IN ··········: in ····std_logic_vector(31 downto 0); 80faaf ········P_OUT ·········: out ···std_logic_vector(31 downto 0)); 79e2c6 end component; 21af5a 028893 component S_TABLE 7b96b5 port( ·KEY ·······: in ····std_logic_vector(47 downto 0); 111046 ·······S_OUT ·····: out ···std_logic_vector(31 downto 0)); 32e2c6 end component; 87af5a 3b0f89 begin 1aaf5a --aaa2 00048aa879b80030002 Page 2 of des.vhd 7d0363 MESSAGE1: EX 8f7097 port map( ····· e5c895 ¤ EX_IN ··········=> R, e4f1b2 ······¤ EX_OUT ········¤=> EXPANDED_R);· 6eaf5a de647d MESSAGE2: IP b87097 port map( ····· f358db ¤ IP_IN ··········=> MESSAGE, 284c3d ······¤ IP_OUT ········¤=> IP_KEY);· ceaf5a 0a1b74 MESSAGE3: S_TABLE dd7097 port map( ····· 06527c ¤ KEY ··········¤ => X_KEY, 0a7ff2 ······¤ S_OUT ········¤ => S_OUT);· d6af5a fdc7d3 MESSAGE4: P 437097 port map( ····· 14299f ¤ P_IN ··········¤=> S_OUT, 5cf3c6 ······¤ P_OUT ········¤ => P_OUT);· 0faf5a afaf5a e8326b MESSAGE5: FP 307097 port map( ····· b191f5 ¤ FP_IN ··········=> FP_IN, c8be19 ······¤ FP_OUT ········¤=> FP_OUT);· 59af5a b2af5a cc625a -- ----------------------------------------------------------------------------- cf63c2 -- Split_to_LEFT_and_RIGHT: process(IP_KEY) 9b625a -- ----------------------------------------------------------------------------- 339acc -- begin cdd360 -- ¤ for i in 0 to 31 loop bd964e -- ¤ ····MESG_RIGHT(i) ¤ <= IP_KEY(i); 5ffb1b -- ¤ ····MESG_LEFT(i) ¤ <= IP_KEY(i+32); 913689 -- ¤ end loop; 0d55d2 -- end process Split_to_LEFT_and_RIGHT; 74af5a 191a19 MESG_RIGHT <= IP_KEY(31 downto 0); 7a284c MESG_LEFT ·<= IP_KEY(63 downto 32); b3625a -- ----------------------------------------------------------------------------- 726ec6 L_AND_R_REG_PR: process(RST_N,CLK) 74625a -- ----------------------------------------------------------------------------- 080f89 begin ac6118 if RST_N = '0' then 8ce37f ¤ L <= (others => '0'); 38ab45 ¤ R <= (others => '0'); a684bd elsif CLK'event and CLK = '1' then 560a81 if (START = '1') then e40d0d ¤ L <= MESG_LEFT; ff2134 ¤ R <= MESG_RIGHT; f9def1 else· f8afcf ¤ L <= R; 0a1c45 ¤ R <= NEW_L; b4df0b end if; addf0b end if; 9baf5a 6bb840 end process L_AND_R_REG_PR; a5af5a 0c625a -- ----------------------------------------------------------------------------- 1d9726 KEY_XOR_PR: process(SUBKEY,EXPANDED_R) 6e625a -- ----------------------------------------------------------------------------- 440f89 begin 0b13e9 ¤ for i in 0 to 47 loop e08bd9 ¤ ····X_KEY(i) ¤ <= SUBKEY(i) xor EXPANDED_R(i); 737aa9 ¤ end loop; 2fa96e end process KEY_XOR_PR; 2eaf5a a9625a -- ----------------------------------------------------------------------------- 9f5de9 L_XOR_PR: process(L,P_OUT) 6e625a -- ----------------------------------------------------------------------------- db0f89 begin 48d72a ¤ for i in 0 to 31 loop --eae4 000c6a93b2480030002 Page 3 of des.vhd 1c3971 ¤ ····NEW_L(i) ¤ <= L(i) xor P_OUT(i); 5a7aa9 ¤ end loop; 40a92f end process L_XOR_PR; afaf5a 50625a -- ----------------------------------------------------------------------------- 982ac6 -- Combine final L and R to FP 19625a -- ----------------------------------------------------------------------------- 74c45a ¤ FP_IN <= NEW_L(31 downto 0) & R(31 downto 0); 5eaf5a ad625a -- ----------------------------------------------------------------------------- 76a4c0 RESULT_PR: process(RST_N,CLK) 86625a -- ----------------------------------------------------------------------------- 040f89 begin e96118 if RST_N = '0' then beb369 ¤ RESULT <= (others => '0'); b684bd elsif CLK'event and CLK = '1' then 9a4eba if (DONE = '1') then 0e352f ¤ RESULT <= FP_OUT; ecdf0b end if; 5edf0b end if; 61af5a d402a3 end process RESULT_PR; 69af5a 05625a -- ----------------------------------------------------------------------------- d9b08a end beh; b9625a -- ----------------------------------------------------------------------------- 02af5a 8c7faf library ieee; 1711e9 use IEEE.std_logic_1164.all; d5da83 use IEEE.std_logic_arith.all; 8ae105 use IEEE.std_logic_unsigned.all; 78625a -- ----------------------------------------------------------------------------- d86749 entity DES is 36af5a 48c57e port( ··CLK ·¤ ···¤ : in ····std_logic; 223f61 ········RST_N ·¤ ··¤ : in ····std_logic; 1e1689 ········START¤ ···¤ : in ····std_logic; 921049 ¤ MESSAGE ····¤ : in ····std_logic_vector(63 downto 0); 1be2ae ¤ KEY ····¤ : in ····std_logic_vector(55 downto 0); c319f6 ¤ DONE ····¤ : out ····std_logic; 858cf6 ¤ CNT ····¤ : out ····std_logic_vector(4 downto 0); 65bde3 ·······¤DES_OUT ··¤ : out ···std_logic_vector(63 downto 0) a2737c ····); 2aaf5a 8ccbd8 end DES; 87af5a fa625a -- ----------------------------------------------------------------------------- 18ff4a architecture beh of DES is 31625a -- ----------------------------------------------------------------------------- 3b4ffd signal SUBKEY¤ ¤ : std_logic_vector(47 downto 0); 6b1864 signal DONE_BAK¤¤ : std_logic; 42af5a 74cf4e component MESG f9c57e port( ··CLK ·¤ ···¤ : in ····std_logic; 063f61 ········RST_N ·¤ ··¤ : in ····std_logic; 051689 ········START¤ ···¤ : in ····std_logic; be4f77 ¤ DONE ····¤ : in ····std_logic; f11049 ¤ MESSAGE ····¤ : in ····std_logic_vector(63 downto 0); 4c38ba ¤ SUBKEY ····¤ : in ····std_logic_vector(47 downto 0); 7ea256 ·······¤RESULT ··¤ : out ···std_logic_vector(63 downto 0) ca737c ····); 77e2c6 end component; 2daf5a cdddef component KEY_GEN· 15cdc7 port( ··CLK ·······: in ····std_logic; 1e320d ········RST_N ·····: in ····std_logic; 667f2d ········START ·····: in ····std_logic; 46b9ba ········KEY_IN ····: in ····std_logic_vector(55 downto 0); cb6da8 ········DONE ······: out ···std_logic; 19e5f0 ········CNT ·······: out ···std_logic_vector(4 downto 0); bb045e ········KEY_OUT ···: out ···std_logic_vector(47 downto 0)); c6e2c6 end component; --381d 00180ac228180030002 Page 4 of des.vhd e0af5a 4a0f89 begin e0af5a 554a2f DES1: MESG 2e1940 port map( ·· 1392d2 ¤ CLK ·¤ ···¤ => CLK, 49c81c ········RST_N ·¤ ··¤ => RST_N, 223042 ········START¤ ···¤ => START, feff4b ¤ DONE ····¤ => DONE_BAK, 113f83 ¤ MESSAGE ····¤ => MESSAGE, f157a1 ¤ SUBKEY ····¤ => SUBKEY, 160e22 ·······¤RESULT ··¤ => DES_OUT faa415 ····¤ ); b30759 DES2: KEY_GEN 857097 port map( ····· 139892 ········CLK ·······¤ => CLK, f289c8 ········RST_N ·····¤ => RST_N, c6ba76 ········START ·····¤ => START, 22bffc ········KEY_IN ····¤ => KEY, 5045c8 ········DONE ······¤ => DONE_BAK, 5b11ad ········CNT ······¤ => CNT, 4ac932 ········KEY_OUT ···¤ => SUBKEY 130886 ¤ );· 15af5a 834dc0 DONE <= DONE_BAK; 60af5a c9b08a end beh; 80af5a --19f8 000b92e30e480030003 Page 1 of des_ctl.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| e7625a -- ----------------------------------------------------------------------------- 9cde87 -- AUTHOR ·········: ·TOM VU ·················································-- 0773db -- DATE ···········: ·10/15/97 ···············································-- e54087 -- TITLE ··········: ·DES ·TEST BENCH ········································-- 8178f4 -- FILE ···········: ·des_ctl.vhd ············································-- 1b997d ---------|---------|---------|---------|---------|---------|---------|---------| 8c5356 -------------------------------------------------------------------------------- 9b7faf library ieee; c111e9 use IEEE.std_logic_1164.all; bcda83 use IEEE.std_logic_arith.all; bde105 use IEEE.std_logic_unsigned.all; f05c9a use ieee.std_logic_textio.all; 9faf5a b03876 entity CTL is 73af5a 47ec7a port( ··CLK ············: in ····std_logic; f42e77 ········RST_N ··········: in ····std_logic; 99d3de ········START ··········: in ····std_logic; 8abd37 ········DECR ···········: in ····std_logic; ef5dd7 ········DES_OUT ········: in ····std_logic_vector(63 downto 0); d1b4b9 ········DECR_INT ·······: out ···std_logic; 8be15e ········READ_EN ·······: out ···std_logic; d4e72f ········START_INT ······: out ···std_logic; b606d7 ········MESSAGE ········: out ···std_logic_vector(63 downto 0); 5eb5fb ········KEY ·········¤ : out ···std_logic_vector(55 downto 0); b06cd6 ········DATA ········¤ : inout ·std_logic_vector(31 downto 0) e2737c ····); b1af5a 88eb4c end CTL; 0daf5a 3e625a -- ----------------------------------------------------------------------------- ee9bda architecture BEH of CTL is e3625a -- ----------------------------------------------------------------------------- 27af5a b9c8c3 signal CNT16 ··········¤: std_logic_vector(3 downto 0); 446bef signal MSG0 ··········¤ : std_logic_vector(31 downto 0); 716d50 signal MSG1 ··········¤ : std_logic_vector(31 downto 0); 905ba6 signal KEY0 ··········¤ : std_logic_vector(31 downto 0); 1428a9 signal KEY1 ··········¤ : std_logic_vector(23 downto 0); e7b07c signal OUT0 ··········¤ : std_logic_vector(31 downto 0); 91b6c3 signal OUT1 ··········¤ : std_logic_vector(31 downto 0); b0c721 signal DATA_BAK ········: std_logic_vector(31 downto 0); fd3ce5 signal START_INT_D¤ : std_logic; 7caf5a d50f89 begin 37625a -- ----------------------------------------------------------------------------- 88c675 CNT_PR: process(CLK,RST_N)· 3d625a -- ----------------------------------------------------------------------------- 230f89 begin 4b1801 ········if RST_N = '0' then 46c97a ················CNT16 <= "0000"; 894f5b ·····¤ ¤ START_INT <= '0'; ed6ab2 ·····¤ ¤ DECR_INT <= '0'; ed9e8f ········elsif CLK'event and CLK = '1' then b59193 ·····¤ ¤ START_INT <= START_INT_D; 56b749 ¤ ¤ if CNT16 = 4 then 419236 ·····¤ ¤ ¤ DECR_INT <= DECR; db124d ¤ ¤ end if; 863598 ············if START = '1' ·then ecd5c1 ················CNT16 <= "0001"; e9e93c ············else 09036d ················CNT16 <= CNT16 + 1; 8101cd ············end if; fcb985 ········end if; 7c5890 end process; d8af5a 55625a -- ----------------------------------------------------------------------------- 542e43 KEY ····<= KEY1 & KEY0; 3998b6 MESSAGE <= MSG1 & MSG0; 8daf5a b9875a START_INT_D <= '1' when CNT16 = 4 else '0'; --5868 000b6ca077a80030003 Page 2 of des_ctl.vhd 3b625a -- ----------------------------------------------------------------------------- f8afe8 REG_IN_PR: process(RST_N,CLK) f0625a -- ----------------------------------------------------------------------------- bc0f89 begin 636118 if RST_N = '0' then f8215b ········MSG0 <= (others => '0'); b18806 ········MSG1 <= (others => '0'); 83e94c ········KEY0 <= (others => '0'); 814011 ········KEY1 <= (others => '0'); b60502 elsif CLK'event and CLK = '0' then e7f081 ····case CNT16 is 2a0cfb ¤ when ·"0001" => 973aa4 ········¤ MSG0 <= DATA; bb9705 ¤ when ·"0010" => d56f35 ········¤ MSG1 <= DATA; a2932e ¤ when ·"0011" => b26b0e ········¤ KEY0 <= DATA; 57896f ¤ when ·"0100" => e8f94a ········¤ KEY1 <= DATA(23 downto 0); 283cff ¤ when others => 4634e8 ¤ ¤ null; cf9517 ····end case; 39df0b end if; c3af5a 2c7f1c end process REG_IN_PR; 638b8d ----------------------------------------------------------------- 5d7518 MESSAGE_OUT_P: process (CNT16,DES_OUT) de0f89 begin 1bf081 ····case CNT16 is 76ac3f ¤ when ·"0110" | "0111" => dc5734 ········¤ DATA <= DES_OUT(63 downto 32); b475bf ¤ ¤ READ_EN <= '1'; 9b9950 ¤ when ·"1000" | "1001" => e910d3 ········¤ DATA <= DES_OUT(31 downto 0); 5e75bf ¤ ¤ READ_EN <= '1'; 3e3cff ¤ when others => 322d30 ¤ ¤ DATA <= (others => 'Z'); 9b6904 ¤ ¤ READ_EN <= '0'; c29517 ····end case; 885890 end process; 28d83c · ce6687 --DATA <= DATA_BAK; 645c73 end BEH; aa625a -- ----------------------------------------------------------------------------- 777faf library ieee; 4011e9 use IEEE.std_logic_1164.all; 9dda83 use IEEE.std_logic_arith.all; 47e105 use IEEE.std_logic_unsigned.all; ab5c9a use ieee.std_logic_textio.all; d3f403 use std.textio.all; 0daf5a 6faf5a 79bf60 entity DES_CTL is· d3ec7a port( ··CLK ············: in ····std_logic; ef2e77 ········RST_N ··········: in ····std_logic; e8d3de ········START ··········: in ····std_logic; 67bd37 ········DECR ···········: in ····std_logic; f19930 ········DONE ···········: out ····std_logic; 1c714a ········READ_EN ········: out ····std_logic; 006cd6 ········DATA ········¤ : inout ·std_logic_vector(31 downto 0) e3737c ····); c4af5a 38c0b8 end DES_CTL; 2faf5a fb5356 -------------------------------------------------------------------------------- 71bf08 architecture beh of DES_CTL is c7af5a 4ee222 component DES· 15ec7a port( ··CLK ············: in ····std_logic; 832e77 ········RST_N ··········: in ····std_logic; d6d3de ········START ··········: in ····std_logic; b6bd37 ········DECR ···········: in ····std_logic; --4c0d 001891375c380030003 Page 3 of des_ctl.vhd e60995 ········MESSAGE ········: in ····std_logic_vector(63 downto 0); b5604f ········KEY ············: in ····std_logic_vector(55 downto 0); 389930 ········DONE ···········: out ····std_logic; 4a3fe1 ········DES_OUT ·········: out ···std_logic_vector(63 downto 0) 43737c ····); 14af5a cae2c6 end component; 9caf5a 89c2b6 component CTL· 2aec7a port( ··CLK ············: in ····std_logic; 322e77 ········RST_N ··········: in ····std_logic; b4d3de ········START ··········: in ····std_logic; 19bd37 ········DECR ···········: in ····std_logic; 5f5dd7 ········DES_OUT ········: in ····std_logic_vector(63 downto 0); c9b4b9 ········DECR_INT ·······: out ···std_logic; 5152ad ········READ_EN ·······¤: out ···std_logic; 35e72f ········START_INT ······: out ···std_logic; 4606d7 ········MESSAGE ········: out ···std_logic_vector(63 downto 0); e2b5fb ········KEY ·········¤ : out ···std_logic_vector(55 downto 0); ff6cd6 ········DATA ········¤ : inout ·std_logic_vector(31 downto 0) 0f737c ····); b2e2c6 end component; 6eaf5a e11578 signal START_INT ····¤ : std_logic; cc4d61 signal DECR_INT ·······¤: std_logic; 2af53c signal MESSAGE ········¤: std_logic_vector(63 downto 0); 3c9af4 signal KEY ············¤: std_logic_vector(55 downto 0); 0e7fd8 signal DES_OUT ········¤: std_logic_vector(63 downto 0); 33af5a adc009 -------------------------------------------- 800f89 begin 1daf5a 688c8c DES_CTL1 : DES· 58d9d1 port map(· 01d07d ········CLK ············=> CLK, 182dd5 ········RST_N ··········=> RST_N, d4a453 ········START ··········=> START_INT, 836338 ········DECR ···········=> DECR_INT, 60fb6c ········MESSAGE ········=> MESSAGE, dff105 ········KEY ············=> KEY, e8de19 ········DONE ···········=> DONE, 9ff5f9 ········DES_OUT ········=> DES_OUT 3e6275 ); 8caf5a 0bbe8d DES_CTL2 : CTL c215ed port map( ··CLK ¤ => CLK, f5a06a ········RST_N ·¤¤ => RST_N, 2dc2ff ········START ¤ ¤ => START, c1276c ········DECR ¤ ¤ => DECR, 9fd115 ········DES_OUT¤¤ => DES_OUT, 1a0875 ········DECR_INT¤ => DECR_INT, a721c4 ········READ_EN¤¤ => READ_EN, 7bef90 ········START_INT¤ => START_INT, cf2a60 ········MESSAGE ¤ => MESSAGE, 2f2a6a ········KEY¤ ¤ => KEY, c950dc ········DATA¤ ¤ => DATA e5737c ····); 06af5a 89b08a end beh; --6dad 001b55b5c0880030004 Page 1 of ex.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· bf8d0a -- Date ···········: ·09/27/97 ································· b4d6cd -- Description¤ ···: ·Left and Right 32-bit registers ·············· a5625a -- ----------------------------------------------------------------------------- aa7faf library ieee; 5211e9 use IEEE.std_logic_1164.all; cada83 use IEEE.std_logic_arith.all; 77e105 use IEEE.std_logic_unsigned.all; 05af5a 59af5a 7b625a -- ----------------------------------------------------------------------------- a6c076 entity EX is 59af5a 3714be port( ·· ebba80 ········EX_IN ·¤¤ : in ¤ std_logic_vector(31 downto 0); be7fd5 ·······¤EX_OUT ···¤ : out ···std_logic_vector(47 downto 0) 6c737c ····); 06af5a 6851d9 end EX; b0af5a 08625a -- ----------------------------------------------------------------------------- c32a2a architecture beh of EX is 0e625a -- ----------------------------------------------------------------------------- 41a039 subtype small_integer is INTEGER range 0 to 31; ed005c type EX_TYPE is array(0 to 47) of small_integer; a1af5a 42f2e2 signal EX_TABLE : EX_TYPE; f7af5a 090f89 begin e0af5a 1b7095 EX_TABLE <= ¤ (31, 0, 1, 2, 3, 4, f87e8b ¤ ¤ ··3, 4, 5, 6, 7, 8, 523799 ¤ ¤ ··7, 8, 9,10,11,12, 8d4bab ¤ ¤ ·11,12,13,14,15,16, d21f04 ¤ ¤ ·15,16,17,18,19,20, 01424a ¤ ¤ ·19,20,21,22,23,24, 275e35 ¤ ¤ ·23,24,25,26,27,28, 392f5c ¤ ¤ ·27,28,29,30,31, 0);¤ dbaf5a 6eaf5a f7625a -- ----------------------------------------------------------------------------- e0c809 EX_PR: process(EX_IN,EX_TABLE) cd625a -- ----------------------------------------------------------------------------- 2a0f89 begin 3bf616 ·¤ for i in 0 to 47 loop af78b9 ·¤ ····EX_OUT(i) <= EX_IN(EX_TABLE(i)) ; b38a2a ·¤ end loop; fd2a0c end process EX_PR; 90625a -- ----------------------------------------------------------------------------- c1b08a end beh; b5625a -- ----------------------------------------------------------------------------- --8e68 00126a906e980030005 Page 1 of fp.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· bf8d0a -- Date ···········: ·09/27/97 ································· b4d6cd -- Description¤ ···: ·Left and Right 32-bit registers ·············· a5625a -- ----------------------------------------------------------------------------- aa7faf library ieee; 5211e9 use IEEE.std_logic_1164.all; cada83 use IEEE.std_logic_arith.all; 77e105 use IEEE.std_logic_unsigned.all; 05af5a 59af5a 7b625a -- ----------------------------------------------------------------------------- 98af5a 0b625a -- ----------------------------------------------------------------------------- 14962b entity FP is 87af5a b6cc6d port( 9a41a9 ········FP_IN ··········: in ····std_logic_vector(63 downto 0); b43f8e ········FP_OUT ·········: out ···std_logic_vector(63 downto 0) 3d737c ····); 31af5a a7b2d6 end FP; b2af5a 79625a -- ----------------------------------------------------------------------------- 8e7c77 architecture beh of FP is 70625a -- ----------------------------------------------------------------------------- 7f7bd6 subtype small_integer is INTEGER range 0 to 63; 6b698c type FP_TYPE is array(0 to 63) of small_integer; 52af5a 53dabe signal FP_TABLE : FP_TYPE; 62af5a 800f89 begin 21af5a ed66ec FP_TABLE <= ····(57,49,41,33,25,17, 9, 1, fa1781 ·················59,51,43,35,27,19,11, 3, 7bf5ff ·················61,53,45,37,29,21,13, 5, f2d9a6 ·················63,55,47,39,31,23,15, 7, 84783c ·················56,48,40,32,24,16, 8, 0, 795d3b ·················58,50,42,34,26,18,10, 2, 9abf45 ·················60,52,44,36,28,20,12, 4, 36e3e3 ·················62,54,46,38,30,22,14, 6); f0af5a fdaf5a 71625a -- ----------------------------------------------------------------------------- 3c3fd4 FP_PR: process(FP_TABLE,FP_IN) fb625a -- ----------------------------------------------------------------------------- dc0f89 begin 623e98 ········for i in 0 to 63 loop 964718 ············FP_OUT(FP_TABLE(i)) <= FP_IN(i); 9636d5 ········end loop; 3ea33a end process FP_PR; 61625a -- ----------------------------------------------------------------------------- 70b08a end beh; 26af5a --69ed 0011bd4de4480030006 Page 1 of ip.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· bf8d0a -- Date ···········: ·09/27/97 ································· b4d6cd -- Description¤ ···: ·Left and Right 32-bit registers ·············· a5625a -- ----------------------------------------------------------------------------- aa7faf library ieee; 5211e9 use IEEE.std_logic_1164.all; cada83 use IEEE.std_logic_arith.all; 77e105 use IEEE.std_logic_unsigned.all; 05af5a 59af5a 7b625a -- ----------------------------------------------------------------------------- e1aba2 entity IP is 72af5a c2cc6d port( 669c71 ¤ IP_IN ····¤ : in ····std_logic_vector(63 downto 0); 02b42e ·······¤IP_OUT ··¤ : out ···std_logic_vector(63 downto 0) 37737c ····); 89af5a 2a002f end IP; eeaf5a 79625a -- ----------------------------------------------------------------------------- ab41fe architecture beh of IP is 51625a -- ----------------------------------------------------------------------------- c37bd6 subtype small_integer is INTEGER range 0 to 63; dfd216 type IP_TYPE is array(0 to 63) of small_integer; 91af5a a18ac0 signal IP_TABLE : IP_TYPE; 5aaf5a 760f89 begin a8af5a 8483b9 IP_TABLE <= ¤ (39, 7,47,15,55,23,63,31, 4f63cb ¤ ¤ ·38, 6,46,14,54,22,62,30, 305108 ¤ ¤ ·37, 5,45,13,53,21,61,29, 401bb2 ¤ ¤ ·36, 4,44,12,52,20,60,28, 2656f9 ¤ ¤ ·35, 3,43,11,51,19,59,27, 601c43 ¤ ¤ ·34, 2,42,10,50,18,58,26, e53413 ¤ ¤ ·33, 1,41, 9,49,17,57,25, ce37fe ¤ ¤ ·32, 0,40, 8,48,16,56,24);¤ 8faf5a 16625a -- ----------------------------------------------------------------------------- 3f96cf IP_PR: process(IP_TABLE,IP_IN) 40625a -- ----------------------------------------------------------------------------- 310f89 begin 8c77f0 ¤ for i in 0 to 63 loop 5d4d4d ¤ ····IP_OUT(IP_TABLE(i)) <= IP_IN(i); 6b7aa9 ¤ end loop; 42bace end process IP_PR; 89625a -- ----------------------------------------------------------------------------- 4bb08a end beh; 1b625a -- ----------------------------------------------------------------------------- --c4cf 000de4ae31780030007 Page 1 of key_gen.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| d8b1e9 -- Author ·········: ·Tom Vu 8f8d0a -- Date ···········: ·09/27/97 ································· e66b31 -- Description¤ ···: ·Generate Schedule Keys to be used by F funtion da47f7 -- Function¤ ···: ·2 rings of 28 bits each will shift left or right by 1 or 0efb57 --¤ ¤ ······2 positions depends on ENCR/DECR and counter16 37625a -- ----------------------------------------------------------------------------- ae7faf library ieee; c111e9 use IEEE.std_logic_1164.all; d4da83 use IEEE.std_logic_arith.all; e6e105 use IEEE.std_logic_unsigned.all; 1faf5a aeaf5a de625a -- ----------------------------------------------------------------------------- 9e1267 entity KEY_GEN is 20af5a 1284ad port( ··CLK ·¤ ···: in ····std_logic; 13ea26 ········RST_N ·¤ ··: in ····std_logic; 5f772c ········START¤ ···: in ····std_logic; 5f9a4d --¤ DECR¤ ···: in ····std_logic; 2dba1f ¤ KEY_IN ····: in ····std_logic_vector(55 downto 0); 190f7f ¤ DONE¤ ···: out ···std_logic; a2970a ········CNT ·······: out ···std_logic_vector(4 ·downto 0); 1fe70b ·······¤KEY_OUT ···: out ···std_logic_vector(47 downto 0) 6c737c ····); ccaf5a adf875 end KEY_GEN; 20af5a af625a -- ----------------------------------------------------------------------------- 667811 architecture beh of KEY_GEN is fb625a -- ----------------------------------------------------------------------------- c6af5a 2f801d component PC1· d114be port( ·· a5ba1f ¤ KEY_IN ····: in ····std_logic_vector(55 downto 0); 33e01d ·······¤KEY_OUT ···: out ···std_logic_vector(55 downto 0) 7d737c ····); a6e2c6 end component; fbaf5a ac71c8 component PC2 bf14be port( ·· b5ba1f ¤ KEY_IN ····: in ····std_logic_vector(55 downto 0); b4e70b ·······¤KEY_OUT ···: out ···std_logic_vector(47 downto 0) b7737c ····); 20e2c6 end component; 1baf5a dd4405 signal cnt16 : std_logic_vector(4 downto 0); 66f2bc signal PC1_KEY ··: std_logic_vector(55 downto 0); 9ff549 signal PC1_KEY_C : std_logic_vector(27 downto 0); 07d6e6 signal PC1_KEY_D : std_logic_vector(27 downto 0); 742b5d signal KEY_REG_C : std_logic_vector(27 downto 0); 5e08f2 signal KEY_REG_D : std_logic_vector(27 downto 0); 3c2ca8 signal KEY_REG ··: std_logic_vector(55 downto 0); a9c0ab signal SHIFT1 ··: std_logic; 27af5a 3baf5a 5d0f89 begin f3af5a 86625a -- ----------------------------------------------------------------------------- d088e6 -- Permutation Choice #1 16625a -- ----------------------------------------------------------------------------- 20af5a 82d755 ¤ PC_1: PC1 port map(KEY_IN => KEY_IN,KEY_OUT => PC1_KEY); e7af5a 9e625a -- ----------------------------------------------------------------------------- f2d32d Split_to_C_and_D: process(PC1_KEY) 6b625a -- ----------------------------------------------------------------------------- 590f89 begin 040e58 ¤ for i in 0 to 27 loop 884cd9 ¤ ····PC1_KEY_D(i) <= PC1_KEY(i); 571758 ¤ ····PC1_KEY_C(i) <= PC1_KEY(i+28); de7aa9 ¤ end loop; --172b 000fd12a9a780030007 Page 2 of key_gen.vhd 325890 end process; bc625a -- ----------------------------------------------------------------------------- f9a60c DONE_P: process(CLK,RST_N)· 50625a -- ----------------------------------------------------------------------------- 190f89 begin 614864 ¤ if RST_N = '0' then 6472de ¤ ····DONE ·<= '0'; e997e5 ¤ ····SHIFT1 ·<= '0'; b2bdcf ¤ elsif CLK'event and CLK = '1' then 5a0175 ¤ ····if CNT16 = 15 and START = '0' then 9607cc ¤ ¤ DONE ·<= '1'; 46e192 ¤ ····else f41b77 ¤ ¤ DONE ·<= '0'; 36d0c1 ¤ ····end if; 79af5a 617b70 ¤ ····if START = '1' or CNT16 = 7 or CNT16= 14 then 49ed6a ¤ ¤ SHIFT1 <= '1' ; c69236 ¤ ····else· 96e62e ¤ ¤ SHIFT1 <= '0' ; 99d0c1 ¤ ····end if; ea570d ¤ end if; 255890 end process; c1625a -- ----------------------------------------------------------------------------- 9bbc40 COUNTER16_P: process(CLK,RST_N)· 0c625a -- ----------------------------------------------------------------------------- 140f89 begin 534864 ¤ if RST_N = '0' then 6dc840 ¤ ¤ CNT16 <= (others => '0'); 23bdcf ¤ elsif CLK'event and CLK = '1' then d76769 ¤ ····if START = '1' ·then f30000 ¤ ¤ CNT16 <= "00001"; 65e192 ¤ ····else 6365a7 ¤ ¤ CNT16 <= CNT16 + 1; 06d0c1 ¤ ····end if; 50570d ¤ end if; c15890 end process; 05625a -- ----------------------------------------------------------------------------- 442b00 KEY_GEN_REG_P: process(CLK,RST_N)· 85625a -- ----------------------------------------------------------------------------- a60f89 begin 85af5a b8def7 ····if RST_N = '0' then bbd4da ¤ KEY_REG_C <= (others => '0'); ed927a ¤ KEY_REG_D <= (others => '0'); 8fa644 ····elsif CLK'event and CLK = '1' then 4b1780 --¤ if DECR = '0' then ················· 71a735 --¤ ····if START = '1' then -- Load and Shift by 1 from external key b94049 --¤ ····¤ KEY_REG_C <= PC1_KEY_C(26 downto 0) & PC1_KEY_C(27); 5c49cf --¤ ····¤ KEY_REG_D <= PC1_KEY_D(26 downto 0) & PC1_KEY_D(27); d55710 --¤ ····elsif SHIFT1 = '1' then -- Shift Left by 1 for 1st key 4d4742 --¤ ····¤ KEY_REG_C <= KEY_REG_C(26 downto 0) & KEY_REG_C(27); 734ec4 --¤ ····¤ KEY_REG_D <= KEY_REG_D(26 downto 0) & KEY_REG_D(27); 6ed797 --¤ ····else 613fd0 --¤ ····¤ KEY_REG_C <= KEY_REG_C(25 downto 0) & KEY_REG_C(27 downto 26); c747c3 --¤ ····¤ KEY_REG_D <= KEY_REG_D(25 downto 0) & KEY_REG_D(27 downto 26); 9b0b0e --¤ ····end if; a97edc --¤ else· df73f5 ¤ ····if START = '1' then 686d58 ¤ ····¤ KEY_REG_C <= PC1_KEY_C; -- Last key was used in Encr 47d271 ¤ ····¤ KEY_REG_D <= PC1_KEY_D; 713c58 ¤ ····elsif SHIFT1 = '1' then c6e09e ¤ ¤ -- Shift Right by 1 when cnt16 =1,8,15 a31e3f ¤ ····¤ KEY_REG_C <= KEY_REG_C(0) & KEY_REG_C(27 downto 1); a97e34 ¤ ····¤ KEY_REG_D <= KEY_REG_D(0) & KEY_REG_D(27 downto 1); 87e192 ¤ ····else 77ee00 ¤ ¤ -- Shift Right by 2 when cnt16=others 710558 ¤ ····¤ KEY_REG_C <= KEY_REG_C(1 downto 0) & KEY_REG_C(27 downto 2); 72d0b6 ¤ ····¤ KEY_REG_D <= KEY_REG_D(1 downto 0) & KEY_REG_D(27 downto 2); a1d0c1 ¤ ····end if; 0394c3 ·-- ¤ end if; 705175 ····end if; fdaf5a --2e6c 001be95937580030007 Page 3 of key_gen.vhd 325890 end process; bc625a -- ----------------------------------------------------------------------------- 44e546 -- Combine final C and D to KEY_REG cf625a -- ----------------------------------------------------------------------------- 782776 ¤ KEY_REG <= KEY_REG_C(27 downto 0) & KEY_REG_D(27 downto 0); 02625a -- ----------------------------------------------------------------------------- b8a28e -- Permutation Choice #2 a2625a -- ----------------------------------------------------------------------------- e5af5a d4105b ¤ PC_2: PC2 port map (KEY_IN => KEY_REG,KEY_OUT => KEY_OUT); 2daf5a 1a625a -- ----------------------------------------------------------------------------- 8dd318 CNT <= CNT16; 10b08a end beh; be625a -- ----------------------------------------------------------------------------- --a64d 0007ec2795380030008 Page 1 of mux256.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· 3a917e -- Date ···········: ·09/07/97 ································· 36d3c8 -- Description¤ ···: ·Search Unit, 24 search units per ASIC a35356 -------------------------------------------------------------------------------- 657faf library ieee; f311e9 use IEEE.std_logic_1164.all; dbda83 use IEEE.std_logic_arith.all; 3ee105 use IEEE.std_logic_unsigned.all; 345356 -------------------------------------------------------------------------------- ae040a entity MUX256 is 29af5a 3314be port( ·· ecaf5a 1ab249 ········SHIFT_OUT ·····¤: in ·¤ ·std_logic_vector(7 downto 0); 5b809f ········PT_VECTOR ······: in ····std_logic_vector(255 downto 0); 2af4b0 ········BIT_MUX ¤ : out ····std_logic 09737c ····); 96af5a 4eaf5a 645168 end MUX256; 73af5a 335356 -------------------------------------------------------------------------------- 323cf3 architecture beh of MUX256 is dd5356 -------------------------------------------------------------------------------- b0af5a 1faf5a 910f89 begin 0a5356 -------------------------------------------------------------------------------- 4f29b4 DECODER_PR: process(SHIFT_OUT,PT_VECTOR) ff5356 -------------------------------------------------------------------------------- da2daa variable ii ¤ : integer; 650f89 begin aa688f ii := conv_integer(SHIFT_OUT); 4eff8f case ii is· bd7180 ¤ when ··0 => BIT_MUX <= PT_VECTOR(0); ee4dc8 ¤ when ··1 => BIT_MUX <= PT_VECTOR(1); ec0910 ¤ when ··2 => BIT_MUX <= PT_VECTOR(2); 363558 ¤ when ··3 => BIT_MUX <= PT_VECTOR(3); 2eaf5a 9180a0 ¤ when ··4 => BIT_MUX <= PT_VECTOR(4); fcbce8 ¤ when ··5 => BIT_MUX <= PT_VECTOR(5); 26f830 ¤ when ··6 => BIT_MUX <= PT_VECTOR(6); 0cc478 ¤ when ··7 => BIT_MUX <= PT_VECTOR(7); c6af5a ca9bd1 ¤ when ··8 => BIT_MUX <= PT_VECTOR(8); 16a799 ¤ when ··9 => BIT_MUX <= PT_VECTOR(9); 86dc35 ¤ when ·10 => BIT_MUX <= PT_VECTOR(10); 3205ba ¤ when ·11 => BIT_MUX <= PT_VECTOR(11); 88af5a 62673a ¤ when ·12 => BIT_MUX <= PT_VECTOR(12); 99beb5 ¤ when ·13 => BIT_MUX <= PT_VECTOR(13); 28a23a ¤ when ·14 => BIT_MUX <= PT_VECTOR(14); 887bb5 ¤ when ·15 => BIT_MUX <= PT_VECTOR(15); daaf5a 411935 ¤ when ·16 => BIT_MUX <= PT_VECTOR(16); 19c0ba ¤ when ·17 => BIT_MUX <= PT_VECTOR(17); de202b ¤ when ·18 => BIT_MUX <= PT_VECTOR(18); 00f9a4 ¤ when ·19 => BIT_MUX <= PT_VECTOR(19); 5baf5a 5a585f ¤ when ·20 => BIT_MUX <= PT_VECTOR(20); 5d81d0 ¤ when ·21 => BIT_MUX <= PT_VECTOR(21); a4e350 ¤ when ·22 => BIT_MUX <= PT_VECTOR(22); b43adf ¤ when ·23 => BIT_MUX <= PT_VECTOR(23); 7baf5a e02650 ¤ when ·24 => BIT_MUX <= PT_VECTOR(24); b5ffdf ¤ when ·25 => BIT_MUX <= PT_VECTOR(25); 959d5f ¤ when ·26 => BIT_MUX <= PT_VECTOR(26); 6044d0 ¤ when ·27 => BIT_MUX <= PT_VECTOR(27); d4af5a 45a441 ¤ when ·28 => BIT_MUX <= PT_VECTOR(28); 7e7dce ¤ when ·29 => BIT_MUX <= PT_VECTOR(29); --e5c6 0004c47201180030008 Page 2 of mux256.vhd 292479 ¤ when ·30 => BIT_MUX <= PT_VECTOR(30); 25fdf6 ¤ when ·31 => BIT_MUX <= PT_VECTOR(31); 069f76 ¤ when ·32 => BIT_MUX <= PT_VECTOR(32); a046f9 ¤ when ·33 => BIT_MUX <= PT_VECTOR(33); be5a76 ¤ when ·34 => BIT_MUX <= PT_VECTOR(34); 5983f9 ¤ when ·35 => BIT_MUX <= PT_VECTOR(35); 3ee179 ¤ when ·36 => BIT_MUX <= PT_VECTOR(36); aa38f6 ¤ when ·37 => BIT_MUX <= PT_VECTOR(37); 6ad867 ¤ when ·38 => BIT_MUX <= PT_VECTOR(38); a101e8 ¤ when ·39 => BIT_MUX <= PT_VECTOR(39); 1b589a ¤ when ·40 => BIT_MUX <= PT_VECTOR(40); a08115 ¤ when ·41 => BIT_MUX <= PT_VECTOR(41); a9e395 ¤ when ·42 => BIT_MUX <= PT_VECTOR(42); be3a1a ¤ when ·43 => BIT_MUX <= PT_VECTOR(43); 872695 ¤ when ·44 => BIT_MUX <= PT_VECTOR(44); d0ff1a ¤ when ·45 => BIT_MUX <= PT_VECTOR(45); 569d9a ¤ when ·46 => BIT_MUX <= PT_VECTOR(46); 5e4415 ¤ when ·47 => BIT_MUX <= PT_VECTOR(47); d5a484 ¤ when ·48 => BIT_MUX <= PT_VECTOR(48); ed7d0b ¤ when ·49 => BIT_MUX <= PT_VECTOR(49); 4e24bc ¤ when ·50 => BIT_MUX <= PT_VECTOR(50); 63fd33 ¤ when ·51 => BIT_MUX <= PT_VECTOR(51); 3e9fb3 ¤ when ·52 => BIT_MUX <= PT_VECTOR(52); da463c ¤ when ·53 => BIT_MUX <= PT_VECTOR(53); cc5ab3 ¤ when ·54 => BIT_MUX <= PT_VECTOR(54); 8d833c ¤ when ·55 => BIT_MUX <= PT_VECTOR(55); 42e1bc ¤ when ·56 => BIT_MUX <= PT_VECTOR(56); 193833 ¤ when ·57 => BIT_MUX <= PT_VECTOR(57); 57d8a2 ¤ when ·58 => BIT_MUX <= PT_VECTOR(58); 21012d ¤ when ·59 => BIT_MUX <= PT_VECTOR(59); fea0d6 ¤ when ·60 => BIT_MUX <= PT_VECTOR(60); 727959 ¤ when ·61 => BIT_MUX <= PT_VECTOR(61); 7e1bd9 ¤ when ·62 => BIT_MUX <= PT_VECTOR(62); 96c256 ¤ when ·63 => BIT_MUX <= PT_VECTOR(63); e7ded9 ¤ when ·64 => BIT_MUX <= PT_VECTOR(64); 210756 ¤ when ·65 => BIT_MUX <= PT_VECTOR(65); 0c65d6 ¤ when ·66 => BIT_MUX <= PT_VECTOR(66); 9fbc59 ¤ when ·67 => BIT_MUX <= PT_VECTOR(67); 985cc8 ¤ when ·68 => BIT_MUX <= PT_VECTOR(68); 598547 ¤ when ·69 => BIT_MUX <= PT_VECTOR(69); bcdcf0 ¤ when ·70 => BIT_MUX <= PT_VECTOR(70); 5b057f ¤ when ·71 => BIT_MUX <= PT_VECTOR(71); dd67ff ¤ when ·72 => BIT_MUX <= PT_VECTOR(72); 49be70 ¤ when ·73 => BIT_MUX <= PT_VECTOR(73); bea2ff ¤ when ·74 => BIT_MUX <= PT_VECTOR(74); b07b70 ¤ when ·75 => BIT_MUX <= PT_VECTOR(75); 3a19f0 ¤ when ·76 => BIT_MUX <= PT_VECTOR(76); 62c07f ¤ when ·77 => BIT_MUX <= PT_VECTOR(77); e120ee ¤ when ·78 => BIT_MUX <= PT_VECTOR(78); b2f961 ¤ when ·79 => BIT_MUX <= PT_VECTOR(79); b05910 ¤ when ·80 => BIT_MUX <= PT_VECTOR(80); 56809f ¤ when ·81 => BIT_MUX <= PT_VECTOR(81); 95e21f ¤ when ·82 => BIT_MUX <= PT_VECTOR(82); ca3b90 ¤ when ·83 => BIT_MUX <= PT_VECTOR(83); a4271f ¤ when ·84 => BIT_MUX <= PT_VECTOR(84); a0fe90 ¤ when ·85 => BIT_MUX <= PT_VECTOR(85); ea9c10 ¤ when ·86 => BIT_MUX <= PT_VECTOR(86); 79459f ¤ when ·87 => BIT_MUX <= PT_VECTOR(87); 79a50e ¤ when ·88 => BIT_MUX <= PT_VECTOR(88); 207c81 ¤ when ·89 => BIT_MUX <= PT_VECTOR(89); b22536 ¤ when ·90 => BIT_MUX <= PT_VECTOR(90); c6fcb9 ¤ when ·91 => BIT_MUX <= PT_VECTOR(91); 929e39 ¤ when ·92 => BIT_MUX <= PT_VECTOR(92); a247b6 ¤ when ·93 => BIT_MUX <= PT_VECTOR(93); ca5b39 ¤ when ·94 => BIT_MUX <= PT_VECTOR(94); 9682b6 ¤ when ·95 => BIT_MUX <= PT_VECTOR(95); 24e036 ¤ when ·96 => BIT_MUX <= PT_VECTOR(96); 2939b9 ¤ when ·97 => BIT_MUX <= PT_VECTOR(97); 87d928 ¤ when ·98 => BIT_MUX <= PT_VECTOR(98); db00a7 ¤ when ·99 => BIT_MUX <= PT_VECTOR(99); 70af5a 4c64b8 ¤ when 100 => BIT_MUX <= PT_VECTOR(100); --ac24 000bc20cea880030008 Page 3 of mux256.vhd fb0f61 ¤ when 101 => BIT_MUX <= PT_VECTOR(101); eab30a ¤ when 102 => BIT_MUX <= PT_VECTOR(102); a3d8d3 ¤ when 103 => BIT_MUX <= PT_VECTOR(103); 2ac3cd ¤ when 104 => BIT_MUX <= PT_VECTOR(104); c6a814 ¤ when 105 => BIT_MUX <= PT_VECTOR(105); 8b147f ¤ when 106 => BIT_MUX <= PT_VECTOR(106); 8d7fa6 ¤ when 107 => BIT_MUX <= PT_VECTOR(107); dd2243 ¤ when 108 => BIT_MUX <= PT_VECTOR(108); 5f499a ¤ when 109 => BIT_MUX <= PT_VECTOR(109); 8c2f9f ¤ when 110 => BIT_MUX <= PT_VECTOR(110); 904446 ¤ when 111 => BIT_MUX <= PT_VECTOR(111); 1df82d ¤ when 112 => BIT_MUX <= PT_VECTOR(112); 5793f4 ¤ when 113 => BIT_MUX <= PT_VECTOR(113); c088ea ¤ when 114 => BIT_MUX <= PT_VECTOR(114); ffe333 ¤ when 115 => BIT_MUX <= PT_VECTOR(115); 305f58 ¤ when 116 => BIT_MUX <= PT_VECTOR(116); 133481 ¤ when 117 => BIT_MUX <= PT_VECTOR(117); 5d6964 ¤ when 118 => BIT_MUX <= PT_VECTOR(118); 7302bd ¤ when 119 => BIT_MUX <= PT_VECTOR(119); 4cf2f6 ¤ when 120 => BIT_MUX <= PT_VECTOR(120); 5f992f ¤ when 121 => BIT_MUX <= PT_VECTOR(121); 532544 ¤ when 122 => BIT_MUX <= PT_VECTOR(122); 3c4e9d ¤ when 123 => BIT_MUX <= PT_VECTOR(123); 8d5583 ¤ when 124 => BIT_MUX <= PT_VECTOR(124); d83e5a ¤ when 125 => BIT_MUX <= PT_VECTOR(125); a78231 ¤ when 126 => BIT_MUX <= PT_VECTOR(126); 6de9e8 ¤ when 127 => BIT_MUX <= PT_VECTOR(127); 46b40d ¤ when 128 => BIT_MUX <= PT_VECTOR(128); a5dfd4 ¤ when 129 => BIT_MUX <= PT_VECTOR(129); d6b9d1 ¤ when 130 => BIT_MUX <= PT_VECTOR(130); b7d208 ¤ when 131 => BIT_MUX <= PT_VECTOR(131); d36e63 ¤ when 132 => BIT_MUX <= PT_VECTOR(132); 6505ba ¤ when 133 => BIT_MUX <= PT_VECTOR(133); bb1ea4 ¤ when 134 => BIT_MUX <= PT_VECTOR(134); fa757d ¤ when 135 => BIT_MUX <= PT_VECTOR(135); ddc916 ¤ when 136 => BIT_MUX <= PT_VECTOR(136); 02a2cf ¤ when 137 => BIT_MUX <= PT_VECTOR(137); d6ff2a ¤ when 138 => BIT_MUX <= PT_VECTOR(138); 1694f3 ¤ when 139 => BIT_MUX <= PT_VECTOR(139); cd4035 ¤ when 140 => BIT_MUX <= PT_VECTOR(140); 1e2bec ¤ when 141 => BIT_MUX <= PT_VECTOR(141); 2a9787 ¤ when 142 => BIT_MUX <= PT_VECTOR(142); 3efc5e ¤ when 143 => BIT_MUX <= PT_VECTOR(143); b4e740 ¤ when 144 => BIT_MUX <= PT_VECTOR(144); 138c99 ¤ when 145 => BIT_MUX <= PT_VECTOR(145); 8330f2 ¤ when 146 => BIT_MUX <= PT_VECTOR(146); 815b2b ¤ when 147 => BIT_MUX <= PT_VECTOR(147); a106ce ¤ when 148 => BIT_MUX <= PT_VECTOR(148); a66d17 ¤ when 149 => BIT_MUX <= PT_VECTOR(149); f30b12 ¤ when 150 => BIT_MUX <= PT_VECTOR(150); 0160cb ¤ when 151 => BIT_MUX <= PT_VECTOR(151); 64dca0 ¤ when 152 => BIT_MUX <= PT_VECTOR(152); 1cb779 ¤ when 153 => BIT_MUX <= PT_VECTOR(153); ebac67 ¤ when 154 => BIT_MUX <= PT_VECTOR(154); 12c7be ¤ when 155 => BIT_MUX <= PT_VECTOR(155); f17bd5 ¤ when 156 => BIT_MUX <= PT_VECTOR(156); 13100c ¤ when 157 => BIT_MUX <= PT_VECTOR(157); 254de9 ¤ when 158 => BIT_MUX <= PT_VECTOR(158); 9b2630 ¤ when 159 => BIT_MUX <= PT_VECTOR(159); e7d67b ¤ when 160 => BIT_MUX <= PT_VECTOR(160); e1bda2 ¤ when 161 => BIT_MUX <= PT_VECTOR(161); 0d01c9 ¤ when 162 => BIT_MUX <= PT_VECTOR(162); 0f6a10 ¤ when 163 => BIT_MUX <= PT_VECTOR(163); 6e710e ¤ when 164 => BIT_MUX <= PT_VECTOR(164); 431ad7 ¤ when 165 => BIT_MUX <= PT_VECTOR(165); ffa6bc ¤ when 166 => BIT_MUX <= PT_VECTOR(166); 85cd65 ¤ when 167 => BIT_MUX <= PT_VECTOR(167); ba9080 ¤ when 168 => BIT_MUX <= PT_VECTOR(168); eefb59 ¤ when 169 => BIT_MUX <= PT_VECTOR(169); 539d5c ¤ when 170 => BIT_MUX <= PT_VECTOR(170); a3f685 ¤ when 171 => BIT_MUX <= PT_VECTOR(171); bc4aee ¤ when 172 => BIT_MUX <= PT_VECTOR(172); --98f5 0005771e94c80030008 Page 4 of mux256.vhd 5b2137 ¤ when 173 => BIT_MUX <= PT_VECTOR(173); fe3a29 ¤ when 174 => BIT_MUX <= PT_VECTOR(174); 9651f0 ¤ when 175 => BIT_MUX <= PT_VECTOR(175); faed9b ¤ when 176 => BIT_MUX <= PT_VECTOR(176); 058642 ¤ when 177 => BIT_MUX <= PT_VECTOR(177); 33dba7 ¤ when 178 => BIT_MUX <= PT_VECTOR(178); 3eb07e ¤ when 179 => BIT_MUX <= PT_VECTOR(179); 152da2 ¤ when 180 => BIT_MUX <= PT_VECTOR(180); 10467b ¤ when 181 => BIT_MUX <= PT_VECTOR(181); bdfa10 ¤ when 182 => BIT_MUX <= PT_VECTOR(182); 2191c9 ¤ when 183 => BIT_MUX <= PT_VECTOR(183); 808ad7 ¤ when 184 => BIT_MUX <= PT_VECTOR(184); 64e10e ¤ when 185 => BIT_MUX <= PT_VECTOR(185); 7c5d65 ¤ when 186 => BIT_MUX <= PT_VECTOR(186); 2f36bc ¤ when 187 => BIT_MUX <= PT_VECTOR(187); f06b59 ¤ when 188 => BIT_MUX <= PT_VECTOR(188); 420080 ¤ when 189 => BIT_MUX <= PT_VECTOR(189); 2e6685 ¤ when 190 => BIT_MUX <= PT_VECTOR(190); 330d5c ¤ when 191 => BIT_MUX <= PT_VECTOR(191); 92b137 ¤ when 192 => BIT_MUX <= PT_VECTOR(192); 4adaee ¤ when 193 => BIT_MUX <= PT_VECTOR(193); 49c1f0 ¤ when 194 => BIT_MUX <= PT_VECTOR(194); 20aa29 ¤ when 195 => BIT_MUX <= PT_VECTOR(195); 181642 ¤ when 196 => BIT_MUX <= PT_VECTOR(196); bf7d9b ¤ when 197 => BIT_MUX <= PT_VECTOR(197); b5207e ¤ when 198 => BIT_MUX <= PT_VECTOR(198); e84ba7 ¤ when 199 => BIT_MUX <= PT_VECTOR(199); d3af5a 2b9aa2 ¤ when 200 => BIT_MUX <= PT_VECTOR(200); dcf17b ¤ when 201 => BIT_MUX <= PT_VECTOR(201); f94d10 ¤ when 202 => BIT_MUX <= PT_VECTOR(202); c126c9 ¤ when 203 => BIT_MUX <= PT_VECTOR(203); bf3dd7 ¤ when 204 => BIT_MUX <= PT_VECTOR(204); db560e ¤ when 205 => BIT_MUX <= PT_VECTOR(205); f4ea65 ¤ when 206 => BIT_MUX <= PT_VECTOR(206); 7381bc ¤ when 207 => BIT_MUX <= PT_VECTOR(207); 6fdc59 ¤ when 208 => BIT_MUX <= PT_VECTOR(208); 4fb780 ¤ when 209 => BIT_MUX <= PT_VECTOR(209); 0bd185 ¤ when 210 => BIT_MUX <= PT_VECTOR(210); 1eba5c ¤ when 211 => BIT_MUX <= PT_VECTOR(211); 240637 ¤ when 212 => BIT_MUX <= PT_VECTOR(212); ed6dee ¤ when 213 => BIT_MUX <= PT_VECTOR(213); e276f0 ¤ when 214 => BIT_MUX <= PT_VECTOR(214); 601d29 ¤ when 215 => BIT_MUX <= PT_VECTOR(215); d7a142 ¤ when 216 => BIT_MUX <= PT_VECTOR(216); 5dca9b ¤ when 217 => BIT_MUX <= PT_VECTOR(217); 4c977e ¤ when 218 => BIT_MUX <= PT_VECTOR(218); e7fca7 ¤ when 219 => BIT_MUX <= PT_VECTOR(219); 350cec ¤ when 220 => BIT_MUX <= PT_VECTOR(220); 446735 ¤ when 221 => BIT_MUX <= PT_VECTOR(221); 03db5e ¤ when 222 => BIT_MUX <= PT_VECTOR(222); 48b087 ¤ when 223 => BIT_MUX <= PT_VECTOR(223); b7ab99 ¤ when 224 => BIT_MUX <= PT_VECTOR(224); aec040 ¤ when 225 => BIT_MUX <= PT_VECTOR(225); f27c2b ¤ when 226 => BIT_MUX <= PT_VECTOR(226); 3317f2 ¤ when 227 => BIT_MUX <= PT_VECTOR(227); db4a17 ¤ when 228 => BIT_MUX <= PT_VECTOR(228); 9721ce ¤ when 229 => BIT_MUX <= PT_VECTOR(229); 0947cb ¤ when 230 => BIT_MUX <= PT_VECTOR(230); 8e2c12 ¤ when 231 => BIT_MUX <= PT_VECTOR(231); cc9079 ¤ when 232 => BIT_MUX <= PT_VECTOR(232); 68fba0 ¤ when 233 => BIT_MUX <= PT_VECTOR(233); d0e0be ¤ when 234 => BIT_MUX <= PT_VECTOR(234); 748b67 ¤ when 235 => BIT_MUX <= PT_VECTOR(235); 7a370c ¤ when 236 => BIT_MUX <= PT_VECTOR(236); 915cd5 ¤ when 237 => BIT_MUX <= PT_VECTOR(237); 900130 ¤ when 238 => BIT_MUX <= PT_VECTOR(238); e16ae9 ¤ when 239 => BIT_MUX <= PT_VECTOR(239); 3abe2f ¤ when 240 => BIT_MUX <= PT_VECTOR(240); 6dd5f6 ¤ when 241 => BIT_MUX <= PT_VECTOR(241); 1d699d ¤ when 242 => BIT_MUX <= PT_VECTOR(242); 570244 ¤ when 243 => BIT_MUX <= PT_VECTOR(243); --e4a5 0015c0b772180030008 Page 5 of mux256.vhd 89195a ¤ when 244 => BIT_MUX <= PT_VECTOR(244); d87283 ¤ when 245 => BIT_MUX <= PT_VECTOR(245); e2cee8 ¤ when 246 => BIT_MUX <= PT_VECTOR(246); eca531 ¤ when 247 => BIT_MUX <= PT_VECTOR(247); f8f8d4 ¤ when 248 => BIT_MUX <= PT_VECTOR(248); 8c930d ¤ when 249 => BIT_MUX <= PT_VECTOR(249); acf508 ¤ when 250 => BIT_MUX <= PT_VECTOR(250); 4a9ed1 ¤ when 251 => BIT_MUX <= PT_VECTOR(251); 8b22ba ¤ when 252 => BIT_MUX <= PT_VECTOR(252); c64963 ¤ when 253 => BIT_MUX <= PT_VECTOR(253); 6c527d ¤ when 254 => BIT_MUX <= PT_VECTOR(254); 7439a4 ¤ when 255 => BIT_MUX <= PT_VECTOR(255); 8eaf5a 4f4575 ¤ when others => BIT_MUX <= '0'; 4f3387 ·end case; 08af5a 9db4f6 end process DECODER_PR; 88af5a 105356 -------------------------------------------------------------------------------- 28b08a end beh; b85356 -------------------------------------------------------------------------------- 5caf5a --1b70 0013488c39280030009 Page 1 of p.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· cbb51f -- Date ···········: ·09/27/9& ································· ecd6cd -- Description¤ ···: ·Left and Right 32-bit registers ·············· 038b7f -- FILE¤NAME ······: ·p.vhd ···················································¶ e3cf72 ······ f8625a -- ----------------------------------------------------------------------------- c57faf library ieee; 4011e9 use IEEE.std_logic_1164.all; 8eda83 use IEEE.std_logic_arith.all; b2e105 use IEEE.std_logic_unsigned.all; b4af5a beaf5a 2e625a -- ----------------------------------------------------------------------------- d07bea entity P is c1af5a 8ccc6d port( 0cb3bd ¤ P_IN ····¤ : in ····std_logic_vector(31 downto 0); a1586a ·······¤P_OUT ··¤ : out ···std_logic_vector(31 downto 0) fa737c ····); c9af5a b09776 end P; 4daf5a 1b625a -- ----------------------------------------------------------------------------- d341d7 architecture beh of P is e3625a -- ----------------------------------------------------------------------------- 60a039 subtype small_integer is INTEGER range 0 to 31; 8aa364 type P_TYPE is array(0 to 31) of small_integer; b6af5a d649f0 signal P_TABLE : P_TYPE; ccaf5a 4c0f89 begin cfaf5a 1d4bdd P_TABLE <= ¤ (11,17, 5,27,25,10,20, 0, 436dcf ¤ ¤ ·13,21, 3,28,29, 7,18,24, d85d3e ¤ ¤ ·31,22,12, 6,26, 2,16, 8, 3887c6 ¤ ¤ ·14,30, 4,19, 1, 9,15,23);¤ a5af5a 52625a -- ----------------------------------------------------------------------------- 1e3e5a P_PR: process(P_TABLE,P_IN) c8625a -- ----------------------------------------------------------------------------- 3e0f89 begin 0cd72a ¤ for i in 0 to 31 loop a6408d ¤ ····P_OUT(P_TABLE(i)) <= P_IN(i); a77aa9 ¤ end loop; c4a57c end process P_PR; fb625a -- ----------------------------------------------------------------------------- 40b08a end beh; 34625a -- ----------------------------------------------------------------------------- --344c 001ea7d76d38003000a Page 1 of pc1.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| d8b1e9 -- Author ·········: ·Tom Vu 4a0864 -- Date ···········: ·10/02/97 ································· 04f701 -- Description¤ ···: ·Generate Permutation Choice #1 dfc137 -- Function¤ ···: ·Array has the table which tells the mapping 83625a -- ----------------------------------------------------------------------------- 0e7faf library ieee; e811e9 use IEEE.std_logic_1164.all; 99da83 use IEEE.std_logic_arith.all; 19e105 use IEEE.std_logic_unsigned.all; 00af5a 47af5a 6d625a -- ----------------------------------------------------------------------------- 941237 entity PC1 is 33af5a 9514be port( ·· 51ba1f ¤ KEY_IN ····: in ····std_logic_vector(55 downto 0); 8fe01d ·······¤KEY_OUT ···: out ···std_logic_vector(55 downto 0) 5a737c ····); 37a9e7 end PC1; 68625a -- ----------------------------------------------------------------------------- ee8a34 architecture beh of PC1 is 86625a -- ----------------------------------------------------------------------------- 1888c2 subtype small_integer is INTEGER range 0 to 55; f92fa8 type PC1_TYPE is array(0 to 55) of small_integer; 5f77c7 signal PC1_TABLE : PC1_TYPE; b0af5a 710f89 begin 6aaf5a d4058b PC1_TABLE <= ¤ (27,19,11,31,39,47,55, 32b8bd ¤ ¤ ·26,18,10,30,38,46,54, c84e55 ¤ ¤ ·25,17, 9,29,37,45,53, b95fab ¤ ¤ ·24,16, 8,28,36,44,52, 258218 ¤ ¤ ·23,15, 7, 3,35,43,51, 0f93e6 ¤ ¤ ·22,14, 6, 2,34,42,50, 190a6f ¤ ¤ ·21,13, 5, 1,33,41,49, 337b37 ¤ ¤ ·20,12, 4, 0,32,40,48);¤ 95625a -- ----------------------------------------------------------------------------- 94c9d0 Permutation_choice_1: process(KEY_IN,PC1_TABLE) d8625a -- ----------------------------------------------------------------------------- 330f89 begin a1a5ed ¤ for i in 0 to 55 loop 5fee97 ¤ ····KEY_OUT(PC1_TABLE(i)) <= KEY_IN(i); 657aa9 ¤ end loop; fb5890 end process; c2625a -- ----------------------------------------------------------------------------- 2ab08a end beh; ea625a -- ----------------------------------------------------------------------------- --fb57 001701367ee8003000b Page 1 of pc2.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| 025f32 -- Author ·········: ·Tom Vu· d00864 -- Date ···········: ·10/02/97 ································· 85dd69 -- Description¤ ···: ·Generate Permutation Choice #2 69c137 -- Function¤ ···: ·Array has the table which tells the mapping 64625a -- ----------------------------------------------------------------------------- fb7faf library ieee; 4011e9 use IEEE.std_logic_1164.all; 63da83 use IEEE.std_logic_arith.all; 30e105 use IEEE.std_logic_unsigned.all; 33af5a 78af5a 8f625a -- ----------------------------------------------------------------------------- cd0ffb entity PC2 is 49af5a c814be port( ·· bbba1f ¤ KEY_IN ····: in ····std_logic_vector(55 downto 0); 9ae70b ·······¤KEY_OUT ···: out ···std_logic_vector(47 downto 0) ca737c ····); 60af5a 214683 end PC2; 85af5a 59625a -- ----------------------------------------------------------------------------- 3197f8 architecture beh of PC2 is 27625a -- ----------------------------------------------------------------------------- 3888c2 subtype small_integer is INTEGER range 0 to 55; 2c5861 type PC2_TYPE is array(0 to 47) of small_integer; 9494fc signal PC2_TABLE : PC2_TYPE; a5af5a 620f89 begin a8af5a 7b87fd PC2_TABLE<= ¤ (24,27,20, 6,14,10, 3,22, bcb0d3 ¤ ¤ ··0,17, 7,12, 8,23,11, 5, eda82a ¤ ¤ ·16,26, 1, 9,19,25, 4,15, 60e6d1 ¤ ¤ ·54,43,36,29,49,40,48,30, f07eaa ¤ ·¤ ·52,44,37,33,46,35,50,41, f9c953 ¤ ¤ ·28,53,51,55,32,45,39,42); 44625a -- ----------------------------------------------------------------------------- 9e1c95 Permutation_choice_2: process(KEY_IN,PC2_TABLE) 34625a -- ----------------------------------------------------------------------------- f30f89 begin d813e9 ¤ for i in 0 to 47 loop 35f552 ¤ ····KEY_OUT(i) <= KEY_IN(PC2_TABLE(i)); 9f7aa9 ¤ end loop; 925890 end process; a9625a -- ----------------------------------------------------------------------------- 5bb08a end beh; 70625a -- ----------------------------------------------------------------------------- --0a1e 000f30f0bc98003000c Page 1 of reg_rdwr.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· f06e63 -- Date ···········: ·09/19/97 ································· 704774 -- Description¤ ···: ·UProcessor interface b65356 -------------------------------------------------------------------------------- 407faf library ieee; 6411e9 use IEEE.std_logic_1164.all; b3da83 use IEEE.std_logic_arith.all; a0e105 use IEEE.std_logic_unsigned.all; 325356 -------------------------------------------------------------------------------- b678aa entity REG_RDWR is d1af5a 6bcba7 port( ··RST_N ··········: in ····std_logic; 6a2d12 ········BOARD_EN ······¤: in ····std_logic; fa7852 ········ALE ·········¤ : in ····std_logic; dc61d0 ········ADDSEL1 ·······¤: in ····std_logic; d73455 ········WRB ·········¤ : in ····std_logic; 35c402 ········RDB ·········¤ : in ····std_logic; 3400c5 ········ADDSEL2 ·······¤: in ····std_logic; 90ff5d ········AA_IN ········¤ : in ····std_logic; 86a88e ········ADDR ······¤ : in ····std_logic_vector(7 downto 0); ee8827 ········CHIP_ID ······¤ : in ····std_logic_vector(7 downto 0); dcb08d ········SEARCH_OUT ····¤: in ····std_logic_vector(23 downto 0); e3f5bb ········SELECT_ONE ·¤ : in ····std_logic_vector(23 downto 0); d96e10 ········SEARCH_IN ···¤ : in ·····std_logic_vector(23 downto 0); e2af5a e50f19 ········CHIP_EN ······¤ : out ···std_logic; 1cb93c ········AA_OUT ······¤ : out ···std_logic; 5d77f0 ········CHIP_AA_OUT ··¤ : out ···std_logic; a46aef ········EXTRA_XOR ······: out ···std_logic; d3a049 ········USE_CBC ········: out ···std_logic; 2b57ed ········PT_XOR_MASK ···¤: out ···std_logic_vector(63 downto 0); 1346a7 ········PT_BYTE_MASK ·¤ : out ···std_logic_vector(7 downto 0); 787409 ········PT_VECTOR ·····¤: out ···std_logic_vector(255 downto 0); 739c20 ········C0 ·····¤ : out ···std_logic_vector(63 downto 0); b15335 ········C1 ·····¤ : out ···std_logic_vector(63 downto 0); 8d7bfe ········DATAI ······¤ : in ····std_logic_vector(7 downto 0); 145cbe ········DATAO ······¤ : out ···std_logic_vector(7 downto 0) b9737c ····); c8af5a 2aaf5a 642639 end REG_RDWR; 73af5a 1d5356 -------------------------------------------------------------------------------- 1f6e71 architecture beh of REG_RDWR is 335356 -------------------------------------------------------------------------------- f35b70 type DATA32_ARRAY is array(31 downto 0) of std_logic_vector(7 downto 0); b9e3bf type DATA8_ARRAY ·is array(7 ·downto 0) of std_logic_vector(7 downto 0); d1af5a 2d0342 signal PT_VECTOR_REG ·······¤ : DATA32_ARRAY; cdaf5a 1271b6 signal PT_XOR_MASK_REG ······¤ : DATA8_ARRAY; f2e6ea signal CIPHER0 ·······¤ ¤ : DATA8_ARRAY; d2b737 signal CIPHER1 ·······¤ ¤ : DATA8_ARRAY; f7af5a 8eaf5a 282682 signal SEARCH_INFO_REG ¤: std_logic_vector(7 ·downto 0); 398ba7 signal PT_BYTE_MASK_REG¤: std_logic_vector(7 ·downto 0); 7502ae signal CHIP_REG ¤ : std_logic_vector(7 ·downto 0); e517a8 signal CHIP_EN_BAK¤ : std_logic; a1738b signal ALL_ACTIVE ¤ : std_logic; b32985 signal BAA_EN ¤ : std_logic; f3ca5d signal AA_OUT_BAK ¤ : std_logic; 7daf5a 090f89 begin b510c0 CHIP_EN_BAK <= '1' when ((CHIP_ID = CHIP_REG) and BOARD_EN = '1') else '0'; acaf5a 455356 -------------------------------------------------------------------------------- 47d4cd CHIP_ID_REG_PR: process(RST_N, ALE) 645356 -------------------------------------------------------------------------------- 609ebc begin ·· f33dcd if (RST_N = '0') then --9b90 00080b9ffa88003000c Page 2 of reg_rdwr.vhd a4a147 ¤ CHIP_REG <= (others => '0'); 8eb4c0 elsif (ALE'event and ALE= '1') then 63af5a ff2241 if ((BOARD_EN = '1') and (ADDSEL1 = '1')) then da905d ········CHIP_REG <= ADDR; 7c62af end if; · 2962af end if; · 39d83c · 10abb9 end process CHIP_ID_REG_PR; f4af5a cb5356 -------------------------------------------------------------------------------- faceba READ_PR: process(PT_VECTOR_REG, PT_XOR_MASK_REG, 07acbc ¤ ¤ PT_BYTE_MASK_REG, SEARCH_INFO_REG, CIPHER0, CIPHER1, 8d8679 ¤ ¤ SEARCH_IN, SELECT_ONE, ALL_ACTIVE, AA_OUT_BAK, 70735f ¤ ¤ CHIP_EN_BAK, ADDSEL2, RDB, ADDR,BAA_EN) 4e5356 -------------------------------------------------------------------------------- a49ebc begin ·· 64643c if ((CHIP_EN_BAK = '1') and (ADDSEL2 = '0') and (RDB = '0')) then 40bac7 ¤ case ADDR is 98af5a f95fed ¤ when "00000000" => DATAO <= PT_VECTOR_REG(0); 050335 ¤ when "00000001" => DATAO <= PT_VECTOR_REG(1); 903746 ¤ when "00000010" => DATAO <= PT_VECTOR_REG(2); 766b9e ¤ when "00000011" => DATAO <= PT_VECTOR_REG(3); 9d2038 ¤ when "00000100" => DATAO <= PT_VECTOR_REG(4); 607ce0 ¤ when "00000101" => DATAO <= PT_VECTOR_REG(5); 7b4893 ¤ when "00000110" => DATAO <= PT_VECTOR_REG(6); 93144b ¤ when "00000111" => DATAO <= PT_VECTOR_REG(7); 0a167a ¤ when "00001000" => DATAO <= PT_VECTOR_REG(8); 7e4aa2 ¤ when "00001001" => DATAO <= PT_VECTOR_REG(9); b28a59 ¤ when "00001010" => DATAO <= PT_VECTOR_REG(10); aec73f ¤ when "00001011" => DATAO <= PT_VECTOR_REG(11); 921259 ¤ when "00001100" => DATAO <= PT_VECTOR_REG(12); 185f3f ¤ when "00001101" => DATAO <= PT_VECTOR_REG(13); 3e54fa ¤ when "00001110" => DATAO <= PT_VECTOR_REG(14); 1c199c ¤ when "00001111" => DATAO <= PT_VECTOR_REG(15); 2cdc6d ¤ when "00010000" => DATAO <= PT_VECTOR_REG(16); 67910b ¤ when "00010001" => DATAO <= PT_VECTOR_REG(17); 2d7f16 ¤ when "00010010" => DATAO <= PT_VECTOR_REG(18); 5c3270 ¤ when "00010011" => DATAO <= PT_VECTOR_REG(19); 9f2674 ¤ when "00010100" => DATAO <= PT_VECTOR_REG(20); ff6b12 ¤ when "00010101" => DATAO <= PT_VECTOR_REG(21); 1e123b ¤ when "00010110" => DATAO <= PT_VECTOR_REG(22); 905f5d ¤ when "00010111" => DATAO <= PT_VECTOR_REG(23); 904288 ¤ when "00011000" => DATAO <= PT_VECTOR_REG(24); 140fee ¤ when "00011001" => DATAO <= PT_VECTOR_REG(25); a876c7 ¤ when "00011010" => DATAO <= PT_VECTOR_REG(26); 763ba1 ¤ when "00011011" => DATAO <= PT_VECTOR_REG(27); 9379f3 ¤ when "00011100" => DATAO <= PT_VECTOR_REG(28); 713495 ¤ when "00011101" => DATAO <= PT_VECTOR_REG(29); 0c9a56 ¤ when "00011110" => DATAO <= PT_VECTOR_REG(30); 94d730 ¤ when "00011111" => DATAO <= PT_VECTOR_REG(31); 64af5a 5c6da3 ¤ when "00100000" => DATAO <= PT_XOR_MASK_REG(0); cd7c21 ¤ when "00100001" => DATAO <= PT_XOR_MASK_REG(1); 78f89a ¤ when "00100010" => DATAO <= PT_XOR_MASK_REG(2); a9e918 ¤ when "00100011" => DATAO <= PT_XOR_MASK_REG(3); a4a510 ¤ when "00100100" => DATAO <= PT_XOR_MASK_REG(4); 6bb492 ¤ when "00100101" => DATAO <= PT_XOR_MASK_REG(5); 9f3029 ¤ when "00100110" => DATAO <= PT_XOR_MASK_REG(6); ae21ab ¤ when "00100111" => DATAO <= PT_XOR_MASK_REG(7); c8af5a e552d5 ¤ when "00101000" => DATAO <= CIPHER0(0); c21c26 ¤ when "00101001" => DATAO <= CIPHER0(1); 3ca5bd ¤ when "00101010" => DATAO <= CIPHER0(2); 85eb4e ¤ when "00101011" => DATAO <= CIPHER0(3); 54d908 ¤ when "00101100" => DATAO <= CIPHER0(4); 0e97fb ¤ when "00101101" => DATAO <= CIPHER0(5); ca2e60 ¤ when "00101110" => DATAO <= CIPHER0(6); c86093 ¤ when "00101111" => DATAO <= CIPHER0(7); 68af5a 80b339 ¤ when "00110000" => DATAO <= CIPHER1(0); --4711 000c5caea668003000c Page 3 of reg_rdwr.vhd 95fdca ¤ when "00110001" => DATAO <= CIPHER1(1); e64451 ¤ when "00110010" => DATAO <= CIPHER1(2); dd0aa2 ¤ when "00110011" => DATAO <= CIPHER1(3); 7038e4 ¤ when "00110100" => DATAO <= CIPHER1(4); a17617 ¤ when "00110101" => DATAO <= CIPHER1(5); 10cf8c ¤ when "00110110" => DATAO <= CIPHER1(6); a2817f ¤ when "00110111" => DATAO <= CIPHER1(7); 16af5a b74798 ¤ when "00111000" => DATAO <= PT_BYTE_MASK_REG; 1ba7e9 ¤ when "00111111" => DATAO <= "000" & BAA_EN &· d268c2 ¤ ¤ AA_OUT_BAK & ALL_ACTIVE & SEARCH_INFO_REG(1 downto 0) ; ffaf5a 06548f ¤ when "01000111" => DATAO ·<= "000000" & SELECT_ONE(0) ·& SEARCH_IN(0); 63e0de ¤ when "01001111" => DATAO ·<= "000000" & SELECT_ONE(1) ·& SEARCH_IN(1); b0a4d4 ¤ when "01010111" => DATAO ·<= "000000" & SELECT_ONE(2) ·& SEARCH_IN(2); 461085 ¤ when "01011111" => DATAO ·<= "000000" & SELECT_ONE(3) ·& SEARCH_IN(3); 2dd7fe ¤ when "01100111" => DATAO ·<= "000000" & SELECT_ONE(4) ·& SEARCH_IN(4); 3c63af ¤ when "01101111" => DATAO ·<= "000000" & SELECT_ONE(5) ·& SEARCH_IN(5); e327a5 ¤ when "01110111" => DATAO ·<= "000000" & SELECT_ONE(6) ·& SEARCH_IN(6); 4493f4 ¤ when "01111111" => DATAO ·<= "000000" & SELECT_ONE(7) ·& SEARCH_IN(7); 9d13d9 ¤ when "10000111" => DATAO ·<= "000000" & SELECT_ONE(8) ·& SEARCH_IN(8); 22a788 ¤ when "10001111" => DATAO ·<= "000000" & SELECT_ONE(9) ·& SEARCH_IN(9); 942170 ¤ when "10010111" => DATAO ·<= "000000" & SELECT_ONE(10) & SEARCH_IN(10); a89d0d ¤ when "10011111" => DATAO ·<= "000000" & SELECT_ONE(11) & SEARCH_IN(11); 46a860 ¤ when "10100111" => DATAO ·<= "000000" & SELECT_ONE(12) & SEARCH_IN(12); 13141d ¤ when "10101111" => DATAO ·<= "000000" & SELECT_ONE(13) & SEARCH_IN(13); a9a4da ¤ when "10110111" => DATAO ·<= "000000" & SELECT_ONE(14) & SEARCH_IN(14); 3718a7 ¤ when "10111111" => DATAO ·<= "000000" & SELECT_ONE(15) & SEARCH_IN(15); 35d7bf ¤ when "11000111" => DATAO ·<= "000000" & SELECT_ONE(16) & SEARCH_IN(16); 4b6bc2 ¤ when "11001111" => DATAO ·<= "000000" & SELECT_ONE(17) & SEARCH_IN(17); 52f40b ¤ when "11010111" => DATAO ·<= "000000" & SELECT_ONE(18) & SEARCH_IN(18); b64876 ¤ when "11011111" => DATAO ·<= "000000" & SELECT_ONE(19) & SEARCH_IN(19); 3899a6 ¤ when "11100111" => DATAO ·<= "000000" & SELECT_ONE(20) & SEARCH_IN(20); 8525db ¤ when "11101111" => DATAO ·<= "000000" & SELECT_ONE(21) & SEARCH_IN(21); c2829b ¤ when "11110111" => DATAO ·<= "000000" & SELECT_ONE(22) & SEARCH_IN(22); 023ee6 ¤ when "11111111" => DATAO ·<= "000000" & SELECT_ONE(23) & SEARCH_IN(23); 7f7aab ¤ when others ····=> DATAO <= (others => 'Z'); 07af5a d492b5 end case; 56523c else a35d06 ¤ DATAO <= (others => 'Z'); 8adf0b end if; 6b2c2b end process READ_PR; 4d5356 -------------------------------------------------------------------------------- f9ab46 PT_VECTOR_PR: process(RST_N, WRB) 795356 -------------------------------------------------------------------------------- c29ebc begin ·· 9f3dcd if (RST_N = '0') then 9bd72a ¤ for i in 0 to 31 loop 193d94 ¤ PT_VECTOR_REG(i) <= (others => '0'); 4b7aa9 ¤ end loop; 1faf5a a8df7d ¤ for i in 0 to 7 loop bd359a ¤ PT_XOR_MASK_REG(i) <= (others => '0'); 5fdf54 ¤ CIPHER0(i) <= (others => '0'); 6adb2f ¤ CIPHER1(i) <= (others => '0'); a37aa9 ¤ end loop; 3faf5a 40889f ¤ PT_BYTE_MASK_REG <= (others => '0'); f15de2 ¤ SEARCH_INFO_REG <= (others => '0'); f7af5a f9ae0d elsif (WRB'event and WRB= '1') then 6faf5a 32e1c4 if ((CHIP_EN_BAK = '1') and (ADDSEL2 = '0')) then 48bac7 ¤ case ADDR is 51ebd1 ¤ when "00000000" => PT_VECTOR_REG(0) <= DATAI; 94ae1f ¤ when "00000001" => PT_VECTOR_REG(1) <= DATAI; 69b156 ¤ when "00000010" => PT_VECTOR_REG(2) <= DATAI; 86f498 ¤ when "00000011" => PT_VECTOR_REG(3) <= DATAI; cef05c ¤ when "00000100" => PT_VECTOR_REG(4) <= DATAI; 82b592 ¤ when "00000101" => PT_VECTOR_REG(5) <= DATAI; c5aadb ¤ when "00000110" => PT_VECTOR_REG(6) <= DATAI; --f423 000420fb0478003000c Page 4 of reg_rdwr.vhd 47ef15 ¤ when "00000111" => PT_VECTOR_REG(7) <= DATAI; df6af6 ¤ when "00001000" => PT_VECTOR_REG(8) <= DATAI; 142f38 ¤ when "00001001" => PT_VECTOR_REG(9) <= DATAI; 409fd3 ¤ when "00001010" => PT_VECTOR_REG(10) <= DATAI; afcba3 ¤ when "00001011" => PT_VECTOR_REG(11) <= DATAI; b035ff ¤ when "00001100" => PT_VECTOR_REG(12) <= DATAI; d3618f ¤ when "00001101" => PT_VECTOR_REG(13) <= DATAI; 512528 ¤ when "00001110" => PT_VECTOR_REG(14) <= DATAI; 8e7158 ¤ when "00001111" => PT_VECTOR_REG(15) <= DATAI; e39f93 ¤ when "00010000" => PT_VECTOR_REG(16) <= DATAI; a1cbe3 ¤ when "00010001" => PT_VECTOR_REG(17) <= DATAI; 1fa22c ¤ when "00010010" => PT_VECTOR_REG(18) <= DATAI; 4af65c ¤ when "00010011" => PT_VECTOR_REG(19) <= DATAI; 15ad0c ¤ when "00010100" => PT_VECTOR_REG(20) <= DATAI; 15f97c ¤ when "00010101" => PT_VECTOR_REG(21) <= DATAI; cbab6f ¤ when "00010110" => PT_VECTOR_REG(22) <= DATAI; a9ff1f ¤ when "00010111" => PT_VECTOR_REG(23) <= DATAI; 17ada8 ¤ when "00011000" => PT_VECTOR_REG(24) <= DATAI; 28f9d8 ¤ when "00011001" => PT_VECTOR_REG(25) <= DATAI; a7abcb ¤ when "00011010" => PT_VECTOR_REG(26) <= DATAI; 17ffbb ¤ when "00011011" => PT_VECTOR_REG(27) <= DATAI; 803a3b ¤ when "00011100" => PT_VECTOR_REG(28) <= DATAI; 916e4b ¤ when "00011101" => PT_VECTOR_REG(29) <= DATAI; fc6480 ¤ when "00011110" => PT_VECTOR_REG(30) <= DATAI; 7d30f0 ¤ when "00011111" => PT_VECTOR_REG(31) <= DATAI; ceaf5a bc692a ¤ when "00100000" => PT_XOR_MASK_REG(0) <= DATAI; 6261be ¤ when "00100001" => PT_XOR_MASK_REG(1) <= DATAI; abce3f ¤ when "00100010" => PT_XOR_MASK_REG(2) <= DATAI; 8dc6ab ¤ when "00100011" => PT_XOR_MASK_REG(3) <= DATAI; d1c5c1 ¤ when "00100100" => PT_XOR_MASK_REG(4) <= DATAI; b2cd55 ¤ when "00100101" => PT_XOR_MASK_REG(5) <= DATAI; 4262d4 ¤ when "00100110" => PT_XOR_MASK_REG(6) <= DATAI; 116a40 ¤ when "00100111" => PT_XOR_MASK_REG(7) <= DATAI; 4aaf5a 8bb54a ¤ when "00101000" => CIPHER0(0) <= DATAI; abe2af ¤ when "00101001" => CIPHER0(1) <= DATAI; ed700e ¤ when "00101010" => CIPHER0(2) <= DATAI; 2027eb ¤ when "00101011" => CIPHER0(3) <= DATAI; f65acf ¤ when "00101100" => CIPHER0(4) <= DATAI; 180d2a ¤ when "00101101" => CIPHER0(5) <= DATAI; 379f8b ¤ when "00101110" => CIPHER0(6) <= DATAI; 9ac86e ¤ when "00101111" => CIPHER0(7) <= DATAI; 69af5a bd18a7 ¤ when "00110000" => CIPHER1(0) <= DATAI; ea4f42 ¤ when "00110001" => CIPHER1(1) <= DATAI; 58dde3 ¤ when "00110010" => CIPHER1(2) <= DATAI; f48a06 ¤ when "00110011" => CIPHER1(3) <= DATAI; 0ff722 ¤ when "00110100" => CIPHER1(4) <= DATAI; 86a0c7 ¤ when "00110101" => CIPHER1(5) <= DATAI; ef3266 ¤ when "00110110" => CIPHER1(6) <= DATAI; f56583 ¤ when "00110111" => CIPHER1(7) <= DATAI; 1daf5a 7202f9 ¤ when "00111000" => PT_BYTE_MASK_REG <= DATAI; 16af5a 1a1063 ¤ when "00111111" => SEARCH_INFO_REG ·<= DATAI; 70af5a 7aaf5a 27af5a 324c29 ¤ ·when others => null; a38259 ········end case; d262af end if; · cf62af end if; · 3ed83c · 2f96ba end process PT_VECTOR_PR; 0cd83c · 5a63e0 PT_VECTOR <= ···PT_VECTOR_REG(31) & PT_VECTOR_REG(30) & PT_VECTOR_REG(29) & PT_¶ f70fc6 VECTOR_REG(28) & 2f41de ¤ ¤ PT_VECTOR_REG(27) & PT_VECTOR_REG(26) & PT_VECTOR_REG(25) & PT_¶ 0878f6 VECTOR_REG(24) & 3433f8 ¤ ¤ PT_VECTOR_REG(23) & PT_VECTOR_REG(22) & PT_VECTOR_REG(21) & PT_¶ 4255e6 VECTOR_REG(20) & --88e5 001f556d3e88003000c Page 5 of reg_rdwr.vhd 048028 ¤ ¤ PT_VECTOR_REG(19) & PT_VECTOR_REG(18) & PT_VECTOR_REG(17) & PT_¶ 216203 VECTOR_REG(16) & f87f6b ¤ ¤ PT_VECTOR_REG(15) & PT_VECTOR_REG(14) & PT_VECTOR_REG(13) & PT_¶ 474f13 VECTOR_REG(12) & d3dced ¤ ¤ PT_VECTOR_REG(11) & PT_VECTOR_REG(10) & PT_VECTOR_REG(9) ·& PT_¶ 400ee7 VECTOR_REG(8) & d19f75 ¤ ¤ PT_VECTOR_REG(7) ·& PT_VECTOR_REG(6) ·& PT_VECTOR_REG(5) ·& PT_¶ 8679d7 VECTOR_REG(4) & fadb33 ¤ ¤ PT_VECTOR_REG(3) ·& PT_VECTOR_REG(2) ·& PT_VECTOR_REG(1) ·& PT_¶ ab712e VECTOR_REG(0) ; 9daf5a f79fa6 PT_XOR_MASK ·<= ·PT_XOR_MASK_REG(7) & PT_XOR_MASK_REG(6) & PT_XOR_MASK_REG(5) &¶ f47e06 ·PT_XOR_MASK_REG(4) &· 9332e5 ·················PT_XOR_MASK_REG(3) & PT_XOR_MASK_REG(2) & PT_XOR_MASK_REG(1) &¶ 708f30 ·PT_XOR_MASK_REG(0) ; c6af5a bce0a8 C1 ·<= ·CIPHER1(7) & CIPHER1(6) & CIPHER1(5) & CIPHER1(4) &· 163040 ········CIPHER1(3) & CIPHER1(2) & CIPHER1(1) & CIPHER1(0) ; 1d1a2d C0 ·<= ·CIPHER0(7) & CIPHER0(6) & CIPHER0(5) & CIPHER0(4) &· 71bfc6 ········CIPHER0(3) & CIPHER0(2) & CIPHER0(1) & CIPHER0(0) ; 58af5a b05356 -------------------------------------------------------------------------------- aed83c · deaf5a 855356 -------------------------------------------------------------------------------- 54960e PT_BYTE_MASK ¤ <= PT_BYTE_MASK_REG; 38b8c9 USE_CBC ¤ <= SEARCH_INFO_REG(0); a1a0c4 EXTRA_XOR ¤ <= SEARCH_INFO_REG(1); 12bd48 BAA_EN ¤¤ <= SEARCH_INFO_REG(4); 3075ee AA_OUT_BAK¤ <= AA_IN and ALL_ACTIVE when (BAA_EN = '1') else AA_IN; 5d2bdd AA_OUT ¤¤ <= AA_OUT_BAK ; 9aaf5a be35fc ALL_ACTIVE¤ <= ( SEARCH_OUT(23) and SEARCH_OUT(22) and SEARCH_OUT(21) and S¶ 9c2c82 EARCH_OUT(20) and 1e4820 ·····················SEARCH_OUT(19) and SEARCH_OUT(18) and SEARCH_OUT(17) and S¶ cefe9f EARCH_OUT(16) and ceb3bf ·····················SEARCH_OUT(15) and SEARCH_OUT(14) and SEARCH_OUT(13) and S¶ 4291e9 EARCH_OUT(12) and d7794d ·····················SEARCH_OUT(11) and SEARCH_OUT(10) and SEARCH_OUT(9) ·and ·¶ 68357c SEARCH_OUT(8) and 8630b9 ·····················SEARCH_OUT(7) ·and SEARCH_OUT(6) ·and SEARCH_OUT(5) ·and ·¶ 3584e6 SEARCH_OUT(4) and b68753 ·····················SEARCH_OUT(3) ·and SEARCH_OUT(2) ·and SEARCH_OUT(1) ·and ·¶ 0b76b6 SEARCH_OUT(0)); aaf17f CHIP_AA_OUT ¤ <= ·ALL_ACTIVE; 8827f3 CHIP_EN ¤ <= CHIP_EN_BAK; c45356 -------------------------------------------------------------------------------- 32b08a end beh; 595356 -------------------------------------------------------------------------------- f5af5a --068f 000b046c2498003000d Page 1 of s_table.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| d8b1e9 -- Author ·········: ·Tom Vu 4a0864 -- Date ···········: ·10/02/97 ································· dc5b64 -- Description¤ ···: ·Create table for lookup values of S function 415e67 -- Function¤ ···: ·6 inputs are used to lookup in the table and produce· 829e89 --¤ ¤ ······4 ouputs. ·There are a total of 8 tables 9b625a -- ----------------------------------------------------------------------------- 3c7faf library ieee; 2011e9 use IEEE.std_logic_1164.all; 95da83 use IEEE.std_logic_arith.all; b1e105 use IEEE.std_logic_unsigned.all; ea6414 use ieee.std_logic_arith.conv_std_logic_vector;· beaf5a f4af5a 22625a -- ----------------------------------------------------------------------------- d8c826 entity S_TABLE is 82af5a 7896b5 port( ·KEY ·······: in ····std_logic_vector(47 downto 0); 5c0d73 ·······S_OUT ·····: out ···std_logic_vector(31 downto 0) 00737c ····); 40af5a 56a64c end S_TABLE; 15af5a 95625a -- ----------------------------------------------------------------------------- 72a250 architecture beh of S_TABLE is 2a625a -- ----------------------------------------------------------------------------- 09fa2e subtype small_integer is INTEGER range 0 to 15; cee268 type TABLE_TYPE is array(0 to 63) of small_integer; 35af5a ac5dd3 signal S1 : TABLE_TYPE; 6dc7f2 signal S2 : TABLE_TYPE; 4e49e2 signal S3 : TABLE_TYPE; ebfba1 signal S4 : TABLE_TYPE; 4275b1 signal S5 : TABLE_TYPE; 57ef90 signal S6 : TABLE_TYPE; 986180 signal S7 : TABLE_TYPE; 5a8307 signal S8 : TABLE_TYPE; a5af5a 74625a -- ----------------------------------------------------------------------------- 1ba248 function lookup(signal table: in TABLE_TYPE; 652795 ¤ ¤ signal key: in std_logic_vector(5 downto 0))· 87af5a 5e4d3e ¤ ·return std_logic_vector is 00af5a e46717 variable row ···: std_logic_vector(3 downto 0); c66911 variable col ···: std_logic_vector(1 downto 0); 0f40ce variable addr ··: std_logic_vector(5 downto 0); 324c51 variable index ·: integer; 6166ad variable result : std_logic_vector(3 downto 0); f6af5a 3f0f89 begin fdaf5a dddf25 ····col:= key(5) & key(0); a6524a ····row:= key(4 downto 1); af9742 ····addr:= col & row; 9ae23b ····index:= CONV_INTEGER(key); 41af5a 87e25b ····result:= CONV_STD_LOGIC_VECTOR(table(index),4); 39af5a 7214bd ····return result; e4af5a 980c01 end ·lookup; 36625a -- ----------------------------------------------------------------------------- 330f89 begin 30625a -- ----------------------------------------------------------------------------- f7af5a 0671a2 S1 ¤ <=¤ (13, 1, 2,15, 8,13, 4, 8, 6,10,15, 3,11, 7, 1, 4, d8e826 ¤ ¤ ·10,12, 9, 5, 3, 6,14,11, 5, 0, 0,14,12, 9, 7, 2, 08aaee ¤ ¤ ··7, 2,11, 1, 4,14, 1, 7, 9, 4,12,10,14, 8, 2,13, 1dac76 ¤ ¤ ··0,15, 6,12,10, 9,13, 0,15, 3, 3, 5, 5, 6, 8,11); dbaf5a b0fc37 S2 ¤ <=¤ ( 4,13,11, 0, 2,11,14, 7,15, 4, 0, 9, 8, 1,13,10, --1b4d 00142225b498003000d Page 2 of s_table.vhd 68af27 ¤ ¤ ··3,14,12, 3, 9, 5, 7,12, 5, 2,10,15, 6, 8, 1, 6, dfeb0f ¤ ¤ ··1, 6, 4,11,11,13,13, 8,12, 1, 3, 4, 7,10,14, 7, 088e69 ¤ ¤ ·10, 9,15, 5, 6, 0, 8,15, 0,14, 5, 2, 9, 3, 2,12); 62af5a 4ad185 S3 ¤ <=¤ (12,10, 1,15,10, 4,15, 2, 9, 7, 2,12, 6, 9, 8, 5, b53629 ¤ ¤ ··0, 6,13, 1, 3,13, 4,14,14, 0, 7,11, 5, 3,11, 8, de712b ¤ ¤ ··9, 4,14, 3,15, 2, 5,12, 2, 9, 8, 5,12,15, 3,10, 37d78f ¤ ¤ ··7,11, 0,14, 4, 1,10, 7, 1, 6,13, 0,11, 8, 6,13); 27af5a c63d3c S4 ¤ <=¤ ( 2,14,12,11, 4, 2, 1,12, 7, 4,10, 7,11,13, 6, 1, d80ade ¤ ¤ ··8, 5, 5, 0, 3,15,15,10,13, 3, 0, 9,14, 8, 9, 6, e1d008 ¤ ¤ ··4,11, 2, 8, 1,12,11, 7,10, 1,13,14, 7, 2, 8,13, 84f6fa ¤ ¤ ·15, 6, 9,15,12, 0, 5, 9, 6,10, 3, 4, 0, 5,14, 3); aeaf5a bf6361 S5 ¤ <=¤ ( 7,13,13, 8,14,11, 3, 5, 0, 6, 6,15, 9, 0,10, 3, f08223 ¤ ¤ ··1, 4, 2, 7, 8, 2, 5,12,11, 1,12,10, 4,14,15, 9, a72f41 ¤ ¤ ·10, 3, 6,15, 9, 0, 0, 6,12,10,11, 1, 7,13,13, 8, 9492e5 ¤ ¤ ·15, 9, 1, 4, 3, 5,14,11, 5,12, 2, 7, 8, 2, 4,14); 30af5a e251c8 S6 ¤ <=¤ (10,13, 0, 7, 9, 0,14, 9, 6, 3, 3, 4,15, 6, 5,10, 08bf4f ¤ ¤ ··1, 2,13, 8,12, 5, 7,14,11,12, 4,11, 2,15, 8, 1, faa01f ¤ ¤ ·13, 1, 6,10, 4,13, 9, 0, 8, 6,15, 9, 3, 8, 0, 7, d2f2c2 ¤ ¤ ·11, 4, 1,15, 2,14,12, 3, 5,11,10, 5,14, 2, 7,12); 49af5a b6d92c S7 ¤ <=¤ (15, 3, 1,13, 8, 4,14, 7, 6,15,11, 2, 3, 8, 4,14, b6f59b ¤ ¤ ··9,12, 7, 0, 2, 1,13,10,12, 6, 0, 9, 5,11,10, 5, 8c0ccc ¤ ¤ ··0,13,14, 8, 7,10,11, 1,10, 3, 4,15,13, 4, 1, 2, fa311b ¤ ¤ ··5,11, 8, 6,12, 7, 6,12, 9, 0, 3, 5, 2,14,15, 9); d6af5a b0ba0a S8 ¤ <=¤ (14, 0, 4,15,13, 7, 1, 4, 2,14,15, 2,11,13, 8, 1, 2ac15d ¤ ¤ ··3,10,10, 6, 6,12,12,11, 5, 9, 9, 5, 0, 3, 7, 8, 54bf1e ¤ ¤ ··4,15, 1,12,14, 8, 8, 2,13, 4, 6, 9, 2, 1,11, 7, 834ce4 ¤ ¤ ·15, 5,12,11, 9, 3, 7,14, 3,10,10, 0, 5, 6, 0,13); 25af5a bd8694 S_OUT ¤ <= ¤ lookup(S8,KEY(47 downto 42)) & 553b55 ·········¤ lookup(S7,KEY(41 downto 36)) & 54f229 ·········¤ lookup(S6,KEY(35 downto 30)) & dd87b3 ·········¤ lookup(S5,KEY(29 downto 24)) & acd315 ·········¤ lookup(S4,KEY(23 downto 18)) & 9d4724 ·········¤ lookup(S3,KEY(17 downto 12)) & 4a3cc2 ·········¤ lookup(S2,KEY(11 downto ·6)) & b5a317 ·········¤ lookup(S1,KEY( 5 downto ·0)) ; daaf5a 95625a -- ----------------------------------------------------------------------------- bcb08a end beh; 42625a -- ----------------------------------------------------------------------------- --4fac 00050e451e18003000e Page 1 of search.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· 3a917e -- Date ···········: ·09/07/97 ································· 857268 -- Description¤ ···: ·Search Unit 2d5356 -------------------------------------------------------------------------------- 037faf library ieee; d811e9 use IEEE.std_logic_1164.all; e3da83 use IEEE.std_logic_arith.all; a0e105 use IEEE.std_logic_unsigned.all; 585356 -------------------------------------------------------------------------------- 53cbd6 entity SEARCH_UNIT is 72af5a 8dec7a port( ··CLK ············: in ····std_logic; ff2e77 ········RST_N ··········: in ····std_logic; 3d6737 ········WRB ············: in ····std_logic; 779760 ········RDB ············: in ····std_logic; f8baaa ········SEARCH ·········: in ····std_logic; 65a2a9 ········EXTRA_XOR ······: in ····std_logic; 39dbdf ········USE_CBC ······¤ : in ····std_logic; dd2913 ········ADDR_KEY ·······: in ····std_logic_vector(6 ·downto 0); 28af5a 4ffddd ········DATAI ······¤ : in ·¤ ·std_logic_vector(7 downto 0); 39e965 ········PT_BYTE_MASK ··¤: in ·¤ ·std_logic_vector(7 downto 0); 07b25c ········PT_XOR_MASK ··¤ : in ·¤ ·std_logic_vector(63 downto 0); 0d809f ········PT_VECTOR ······: in ····std_logic_vector(255 downto 0); 8ff8de ········C0 ·············: in ····std_logic_vector(63 downto 0); 2c37cb ········C1 ·············: in ····std_logic_vector(63 downto 0); ab6756 ········KEY_OUT ········: out ····std_logic_vector(55 downto 0); aea74a ········DES_OUTPUT ·····: out ····std_logic_vector(63 downto 0); 4f7098 -- ······MATCH_OUT ¤ : out ····std_logic; 26fd4f ········SELECT_ONE ¤ : out ····std_logic; ce4b50 ········SEARCH_OUT ¤ : out ····std_logic; 6013c4 ········CLEAR_SEARCH ¤ : out ····std_logic; 45a552 ········DATAO ·······¤ : out ···std_logic_vector(7 downto 0) f2737c ····); 31af5a 9faf5a 983e22 end SEARCH_UNIT; 13af5a 195356 -------------------------------------------------------------------------------- 8cac3e architecture beh of SEARCH_UNIT is fc5356 -------------------------------------------------------------------------------- 8f0e4c type DATA8_ARRAY is array(7 downto 0) of std_logic_vector(7 downto 0); 50af5a 65a690 signal MESSAGE ··¤ : std_logic_vector(63 downto 0); fa39ea signal IP_KEY ··¤ : std_logic_vector(63 downto 0); 1d2c74 signal DES_OUT ··¤ : std_logic_vector(63 downto 0); d77087 signal EXTRA_XOR_OUT ··¤: std_logic_vector(63 downto 0); ae1589 signal SHIFT_REG ··¤ : DATA8_ARRAY; 227ca3 signal KEY ¤ ¤ : std_logic_vector(55 downto 0); fb8eac signal D_KEY ¤ ¤ : std_logic_vector(31 downto 0); d9e79c signal MESG_LEFT ¤ : std_logic_vector(31 downto 0); 660e7b signal CNT¤ ¤ : std_logic_vector(4 downto 0); 6b7f7a signal BIT_SHIFT_REG ¤ : std_logic_vector(7 ·downto 0); e1b61d signal TEMP_VECTOR ¤ : std_logic_vector(3 ·downto 0); c07eb2 signal WR1B ¤ ¤ : std_logic; 7a44e0 signal WR_STROBEB¤ : std_logic; d20d93 signal DONE ¤ ¤ : std_logic; 0e18c7 signal STARTDES ¤ : std_logic; ae027a signal MATCH ¤ ¤ : std_logic; ecaec6 signal MATCH_DLY_CYCLE1¤: std_logic; 4676b8 signal MATCH_DLY_CYCLE2¤: std_logic; 73eb38 signal FALSE_MATCH¤ : std_logic; bc3de8 signal SEARCH_DLY1 ¤ : std_logic; 7c5403 signal SEARCH_DLY2 ¤ : std_logic; d48b55 signal SEARCH_DLY3 ¤ : std_logic; 7b8fe9 signal SEARCHING ¤ : std_logic; 0d1d38 signal SEARCHING_DLY ¤ : std_logic; 126abc signal LOAD ¤ ¤ : std_logic; 6dc677 signal FIRST_TIME1 ¤ : std_logic; e0af9c signal FIRST_TIME2 ¤ : std_logic; 50cc54 signal FIRST_LOAD ¤ : std_logic; --ac0f 0005aea51108003000e Page 2 of search.vhd 720e91 signal SELECT1 ¤¤ : std_logic; c99f2f signal SELECT1_DLY¤ : std_logic; 339514 signal KEY_ODD_DLY1¤ : std_logic_vector(1 ·downto 0); dd4a26 signal KEY_ODD_DLY2¤ : std_logic_vector(1 ·downto 0); 98ae92 signal CHECK_SAME_KEY¤ : std_logic; c89aa4 signal KEY_INCR¤¤ : std_logic; 0c0f34 signal KEY_DECR¤¤ : std_logic; fa2d2c signal PRE_DONE¤¤ : std_logic; 48bee1 signal CNT_EQ_1¤¤ : std_logic; 78525d signal CNT_GT_10¤ : std_logic; b3d57b signal CNT_EQ_10¤ : std_logic; 571491 signal CNT_LE_10¤ : std_logic; 6948e5 signal FIRST_DES¤ : std_logic; 91a51e signal RESET_SEARCHING¤ : std_logic; f70775 signal CLEAR_SEARCH_BAK ····: std_logic; d1af5a 60185d signal EXTRA_SELECT¤ : std_logic_vector(2 downto 0); ebaf5a bebef1 signal BIT_MUX¤ ¤ : std_logic; 23af5a 326ad1 component DES baec7a port( ··CLK ············: in ····std_logic; 792e77 ········RST_N ··········: in ····std_logic; 61d3de ········START ··········: in ····std_logic; 370995 ········MESSAGE ········: in ····std_logic_vector(63 downto 0); 2b604f ········KEY ············: in ····std_logic_vector(55 downto 0); 919930 ········DONE ···········: out ····std_logic; effe96 ········CNT ········¤ : out ····std_logic_vector(4 downto 0); b93050 ········DES_OUT ········: out ···std_logic_vector(63 downto 0) 3c737c ····); cde2c6 end component; 77af5a bbaf5a 925282 component MUX256 b314be port( ·· e5af5a 6cc584 ········SHIFT_OUT ······: in ····std_logic_vector(7 downto 0); 61809f ········PT_VECTOR ······: in ····std_logic_vector(255 downto 0); d0a4d5 ········BIT_MUX ········: out ····std_logic 5e737c ····); 13e2c6 end component; ffaf5a 270f89 begin dd20f2 M256: MUX256 da2410 port map( ··¤ SHIFT_OUT ··¤ => SHIFT_REG(7), 9e877a ¤ ········PT_VECTOR ··¤ => PT_VECTOR, 78715f ······¤ ·¤ BIT_MUX ·¤ => BIT_MUX 96737c ····); a7af5a c90b40 DES1: DES 9bc589 port map( ··¤ CLK ············=> CLK, 4c283b ········¤ RST_N ··········=> RST_N, ee5acf ¤ ········START ··········=> STARTDES, 833479 ······¤ ·¤ MESSAGE ········=> MESSAGE, 87bbda ······¤ ¤ KEY ············=> KEY, 56184c ········¤ DONE ···········=> DONE, 4e3203 ········¤ CNT ········¤ => CNT, a4fb8c ········¤ DES_OUT ········=> DES_OUT cb737c ····); ae4320 MESSAGE ¤ <= C0 when (SELECT1 = '0') else C1; 5b5356 -------------------------------------------------------------------------------- 1ec753 PCSETSEARCH_PR: process(RST_N,CLK) f85356 -------------------------------------------------------------------------------- 8a9ebc begin ·· cd6118 if RST_N = '0' then 481a15 ········FIRST_TIME1 <= '0'; 066e7c ········FIRST_TIME2 <= '0'; ce380c ········SEARCH_DLY1 <= '0'; 4e4c65 ········SEARCH_DLY2 <= '0'; 556042 ········SEARCH_DLY3 <= '0'; addf7d ¤ for i in 0 to 7 loop 5a3d5f ········SHIFT_REG(i) <= (others => '0'); --d38f 000147baec08003000e Page 3 of search.vhd 1e7aa9 ¤ end loop; 5484bd elsif CLK'event and CLK = '1' then c4af5a 8b67c5 ¤ ddf62d ········FIRST_TIME2 <= FIRST_TIME1; 90f778 ¤ if (DONE = '1') then e7af5a 469339 ¤ ¤ if (SEARCH = '1') then ff379e ·······¤ ¤ FIRST_TIME1 <= '1'; e3124d ¤ ¤ end if; caaf5a 1c1f25 ········SEARCH_DLY1 <= SEARCH; 59cf68 ········SEARCH_DLY2 <= SEARCH_DLY1 ; 9579ec ········SEARCH_DLY3 <= SEARCH_DLY2 ; 78570d ¤ end if; 1f3044 ¤ if (CNT_EQ_1 = '1') then 283e1b ¤ ¤ SHIFT_REG(7) <= EXTRA_XOR_OUT(63 downto 56); 4e4037 ¤ ¤ SHIFT_REG(6) <= EXTRA_XOR_OUT(55 downto 48); 2f075a ¤ ¤ SHIFT_REG(5) <= EXTRA_XOR_OUT(47 downto 40); 931200 ¤ ¤ SHIFT_REG(4) <= EXTRA_XOR_OUT(39 downto 32); 7b9e12 ¤ ¤ SHIFT_REG(3) <= EXTRA_XOR_OUT(31 downto 24); 81026f ¤ ¤ SHIFT_REG(2) <= EXTRA_XOR_OUT(23 downto 16); f4dcb8 ¤ ¤ SHIFT_REG(1) <= EXTRA_XOR_OUT(15 downto ·8); ff2343 ¤ ¤ SHIFT_REG(0) <= EXTRA_XOR_OUT( 7 downto ·0); 75f52f ¤ else 0ff4ba ¤ ¤ for i in 0 to 6 loop e566d9 ¤ ¤ SHIFT_REG(i+1) <= SHIFT_REG(i);¤¤ b12966 ¤ ¤ end loop; a0570d ¤ end if; 0262af end if; · 35d83c · 951258 end process PCSETSEARCH_PR; 30af5a 43af5a 635356 -------------------------------------------------------------------------------- b24d11 ---- Use to clear away invalid matches before PC loads ··----------------------- c17216 FIRST_LOAD <= FIRST_TIME1 and not(FIRST_TIME2); 7a5356 -------------------------------------------------------------------------------- 6aaf5a d8af5a 517400 BIT_SHIFT_PR: process(RST_N,CLK) da5356 -------------------------------------------------------------------------------- d00f89 begin 2b6118 if RST_N = '0' then 0e33cd ¤ BIT_SHIFT_REG <= (others => '1'); a284bd elsif CLK'event and CLK = '1' then 14af5a 21f6a6 -------¤ SHIFT -------------------------- 564a26 ¤ if (CNT_LE_10 = '1') then dff4ba ¤ ¤ for i in 0 to 6 loop 62bed3 ¤ ¤ BIT_SHIFT_REG(i+1) <= BIT_SHIFT_REG(i);¤¤ 7a2966 ¤ ¤ end loop; 7611d6 ¤ ¤ BIT_SHIFT_REG(0) <= BIT_MUX; 70570d ¤ end if; 44880d -------¤ 61df0b end if; 5b960a end process BIT_SHIFT_PR; 1daf5a 415356 -------------------------------------------------------------------------------- 556d3a MATCH_PR: process(RST_N,CLK) 725356 -------------------------------------------------------------------------------- 960f89 begin 356118 if RST_N = '0' then 679fc5 ········MATCH <= '0'; 0ac778 ·¤ MATCH_DLY_CYCLE1 <= '0'; ecb311 ·¤ MATCH_DLY_CYCLE2 <= '0'; b6f02a ·¤ KEY_ODD_DLY1 ····<= "00"; 332854 ·¤ KEY_ODD_DLY2 ····<= "00"; 9484bd elsif CLK'event and CLK = '1' then 6472b3 ¤ if (CNT = 10) then 3253c1 ¤ ¤ if ((BIT_SHIFT_REG(0) = '1' or (PT_BYTE_MASK(0) = '1')) and 149f48 ¤ ¤ ····(BIT_SHIFT_REG(1) = '1' or (PT_BYTE_MASK(1) = '1')) and --9c5f 00039b83bb58003000e Page 4 of search.vhd 7aec5e ¤ ¤ ····(BIT_SHIFT_REG(2) = '1' or (PT_BYTE_MASK(2) = '1')) and 053aa3 ¤ ¤ ····(BIT_SHIFT_REG(3) = '1' or (PT_BYTE_MASK(3) = '1')) and ac0a72 ¤ ¤ ····(BIT_SHIFT_REG(4) = '1' or (PT_BYTE_MASK(4) = '1')) and fddc8f ¤ ¤ ····(BIT_SHIFT_REG(5) = '1' or (PT_BYTE_MASK(5) = '1')) and 08af99 ¤ ¤ ····(BIT_SHIFT_REG(6) = '1' or (PT_BYTE_MASK(6) = '1')) and 49dbf9 ¤ ¤ ····(BIT_SHIFT_REG(7) = '1' or (PT_BYTE_MASK(7) = '1'))) then 44af5a 94087d ¤ ¤ MATCH <= '1'; 9d0601 ¤ ¤ else 5914c6 ¤ ¤ MATCH <= '0'; f4124d ¤ ¤ end if; 2e570d ¤ end if; 289cfc --------------------- 75406a ¤ if (FIRST_LOAD = '1') then 2e14c6 ¤ ¤ MATCH <= '0'; a4570d ¤ end if; 029cfc --------------------- ee72b3 ¤ if (CNT = 10) then 34c66f ¤ ¤ MATCH_DLY_CYCLE2 <= MATCH_DLY_CYCLE1; 814dc2 ¤ ¤ MATCH_DLY_CYCLE1 <= MATCH ; 8f570d ¤ end if; d39cfc --------------------- 9c2e23 ¤ if (PRE_DONE = '1') then b6b05a ¤ ·¤ KEY_ODD_DLY2 ····<= KEY_ODD_DLY1; dd4a58 ·¤ ¤ KEY_ODD_DLY1 ····<= KEY(1 downto 0); 9c570d ¤ end if; 79df0b end if; cb400f end process MATCH_PR; e6af5a 2e5356 -------------------------------------------------------------------------------- 4c503c WRITE_STROBE_PR: process(RST_N,CLK) 645356 -------------------------------------------------------------------------------- 890f89 begin df6118 if RST_N = '0' then a6b9e5 ········WR1B <= '1'; e68ae4 ········WR_STROBEB <= '1'; e084bd elsif CLK'event and CLK = '1' then ad4c03 ········WR_STROBEB <= WR1B; 362ccf ········WR1B <= WRB; 2bdf0b end if; 74a3db end process WRITE_STROBE_PR; 4daf5a 525356 -------------------------------------------------------------------------------- c33157 KEY_PR: process(RST_N,CLK) 775356 -------------------------------------------------------------------------------- 930f89 begin 391ce4 if (RST_N = '0')then c56889 ········KEY <= (others => '0'); 6684bd elsif CLK'event and CLK = '1' then c66a63 ········if (WR1B = '0'and ADDR_KEY(0) = '1') then 9591ac ················KEY(7 ·downto ·0) <= DATAI; baca4b ········elsif (PRE_DONE = '1') then c4ca28 ················KEY(7 ·downto 0) <= D_KEY(7 ·downto 0); a3b985 ········end if; c368d3 ----- fb2249 ········if (WR1B = '0'and ADDR_KEY(1) = '1') then af95f6 ················KEY(15 downto ·8) <= DATAI; b2ca4b ········elsif (PRE_DONE = '1') then 5718d4 ················KEY(15 downto ·8) <= D_KEY(15 downto ·8); 3fb985 ········end if; 3868d3 ----- 0efa37 ········if (WR1B = '0'and ADDR_KEY(2) = '1') then 8cec8a ················KEY(23 downto 16) <= DATAI; 24ca4b ········elsif (PRE_DONE = '1') then e55971 ················KEY(23 downto 16) <= D_KEY(23 downto 16); 49b985 ········end if; 6668d3 ----- 76b21d ········if (WR1B = '0'and ADDR_KEY(3) = '1') then b82429 ················KEY(31 downto 24) <= DATAI; e4ca4b ········elsif (PRE_DONE = '1') then a6e0f1 ················KEY(31 downto 24) <= D_KEY(31 downto 24); 39b985 ········end if; --a17f 00076022f608003000e Page 5 of search.vhd 2068d3 ----- e442da ········if (WR1B = '0'and ADDR_KEY(4) = '1') then 072921 ················KEY(39 downto 32) <= DATAI; 59b985 ········end if; ba68d3 ----- c40af0 ········if (WR1B = '0'and ADDR_KEY(5) = '1') then 7598b8 ················KEY(47 downto 40) <= DATAI; 4db985 ········end if; 9868d3 ----- 5fd28e ········if (WR1B = '0'and ADDR_KEY(6) = '1') then 78f517 ················KEY(55 downto 48) <= DATAI; b2b985 ········end if; 1faf5a 1baf5a f6af5a 26df0b end if; b7b3ce end process KEY_PR; 3eaf5a a65356 -------------------------------------------------------------------------------- f46a76 READ_KEY_PR: process(ADDR_KEY, RDB, KEY) fd5356 -------------------------------------------------------------------------------- de0f89 begin da4f55 if (RDB = '0') then 18af5a 677d5c ¤ if (ADDR_KEY(0) = '1') then 85bd50 ¤ DATAO <= KEY(7 ·downto ·0) ; 57df62 ¤ elsif (ADDR_KEY(1) = '1') then c639da ¤ DATAO <= KEY(15 downto ·8) ; 46071c ¤ elsif (ADDR_KEY(2) = '1') then 9e67f6 ¤ DATAO <= KEY(23 downto 16) ; 634f36 ¤ elsif (ADDR_KEY(3) = '1') then a66347 ¤ DATAO <= KEY(31 downto 24) ; 5fbff1 ¤ elsif (ADDR_KEY(4) = '1') then 830d86 ¤ DATAO <= KEY(39 downto 32) ; 03f7db ¤ elsif (ADDR_KEY(5) = '1') then 185c03 ¤ DATAO <= KEY(47 downto 40) ; 8c2fa5 ¤ elsif (ADDR_KEY(6) = '1') then 7c1867 ¤ DATAO <= KEY(55 downto 48) ; 44f52f ¤ else 3e8b86 ¤ DATAO <= (others ·=> 'Z'); 0b570d ¤ end if; b4523c else 968b86 ¤ DATAO <= (others ·=> 'Z'); 1bdf0b end if; c5a5d7 end process READ_KEY_PR; 5caf5a 36af5a 925356 -------------------------------------------------------------------------------- 6ada3c KEY_ALU_PR: process(KEY_DECR,KEY_INCR,KEY) ad5356 -------------------------------------------------------------------------------- 8c0f89 begin fbaf5a 70af5a 96fbc9 if (KEY_INCR = '1') and (KEY_DECR = '0')then ef0742 ¤ D_KEY <= KEY(31 downto 0) + 1; af672e elsif (KEY_DECR = '1') ·and (KEY_INCR = '0') then df3cda ¤ D_KEY <= KEY(31 downto 0) - 1; a3523c else 2da1d0 ¤ D_KEY <= KEY(31 downto 0); a1df0b end if; 5aaf5a 95eaaa end process KEY_ALU_PR; e8af5a f45356 -------------------------------------------------------------------------------- 1ba4fa EXTRA_XOR_PR: process(PT_XOR_MASK,EXTRA_SELECT, DES_OUT, C0) 0e5356 -------------------------------------------------------------------------------- 680f89 begin dd0898 case EXTRA_SELECT is 1e78af when "000" =>· 58585d ········EXTRA_XOR_OUT <= DES_OUT xor PT_XOR_MASK; 17e77a when "001" =>· 76585d ········EXTRA_XOR_OUT <= DES_OUT xor PT_XOR_MASK; --de52 000e582fcfc8003000e Page 6 of search.vhd 1ef910 when "010" =>· db72de ········EXTRA_XOR_OUT <= ((DES_OUT(63 downto 56) ·xor DES_OUT(31 downto 24)) & ddf11d ¤ ¤ ¤ ··(DES_OUT(55 downto 48) ·xor DES_OUT(23 downto 16)) & 6356d8 ¤ ¤ ¤ ··(DES_OUT(47 downto 40) ·xor DES_OUT(15 downto ·8)) & a0d1e7 ¤ ¤ ¤ ··(DES_OUT(39 downto 32) ·xor DES_OUT( 7 downto ·0)) & bd7630 ¤ ¤ ¤ ···DES_OUT(31 downto ·0)) xor PT_XOR_MASK;· fbcd5e ----------------------------- e4aa87 when "101" =>· b8c89f ········EXTRA_XOR_OUT <= DES_OUT xor C0; 71b4ed when "110" =>· 561724 ········EXTRA_XOR_OUT <= (DES_OUT(63 downto 56) xor DES_OUT(31 downto 24)) & 01c057 ¤ ¤ ¤ ·(DES_OUT(55 downto 48) xor DES_OUT(23 downto 16)) & 5eaac9 ¤ ¤ ¤ ·(DES_OUT(47 downto 40) xor DES_OUT(15 downto ·8)) & 444d11 ¤ ¤ ¤ ·(DES_OUT(39 downto 32) xor DES_OUT( 7 downto ·0)) & 7c4bb5 ¤ ¤ ¤ ·DES_OUT(31 downto ·0) ;· 5caf5a dfaf5a cc6f48 when others =>· 0aabcd ¤ EXTRA_XOR_OUT <= DES_OUT; 7caf5a 7b92b5 end case; bc11f0 end process EXTRA_XOR_PR; c96a82 EXTRA_SELECT <= SELECT1_DLY & EXTRA_XOR & USE_CBC; f3309b --EXTRA_SELECT <= SELECT1 & EXTRA_XOR & USE_CBC; 555356 -------------------------------------------------------------------------------- 7f774c STARTDES_PR: process(RST_N,CLK) ca5356 -------------------------------------------------------------------------------- 610f89 begin ec6118 if RST_N = '0' then bf83ec ¤ STARTDES <= '0'; 8084bd elsif CLK'event and CLK = '1' then a25435 --¤ STARTDES <= DONE or LOAD; ·-- ·17 clocks fabe3f ¤ STARTDES <= PRE_DONE or LOAD; ·-- ·16 clocks 6baf5a f2df0b end if; 7d3b06 end process STARTDES_PR; f3af5a 905356 -------------------------------------------------------------------------------- 14d499 KEY_INCR_DECR_PR: process(RST_N,CLK) a15356 -------------------------------------------------------------------------------- 750f89 begin 236118 if RST_N = '0' then e500ed ¤ KEY_INCR <= '0'; 28b39e ¤ KEY_DECR <= '0'; b784bd elsif CLK'event and CLK = '1' then c7c055 -- 472b5c KEY_INCR ·<= ·(CNT_GT_10 and not(DONE) and SEARCHING_DLY) and ( 935a62 ¤ not(MATCH) ·or ·--- normal case 6f7d3b ¤ SELECT1 or ·¤ --- false match 7dc579 ¤ FIRST_DES); db4587 KEY_DECR <= ¤ (CNT_GT_10 and not(DONE) and SEARCHING_DLY) and ·--timing 73bc59 ¤ ¤ (MATCH and not(SELECT1)) ·-- only backup if match on C0 55d0e4 ¤ ¤ and not(FIRST_DES); · 69af5a 86df0b end if; 0a0e68 end process KEY_INCR_DECR_PR; acaf5a 589268 FALSE_MATCH ·<= '1' when (MATCH_DLY_CYCLE2 = '1') and (MATCH = '0') and (SEARCH¶ 94bed5 ING_DLY = '1') e14761 ¤ ¤ ¤ else '0'; 942b60 ------------------------------------------------- fc4e98 ---- timing block, sensitive to START ·---------- bf2b60 ------------------------------------------------- 22f539 PRE_DONE <= '1' when (CNT = "01111") else '0'; e07bdd RESET_SEARCHING <= '1' when (CNT = "01100") else '0'; fbaf5a 7b9367 CNT_EQ_1 ·<= '1' when (CNT = 1 ) else '0'; 684cb0 CNT_LE_10 <= '1' when (CNT > 1 and CNT < 10) else '0'; 563699 CNT_EQ_10 <= '1' when (CNT = 10) else '0'; 9328ae CNT_GT_10 <= '1' when (CNT > 10) else '0'; a85356 -------------------------------------------------------------------------------- e5c874 SEARCHING_PR: process(RST_N,CLK) --9006 0016131d0b28003000e Page 7 of search.vhd b65356 -------------------------------------------------------------------------------- bf0f89 begin 286118 if RST_N = '0' then 5a14d7 ········SEARCHING <= '0'; 4e3178 ········SEARCHING_DLY <= '0'; 289c7f ········CLEAR_SEARCH ·······<= '0'; 3b84bd elsif CLK'event and CLK = '1' then d5b815 ········SEARCHING_DLY <= SEARCHING; c8af5a 61fa1b --------------- search active ------------------- 42dc18 ¤ if ((LOAD = '1') or (SEARCHING = '1')) then 1d15d2 ¤ ¤ SEARCHING ·<= '1'; 82570d ¤ end if; 19af5a 09b5fd --------------- found C1 ------------------------ 561061 ¤ if (CLEAR_SEARCH_BAK = '1') then e00969 ¤ ¤ SEARCHING ·<= '0'; b9570d ¤ end if; feaf5a 80f3b4 --------------- f52661 ¤ CLEAR_SEARCH ·······<= CLEAR_SEARCH_BAK; c0df0b end if; 69d83c · b2650d end process SEARCHING_PR; 5a053c ¤ CHECK_SAME_KEY <= '1' when (KEY(1 downto 0) = KEY_ODD_DLY2) else '0'; 74af5a b85356 -------------------------------------------------------------------------------- 5c5406 SELECT1_PR: process(RST_N,CLK) b45356 -------------------------------------------------------------------------------- db0f89 begin b76118 if RST_N = '0' then 633057 ········SELECT1 <= '1'; 4384bd elsif CLK'event and CLK = '1' then 79af5a 1358c1 --------------- found C0, look for C1 ·---------- 3654be ¤ if ((MATCH = '1') and (SELECT1 = '0') and (PRE_DONE = '1')) ·then 50ed0d ¤ ¤ SELECT1 ·<= '1'; 16570d ¤ end if; 78af5a 365ec8 --------------- Restart by PC or C1 is not a match ---------- e56df5 ¤ if ·-- (LOAD = '1') ·or · 5861ba ¤ ((SELECT1 = '1') and (PRE_DONE = '1') and (SEARCHING_DLY = '1')) then 9df1b6 ¤ ¤ SELECT1 ·<= '0'; 3a570d ¤ end if; f5f3b4 --------------- 7e2e23 ¤ if (PRE_DONE = '1') then 410eef ¤ ¤ SELECT1_DLY <= SELECT1 ; bf570d ¤ end if; 7fdf0b end if; 7dd83c · 355784 end process SELECT1_PR; ff5356 -------------------------------------------------------------------------------- 559ec2 SEARCH_OUT ¤ <= SEARCHING; 9acfcc LOAD ¤ ¤ <= SEARCH_DLY1 and PRE_DONE and not(SEARCH_DLY2); -- 17 clocks 18880e FIRST_DES ¤ <= SEARCH_DLY2 and not(SEARCH_DLY3);· a1188e CLEAR_SEARCH_BAK ¤ <=· 070e22 ¤ ¤ '1' when ((MATCH = '1') and (SELECT1 = '0')· ad8de4 ················and (SELECT1_DLY = '1') and (RESET_SEARCHING = '1')· 5ebdd4 ¤ ¤ and (SEARCHING = '1')) else '0'; 9aaf5a a358fe SELECT_ONE¤ <= SELECT1; dadf11 ·KEY_OUT ¤ <= KEY; 545ff8 ·DES_OUTPUT¤ <= DES_OUT; 0f628a -- MATCH_OUT¤ <= MATCH; 925356 -------------------------------------------------------------------------------- 3fb08a end beh; 5a5356 -------------------------------------------------------------------------------- 61af5a --ed38 000a88fc9858003000f Page 1 of start_re.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· f06e63 -- Date ···········: ·09/19/97 ································· 704774 -- Description¤ ···: ·UProcessor interface b65356 -------------------------------------------------------------------------------- 407faf library ieee; 6411e9 use IEEE.std_logic_1164.all; b3da83 use IEEE.std_logic_arith.all; a0e105 use IEEE.std_logic_unsigned.all; 325356 -------------------------------------------------------------------------------- ba69f6 entity START_REG is c2af5a 69cba7 port( ··RST_N ··········: in ····std_logic; 83c75f ········CHIP_EN ······¤ : in ····std_logic; 2c3455 ········WRB ·········¤ : in ····std_logic; ae00c5 ········ADDSEL2 ·······¤: in ····std_logic; 27a88e ········ADDR ······¤ : in ····std_logic_vector(7 downto 0); d381d2 ········CLEAR_SEARCH ···: in ····std_logic_vector(23 downto 0); b2af5a a71892 ········SEARCH_IN ···¤ : OUT ····std_logic_vector(23 downto 0); 7419f8 ········DATAI ······¤ : in ····std_logic_vector(7 downto 0) c4737c ····); a7af5a 9aaf5a 77b995 end START_REG; 43af5a ff5356 -------------------------------------------------------------------------------- c401be architecture beh of START_REG is ca5356 -------------------------------------------------------------------------------- 2caf5a d6af5a 4be6ee signal SEARCH_IN_REG ¤ : std_logic_vector(23 ·downto 0); bc4c76 signal SEARCH_RST_N_0 ¤ : std_logic; 6c5c79 signal SEARCH_RST_N_1 ¤ : std_logic; 386c68 signal SEARCH_RST_N_2 ¤ : std_logic; 7a7c67 signal SEARCH_RST_N_3 ¤ : std_logic; c40c4a signal SEARCH_RST_N_4 ¤ : std_logic; 7d1c45 signal SEARCH_RST_N_5 ¤ : std_logic; a42c54 signal SEARCH_RST_N_6 ¤ : std_logic; 6a3c5b signal SEARCH_RST_N_7 ¤ : std_logic; e8cc0e signal SEARCH_RST_N_8 ¤ : std_logic; 01dc01 signal SEARCH_RST_N_9 ¤ : std_logic; 6b9f5a signal SEARCH_RST_N_10 ¤: std_logic; 2e114a signal SEARCH_RST_N_11 ¤: std_logic; ad8b6b signal SEARCH_RST_N_12 ¤: std_logic; 4c057b signal SEARCH_RST_N_13 ¤: std_logic; 69b738 signal SEARCH_RST_N_14 ¤: std_logic; 913928 signal SEARCH_RST_N_15 ¤: std_logic; 66a309 signal SEARCH_RST_N_16 ¤: std_logic; 322d19 signal SEARCH_RST_N_17 ¤: std_logic; cfcf9e signal SEARCH_RST_N_18 ¤: std_logic; f0418e signal SEARCH_RST_N_19 ¤: std_logic; 26af4b signal SEARCH_RST_N_20 ¤: std_logic; 4b215b signal SEARCH_RST_N_21 ¤: std_logic; ccbb7a signal SEARCH_RST_N_22 ¤: std_logic; d1356a signal SEARCH_RST_N_23 ¤: std_logic; deaf5a b10f89 begin aeaf5a df5356 -------------------------------------------------------------------------------- 09905b SEARCH_IN0_PR: process(SEARCH_RST_N_0, WRB) 5b5356 -------------------------------------------------------------------------------- e09ebc begin ·· a1a8c8 ---------------------------------------------------------------- c0fed4 if (SEARCH_RST_N_0 = '0') then 1d5a3e ¤ SEARCH_IN_REG(0) <= '0'; d9ae0d elsif (WRB'event and WRB= '1') then 07e982 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01000111")) then a6766d ¤ SEARCH_IN_REG(0) <= DATAI(0); 5f523c else cedec9 ¤ SEARCH_IN_REG(0) <= SEARCH_IN_REG(0); a862af end if; · --7851 000ad1683558003000f Page 2 of start_re.vhd 5562af end if; · 7da8c8 ---------------------------------------------------------------- eb2dfd end process SEARCH_IN0_PR; 295356 -------------------------------------------------------------------------------- af1cdd SEARCH_IN1_PR: process(SEARCH_RST_N_1, WRB) a45356 -------------------------------------------------------------------------------- e89ebc begin ·· 26803e if (SEARCH_RST_N_1 = '0') then 890faf ¤ SEARCH_IN_REG(1) <= '0'; aeae0d elsif (WRB'event and WRB= '1') then 8eec2f if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01001111")) then 34f87d ¤ SEARCH_IN_REG(1) <= DATAI(0); 5462af end if; · 6462af end if; · 91a8c8 ---------------------------------------------------------------- ee29d6 end process SEARCH_IN1_PR; fc5356 -------------------------------------------------------------------------------- a58146 SEARCH_IN2_PR: process(SEARCH_RST_N_2, WRB) 795356 -------------------------------------------------------------------------------- b59ebc begin ·· a40300 if (SEARCH_RST_N_2 = '0') then ccf11c ¤ SEARCH_IN_REG(2) <= '0'; 17ae0d elsif (WRB'event and WRB= '1') then 119768 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01010111")) then 76625c ¤ SEARCH_IN_REG(2) <= DATAI(0); 2d62af end if; · 8c62af end if; · daa8c8 ---------------------------------------------------------------- 0725ab end process SEARCH_IN2_PR; 9f5356 -------------------------------------------------------------------------------- fc0dc0 SEARCH_IN3_PR: process(SEARCH_RST_N_3, WRB) 6b5356 -------------------------------------------------------------------------------- 2d9ebc begin ·· f47dea if (SEARCH_RST_N_3 = '0') then aea48d ¤ SEARCH_IN_REG(3) <= '0'; 21ae0d elsif (WRB'event and WRB= '1') then 5092c5 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01011111")) then 7cec4c ¤ SEARCH_IN_REG(3) <= DATAI(0); b462af end if; · 4362af end if; · 2ba8c8 ---------------------------------------------------------------- 1e2180 end process SEARCH_IN3_PR; c35356 -------------------------------------------------------------------------------- 7eb261 SEARCH_IN4_PR: process(SEARCH_RST_N_4, WRB) b25356 -------------------------------------------------------------------------------- af9ebc begin ·· 750d6d if (SEARCH_RST_N_4 = '0') then dc046b ¤ SEARCH_IN_REG(4) <= '0'; 2dae0d elsif (WRB'event and WRB= '1') then 2fa1a8 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01100111")) then cb5e0f ¤ SEARCH_IN_REG(4) <= DATAI(0); e162af end if; · 5462af end if; · 99a8c8 ---------------------------------------------------------------- 133d51 end process SEARCH_IN4_PR; 595356 -------------------------------------------------------------------------------- 123ee7 SEARCH_IN5_PR: process(SEARCH_RST_N_5, WRB) 0d5356 -------------------------------------------------------------------------------- e19ebc begin ·· 0a7387 if (SEARCH_RST_N_5 = '0') then 6051fa ¤ SEARCH_IN_REG(5) <= '0'; 96ae0d elsif (WRB'event and WRB= '1') then 7da405 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01101111")) then a2d01f ¤ SEARCH_IN_REG(5) <= DATAI(0); 1362af end if; · ab62af end if; · 3ea8c8 ---------------------------------------------------------------- 1d397a end process SEARCH_IN5_PR; a45356 -------------------------------------------------------------------------------- 53a37c SEARCH_IN6_PR: process(SEARCH_RST_N_6, WRB) 845356 -------------------------------------------------------------------------------- ad9ebc begin ·· --a70b 000bb004fd08003000f Page 3 of start_re.vhd 84f0b9 if (SEARCH_RST_N_6 = '0') then 5eaf49 ¤ SEARCH_IN_REG(6) <= '0'; 4aae0d elsif (WRB'event and WRB= '1') then a0df42 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01110111")) then 084a3e ¤ SEARCH_IN_REG(6) <= DATAI(0); 9562af end if; · b362af end if; · 15a8c8 ---------------------------------------------------------------- ef3507 end process SEARCH_IN6_PR; de5356 -------------------------------------------------------------------------------- 082ffa SEARCH_IN7_PR: process(SEARCH_RST_N_7, WRB) 655356 -------------------------------------------------------------------------------- 2a9ebc begin ·· fa8e53 if (SEARCH_RST_N_7 = '0') then d0fad8 ¤ SEARCH_IN_REG(7) <= '0'; e3ae0d elsif (WRB'event and WRB= '1') then b5daef if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "01111111")) then 7bc42e ¤ SEARCH_IN_REG(7) <= DATAI(0); 4562af end if; · 9a62af end if; · cba8c8 ---------------------------------------------------------------- eb312c end process SEARCH_IN7_PR; 845356 -------------------------------------------------------------------------------- 68d42f SEARCH_IN8_PR: process(SEARCH_RST_N_8, WRB) f75356 -------------------------------------------------------------------------------- 829ebc begin ·· f811b7 if (SEARCH_RST_N_8 = '0') then 9ee694 ¤ SEARCH_IN_REG(8) <= '0'; 0dae0d elsif (WRB'event and WRB= '1') then ef779d if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10000111")) then bc26a9 ¤ SEARCH_IN_REG(8) <= DATAI(0); e962af end if; · d562af end if; · 3ca8c8 ---------------------------------------------------------------- 920ca5 end process SEARCH_IN8_PR; 765356 -------------------------------------------------------------------------------- 0b58a9 SEARCH_IN9_PR: process(SEARCH_RST_N_9, WRB) 275356 -------------------------------------------------------------------------------- 8a9ebc begin ·· 016f5d if (SEARCH_RST_N_9 = '0') then d0b305 ¤ SEARCH_IN_REG(9) <= '0'; 58ae0d elsif (WRB'event and WRB= '1') then 057230 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10001111")) then 44a8b9 ¤ SEARCH_IN_REG(9) <= DATAI(0); e062af end if; · ae62af end if; · 36a8c8 ---------------------------------------------------------------- 7a088e end process SEARCH_IN9_PR; 0f5356 -------------------------------------------------------------------------------- dabff6 SEARCH_IN10_PR: process(SEARCH_RST_N_10, WRB) 9b5356 -------------------------------------------------------------------------------- e89ebc begin ·· c5b8e4 if (SEARCH_RST_N_10 = '0') then e109db ¤ SEARCH_IN_REG(10) <= '0'; 7bae0d elsif (WRB'event and WRB= '1') then 350977 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10010111")) then fe8b04 ¤ SEARCH_IN_REG(10) <= DATAI(0); 5962af end if; · da62af end if; · f6a8c8 ---------------------------------------------------------------- b6c353 end process SEARCH_IN10_PR; fe5356 -------------------------------------------------------------------------------- c59206 SEARCH_IN11_PR: process(SEARCH_RST_N_11, WRB) 525356 -------------------------------------------------------------------------------- 3a9ebc begin ·· 28c60e if (SEARCH_RST_N_11 = '0') then e15c4a ¤ SEARCH_IN_REG(11) <= '0'; 5bae0d elsif (WRB'event and WRB= '1') then 350cda if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10011111")) then 410514 ¤ SEARCH_IN_REG(11) <= DATAI(0); 0c62af end if; · bb62af end if; · --6b0b 000e1be5cae8003000f Page 4 of start_re.vhd 80a8c8 ---------------------------------------------------------------- 8bc778 end process SEARCH_IN11_PR; 355356 -------------------------------------------------------------------------------- 8fe416 SEARCH_IN12_PR: process(SEARCH_RST_N_12, WRB) fb5356 -------------------------------------------------------------------------------- 119ebc begin ·· 754530 if (SEARCH_RST_N_12 = '0') then 46a2f9 ¤ SEARCH_IN_REG(12) <= '0'; f1ae0d elsif (WRB'event and WRB= '1') then 373fb7 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10100111")) then 759f35 ¤ SEARCH_IN_REG(12) <= DATAI(0); 4262af end if; · 8e62af end if; · 92a8c8 ---------------------------------------------------------------- 80cb05 end process SEARCH_IN12_PR; 1d5356 -------------------------------------------------------------------------------- 05c9e6 SEARCH_IN13_PR: process(SEARCH_RST_N_13, WRB) 915356 -------------------------------------------------------------------------------- a89ebc begin ·· d73bda if (SEARCH_RST_N_13 = '0') then ccf768 ¤ SEARCH_IN_REG(13) <= '0'; aeae0d elsif (WRB'event and WRB= '1') then 943a1a if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10101111")) then 321125 ¤ SEARCH_IN_REG(13) <= DATAI(0); ba62af end if; · 2a62af end if; · 8ca8c8 ---------------------------------------------------------------- c3cf2e end process SEARCH_IN13_PR; 145356 -------------------------------------------------------------------------------- c00836 SEARCH_IN14_PR: process(SEARCH_RST_N_14, WRB) 9a5356 -------------------------------------------------------------------------------- cb9ebc begin ·· af4b5d if (SEARCH_RST_N_14 = '0') then 31578e ¤ SEARCH_IN_REG(14) <= '0'; fbae0d elsif (WRB'event and WRB= '1') then 17415d if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10110111")) then c2a366 ¤ SEARCH_IN_REG(14) <= DATAI(0); 4862af end if; · f462af end if; · 30a8c8 ---------------------------------------------------------------- 78d3ff end process SEARCH_IN14_PR; d85356 -------------------------------------------------------------------------------- a225c6 SEARCH_IN15_PR: process(SEARCH_RST_N_15, WRB) 815356 -------------------------------------------------------------------------------- 699ebc begin ·· a735b7 if (SEARCH_RST_N_15 = '0') then 5e021f ¤ SEARCH_IN_REG(15) <= '0'; e0ae0d elsif (WRB'event and WRB= '1') then 8444f0 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "10111111")) then 492d76 ¤ SEARCH_IN_REG(15) <= DATAI(0); db62af end if; · 0d62af end if; · f7a8c8 ---------------------------------------------------------------- 9ad7d4 end process SEARCH_IN15_PR; 195356 -------------------------------------------------------------------------------- 5753d6 SEARCH_IN16_PR: process(SEARCH_RST_N_16, WRB) d25356 -------------------------------------------------------------------------------- f19ebc begin ·· 5db689 if (SEARCH_RST_N_16 = '0') then 10fcac ¤ SEARCH_IN_REG(16) <= '0'; 69ae0d elsif (WRB'event and WRB= '1') then 9bf98d if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11000111")) then 5fb757 ¤ SEARCH_IN_REG(16) <= DATAI(0); dd62af end if; · a262af end if; · d2a8c8 ---------------------------------------------------------------- 8bdba9 end process SEARCH_IN16_PR; 375356 -------------------------------------------------------------------------------- c77e26 SEARCH_IN17_PR: process(SEARCH_RST_N_17, WRB) 325356 -------------------------------------------------------------------------------- e39ebc begin ·· e1c863 if (SEARCH_RST_N_17 = '0') then --8e92 00090f533fa8003000f Page 5 of start_re.vhd 7da93d ¤ SEARCH_IN_REG(17) <= '0'; a4ae0d elsif (WRB'event and WRB= '1') then 01fc20 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11001111")) then 6b3947 ¤ SEARCH_IN_REG(17) <= DATAI(0); 8e62af end if; · 9b62af end if; · 60a8c8 ---------------------------------------------------------------- 8adf82 end process SEARCH_IN17_PR; 7d5356 -------------------------------------------------------------------------------- 1fd867 SEARCH_IN18_PR: process(SEARCH_RST_N_18, WRB) 6d5356 -------------------------------------------------------------------------------- 919ebc begin ·· 335787 if (SEARCH_RST_N_18 = '0') then bcb571 ¤ SEARCH_IN_REG(18) <= '0'; aeae0d elsif (WRB'event and WRB= '1') then ac8767 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11010111")) then 8adbc0 ¤ SEARCH_IN_REG(18) <= DATAI(0); 2962af end if; · 7962af end if; · 01a8c8 ---------------------------------------------------------------- 83e20b end process SEARCH_IN18_PR; fc5356 -------------------------------------------------------------------------------- 7df597 SEARCH_IN19_PR: process(SEARCH_RST_N_19, WRB) 3e5356 -------------------------------------------------------------------------------- cc9ebc begin ·· 87296d if (SEARCH_RST_N_19 = '0') then 3fe0e0 ¤ SEARCH_IN_REG(19) <= '0'; 35ae0d elsif (WRB'event and WRB= '1') then 1b82ca if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11011111")) then 3655d0 ¤ SEARCH_IN_REG(19) <= DATAI(0); ff62af end if; · 8862af end if; · efa8c8 ---------------------------------------------------------------- 54e620 end process SEARCH_IN19_PR; f65356 -------------------------------------------------------------------------------- a5af01 SEARCH_IN20_PR: process(SEARCH_RST_N_20, WRB) 865356 -------------------------------------------------------------------------------- 6c9ebc begin ·· af609a if (SEARCH_RST_N_20 = '0') then 248e35 ¤ SEARCH_IN_REG(20) <= '0'; c4ae0d elsif (WRB'event and WRB= '1') then 98b1a7 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11100111")) then aebb15 ¤ SEARCH_IN_REG(20) <= DATAI(0); 5062af end if; · 0762af end if; · fca8c8 ---------------------------------------------------------------- 1a6b3d end process SEARCH_IN20_PR; bc5356 -------------------------------------------------------------------------------- ef82f1 SEARCH_IN21_PR: process(SEARCH_RST_N_21, WRB) 065356 -------------------------------------------------------------------------------- ff9ebc begin ·· b21e70 if (SEARCH_RST_N_21 = '0') then 80dba4 ¤ SEARCH_IN_REG(21) <= '0'; c0ae0d elsif (WRB'event and WRB= '1') then c2b40a if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11101111")) then 4e3505 ¤ SEARCH_IN_REG(21) <= DATAI(0); 9d62af end if; · b262af end if; · 04a8c8 ---------------------------------------------------------------- 126f16 end process SEARCH_IN21_PR; 4c5356 -------------------------------------------------------------------------------- 5ef4e1 SEARCH_IN22_PR: process(SEARCH_RST_N_22, WRB) bc5356 -------------------------------------------------------------------------------- 9e9ebc begin ·· 2c9d4e if (SEARCH_RST_N_22 = '0') then 012517 ¤ SEARCH_IN_REG(22) <= '0'; 9fae0d elsif (WRB'event and WRB= '1') then 52cf4d if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11110111")) then 38af24 ¤ SEARCH_IN_REG(22) <= DATAI(0); 9362af end if; · 5d62af end if; · 90a8c8 ---------------------------------------------------------------- --f11c 001f74fa4a58003000f Page 6 of start_re.vhd c1636b end process SEARCH_IN22_PR; ec5356 -------------------------------------------------------------------------------- 81d911 SEARCH_IN23_PR: process(SEARCH_RST_N_23, WRB) 245356 -------------------------------------------------------------------------------- 519ebc begin ·· 54e3a4 if (SEARCH_RST_N_23 = '0') then 127086 ¤ SEARCH_IN_REG(23) <= '0'; ccae0d elsif (WRB'event and WRB= '1') then 61cae0 if ((CHIP_EN = '1') and (ADDSEL2 = '0') and (ADDR = "11111111")) then bb2134 ¤ SEARCH_IN_REG(23) <= DATAI(0); 4962af end if; · 8262af end if; · f8a8c8 ---------------------------------------------------------------- 586740 end process SEARCH_IN23_PR; 8ca8c8 ---------------------------------------------------------------- c4af5a b435b2 SEARCH_RST_N_0 ·<= RST_N and not(CLEAR_SEARCH(0)); 0a943e SEARCH_RST_N_1 ·<= RST_N and not(CLEAR_SEARCH(1)); 0b7ebb SEARCH_RST_N_2 ·<= RST_N and not(CLEAR_SEARCH(2)); 4adf37 SEARCH_RST_N_3 ·<= RST_N and not(CLEAR_SEARCH(3)); bfa3a0 SEARCH_RST_N_4 ·<= RST_N and not(CLEAR_SEARCH(4)); fc022c SEARCH_RST_N_5 ·<= RST_N and not(CLEAR_SEARCH(5)); 34e8a9 SEARCH_RST_N_6 ·<= RST_N and not(CLEAR_SEARCH(6)); d34925 SEARCH_RST_N_7 ·<= RST_N and not(CLEAR_SEARCH(7)); 011187 SEARCH_RST_N_8 ·<= RST_N and not(CLEAR_SEARCH(8)); a1b00b SEARCH_RST_N_9 ·<= RST_N and not(CLEAR_SEARCH(9)); b5e1a0 SEARCH_RST_N_10 <= RST_N and not(CLEAR_SEARCH(10)); 83402c SEARCH_RST_N_11 <= RST_N and not(CLEAR_SEARCH(11)); 1faaa9 SEARCH_RST_N_12 <= RST_N and not(CLEAR_SEARCH(12)); 940b25 SEARCH_RST_N_13 <= RST_N and not(CLEAR_SEARCH(13)); 0e77b2 SEARCH_RST_N_14 <= RST_N and not(CLEAR_SEARCH(14)); 06d63e SEARCH_RST_N_15 <= RST_N and not(CLEAR_SEARCH(15)); e33cbb SEARCH_RST_N_16 <= RST_N and not(CLEAR_SEARCH(16)); 4a9d37 SEARCH_RST_N_17 <= RST_N and not(CLEAR_SEARCH(17)); 0ec595 SEARCH_RST_N_18 <= RST_N and not(CLEAR_SEARCH(18)); fb6419 SEARCH_RST_N_19 <= RST_N and not(CLEAR_SEARCH(19)); f332ef SEARCH_RST_N_20 <= RST_N and not(CLEAR_SEARCH(20)); ae9363 SEARCH_RST_N_21 <= RST_N and not(CLEAR_SEARCH(21)); 8c79e6 SEARCH_RST_N_22 <= RST_N and not(CLEAR_SEARCH(22)); bed86a SEARCH_RST_N_23 <= RST_N and not(CLEAR_SEARCH(23)); 0ad83c · b47227 SEARCH_IN ¤ <= SEARCH_IN_REG; bbaf5a 875356 -------------------------------------------------------------------------------- 19b08a end beh; 2d5356 -------------------------------------------------------------------------------- f7af5a --205d 00068e4609b80030010 Page 1 of top.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· 3a917e -- Date ···········: ·09/07/97 ································· 5eeff0 -- Description¤ ···: ·TOP level for DES KEY Search array 845356 -------------------------------------------------------------------------------- 737faf library ieee; 7511e9 use IEEE.std_logic_1164.all; 4cda83 use IEEE.std_logic_arith.all; b0e105 use IEEE.std_logic_unsigned.all; cb5356 -------------------------------------------------------------------------------- ffe642 entity TOP is 84af5a c0ec7a port( ··CLK ············: in ····std_logic; 712e77 ········RST_N ··········: in ····std_logic; c71a55 ········BOARD_EN ·······: in ····std_logic; d52b30 ········ALE ············: in ····std_logic; 375697 ········ADDSEL1 ········: in ····std_logic; 476737 ········WRB ············: in ····std_logic; 939760 ········RDB ············: in ····std_logic; f93782 ········ADDSEL2 ········: in ····std_logic; 9b4c8d ········AA_IN ··········: in ····std_logic; 35b47e ········ADDR ···········: in ····std_logic_vector(7 downto 0); 696ad7 ········CHIP_ID ········: in ····std_logic_vector(7 downto 0); 08ea5e ········AA_OUT ·········: out ···std_logic; 0ff367 ········CHIP_AA_OUT ···¤: out ···std_logic; 4ee24e ········DATA ······¤ : inout¤ std_logic_vector(7 downto 0) ac737c ····); 1faf5a abaf5a d24c52 end TOP; 2baf5a d05356 -------------------------------------------------------------------------------- 657e41 architecture beh of TOP is bd5356 -------------------------------------------------------------------------------- 240e4c type DATA8_ARRAY is array(7 downto 0) of std_logic_vector(7 downto 0); 9cda9c type DATA7_ARRAY is array(23 downto 0) of std_logic_vector(6 downto 0); 27af5a 501589 signal SHIFT_REG ··¤ : DATA8_ARRAY; 5d81c4 signal SELECT_ONE ¤ ¤ : std_logic_vector(23 downto 0); 787bfe signal SEARCH_IN ¤ : std_logic_vector(23 downto 0); 66da4d signal SEARCH_OUT ¤ : std_logic_vector(23 downto 0); a918df signal CLEAR_SEARCH ¤ : std_logic_vector(23 downto 0); f7e4a1 signal PT_XOR_MASK ······: std_logic_vector(63 downto 0); d936e3 signal PT_BYTE_MASK ····: std_logic_vector(7 downto 0); ac9da4 signal PT_VECTOR ·······: std_logic_vector(255 downto 0); 675681 signal C0 ··············: std_logic_vector(63 downto 0); f78a11 signal C1 ··············: std_logic_vector(63 downto 0); 44af5a aca105 signal USE_CBC ¤¤ : std_logic; 21672b signal EXTRA_XOR¤ : std_logic; ac8b87 signal TEMPS ¤ ¤ : std_logic; a27ca3 signal KEY ¤ ¤ : std_logic_vector(55 downto 0); 677a3e ·signal DATAO¤ ¤ : std_logic_vector(7 downto 0); ad639f ·signal DATAI¤ ¤ : std_logic_vector(7 downto 0); 304718 signal ADDR_KEY¤¤ : DATA7_ARRAY; e3af5a 0da322 component SEARCH_UNIT 8cec7a port( ··CLK ············: in ····std_logic; 272e77 ········RST_N ··········: in ····std_logic; a16737 ········WRB ············: in ····std_logic; 349760 ········RDB ············: in ····std_logic; 02baaa ········SEARCH ·········: in ····std_logic; d19ea8 ········PT_BYTE_MASK ···: in ····std_logic_vector(7 downto 0); cc58af ········PT_XOR_MASK ···¤: in ····std_logic_vector(63 downto 0); 012913 ········ADDR_KEY ·······: in ····std_logic_vector(6 ·downto 0); 830925 ········EXTRA_XOR ·······: in ····std_logic; 92c9d3 ········USE_CBC ·········: in ····std_logic; d4af5a afaf5a ab4d79 ········DATAI ··········: in ····std_logic_vector(7 downto 0); ed809f ········PT_VECTOR ······: in ····std_logic_vector(255 downto 0); 68f8de ········C0 ·············: in ····std_logic_vector(63 downto 0); --acfd 0006a1a758a80030010 Page 2 of top.vhd e637cb ········C1 ·············: in ····std_logic_vector(63 downto 0); cc33a4 ········SEARCH_OUT ·····: out ····std_logic; 706b53 ········CLEAR_SEARCH ·····¤ : out ····std_logic; cfc5fc ········SELECT_ONE ··¤ : out ····std_logic; 1e60f9 ········DATAO ··········: out ···std_logic_vector(7 downto 0) 47737c ····); 6daf5a cfe2c6 end component; 8daf5a 62af5a b76102 component UPI 3ccba7 port( ··RST_N ··········: in ····std_logic; e51a55 ········BOARD_EN ·······: in ····std_logic; 3a2b30 ········ALE ············: in ····std_logic; 485697 ········ADDSEL1 ········: in ····std_logic; a26737 ········WRB ············: in ····std_logic; d09760 ········RDB ············: in ····std_logic; c13782 ········ADDSEL2 ········: in ····std_logic; e64c8d ········AA_IN ··········: in ····std_logic; c3b47e ········ADDR ···········: in ····std_logic_vector(7 downto 0); 976ad7 ········CHIP_ID ········: in ····std_logic_vector(7 downto 0); 3d053a ········SELECT_ONE ·····: in ····std_logic_vector(23 downto 0); 118f32 ········SEARCH_IN ······: OUT ···std_logic_vector(23 downto 0); 42be0c ········SEARCH_OUT ·····: in ····std_logic_vector(23 downto 0); 7a8f53 ········CLEAR_SEARCH ··¤: in ····std_logic_vector(23 downto 0); 9e6aef ········EXTRA_XOR ······: out ···std_logic; 96a049 ········USE_CBC ········: out ···std_logic; b5f367 ········CHIP_AA_OUT ···¤: out ···std_logic; 4bea5e ········AA_OUT ·········: out ···std_logic; 2aaf5a 03af5a 60596c ········PT_XOR_MASK ····: out ···std_logic_vector(63 downto 0); 84a457 ········PT_BYTE_MASK ···: out ···std_logic_vector(7 downto 0); 46e186 ········PT_VECTOR ······: out ···std_logic_vector(255 downto 0); d4f79c ········C0 ·············: out ···std_logic_vector(63 downto 0); dc3889 ········C1 ·············: out ···std_logic_vector(63 downto 0); 63eccb ········ADDR_KEY0 ······: out ···std_logic_vector(6 ·downto 0); 6da1b1 ········ADDR_KEY1 ······: out ···std_logic_vector(6 ·downto 0); f7763f ········ADDR_KEY2 ······: out ···std_logic_vector(6 ·downto 0); d03b45 ········ADDR_KEY3 ······: out ···std_logic_vector(6 ·downto 0); 9bd132 ········ADDR_KEY4 ······: out ···std_logic_vector(6 ·downto 0); 2b9c48 ········ADDR_KEY5 ······: out ···std_logic_vector(6 ·downto 0); b94bc6 ········ADDR_KEY6 ······: out ···std_logic_vector(6 ·downto 0); 8f06bc ········ADDR_KEY7 ······: out ···std_logic_vector(6 ·downto 0); e59739 ········ADDR_KEY8 ······: out ···std_logic_vector(6 ·downto 0); 0dda43 ········ADDR_KEY9 ······: out ···std_logic_vector(6 ·downto 0); 1057bd ········ADDR_KEY10 ·····: out ···std_logic_vector(6 ·downto 0); 765102 ········ADDR_KEY11 ·····: out ···std_logic_vector(6 ·downto 0); 555ac3 ········ADDR_KEY12 ·····: out ···std_logic_vector(6 ·downto 0); 3d5c7c ········ADDR_KEY13 ·····: out ···std_logic_vector(6 ·downto 0); 874d41 ········ADDR_KEY14 ·····: out ···std_logic_vector(6 ·downto 0); 7b4bfe ········ADDR_KEY15 ·····: out ···std_logic_vector(6 ·downto 0); b0403f ········ADDR_KEY16 ·····: out ···std_logic_vector(6 ·downto 0); 4d4680 ········ADDR_KEY17 ·····: out ···std_logic_vector(6 ·downto 0); 986245 ········ADDR_KEY18 ·····: out ···std_logic_vector(6 ·downto 0); 4664fa ········ADDR_KEY19 ·····: out ···std_logic_vector(6 ·downto 0); 438033 ········ADDR_KEY20 ·····: out ···std_logic_vector(6 ·downto 0); 89868c ········ADDR_KEY21 ·····: out ···std_logic_vector(6 ·downto 0); 1f8d4d ········ADDR_KEY22 ·····: out ···std_logic_vector(6 ·downto 0); f08bf2 ········ADDR_KEY23 ·····: out ···std_logic_vector(6 ·downto 0); 81ac07 ········DATAI ··········: in ·std_logic_vector(7 downto 0); 88a365 ········DATAO ··········: out ·std_logic_vector(7 downto 0) 61737c ····); 0aaf5a bee2c6 end component; 79af5a aa0f89 begin b29114 UPI0: UPI f34a4b port map( 432dd5 ········RST_N ··········=> RST_N, 33c652 ········BOARD_EN ·······=> BOARD_EN, 6aed26 ········ALE ············=> ALE, --45ab 0005d8a996b80030010 Page 3 of top.vhd a9d50f ········ADDSEL1 ········=> ADDSEL1, 1b14b5 ········WRB ············=> WRB, b07402 ········RDB ············=> RDB, 0aa93e ········ADDSEL2 ············=> ADDSEL2, 2e9c40 ········ADDR ···········=> ADDR, a39156 ········CHIP_ID ········=> CHIP_ID, a3b23e ········SEARCH_IN ····¤ => SEARCH_IN, ed0bbe ········SELECT_ONE ·¤ => SELECT_ONE, 32c3de ········SEARCH_OUT ····¤=> SEARCH_OUT, 657dc4 ········EXTRA_XOR ····¤ => EXTRA_XOR, 2d4a03 ········USE_CBC ····¤ => USE_CBC, a80130 ········CLEAR_SEARCH ···=> CLEAR_SEARCH, 244f03 ········AA_IN ····¤ => AA_IN, 772945 ········AA_OUT ····¤ => AA_OUT, 014dfc ········CHIP_AA_OUT ···¤=> CHIP_AA_OUT, 59af5a 0a0949 ········PT_XOR_MASK ····=> PT_XOR_MASK, ea084d ········PT_BYTE_MASK ···=> PT_BYTE_MASK, 1e415b ········PT_VECTOR ······=> PT_VECTOR, 15cc6e ········C0 ·············=> C0, 463fef ········C1 ·············=> C1, f36a1c ········ADDR_KEY0 ······=> ADDR_KEY(0) , 9b6523 ········ADDR_KEY1 ······=> ADDR_KEY(1) , d67462 ········ADDR_KEY2 ······=> ADDR_KEY(2) , 437b5d ········ADDR_KEY3 ······=> ADDR_KEY(3) , e356e0 ········ADDR_KEY4 ······=> ADDR_KEY(4) , f259df ········ADDR_KEY5 ······=> ADDR_KEY(5) , a6489e ········ADDR_KEY6 ······=> ADDR_KEY(6) , 9947a1 ········ADDR_KEY7 ······=> ADDR_KEY(7) , 1013e4 ········ADDR_KEY8 ······=> ADDR_KEY(8) , 1b1cdb ········ADDR_KEY9 ······=> ADDR_KEY(9) , d0f618 ········ADDR_KEY10 ·····=> ADDR_KEY(10), bab1e7 ········ADDR_KEY11 ·····=> ADDR_KEY(11), f979e6 ········ADDR_KEY12 ·····=> ADDR_KEY(12), aa3e19 ········ADDR_KEY13 ·····=> ADDR_KEY(13), dce1f5 ········ADDR_KEY14 ·····=> ADDR_KEY(14), a8a60a ········ADDR_KEY15 ·····=> ADDR_KEY(15), d06e0b ········ADDR_KEY16 ·····=> ADDR_KEY(16), 8e29f4 ········ADDR_KEY17 ·····=> ADDR_KEY(17), e6d9c2 ········ADDR_KEY18 ·····=> ADDR_KEY(18), 8b9e3d ········ADDR_KEY19 ·····=> ADDR_KEY(19), 96e759 ········ADDR_KEY20 ·····=> ADDR_KEY(20), bfa0a6 ········ADDR_KEY21 ·····=> ADDR_KEY(21), 4168a7 ········ADDR_KEY22 ·····=> ADDR_KEY(22), e12f58 ········ADDR_KEY23 ·····=> ADDR_KEY(23), a70cc1 ········DATAI ···········=> DATAI, e15edf ········DATAO ···········=> DATAO 0f737c ····); a3af5a 2b5356 -------------------------------------------------------------------------------- fa1c46 gen0: for i in 0 to 23 generate 3601bf SEARCH_UNITX: SEARCH_UNIT c72b2b port map(CLK ············=> CLK, 57a41e ········RST_N ···········=> RST_N, 528a27 ········WRB ·············=> WRB, b87e43 ········RDB ·············=> RDB, 0aba0c ········PT_BYTE_MASK ····=> PT_BYTE_MASK, ecda55 ········PT_XOR_MASK ·····=> PT_XOR_MASK, 17b2a2 ········SEARCH ··········=> SEARCH_IN(i), a8e424 ········SELECT_ONE ······=> SELECT_ONE(i), c964e3 ········ADDR_KEY ········=> ADDR_KEY(i), 2ff394 ········EXTRA_XOR ·····¤ => EXTRA_XOR, 7b93d0 ········USE_CBC ····¤ ·=> USE_CBC, 62d83c · 4b0cc1 ········DATAI ···········=> DATAI, 6bc7fa ········PT_VECTOR ·······=> PT_VECTOR, 408f81 ········C0 ··············=> C0, eb5c94 ········C1 ··············=> C1, fd082a ········SEARCH_OUT ······=> SEARCH_OUT(i), d7b652 ········CLEAR_SEARCH ····=> CLEAR_SEARCH(i), 2e5edf ········DATAO ···········=> DATAO 5d737c ····); --6a27 0012f356e1f80030010 Page 4 of top.vhd fc7522 end generate; 755356 -------------------------------------------------------------------------------- 722595 ·DATAI <= DATA; 6b598a ·DATA <= DATAO when (RDB = '0' and ADDSEL2 = '0') else (others => 'Z'); 92b08a end beh; f05356 -------------------------------------------------------------------------------- 17af5a 5aaf5a 2faf5a --f1c1 00070fef0c680030011 Page 1 of upi.vhd bb997d ---------|---------|---------|---------|---------|---------|---------|---------| aa533a -- Author ·········: ·Tom Vu ···································· f06e63 -- Date ···········: ·09/19/97 ································· 704774 -- Description¤ ···: ·UProcessor interface b65356 -------------------------------------------------------------------------------- 407faf library ieee; 6411e9 use IEEE.std_logic_1164.all; b3da83 use IEEE.std_logic_arith.all; a0e105 use IEEE.std_logic_unsigned.all; 325356 -------------------------------------------------------------------------------- 4be38a entity UPI is 0eaf5a 31cba7 port( ··RST_N ··········: in ····std_logic; 392d12 ········BOARD_EN ······¤: in ····std_logic; 227852 ········ALE ·········¤ : in ····std_logic; 3a61d0 ········ADDSEL1 ·······¤: in ····std_logic; 3a3455 ········WRB ·········¤ : in ····std_logic; 44c402 ········RDB ·········¤ : in ····std_logic; f200c5 ········ADDSEL2 ·······¤: in ····std_logic; 69ff5d ········AA_IN ········¤ : in ····std_logic; 37a88e ········ADDR ······¤ : in ····std_logic_vector(7 downto 0); ec8827 ········CHIP_ID ······¤ : in ····std_logic_vector(7 downto 0); 70b08d ········SEARCH_OUT ····¤: in ····std_logic_vector(23 downto 0); 30c3c4 ········CLEAR_SEARCH ····¤ : in ····std_logic_vector(23 downto 0); 5bf5bb ········SELECT_ONE ·¤ : in ····std_logic_vector(23 downto 0); c9af5a 68b93c ········AA_OUT ······¤ : out ···std_logic; 6977f0 ········CHIP_AA_OUT ··¤ : out ···std_logic; 896aef ········EXTRA_XOR ······: out ···std_logic; 09a049 ········USE_CBC ········: out ···std_logic; 121892 ········SEARCH_IN ···¤ : OUT ····std_logic_vector(23 downto 0); dd57ed ········PT_XOR_MASK ···¤: out ···std_logic_vector(63 downto 0); c346a7 ········PT_BYTE_MASK ·¤ : out ···std_logic_vector(7 downto 0); 077409 ········PT_VECTOR ·····¤: out ···std_logic_vector(255 downto 0); ca9c20 ········C0 ·····¤ : out ···std_logic_vector(63 downto 0); a15335 ········C1 ·····¤ : out ···std_logic_vector(63 downto 0); 0ae24a ········ADDR_KEY0 ·····¤: out ···std_logic_vector(6 ·downto 0); 78af30 ········ADDR_KEY1 ·····¤: out ···std_logic_vector(6 ·downto 0); ef78be ········ADDR_KEY2 ·····¤: out ···std_logic_vector(6 ·downto 0); 4935c4 ········ADDR_KEY3 ·····¤: out ···std_logic_vector(6 ·downto 0); b9dfb3 ········ADDR_KEY4 ·····¤: out ···std_logic_vector(6 ·downto 0); f692c9 ········ADDR_KEY5 ·····¤: out ···std_logic_vector(6 ·downto 0); 164547 ········ADDR_KEY6 ·····¤: out ···std_logic_vector(6 ·downto 0); e9083d ········ADDR_KEY7 ·····¤: out ···std_logic_vector(6 ·downto 0); 4299b8 ········ADDR_KEY8 ·····¤: out ···std_logic_vector(6 ·downto 0); dad4c2 ········ADDR_KEY9 ·····¤: out ···std_logic_vector(6 ·downto 0); b9593c ········ADDR_KEY10 ····¤: out ···std_logic_vector(6 ·downto 0); 7e5f83 ········ADDR_KEY11 ····¤: out ···std_logic_vector(6 ·downto 0); 5b5442 ········ADDR_KEY12 ····¤: out ···std_logic_vector(6 ·downto 0); 3252fd ········ADDR_KEY13 ····¤: out ···std_logic_vector(6 ·downto 0); 9343c0 ········ADDR_KEY14 ····¤: out ···std_logic_vector(6 ·downto 0); b2457f ········ADDR_KEY15 ····¤: out ···std_logic_vector(6 ·downto 0); 934ebe ········ADDR_KEY16 ····¤: out ···std_logic_vector(6 ·downto 0); 344801 ········ADDR_KEY17 ····¤: out ···std_logic_vector(6 ·downto 0); 1c6cc4 ········ADDR_KEY18 ····¤: out ···std_logic_vector(6 ·downto 0); 956a7b ········ADDR_KEY19 ····¤: out ···std_logic_vector(6 ·downto 0); ab8eb2 ········ADDR_KEY20 ····¤: out ···std_logic_vector(6 ·downto 0); 3c880d ········ADDR_KEY21 ····¤: out ···std_logic_vector(6 ·downto 0); 2c83cc ········ADDR_KEY22 ····¤: out ···std_logic_vector(6 ·downto 0); 218573 ········ADDR_KEY23 ····¤: out ···std_logic_vector(6 ·downto 0); 477bfe ········DATAI ······¤ : in ····std_logic_vector(7 downto 0); 555cbe ········DATAO ······¤ : out ···std_logic_vector(7 downto 0) c3737c ····); 4faf5a a0af5a 782fc5 end UPI; 08af5a f35356 -------------------------------------------------------------------------------- d17b89 architecture beh of UPI is 605356 -------------------------------------------------------------------------------- 94af5a 70af5a --9953 00085f7c1db80030011 Page 2 of upi.vhd b11f14 signal SEARCH_IN_BAK ¤ : std_logic_vector(23 ·downto 0); cf1b46 signal CHIP_EN ¤¤ : std_logic; a9af5a c00c34 component ADDR_KEY 2b14be port( ·· 943782 ········ADDSEL2 ········: in ····std_logic; d5748f ········CHIP_EN ········: in ····std_logic; 3eb47e ········ADDR ···········: in ····std_logic_vector(7 downto 0); c8af5a 83eccb ········ADDR_KEY0 ······: out ···std_logic_vector(6 ·downto 0); c9a1b1 ········ADDR_KEY1 ······: out ···std_logic_vector(6 ·downto 0); 59763f ········ADDR_KEY2 ······: out ···std_logic_vector(6 ·downto 0); 903b45 ········ADDR_KEY3 ······: out ···std_logic_vector(6 ·downto 0); 7bd132 ········ADDR_KEY4 ······: out ···std_logic_vector(6 ·downto 0); 449c48 ········ADDR_KEY5 ······: out ···std_logic_vector(6 ·downto 0); 684bc6 ········ADDR_KEY6 ······: out ···std_logic_vector(6 ·downto 0); 9506bc ········ADDR_KEY7 ······: out ···std_logic_vector(6 ·downto 0); 2c9739 ········ADDR_KEY8 ······: out ···std_logic_vector(6 ·downto 0); 58da43 ········ADDR_KEY9 ······: out ···std_logic_vector(6 ·downto 0); b157bd ········ADDR_KEY10 ·····: out ···std_logic_vector(6 ·downto 0); 0a5102 ········ADDR_KEY11 ·····: out ···std_logic_vector(6 ·downto 0); 645ac3 ········ADDR_KEY12 ·····: out ···std_logic_vector(6 ·downto 0); 785c7c ········ADDR_KEY13 ·····: out ···std_logic_vector(6 ·downto 0); 844d41 ········ADDR_KEY14 ·····: out ···std_logic_vector(6 ·downto 0); a34bfe ········ADDR_KEY15 ·····: out ···std_logic_vector(6 ·downto 0); ab403f ········ADDR_KEY16 ·····: out ···std_logic_vector(6 ·downto 0); 2b4680 ········ADDR_KEY17 ·····: out ···std_logic_vector(6 ·downto 0); 446245 ········ADDR_KEY18 ·····: out ···std_logic_vector(6 ·downto 0); 5164fa ········ADDR_KEY19 ·····: out ···std_logic_vector(6 ·downto 0); 378033 ········ADDR_KEY20 ·····: out ···std_logic_vector(6 ·downto 0); 02868c ········ADDR_KEY21 ·····: out ···std_logic_vector(6 ·downto 0); 128d4d ········ADDR_KEY22 ·····: out ···std_logic_vector(6 ·downto 0); 08a27f ········ADDR_KEY23 ·····: out ···std_logic_vector(6 ·downto 0) 85737c ····); 3ae2c6 end component; a4d83c · 94af5a 5323a1 component REG_RDWR 3dcba7 port( ··RST_N ··········: in ····std_logic; be1a55 ········BOARD_EN ·······: in ····std_logic; 502b30 ········ALE ············: in ····std_logic; d55697 ········ADDSEL1 ········: in ····std_logic; 0d6737 ········WRB ············: in ····std_logic; f19760 ········RDB ············: in ····std_logic; 213782 ········ADDSEL2 ········: in ····std_logic; d14c8d ········AA_IN ··········: in ····std_logic; d5b47e ········ADDR ···········: in ····std_logic_vector(7 downto 0); 8b6ad7 ········CHIP_ID ········: in ····std_logic_vector(7 downto 0); 9bbe0c ········SEARCH_OUT ·····: in ····std_logic_vector(23 downto 0); f3053a ········SELECT_ONE ·····: in ····std_logic_vector(23 downto 0); bdfc73 ········SEARCH_IN ······: in ·····std_logic_vector(23 downto 0); 9faf5a 25bcc9 ········CHIP_EN ········: out ···std_logic; b9ea5e ········AA_OUT ·········: out ···std_logic; dec420 ········CHIP_AA_OUT ····: out ···std_logic; 606aef ········EXTRA_XOR ······: out ···std_logic; 43a049 ········USE_CBC ········: out ···std_logic; b3596c ········PT_XOR_MASK ····: out ···std_logic_vector(63 downto 0); a1a457 ········PT_BYTE_MASK ···: out ···std_logic_vector(7 downto 0); a8e186 ········PT_VECTOR ······: out ···std_logic_vector(255 downto 0); 37f79c ········C0 ·············: out ···std_logic_vector(63 downto 0); 2d3889 ········C1 ·············: out ···std_logic_vector(63 downto 0); 774d79 ········DATAI ··········: in ····std_logic_vector(7 downto 0); 8660f9 ········DATAO ··········: out ···std_logic_vector(7 downto 0) 5c737c ····); 15e2c6 end component; 35af5a 23d83c · b4af5a 6d9b9d component ·START_REG becba7 port( ··RST_N ··········: in ····std_logic; 85748f ········CHIP_EN ········: in ····std_logic; --5396 0005b52193180030011 Page 3 of upi.vhd 5d6737 ········WRB ············: in ····std_logic; dd3782 ········ADDSEL2 ········: in ····std_logic; 5cb47e ········ADDR ···········: in ····std_logic_vector(7 downto 0); 5981d2 ········CLEAR_SEARCH ···: in ····std_logic_vector(23 downto 0); baaf5a b58af1 ········SEARCH_IN ······: OUT ····std_logic_vector(23 downto 0); 1b25bf ········DATAI ··········: in ····std_logic_vector(7 downto 0) ca737c ····); 01e2c6 end component; 89af5a 3b0f89 begin 375356 -------------------------------------------------------------------------------- 81e5b8 ADDR_KEYX : ADDR_KEY 104a4b port map( 4dc99d ········ADDSEL2 ········=> ADDSEL2, 341404 ········CHIP_EN ········=> CHIP_EN, 639c40 ········ADDR ···········=> ADDR, 88af5a e7bffa ········ADDR_KEY0 ······=> ADDR_KEY0, 2b4c7b ········ADDR_KEY1 ······=> ADDR_KEY1, 8650e9 ········ADDR_KEY2 ······=> ADDR_KEY2, bda368 ········ADDR_KEY3 ······=> ADDR_KEY3, 1d69cd ········ADDR_KEY4 ······=> ADDR_KEY4, cf9a4c ········ADDR_KEY5 ······=> ADDR_KEY5, f386de ········ADDR_KEY6 ······=> ADDR_KEY6, b3755f ········ADDR_KEY7 ······=> ADDR_KEY7, c01b85 ········ADDR_KEY8 ······=> ADDR_KEY8, 94e804 ········ADDR_KEY9 ······=> ADDR_KEY9, db75b1 ········ADDR_KEY10 ·····=> ADDR_KEY10, 028630 ········ADDR_KEY11 ·····=> ADDR_KEY11, 239aa2 ········ADDR_KEY12 ·····=> ADDR_KEY12, c76923 ········ADDR_KEY13 ·····=> ADDR_KEY13, f1a386 ········ADDR_KEY14 ·····=> ADDR_KEY14, 125007 ········ADDR_KEY15 ·····=> ADDR_KEY15, 0a4c95 ········ADDR_KEY16 ·····=> ADDR_KEY16, bbbf14 ········ADDR_KEY17 ·····=> ADDR_KEY17, a3d1ce ········ADDR_KEY18 ·····=> ADDR_KEY18, de224f ········ADDR_KEY19 ·····=> ADDR_KEY19, 12c236 ········ADDR_KEY20 ·····=> ADDR_KEY20, 6b31b7 ········ADDR_KEY21 ·····=> ADDR_KEY21, e42d25 ········ADDR_KEY22 ·····=> ADDR_KEY22, 792d66 ········ADDR_KEY23 ·····=> ADDR_KEY23 30a8ec ¤ ); 41af5a 130fd0 REG_RDWRX : REG_RDWR c3b1c0 port map(RST_N ·········=> RST_N, c4c652 ········BOARD_EN ·······=> BOARD_EN, 8fed26 ········ALE ············=> ALE, 53d50f ········ADDSEL1 ········=> ADDSEL1, bb14b5 ········WRB ············=> WRB, 0c7402 ········RDB ············=> RDB, 79c99d ········ADDSEL2 ········=> ADDSEL2, 98c77b ········AA_IN ··········=> AA_IN, 479c40 ········ADDR ···········=> ADDR, 639156 ········CHIP_ID ········=> CHIP_ID, 59f877 ········SEARCH_OUT ·····=> SEARCH_OUT, 5e4270 ········SELECT_ONE ·····=> SELECT_ONE, 381fc9 ········SEARCH_IN ······=> SEARCH_IN_BAK, 19af5a a01404 ········CHIP_EN ········=> CHIP_EN, f3e285 ········AA_OUT ·········=> AA_OUT, 11750c ········CHIP_AA_OUT ····=> CHIP_AA_OUT, 272b3b ········EXTRA_XOR ······=> EXTRA_XOR, 89b843 ········USE_CBC ········=> USE_CBC, 320949 ········PT_XOR_MASK ····=> PT_XOR_MASK, 25084d ········PT_BYTE_MASK ···=> PT_BYTE_MASK, f4415b ········PT_VECTOR ······=> PT_VECTOR, accc6e ········C0 ·············=> C0, 313fef ········C1 ·············=> C1, 7ef6a8 ········DATAI ··········=> DATAI, 6a8c67 ········DATAO ··········=> DATAO 5b737c ····); --25a4 0013211398f80030011 Page 4 of upi.vhd 789938 START_REGX : ·START_REG 6cb1c0 port map(RST_N ·········=> RST_N, 7d1404 ········CHIP_EN ········=> CHIP_EN, 0414b5 ········WRB ············=> WRB, f1c99d ········ADDSEL2 ········=> ADDSEL2, bd9c40 ········ADDR ···········=> ADDR, 600130 ········CLEAR_SEARCH ···=> CLEAR_SEARCH, 38af5a b71fc9 ········SEARCH_IN ······=> SEARCH_IN_BAK, 2a6bdf ········DATAI ··········=> DATAI d7737c ····); e689ea SEARCH_IN <= SEARCH_IN_BAK; ecb08a end beh; c95356 -------------------------------------------------------------------------------- 32af5a