1 |
4 |
ghegde |
--************************************************************
|
2 |
|
|
--Copyright 2015, Ganesh Hegde < ghegde@opencores.org >
|
3 |
|
|
--
|
4 |
|
|
--This source file may be used and distributed without
|
5 |
|
|
--restriction provided that this copyright statement is not
|
6 |
|
|
--removed from the file and that any derivative work contains
|
7 |
|
|
--the original copyright notice and the associated disclaimer.
|
8 |
|
|
--
|
9 |
|
|
--This source is distributed in the hope that it will be
|
10 |
|
|
--useful, but WITHOUT ANY WARRANTY; without even the implied
|
11 |
|
|
--warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
12 |
|
|
--PURPOSE. See the GNU Lesser General Public License for more
|
13 |
|
|
--details.
|
14 |
|
|
--
|
15 |
|
|
--You should have received a copy of the GNU Lesser General
|
16 |
|
|
--Public License along with this source; if not, download it
|
17 |
|
|
--from http://www.opencores.org/lgpl.shtml
|
18 |
|
|
--
|
19 |
|
|
--*************************************************************
|
20 |
|
|
|
21 |
|
|
--*************************************************************
|
22 |
|
|
-- GF multiplication of input byte by 0xB
|
23 |
|
|
--Logic type : Combinational
|
24 |
|
|
--*************************************************************
|
25 |
|
|
library ieee;
|
26 |
|
|
use ieee.std_logic_1164.all;
|
27 |
|
|
|
28 |
|
|
entity xB is
|
29 |
|
|
port (
|
30 |
|
|
--clk,reset : in std_logic;
|
31 |
|
|
data_in: in std_logic_vector(7 downto 0);
|
32 |
|
|
data_out:out std_logic_vector(7 downto 0)
|
33 |
|
|
);
|
34 |
|
|
end xB;
|
35 |
|
|
|
36 |
|
|
architecture beh_xB of xB is
|
37 |
|
|
begin
|
38 |
|
|
process(data_in)
|
39 |
|
|
begin
|
40 |
|
|
case(data_in) is
|
41 |
|
|
when x"00"=> data_out<=x"00";
|
42 |
|
|
when x"01"=> data_out<=x"0b";
|
43 |
|
|
when x"02"=> data_out<=x"16";
|
44 |
|
|
when x"03"=> data_out<=x"1d";
|
45 |
|
|
when x"04"=> data_out<=x"2c";
|
46 |
|
|
when x"05"=> data_out<=x"27";
|
47 |
|
|
when x"06"=> data_out<=x"3a";
|
48 |
|
|
when x"07"=> data_out<=x"31";
|
49 |
|
|
when x"08"=> data_out<=x"58";
|
50 |
|
|
when x"09"=> data_out<=x"53";
|
51 |
|
|
when x"0a"=> data_out<=x"4e";
|
52 |
|
|
when x"0b"=> data_out<=x"45";
|
53 |
|
|
when x"0c"=> data_out<=x"74";
|
54 |
|
|
when x"0d"=> data_out<=x"7f";
|
55 |
|
|
when x"0e"=> data_out<=x"62";
|
56 |
|
|
when x"0f"=> data_out<=x"69";
|
57 |
|
|
when x"10"=> data_out<=x"b0";
|
58 |
|
|
when x"11"=> data_out<=x"bb";
|
59 |
|
|
when x"12"=> data_out<=x"a6";
|
60 |
|
|
when x"13"=> data_out<=x"ad";
|
61 |
|
|
when x"14"=> data_out<=x"9c";
|
62 |
|
|
when x"15"=> data_out<=x"97";
|
63 |
|
|
when x"16"=> data_out<=x"8a";
|
64 |
|
|
when x"17"=> data_out<=x"81";
|
65 |
|
|
when x"18"=> data_out<=x"e8";
|
66 |
|
|
when x"19"=> data_out<=x"e3";
|
67 |
|
|
when x"1a"=> data_out<=x"fe";
|
68 |
|
|
when x"1b"=> data_out<=x"f5";
|
69 |
|
|
when x"1c"=> data_out<=x"c4";
|
70 |
|
|
when x"1d"=> data_out<=x"cf";
|
71 |
|
|
when x"1e"=> data_out<=x"d2";
|
72 |
|
|
when x"1f"=> data_out<=x"d9";
|
73 |
|
|
when x"20"=> data_out<=x"7b";
|
74 |
|
|
when x"21"=> data_out<=x"70";
|
75 |
|
|
when x"22"=> data_out<=x"6d";
|
76 |
|
|
when x"23"=> data_out<=x"66";
|
77 |
|
|
when x"24"=> data_out<=x"57";
|
78 |
|
|
when x"25"=> data_out<=x"5c";
|
79 |
|
|
when x"26"=> data_out<=x"41";
|
80 |
|
|
when x"27"=> data_out<=x"4a";
|
81 |
|
|
when x"28"=> data_out<=x"23";
|
82 |
|
|
when x"29"=> data_out<=x"28";
|
83 |
|
|
when x"2a"=> data_out<=x"35";
|
84 |
|
|
when x"2b"=> data_out<=x"3e";
|
85 |
|
|
when x"2c"=> data_out<=x"0f";
|
86 |
|
|
when x"2d"=> data_out<=x"04";
|
87 |
|
|
when x"2e"=> data_out<=x"19";
|
88 |
|
|
when x"2f"=> data_out<=x"12";
|
89 |
|
|
when x"30"=> data_out<=x"cb";
|
90 |
|
|
when x"31"=> data_out<=x"c0";
|
91 |
|
|
when x"32"=> data_out<=x"dd";
|
92 |
|
|
when x"33"=> data_out<=x"d6";
|
93 |
|
|
when x"34"=> data_out<=x"e7";
|
94 |
|
|
when x"35"=> data_out<=x"ec";
|
95 |
|
|
when x"36"=> data_out<=x"f1";
|
96 |
|
|
when x"37"=> data_out<=x"fa";
|
97 |
|
|
when x"38"=> data_out<=x"93";
|
98 |
|
|
when x"39"=> data_out<=x"98";
|
99 |
|
|
when x"3a"=> data_out<=x"85";
|
100 |
|
|
when x"3b"=> data_out<=x"8e";
|
101 |
|
|
when x"3c"=> data_out<=x"bf";
|
102 |
|
|
when x"3d"=> data_out<=x"b4";
|
103 |
|
|
when x"3e"=> data_out<=x"a9";
|
104 |
|
|
when x"3f"=> data_out<=x"a2";
|
105 |
|
|
when x"40"=> data_out<=x"f6";
|
106 |
|
|
when x"41"=> data_out<=x"fd";
|
107 |
|
|
when x"42"=> data_out<=x"e0";
|
108 |
|
|
when x"43"=> data_out<=x"eb";
|
109 |
|
|
when x"44"=> data_out<=x"da";
|
110 |
|
|
when x"45"=> data_out<=x"d1";
|
111 |
|
|
when x"46"=> data_out<=x"cc";
|
112 |
|
|
when x"47"=> data_out<=x"c7";
|
113 |
|
|
when x"48"=> data_out<=x"ae";
|
114 |
|
|
when x"49"=> data_out<=x"a5";
|
115 |
|
|
when x"4a"=> data_out<=x"b8";
|
116 |
|
|
when x"4b"=> data_out<=x"b3";
|
117 |
|
|
when x"4c"=> data_out<=x"82";
|
118 |
|
|
when x"4d"=> data_out<=x"89";
|
119 |
|
|
when x"4e"=> data_out<=x"94";
|
120 |
|
|
when x"4f"=> data_out<=x"9f";
|
121 |
|
|
when x"50"=> data_out<=x"46";
|
122 |
|
|
when x"51"=> data_out<=x"4d";
|
123 |
|
|
when x"52"=> data_out<=x"50";
|
124 |
|
|
when x"53"=> data_out<=x"5b";
|
125 |
|
|
when x"54"=> data_out<=x"6a";
|
126 |
|
|
when x"55"=> data_out<=x"61";
|
127 |
|
|
when x"56"=> data_out<=x"7c";
|
128 |
|
|
when x"57"=> data_out<=x"77";
|
129 |
|
|
when x"58"=> data_out<=x"1e";
|
130 |
|
|
when x"59"=> data_out<=x"15";
|
131 |
|
|
when x"5a"=> data_out<=x"08";
|
132 |
|
|
when x"5b"=> data_out<=x"03";
|
133 |
|
|
when x"5c"=> data_out<=x"32";
|
134 |
|
|
when x"5d"=> data_out<=x"39";
|
135 |
|
|
when x"5e"=> data_out<=x"24";
|
136 |
|
|
when x"5f"=> data_out<=x"2f";
|
137 |
|
|
when x"60"=> data_out<=x"8d";
|
138 |
|
|
when x"61"=> data_out<=x"86";
|
139 |
|
|
when x"62"=> data_out<=x"9b";
|
140 |
|
|
when x"63"=> data_out<=x"90";
|
141 |
|
|
when x"64"=> data_out<=x"a1";
|
142 |
|
|
when x"65"=> data_out<=x"aa";
|
143 |
|
|
when x"66"=> data_out<=x"b7";
|
144 |
|
|
when x"67"=> data_out<=x"bc";
|
145 |
|
|
when x"68"=> data_out<=x"d5";
|
146 |
|
|
when x"69"=> data_out<=x"de";
|
147 |
|
|
when x"6a"=> data_out<=x"c3";
|
148 |
|
|
when x"6b"=> data_out<=x"c8";
|
149 |
|
|
when x"6c"=> data_out<=x"f9";
|
150 |
|
|
when x"6d"=> data_out<=x"f2";
|
151 |
|
|
when x"6e"=> data_out<=x"ef";
|
152 |
|
|
when x"6f"=> data_out<=x"e4";
|
153 |
|
|
when x"70"=> data_out<=x"3d";
|
154 |
|
|
when x"71"=> data_out<=x"36";
|
155 |
|
|
when x"72"=> data_out<=x"2b";
|
156 |
|
|
when x"73"=> data_out<=x"20";
|
157 |
|
|
when x"74"=> data_out<=x"11";
|
158 |
|
|
when x"75"=> data_out<=x"1a";
|
159 |
|
|
when x"76"=> data_out<=x"07";
|
160 |
|
|
when x"77"=> data_out<=x"0c";
|
161 |
|
|
when x"78"=> data_out<=x"65";
|
162 |
|
|
when x"79"=> data_out<=x"6e";
|
163 |
|
|
when x"7a"=> data_out<=x"73";
|
164 |
|
|
when x"7b"=> data_out<=x"78";
|
165 |
|
|
when x"7c"=> data_out<=x"49";
|
166 |
|
|
when x"7d"=> data_out<=x"42";
|
167 |
|
|
when x"7e"=> data_out<=x"5f";
|
168 |
|
|
when x"7f"=> data_out<=x"54";
|
169 |
|
|
when x"80"=> data_out<=x"f7";
|
170 |
|
|
when x"81"=> data_out<=x"fc";
|
171 |
|
|
when x"82"=> data_out<=x"e1";
|
172 |
|
|
when x"83"=> data_out<=x"ea";
|
173 |
|
|
when x"84"=> data_out<=x"db";
|
174 |
|
|
when x"85"=> data_out<=x"d0";
|
175 |
|
|
when x"86"=> data_out<=x"cd";
|
176 |
|
|
when x"87"=> data_out<=x"c6";
|
177 |
|
|
when x"88"=> data_out<=x"af";
|
178 |
|
|
when x"89"=> data_out<=x"a4";
|
179 |
|
|
when x"8a"=> data_out<=x"b9";
|
180 |
|
|
when x"8b"=> data_out<=x"b2";
|
181 |
|
|
when x"8c"=> data_out<=x"83";
|
182 |
|
|
when x"8d"=> data_out<=x"88";
|
183 |
|
|
when x"8e"=> data_out<=x"95";
|
184 |
|
|
when x"8f"=> data_out<=x"9e";
|
185 |
|
|
when x"90"=> data_out<=x"47";
|
186 |
|
|
when x"91"=> data_out<=x"4c";
|
187 |
|
|
when x"92"=> data_out<=x"51";
|
188 |
|
|
when x"93"=> data_out<=x"5a";
|
189 |
|
|
when x"94"=> data_out<=x"6b";
|
190 |
|
|
when x"95"=> data_out<=x"60";
|
191 |
|
|
when x"96"=> data_out<=x"7d";
|
192 |
|
|
when x"97"=> data_out<=x"76";
|
193 |
|
|
when x"98"=> data_out<=x"1f";
|
194 |
|
|
when x"99"=> data_out<=x"14";
|
195 |
|
|
when x"9a"=> data_out<=x"09";
|
196 |
|
|
when x"9b"=> data_out<=x"02";
|
197 |
|
|
when x"9c"=> data_out<=x"33";
|
198 |
|
|
when x"9d"=> data_out<=x"38";
|
199 |
|
|
when x"9e"=> data_out<=x"25";
|
200 |
|
|
when x"9f"=> data_out<=x"2e";
|
201 |
|
|
when x"a0"=> data_out<=x"8c";
|
202 |
|
|
when x"a1"=> data_out<=x"87";
|
203 |
|
|
when x"a2"=> data_out<=x"9a";
|
204 |
|
|
when x"a3"=> data_out<=x"91";
|
205 |
|
|
when x"a4"=> data_out<=x"a0";
|
206 |
|
|
when x"a5"=> data_out<=x"ab";
|
207 |
|
|
when x"a6"=> data_out<=x"b6";
|
208 |
|
|
when x"a7"=> data_out<=x"bd";
|
209 |
|
|
when x"a8"=> data_out<=x"d4";
|
210 |
|
|
when x"a9"=> data_out<=x"df";
|
211 |
|
|
when x"aa"=> data_out<=x"c2";
|
212 |
|
|
when x"ab"=> data_out<=x"c9";
|
213 |
|
|
when x"ac"=> data_out<=x"f8";
|
214 |
|
|
when x"ad"=> data_out<=x"f3";
|
215 |
|
|
when x"ae"=> data_out<=x"ee";
|
216 |
|
|
when x"af"=> data_out<=x"e5";
|
217 |
|
|
when x"b0"=> data_out<=x"3c";
|
218 |
|
|
when x"b1"=> data_out<=x"37";
|
219 |
|
|
when x"b2"=> data_out<=x"2a";
|
220 |
|
|
when x"b3"=> data_out<=x"21";
|
221 |
|
|
when x"b4"=> data_out<=x"10";
|
222 |
|
|
when x"b5"=> data_out<=x"1b";
|
223 |
|
|
when x"b6"=> data_out<=x"06";
|
224 |
|
|
when x"b7"=> data_out<=x"0d";
|
225 |
|
|
when x"b8"=> data_out<=x"64";
|
226 |
|
|
when x"b9"=> data_out<=x"6f";
|
227 |
|
|
when x"ba"=> data_out<=x"72";
|
228 |
|
|
when x"bb"=> data_out<=x"79";
|
229 |
|
|
when x"bc"=> data_out<=x"48";
|
230 |
|
|
when x"bd"=> data_out<=x"43";
|
231 |
|
|
when x"be"=> data_out<=x"5e";
|
232 |
|
|
when x"bf"=> data_out<=x"55";
|
233 |
|
|
when x"c0"=> data_out<=x"01";
|
234 |
|
|
when x"c1"=> data_out<=x"0a";
|
235 |
|
|
when x"c2"=> data_out<=x"17";
|
236 |
|
|
when x"c3"=> data_out<=x"1c";
|
237 |
|
|
when x"c4"=> data_out<=x"2d";
|
238 |
|
|
when x"c5"=> data_out<=x"26";
|
239 |
|
|
when x"c6"=> data_out<=x"3b";
|
240 |
|
|
when x"c7"=> data_out<=x"30";
|
241 |
|
|
when x"c8"=> data_out<=x"59";
|
242 |
|
|
when x"c9"=> data_out<=x"52";
|
243 |
|
|
when x"ca"=> data_out<=x"4f";
|
244 |
|
|
when x"cb"=> data_out<=x"44";
|
245 |
|
|
when x"cc"=> data_out<=x"75";
|
246 |
|
|
when x"cd"=> data_out<=x"7e";
|
247 |
|
|
when x"ce"=> data_out<=x"63";
|
248 |
|
|
when x"cf"=> data_out<=x"68";
|
249 |
|
|
when x"d0"=> data_out<=x"b1";
|
250 |
|
|
when x"d1"=> data_out<=x"ba";
|
251 |
|
|
when x"d2"=> data_out<=x"a7";
|
252 |
|
|
when x"d3"=> data_out<=x"ac";
|
253 |
|
|
when x"d4"=> data_out<=x"9d";
|
254 |
|
|
when x"d5"=> data_out<=x"96";
|
255 |
|
|
when x"d6"=> data_out<=x"8b";
|
256 |
|
|
when x"d7"=> data_out<=x"80";
|
257 |
|
|
when x"d8"=> data_out<=x"e9";
|
258 |
|
|
when x"d9"=> data_out<=x"e2";
|
259 |
|
|
when x"da"=> data_out<=x"ff";
|
260 |
|
|
when x"db"=> data_out<=x"f4";
|
261 |
|
|
when x"dc"=> data_out<=x"c5";
|
262 |
|
|
when x"dd"=> data_out<=x"ce";
|
263 |
|
|
when x"de"=> data_out<=x"d3";
|
264 |
|
|
when x"df"=> data_out<=x"d8";
|
265 |
|
|
when x"e0"=> data_out<=x"7a";
|
266 |
|
|
when x"e1"=> data_out<=x"71";
|
267 |
|
|
when x"e2"=> data_out<=x"6c";
|
268 |
|
|
when x"e3"=> data_out<=x"67";
|
269 |
|
|
when x"e4"=> data_out<=x"56";
|
270 |
|
|
when x"e5"=> data_out<=x"5d";
|
271 |
|
|
when x"e6"=> data_out<=x"40";
|
272 |
|
|
when x"e7"=> data_out<=x"4b";
|
273 |
|
|
when x"e8"=> data_out<=x"22";
|
274 |
|
|
when x"e9"=> data_out<=x"29";
|
275 |
|
|
when x"ea"=> data_out<=x"34";
|
276 |
|
|
when x"eb"=> data_out<=x"3f";
|
277 |
|
|
when x"ec"=> data_out<=x"0e";
|
278 |
|
|
when x"ed"=> data_out<=x"05";
|
279 |
|
|
when x"ee"=> data_out<=x"18";
|
280 |
|
|
when x"ef"=> data_out<=x"13";
|
281 |
|
|
when x"f0"=> data_out<=x"ca";
|
282 |
|
|
when x"f1"=> data_out<=x"c1";
|
283 |
|
|
when x"f2"=> data_out<=x"dc";
|
284 |
|
|
when x"f3"=> data_out<=x"d7";
|
285 |
|
|
when x"f4"=> data_out<=x"e6";
|
286 |
|
|
when x"f5"=> data_out<=x"ed";
|
287 |
|
|
when x"f6"=> data_out<=x"f0";
|
288 |
|
|
when x"f7"=> data_out<=x"fb";
|
289 |
|
|
when x"f8"=> data_out<=x"92";
|
290 |
|
|
when x"f9"=> data_out<=x"99";
|
291 |
|
|
when x"fa"=> data_out<=x"84";
|
292 |
|
|
when x"fb"=> data_out<=x"8f";
|
293 |
|
|
when x"fc"=> data_out<=x"be";
|
294 |
|
|
when x"fd"=> data_out<=x"b5";
|
295 |
|
|
when x"fe"=> data_out<=x"a8";
|
296 |
|
|
when others=> data_out<=x"a3";
|
297 |
|
|
end case;
|
298 |
|
|
end process;
|
299 |
|
|
|
300 |
|
|
end beh_xB;
|