what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

ch6.raw

ch6.raw
Posted Dec 21, 1999

ch6.raw

tags | encryption
SHA-256 | 9b122cc2de42108c8b6b41270c0519f08ceddb631ed6b6c9e17987b84e28e510

ch6.raw

Change Mirror Download
--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
Login or Register to add favorites

File Archive:

September 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Sep 1st
    261 Files
  • 2
    Sep 2nd
    17 Files
  • 3
    Sep 3rd
    38 Files
  • 4
    Sep 4th
    52 Files
  • 5
    Sep 5th
    23 Files
  • 6
    Sep 6th
    27 Files
  • 7
    Sep 7th
    0 Files
  • 8
    Sep 8th
    1 Files
  • 9
    Sep 9th
    16 Files
  • 10
    Sep 10th
    38 Files
  • 11
    Sep 11th
    21 Files
  • 12
    Sep 12th
    40 Files
  • 13
    Sep 13th
    18 Files
  • 14
    Sep 14th
    0 Files
  • 15
    Sep 15th
    0 Files
  • 16
    Sep 16th
    21 Files
  • 17
    Sep 17th
    51 Files
  • 18
    Sep 18th
    23 Files
  • 19
    Sep 19th
    48 Files
  • 20
    Sep 20th
    36 Files
  • 21
    Sep 21st
    0 Files
  • 22
    Sep 22nd
    0 Files
  • 23
    Sep 23rd
    0 Files
  • 24
    Sep 24th
    0 Files
  • 25
    Sep 25th
    0 Files
  • 26
    Sep 26th
    0 Files
  • 27
    Sep 27th
    0 Files
  • 28
    Sep 28th
    0 Files
  • 29
    Sep 29th
    0 Files
  • 30
    Sep 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2024 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close