mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-18 09:02:08 +00:00
Speech Update
This commit is contained in:
parent
31470b5b7d
commit
b8ed50536e
@ -223,4 +223,5 @@ set_global_assignment -name VHDL_FILE rtl/T80/T80_Pack.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/T80/T80_MCode.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/T80/T80_ALU.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/T80/T80.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/berzerk_speech_rom.vhd
|
||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||
@ -0,0 +1,3 @@
|
||||
{ "" "" "" "VHDL Signal Declaration warning at berzerk.vhd(107): used implicit default value for signal \"dbg_cpu_di\" because signal was never assigned a value or an explicit default value. Use of implicit default value may introduce unintended design optimizations." { } { } 0 10541 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "Verilog HDL information at scandoubler.v(114): always construct contains both blocking and non-blocking assignments" { } { } 0 10268 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "Verilog HDL warning at hq2x.sv(247): extended using \"x\" or \"z\"" { } { } 0 10273 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
Binary file not shown.
@ -51,7 +51,7 @@
|
||||
--
|
||||
-- Sound effects uses a ptm6840 timer (3 channel) + noise generator and volume control
|
||||
--
|
||||
-- TODO : speech synthesis.
|
||||
|
||||
--
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Problème rencontré : cpu_int acquitée par iorq durant le cylce de capture du vecteur
|
||||
@ -74,7 +74,7 @@ port(
|
||||
clock_10 : in std_logic;
|
||||
reset : in std_logic;
|
||||
tv15Khz_mode : in std_logic;
|
||||
|
||||
|
||||
video_r : out std_logic;
|
||||
video_g : out std_logic;
|
||||
video_b : out std_logic;
|
||||
@ -102,7 +102,8 @@ port(
|
||||
up2 : in std_logic;
|
||||
fire2 : in std_logic;
|
||||
|
||||
ledr : out std_logic_vector(9 downto 0);
|
||||
sw : in std_logic_vector(9 downto 0);
|
||||
ledr : out std_logic_vector(9 downto 0) := "0000000000";
|
||||
dbg_cpu_di : out std_logic_vector( 7 downto 0);
|
||||
dbg_cpu_addr : out std_logic_vector(15 downto 0);
|
||||
dbg_cpu_addr_latch : out std_logic_vector(15 downto 0)
|
||||
@ -198,8 +199,15 @@ signal video_s : std_logic_vector (3 downto 0);
|
||||
signal hsync_o : std_logic;
|
||||
signal vsync_o : std_logic;
|
||||
|
||||
signal sound_out : std_logic_vector(11 downto 0);
|
||||
signal speech_out : std_logic_vector(11 downto 0);
|
||||
signal speech_busy : std_logic;
|
||||
|
||||
begin
|
||||
|
||||
audio_out <= ("00"&speech_out&"00")+('0'&sound_out&"000");
|
||||
|
||||
|
||||
clock_10n <= not clock_10;
|
||||
reset_n <= not reset;
|
||||
|
||||
@ -258,19 +266,7 @@ begin
|
||||
end if;
|
||||
end process;
|
||||
|
||||
-- output
|
||||
video_s <= video_i;--video_o when tv15Khz_mode = '0' else video_i;
|
||||
|
||||
video_r <= video_s(0);
|
||||
video_g <= video_s(1);
|
||||
video_b <= video_s(2);
|
||||
video_hi <= video_s(3);
|
||||
|
||||
|
||||
video_clk <= clock_10;
|
||||
video_csync <= csync;
|
||||
video_hs <= hsync;--hsync_o;
|
||||
video_vs <= vsync;--vsync_o;
|
||||
|
||||
------------------
|
||||
-- player controls
|
||||
@ -379,10 +375,10 @@ with cpu_addr(15 downto 11) select
|
||||
x"FF" when others;
|
||||
|
||||
-- I/O-2 mux
|
||||
with cpu_addr(2 downto 0) select
|
||||
with cpu_addr(2 downto 0) select
|
||||
cpu_di_io <=
|
||||
X"BC" when "000", -- 60 (F3) (normal : BC, hatch test : BE, input test BD )
|
||||
X"FC" when "001", -- 61 (F2) (normal : FC, signature analisys FF)
|
||||
X"3C" when "000", -- 60 (F3) (normal French: BC, normal Spain: FC, hatch test : BE, input test BD ) DIP F3
|
||||
X"FC" when "001", -- 61 (F2) (normal : FC, signature analisys FF) DIP F2
|
||||
X"F0" when "010", -- 62 (F6)
|
||||
X"F0" when "011", -- 63 (F5)
|
||||
X"F0" when "100", -- 64 (F4)
|
||||
@ -394,6 +390,7 @@ with cpu_addr(2 downto 0) select
|
||||
-- I/O-1 and final mux
|
||||
-- pull up on ZPU board
|
||||
cpu_di <= "111111" & cpu_int_n & '0' when cpu_iorq_n = '0' and cpu_m1_n = '0' -- interrupt vector
|
||||
else '0'¬(speech_busy)&"000000" when io1_cs = '1' and cpu_addr(3 downto 0) = X"4" -- speech board
|
||||
else player1 when io1_cs = '1' and cpu_addr(3 downto 0) = X"8" -- P1
|
||||
else system when io1_cs = '1' and cpu_addr(3 downto 0) = X"9" -- sys
|
||||
else player2 when io1_cs = '1' and cpu_addr(3 downto 0) = X"a" -- P2
|
||||
@ -522,6 +519,21 @@ port map(
|
||||
vsync_o => vsync_o
|
||||
);
|
||||
|
||||
|
||||
--video_s <= video_i;
|
||||
--video_hs <= hsync;
|
||||
--video_vs <= vsync;
|
||||
video_r <= video_s(0);
|
||||
video_g <= video_s(1);
|
||||
video_b <= video_s(2);
|
||||
video_hi <= video_s(3);
|
||||
|
||||
-- output
|
||||
video_s <= video_o when tv15Khz_mode = '0' else video_i;
|
||||
video_clk <= clock_10;
|
||||
video_csync <= csync;
|
||||
video_hs <= hsync_o when tv15Khz_mode = '0' else hsync;
|
||||
video_vs <= vsync_o when tv15Khz_mode = '0' else vsync;
|
||||
-- Z80
|
||||
Z80 : entity work.T80se
|
||||
generic map(Mode => 0, T2Write => 1, IOWait => 1)
|
||||
@ -606,7 +618,21 @@ port map(
|
||||
cs => io1_cs,
|
||||
addr => cpu_addr(4 downto 0),
|
||||
di => cpu_do,
|
||||
sample => audio_out
|
||||
sample => sound_out
|
||||
);
|
||||
|
||||
-- speech synthesis (s14001a)
|
||||
berzerk_speech : entity work.berzerk_speech
|
||||
port map(
|
||||
sw => sw,
|
||||
clock => cpu_clock,
|
||||
reset => reset,
|
||||
cs => io1_cs,
|
||||
wr_n => cpu_wr_n,
|
||||
addr => cpu_addr(4 downto 0),
|
||||
di => cpu_do,
|
||||
busy => speech_busy,
|
||||
sample => speech_out
|
||||
);
|
||||
------------------------------------------
|
||||
end architecture;
|
||||
@ -62,7 +62,7 @@ wire m_coin = kbjoy[3];
|
||||
berzerk berzerk(
|
||||
.clock_10(clk_10),
|
||||
.reset(status[0] | status[6] | buttons[1]),
|
||||
.tv15Khz_mode(1'b1),
|
||||
.tv15Khz_mode(scandoubler_disable),
|
||||
.video_r(r),
|
||||
.video_g(g),
|
||||
.video_b(b),
|
||||
@ -106,7 +106,7 @@ assign AUDIO_R = AUDIO_L;
|
||||
wire hs, vs;
|
||||
wire r, g, b;
|
||||
|
||||
video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(1)) video_mixer
|
||||
video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(0)) video_mixer
|
||||
(
|
||||
.clk_sys(clk_40),
|
||||
.ce_pix(clk_10),
|
||||
@ -124,7 +124,7 @@ video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(1)) video_mixer
|
||||
.VGA_B(VGA_B),
|
||||
.VGA_VS(VGA_VS),
|
||||
.VGA_HS(VGA_HS),
|
||||
.scandoubler_disable(scandoubler_disable),
|
||||
.scandoubler_disable(1'b1),//scandoubler_disable),
|
||||
.scanlines(scandoubler_disable ? 2'b00 : {status[4:3] == 3, status[4:3] == 2}),
|
||||
.hq2x(status[4:3]==1),
|
||||
.ypbpr_full(1),
|
||||
|
||||
@ -13,7 +13,7 @@ port (
|
||||
cs : in std_logic;
|
||||
addr : in std_logic_vector(4 downto 0);
|
||||
di : in std_logic_vector(7 downto 0);
|
||||
sample : out std_logic_vector(15 downto 0)
|
||||
sample : out std_logic_vector(11 downto 0)
|
||||
);
|
||||
end berzerk_sound_fx;
|
||||
|
||||
@ -48,7 +48,7 @@ constant vol : vol_type := (X"01", X"02", X"04", X"08", X"10", X"20", X"40", X"8
|
||||
signal snd1 : signed(8 downto 0);
|
||||
signal snd2 : signed(8 downto 0);
|
||||
signal snd3 : signed(8 downto 0);
|
||||
signal snd : std_logic_vector(11 downto 0);
|
||||
--signal snd : std_logic_vector(11 downto 0);
|
||||
|
||||
signal ptm6840_q1_r : std_logic;
|
||||
signal ena_q1_clock : std_logic;
|
||||
@ -59,8 +59,7 @@ signal ena_external_clock : std_logic;
|
||||
|
||||
begin
|
||||
|
||||
snd <= std_logic_vector(snd1+snd2+snd3) + X"7FF";
|
||||
sample <= '0' & snd & "000";
|
||||
sample <= std_logic_vector(snd1+snd2+snd3) + X"7FF";
|
||||
|
||||
-- make enable signal to replace misc clocks
|
||||
process(clock)
|
||||
|
||||
@ -1,278 +1,441 @@
|
||||
---------------------------------------------------------------------------------
|
||||
-- Berzerk speech by Dar - July 2018
|
||||
---------------------------------------------------------------------------------
|
||||
-- s14001a speech synthesis based on Mame source code : TSI S14001A emulator v1.32
|
||||
--
|
||||
-- By Jonathan Gevaryahu ("Lord Nightmare") with help from Kevin Horton ("kevtris")
|
||||
-- MAME conversion and integration by R. Belmont
|
||||
-- Clock Frequency control updated by Zsolt Vasvari
|
||||
-- Other fixes by AtariAce
|
||||
--
|
||||
-- Copyright (C) 2006-2013 Jonathan Gevaryahu aka Lord Nightmare
|
||||
--
|
||||
--
|
||||
-- VHDL conversion by Dar
|
||||
--
|
||||
---------------------------------------------------------------------------------
|
||||
-- S14001a principle
|
||||
--
|
||||
-- Command + start select a word to be played
|
||||
-- One word is a list of first phoneme address called syllables
|
||||
-- Each phoneme is composed of an LPC data first bloc address and a phoneme parameter
|
||||
-- Phoneme parameter gives the mode (mirror/not mirror), silent, last_phoneme,
|
||||
-- repeat and length of begining counters values.
|
||||
--
|
||||
-- Sound is LPC data encoded by bloc of 32 samples (8 bytes and 4 delta value/byte)
|
||||
--
|
||||
-- In non mirror mode blocs of LPC data are read consecutively from first to
|
||||
-- first+N. with N = (8-repeat) * (16-length)
|
||||
--
|
||||
-- In mirror mode blocs of LPC data are read once forward and once backward
|
||||
-- repeatedly (8-repeat) times then next bloc is read. Change to next syllable
|
||||
-- after (16-length)/2 blocs have been read.
|
||||
--
|
||||
-- Output is set to silent (value 7) under some circumstances (third and fourth
|
||||
-- quarter in mirror mode or for one sample after changing read direction).
|
||||
--
|
||||
-- Silence can modify output value (in the loop) or not (silence modify
|
||||
-- output_sil but not output)
|
||||
--
|
||||
--
|
||||
---------------------------------------------------------------------------------
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all,ieee.numeric_std.all;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity berzerk_speech is
|
||||
port (
|
||||
clk : in std_logic;
|
||||
addr : in std_logic_vector(11 downto 0);
|
||||
data : out std_logic_vector(7 downto 0)
|
||||
);
|
||||
end entity;
|
||||
port (
|
||||
|
||||
sw : in std_logic_vector(9 downto 0);
|
||||
|
||||
clock : in std_logic;
|
||||
reset : in std_logic;
|
||||
cs : in std_logic;
|
||||
wr_n : in std_logic;
|
||||
addr : in std_logic_vector(4 downto 0);
|
||||
di : in std_logic_vector(7 downto 0);
|
||||
busy : out std_logic;
|
||||
sample : out std_logic_vector(11 downto 0)
|
||||
);
|
||||
end berzerk_speech;
|
||||
|
||||
architecture struct of berzerk_speech is
|
||||
|
||||
signal hdiv1 : std_logic_vector(3 downto 0);
|
||||
signal hdiv2 : std_logic_vector(3 downto 0);
|
||||
|
||||
signal ena_hdiv2 : std_logic;
|
||||
|
||||
signal ctrl_hdiv1 : std_logic_vector(2 downto 0);
|
||||
signal ctrl_volume : std_logic_vector(2 downto 0);
|
||||
signal ctrl_s14001_cmd : std_logic_vector(5 downto 0);
|
||||
signal busy_in : std_logic;
|
||||
|
||||
type vol_type is array(0 to 7) of integer range 0 to 255 ;
|
||||
constant vol : vol_type := (0, 32, 46, 64, 89, 126, 180, 255); -- resistor ladder
|
||||
|
||||
|
||||
signal rom_addr : std_logic_vector(11 downto 0);
|
||||
signal rom_do : std_logic_vector( 7 downto 0);
|
||||
|
||||
type state_t is (waiting_start, reading, next_syllable);
|
||||
signal state : state_t;
|
||||
|
||||
signal syllable_addr : std_logic_vector(11 downto 0);
|
||||
signal phoneme_addr : std_logic_vector(11 downto 0);
|
||||
signal phoneme_offset : std_logic_vector(11 downto 0);
|
||||
signal phoneme_param : std_logic_vector( 7 downto 0);
|
||||
|
||||
alias last_phoneme : std_logic is phoneme_param(7);
|
||||
alias mirror : std_logic is phoneme_param(6);
|
||||
alias silence : std_logic is phoneme_param(5);
|
||||
|
||||
signal phoneme_length : std_logic_vector(3 downto 0);
|
||||
signal phoneme_repeat : std_logic_vector(2 downto 0);
|
||||
signal length_counter : std_logic_vector(4 downto 0);
|
||||
signal repeat_counter : std_logic_vector(3 downto 0);
|
||||
signal output_counter : std_logic_vector(2 downto 0);
|
||||
|
||||
signal phoneme_start : std_logic;
|
||||
signal read_direction : std_logic;
|
||||
signal last_offset : std_logic;
|
||||
|
||||
signal output : signed(4 downto 0); -- actually unsigned between 0 and F, silence = 7
|
||||
signal output_sil : signed(4 downto 0); -- actually unsigned between 0 and F, silence = 7
|
||||
signal start_speech : std_logic;
|
||||
|
||||
signal old_delta : std_logic_vector (1 downto 0);
|
||||
signal cur_delta : std_logic_vector (1 downto 0);
|
||||
|
||||
type delta_table_row_t is array(0 to 3,0 to 3) of signed(2 downto 0);
|
||||
constant delta_table : delta_table_row_t := (
|
||||
("101", "101", "111", "111"),
|
||||
("111", "111", "000", "000"),
|
||||
("000", "000", "001", "001"),
|
||||
("001", "001", "011", "011"));
|
||||
|
||||
architecture prom of berzerk_speech is
|
||||
type rom is array(0 to 4095) of std_logic_vector(7 downto 0);
|
||||
signal rom_data: rom := (
|
||||
X"03",X"A0",X"04",X"40",X"04",X"E0",X"05",X"E0",X"06",X"E0",X"07",X"80",X"08",X"40",X"08",X"C0",
|
||||
X"09",X"20",X"09",X"A0",X"0A",X"E0",X"0B",X"40",X"0B",X"80",X"0B",X"E0",X"0C",X"60",X"0C",X"A0",
|
||||
X"0D",X"80",X"0E",X"60",X"0F",X"80",X"10",X"80",X"10",X"C0",X"11",X"E0",X"12",X"C0",X"13",X"60",
|
||||
X"13",X"C0",X"14",X"C0",X"15",X"60",X"15",X"E0",X"16",X"00",X"17",X"1D",X"17",X"1D",X"1D",X"49",
|
||||
X"1D",X"6E",X"20",X"9F",X"22",X"1F",X"22",X"1F",X"17",X"1E",X"24",X"41",X"28",X"D9",X"29",X"59",
|
||||
X"29",X"78",X"2D",X"1F",X"2D",X"1F",X"2D",X"7F",X"2A",X"49",X"2A",X"78",X"22",X"9F",X"2D",X"1F",
|
||||
X"2D",X"1F",X"2F",X"1C",X"37",X"41",X"37",X"7C",X"2D",X"1F",X"3B",X"5B",X"2F",X"9C",X"22",X"1F",
|
||||
X"3C",X"51",X"3E",X"51",X"3E",X"6E",X"2D",X"9F",X"2F",X"1D",X"2F",X"1E",X"2F",X"1D",X"40",X"50",
|
||||
X"40",X"6E",X"2D",X"9F",X"22",X"1F",X"42",X"49",X"42",X"78",X"2D",X"9F",X"45",X"41",X"49",X"1C",
|
||||
X"49",X"9C",X"51",X"59",X"52",X"41",X"52",X"78",X"2D",X"9F",X"2D",X"1F",X"56",X"52",X"56",X"79",
|
||||
X"2D",X"1F",X"58",X"51",X"58",X"78",X"2D",X"1F",X"5A",X"51",X"5A",X"78",X"2D",X"9F",X"5C",X"1E",
|
||||
X"5C",X"1E",X"60",X"C1",X"64",X"41",X"68",X"D9",X"69",X"50",X"69",X"6E",X"2D",X"9F",X"5C",X"1E",
|
||||
X"5C",X"1E",X"6B",X"5A",X"6C",X"C1",X"70",X"41",X"74",X"D1",X"17",X"1D",X"17",X"1D",X"76",X"41",
|
||||
X"7A",X"41",X"7E",X"59",X"7E",X"7C",X"2D",X"9F",X"22",X"1F",X"22",X"1F",X"22",X"7E",X"7F",X"41",
|
||||
X"83",X"58",X"49",X"1D",X"49",X"9D",X"20",X"1F",X"17",X"1E",X"84",X"51",X"84",X"78",X"22",X"1F",
|
||||
X"22",X"7F",X"86",X"58",X"86",X"78",X"2D",X"9F",X"87",X"49",X"87",X"7C",X"2D",X"1F",X"2D",X"1F",
|
||||
X"2D",X"7E",X"8F",X"5B",X"8A",X"5A",X"8B",X"C1",X"96",X"51",X"98",X"D0",X"9A",X"58",X"49",X"1D",
|
||||
X"49",X"1D",X"49",X"7C",X"22",X"1F",X"17",X"1E",X"9B",X"49",X"9B",X"79",X"20",X"9F",X"2D",X"1F",
|
||||
X"9E",X"52",X"49",X"1D",X"49",X"1D",X"49",X"79",X"A0",X"41",X"A4",X"D9",X"A5",X"41",X"49",X"1D",
|
||||
X"49",X"1D",X"49",X"78",X"2D",X"9F",X"A9",X"49",X"A9",X"78",X"2D",X"9F",X"2D",X"1F",X"2D",X"1F",
|
||||
X"2F",X"1C",X"AC",X"58",X"AC",X"79",X"22",X"1F",X"22",X"7F",X"AD",X"C9",X"B0",X"1D",X"B0",X"1D",
|
||||
X"B6",X"49",X"B6",X"78",X"2D",X"9F",X"B9",X"41",X"B9",X"78",X"22",X"1F",X"17",X"9F",X"BD",X"C1",
|
||||
X"8F",X"41",X"8F",X"7C",X"20",X"1F",X"93",X"49",X"93",X"78",X"2D",X"9F",X"FF",X"FF",X"FF",X"FF",
|
||||
X"75",X"A3",X"28",X"C9",X"D7",X"59",X"D9",X"67",X"5D",X"69",X"75",X"D8",X"C7",X"97",X"5A",X"29",
|
||||
X"89",X"A5",X"A5",X"A6",X"26",X"97",X"5A",X"89",X"67",X"65",X"9D",X"96",X"69",X"89",X"A5",X"A2",
|
||||
X"67",X"5D",X"76",X"28",X"9E",X"22",X"98",X"CA",X"63",X"27",X"28",X"9A",X"65",X"A5",X"9A",X"66",
|
||||
X"63",X"28",X"9D",X"99",X"66",X"96",X"76",X"5A",X"27",X"59",X"D9",X"66",X"78",X"89",X"D6",X"75",
|
||||
X"96",X"98",X"9A",X"5D",X"8A",X"71",X"78",X"D8",X"CA",X"59",X"D9",X"69",X"98",X"99",X"D6",X"76",
|
||||
X"27",X"5D",X"8A",X"65",X"99",X"9D",X"6A",X"19",X"D8",X"D5",X"E6",X"5A",X"5D",X"69",X"75",X"99",
|
||||
X"67",X"62",X"77",X"1A",X"94",X"7A",X"98",X"7F",X"C0",X"FC",X"6D",X"0F",X"80",X"AE",X"61",X"AF",
|
||||
X"A8",X"26",X"2F",X"85",X"46",X"F0",X"3D",X"7F",X"1A",X"A7",X"85",X"D6",X"B4",X"64",X"3F",X"6F",
|
||||
X"67",X"66",X"62",X"A5",X"A5",X"26",X"2B",X"9F",X"A6",X"62",X"66",X"65",X"98",X"69",X"7A",X"9E",
|
||||
X"99",X"72",X"63",X"69",X"99",X"99",X"99",X"97",X"72",X"5A",X"66",X"59",X"99",X"98",X"A6",X"65",
|
||||
X"E2",X"97",X"66",X"5D",X"99",X"69",X"99",X"99",X"8A",X"66",X"59",X"99",X"9D",X"75",X"99",X"98",
|
||||
X"8D",X"72",X"66",X"76",X"27",X"5D",X"97",X"5C",X"9D",X"75",X"99",X"E2",X"62",X"73",X"65",X"A2",
|
||||
X"8A",X"27",X"29",X"89",X"9A",X"5D",X"66",X"6A",X"25",X"9D",X"99",X"62",X"79",X"99",X"66",X"99",
|
||||
X"98",X"A6",X"26",X"5D",X"67",X"86",X"B5",X"3F",X"D4",X"F4",X"2F",X"03",X"E5",X"67",X"B1",X"2F",
|
||||
X"99",X"79",X"A5",X"1F",X"42",X"A7",X"B5",X"3F",X"2A",X"8A",X"5A",X"96",X"42",X"F4",X"3C",X"EF",
|
||||
X"78",X"2D",X"6F",X"43",X"82",X"E0",X"2F",X"3F",X"1E",X"2B",X"57",X"82",X"E0",X"E4",X"2F",X"6F",
|
||||
X"2A",X"67",X"59",X"89",X"E1",X"95",X"6E",X"6B",X"9A",X"65",X"99",X"99",X"98",X"59",X"AA",X"9E",
|
||||
X"99",X"97",X"62",X"98",X"98",X"69",X"AA",X"9E",X"99",X"98",X"99",X"99",X"96",X"29",X"AA",X"9E",
|
||||
X"98",X"9E",X"59",X"8A",X"81",X"F8",X"78",X"2F",X"99",X"99",X"96",X"57",X"95",X"A9",X"E8",X"6E",
|
||||
X"66",X"6A",X"65",X"6A",X"94",X"5E",X"A1",X"7F",X"D0",X"B8",X"AD",X"0F",X"D0",X"69",X"A8",X"7F",
|
||||
X"D0",X"B8",X"6E",X"0B",X"C0",X"A7",X"94",X"BF",X"D1",X"D5",X"F5",X"2F",X"52",X"82",X"F4",X"3F",
|
||||
X"E0",X"5A",X"B4",X"2F",X"81",X"E0",X"BC",X"2F",X"A5",X"1F",X"D4",X"2F",X"81",X"C5",X"F8",X"3F",
|
||||
X"8A",X"63",X"66",X"87",X"63",X"5A",X"59",X"CA",X"5A",X"5A",X"29",X"69",X"8A",X"29",X"5E",X"29",
|
||||
X"68",X"A5",X"A5",X"A6",X"66",X"66",X"66",X"66",X"62",X"66",X"63",X"67",X"26",X"69",X"96",X"89",
|
||||
X"96",X"99",X"73",X"5A",X"63",X"5C",X"CC",X"CA",X"62",X"96",X"73",X"32",X"8C",X"D6",X"98",X"A6",
|
||||
X"29",X"8A",X"32",X"8C",X"A5",X"A5",X"CA",X"5C",X"A3",X"35",X"A2",X"8C",X"D6",X"76",X"27",X"5C",
|
||||
X"89",X"D6",X"75",X"A5",X"CC",X"A3",X"27",X"32",X"98",X"A6",X"28",X"CA",X"5A",X"35",X"9C",X"CD",
|
||||
X"73",X"35",X"A6",X"29",X"8A",X"65",X"CD",X"73",X"26",X"96",X"98",X"9D",X"89",X"D8",X"A3",X"27",
|
||||
X"8A",X"35",X"A5",X"A5",X"9C",X"D7",X"35",X"CD",X"69",X"67",X"62",X"97",X"32",X"97",X"5C",X"CA",
|
||||
X"33",X"5D",X"72",X"8C",X"9D",X"73",X"5A",X"35",X"A5",X"CC",X"D7",X"33",X"35",X"D6",X"8D",X"69",
|
||||
X"96",X"69",X"73",X"5C",X"D8",X"A5",X"CC",X"CC",X"A3",X"5A",X"33",X"32",X"8C",X"D8",X"9C",X"CD",
|
||||
X"73",X"59",X"D7",X"32",X"8C",X"CC",X"A5",X"9C",X"CA",X"33",X"33",X"28",X"CA",X"5C",X"D7",X"35",
|
||||
X"86",X"A9",X"57",X"98",X"56",X"7A",X"87",X"BE",X"A0",X"6E",X"8B",X"90",X"6A",X"62",X"71",X"BF",
|
||||
X"A0",X"3F",X"5B",X"90",X"6A",X"95",X"99",X"AF",X"61",X"AA",X"69",X"E0",X"2F",X"43",X"96",X"BE",
|
||||
X"88",X"9E",X"2B",X"80",X"A9",X"6A",X"81",X"FF",X"1F",X"55",X"AB",X"90",X"6A",X"5A",X"85",X"BF",
|
||||
X"2A",X"D4",X"7A",X"26",X"55",X"7B",X"80",X"FF",X"96",X"A5",X"95",X"79",X"D5",X"3F",X"80",X"BF",
|
||||
X"76",X"62",X"36",X"29",X"99",X"A9",X"66",X"3A",X"99",X"66",X"59",X"9D",X"99",X"A6",X"66",X"76",
|
||||
X"99",X"A1",X"A8",X"6A",X"47",X"D1",X"F5",X"2F",X"66",X"6A",X"95",X"6A",X"52",X"72",X"F4",X"3F",
|
||||
X"5A",X"95",X"E6",X"7A",X"02",X"F0",X"68",X"BF",X"98",X"D4",X"BC",X"6D",X"0B",X"C0",X"79",X"FF",
|
||||
X"D4",X"95",X"FD",X"5D",X"0F",X"C0",X"A8",X"BF",X"C1",X"F0",X"BC",X"1F",X"47",X"D0",X"79",X"BF",
|
||||
X"A1",X"69",X"9E",X"1A",X"86",X"D4",X"3D",X"6F",X"A1",X"9C",X"7A",X"57",X"56",X"E0",X"79",X"6F",
|
||||
X"C5",X"A7",X"80",X"FD",X"0B",X"92",X"F4",X"3F",X"99",X"96",X"66",X"29",X"5A",X"A5",X"A8",X"6F",
|
||||
X"98",X"A5",X"98",X"5E",X"67",X"A1",X"A9",X"7A",X"95",X"E1",X"78",X"67",X"99",X"E1",X"A9",X"9E",
|
||||
X"6A",X"1A",X"87",X"56",X"D1",X"F4",X"AD",X"1F",X"76",X"1E",X"1A",X"63",X"5A",X"95",X"F5",X"2F",
|
||||
X"C2",X"F4",X"2E",X"07",X"96",X"86",X"F4",X"3F",X"5B",X"81",X"FC",X"0F",X"47",X"93",X"F4",X"3F",
|
||||
X"86",X"96",X"B8",X"0F",X"C0",X"B8",X"7C",X"2F",X"C0",X"FD",X"65",X"3F",X"03",X"A0",X"F8",X"3F",
|
||||
X"96",X"B0",X"2F",X"02",X"E6",X"1A",X"E8",X"2F",X"D4",X"F4",X"2F",X"03",X"D5",X"D9",X"F8",X"2F",
|
||||
X"97",X"94",X"BC",X"0B",X"D0",X"F4",X"BC",X"2B",X"C4",X"F8",X"3D",X"0F",X"C0",X"B8",X"A8",X"3F",
|
||||
X"C4",X"BD",X"1A",X"17",X"D0",X"FC",X"3C",X"2F",X"A4",X"AD",X"1B",X"47",X"C1",X"F8",X"78",X"2F",
|
||||
X"89",X"D9",X"57",X"96",X"A0",X"F8",X"6D",X"2F",X"66",X"66",X"57",X"96",X"95",X"F8",X"69",X"3F",
|
||||
X"97",X"5A",X"5D",X"75",X"D8",X"D7",X"5C",X"A3",X"35",X"CA",X"33",X"28",X"CA",X"35",X"CA",X"33",
|
||||
X"5A",X"28",X"9C",X"A5",X"D6",X"97",X"32",X"8D",X"72",X"8A",X"35",X"D6",X"96",X"8A",X"28",X"A5",
|
||||
X"72",X"97",X"5C",X"A3",X"32",X"8C",X"A5",X"A2",X"8C",X"A3",X"28",X"A2",X"8D",X"73",X"35",X"CA",
|
||||
X"5A",X"29",X"75",X"A2",X"97",X"28",X"CD",X"73",X"28",X"A3",X"33",X"5D",X"75",X"A5",X"D7",X"5C",
|
||||
X"69",X"68",X"CC",X"A3",X"35",X"D6",X"96",X"8A",X"35",X"CA",X"27",X"28",X"D6",X"97",X"5C",X"CA",
|
||||
X"29",X"75",X"D7",X"33",X"5C",X"CA",X"28",X"CA",X"33",X"28",X"D7",X"5C",X"A5",X"D7",X"5D",X"73",
|
||||
X"8D",X"75",X"CA",X"32",X"8A",X"5D",X"75",X"D6",X"97",X"5A",X"29",X"73",X"28",X"A2",X"8A",X"5A",
|
||||
X"28",X"D7",X"33",X"5A",X"5D",X"75",X"D6",X"8A",X"5D",X"68",X"A2",X"8A",X"5D",X"73",X"35",X"D7",
|
||||
X"65",X"5F",X"9E",X"81",X"95",X"F4",X"6A",X"7E",X"95",X"AA",X"9A",X"50",X"F5",X"74",X"3F",X"7F",
|
||||
X"9A",X"9E",X"54",X"56",X"A9",X"A5",X"2B",X"7B",X"66",X"99",X"86",X"62",X"A8",X"A5",X"6A",X"AA",
|
||||
X"99",X"5E",X"57",X"56",X"A8",X"A9",X"2B",X"1F",X"75",X"F4",X"3F",X"0D",X"43",X"F4",X"79",X"7F",
|
||||
X"3A",X"1F",X"12",X"F0",X"0B",X"D7",X"90",X"FF",X"67",X"E0",X"3E",X"55",X"61",X"7F",X"80",X"BF",
|
||||
X"5F",X"85",X"66",X"89",X"91",X"EF",X"50",X"BF",X"99",X"99",X"98",X"67",X"95",X"6B",X"94",X"7F",
|
||||
X"A1",X"79",X"5A",X"5A",X"86",X"D4",X"F9",X"2B",X"69",X"5E",X"57",X"66",X"86",X"D4",X"BC",X"2B",
|
||||
X"69",X"5A",X"96",X"67",X"56",X"D4",X"BC",X"2B",X"69",X"5A",X"95",X"DA",X"56",X"D4",X"BC",X"2B",
|
||||
X"69",X"99",X"76",X"56",X"98",X"9A",X"A1",X"AF",X"D0",X"F8",X"7D",X"0B",X"C0",X"7A",X"E0",X"7F",
|
||||
X"C1",X"B5",X"B5",X"2F",X"40",X"B8",X"7D",X"2F",X"2B",X"12",X"F0",X"3F",X"05",X"DA",X"C4",X"BE",
|
||||
X"A5",X"96",X"66",X"1E",X"85",X"E9",X"A8",X"2F",X"E4",X"78",X"6C",X"0B",X"D0",X"BC",X"79",X"2F",
|
||||
X"D4",X"B8",X"3D",X"0B",X"C0",X"F8",X"A8",X"3F",X"B4",X"7D",X"0F",X"0A",X"C0",X"FC",X"79",X"2F",
|
||||
X"8C",X"CD",X"75",X"A3",X"5C",X"D7",X"28",X"CD",X"73",X"5C",X"CA",X"33",X"28",X"D7",X"28",X"CC",
|
||||
X"A3",X"32",X"8C",X"A3",X"33",X"28",X"CC",X"CD",X"73",X"35",X"CC",X"A3",X"33",X"28",X"C9",X"A3",
|
||||
X"8C",X"CD",X"73",X"5C",X"A3",X"35",X"CC",X"CA",X"27",X"5C",X"D7",X"32",X"75",X"A3",X"28",X"CC",
|
||||
X"CD",X"73",X"32",X"8A",X"26",X"8C",X"A3",X"5C",X"A3",X"5C",X"A5",X"CD",X"8D",X"73",X"28",X"D7",
|
||||
X"99",X"A2",X"76",X"16",X"57",X"A5",X"A9",X"AF",X"88",X"99",X"FD",X"46",X"07",X"E0",X"7E",X"6F",
|
||||
X"66",X"17",X"FC",X"18",X"47",X"E4",X"7D",X"7F",X"91",X"A7",X"BD",X"18",X"4E",X"D0",X"BC",X"6F",
|
||||
X"89",X"86",X"F9",X"1E",X"07",X"D0",X"A9",X"FF",X"85",X"D7",X"BC",X"28",X"0F",X"C0",X"B9",X"7F",
|
||||
X"86",X"57",X"F9",X"28",X"0F",X"D0",X"AC",X"7F",X"66",X"5A",X"AA",X"55",X"5A",X"94",X"5E",X"FE",
|
||||
X"A1",X"6D",X"4A",X"D0",X"F8",X"78",X"AD",X"1F",X"75",X"7D",X"0B",X"C0",X"F8",X"79",X"7D",X"1F",
|
||||
X"66",X"A4",X"7E",X"03",X"F0",X"3D",X"B8",X"2F",X"38",X"5B",X"A8",X"0B",X"D0",X"7E",X"78",X"3F",
|
||||
X"35",X"7E",X"07",X"97",X"C0",X"BA",X"A0",X"BF",X"38",X"69",X"69",X"8A",X"57",X"E0",X"BC",X"2B",
|
||||
X"75",X"69",X"69",X"8A",X"57",X"E0",X"BC",X"2B",X"75",X"69",X"69",X"8A",X"57",X"E0",X"BC",X"2B",
|
||||
X"66",X"29",X"69",X"8A",X"57",X"E0",X"BC",X"2B",X"65",X"AA",X"12",X"B9",X"81",X"F8",X"78",X"7F",
|
||||
X"6A",X"61",X"9D",X"85",X"E8",X"89",X"F5",X"2F",X"79",X"66",X"3A",X"07",X"D1",X"E2",X"B4",X"3F",
|
||||
X"A0",X"F8",X"3D",X"0F",X"C0",X"B8",X"A8",X"2F",X"A4",X"AD",X"1F",X"0A",X"C0",X"F8",X"A8",X"2F",
|
||||
X"76",X"29",X"5A",X"99",X"56",X"B5",X"68",X"7F",X"A1",X"AA",X"19",X"5A",X"94",X"AA",X"78",X"6F",
|
||||
X"B0",X"6A",X"79",X"0B",X"C0",X"BC",X"3D",X"2F",X"2B",X"51",X"FC",X"0B",X"C0",X"F4",X"B8",X"2F",
|
||||
X"2E",X"0E",X"D0",X"F4",X"7D",X"0F",X"E0",X"3F",X"C4",X"AF",X"02",X"F0",X"78",X"1F",X"D4",X"7F",
|
||||
X"56",X"F5",X"27",X"95",X"A4",X"2F",X"C0",X"BF",X"1F",X"95",X"67",X"67",X"80",X"7F",X"90",X"BF",
|
||||
X"3D",X"55",X"E7",X"66",X"50",X"BF",X"41",X"BF",X"77",X"26",X"66",X"66",X"21",X"EA",X"51",X"FE",
|
||||
X"66",X"66",X"66",X"59",X"99",X"9D",X"DE",X"76",X"65",X"D9",X"99",X"89",X"99",X"A6",X"A7",X"76",
|
||||
X"96",X"66",X"69",X"66",X"59",X"99",X"E9",X"DE",X"5E",X"66",X"75",X"5D",X"89",X"E1",X"7A",X"6F",
|
||||
X"2A",X"67",X"83",X"B8",X"03",X"F0",X"B8",X"3F",X"A8",X"1B",X"D4",X"3F",X"03",X"D2",X"F4",X"3F",
|
||||
X"3D",X"0F",X"C1",X"E1",X"E9",X"0B",X"F0",X"3F",X"A5",X"2F",X"47",X"55",X"F8",X"0F",X"E0",X"3F",
|
||||
X"92",X"B8",X"5A",X"95",X"A4",X"2F",X"D0",X"BF",X"67",X"95",X"9E",X"62",X"55",X"7B",X"80",X"FF",
|
||||
X"69",X"99",X"99",X"99",X"85",X"AD",X"55",X"EF",X"76",X"66",X"66",X"66",X"55",X"EA",X"15",X"BE",
|
||||
X"96",X"75",X"99",X"79",X"5A",X"C1",X"F8",X"2F",X"2E",X"03",X"F4",X"2E",X"1B",X"53",X"F0",X"3F",
|
||||
X"5B",X"81",X"A9",X"6D",X"0B",X"D2",X"B5",X"3F",X"8A",X"56",X"A5",X"5E",X"27",X"A1",X"7A",X"3B",
|
||||
X"66",X"61",X"E8",X"6A",X"57",X"D1",X"B8",X"2F",X"71",X"A6",X"29",X"8E",X"57",X"D4",X"B8",X"2F",
|
||||
X"B0",X"39",X"AE",X"06",X"1E",X"D5",X"76",X"7F",X"66",X"AC",X"0B",X"9A",X"02",X"F0",X"B8",X"3F",
|
||||
X"66",X"62",X"67",X"67",X"56",X"E1",X"A8",X"2F",X"65",X"99",X"9A",X"66",X"67",X"A1",X"78",X"6F",
|
||||
X"A5",X"1E",X"8B",X"D0",X"92",X"F8",X"35",X"BF",X"74",X"7E",X"2A",X"06",X"AA",X"60",X"2F",X"7F",
|
||||
X"1E",X"5F",X"0F",X"43",X"E1",X"E0",X"2F",X"7F",X"A0",X"7C",X"7F",X"03",X"82",X"F0",X"3E",X"3F",
|
||||
X"83",X"F0",X"F4",X"2F",X"02",X"B8",X"68",X"6F",X"8A",X"C0",X"FC",X"0B",X"57",X"C2",X"F4",X"3F",
|
||||
X"86",X"B4",X"2F",X"43",X"E0",X"B8",X"7C",X"2B",X"56",X"A5",X"7A",X"27",X"5A",X"A1",X"7A",X"1E",
|
||||
X"66",X"A9",X"55",X"99",X"A9",X"55",X"AA",X"EE",X"2A",X"9D",X"56",X"95",X"A9",X"46",X"B6",X"BE",
|
||||
X"27",X"7A",X"55",X"96",X"7D",X"41",X"F7",X"BE",X"61",X"7F",X"1A",X"81",X"AD",X"45",X"A6",X"BF",
|
||||
X"66",X"39",X"6B",X"A0",X"1D",X"5B",X"C0",X"FF",X"A5",X"6A",X"86",X"65",X"9D",X"1B",X"D0",X"BF",
|
||||
X"66",X"A1",X"79",X"59",X"9D",X"4F",X"E0",X"7F",X"66",X"95",X"9D",X"86",X"A6",X"5A",X"B4",X"6F",
|
||||
X"66",X"62",X"68",X"6A",X"5A",X"A1",X"B8",X"2F",X"62",X"6A",X"55",X"DD",X"8A",X"67",X"A5",X"3F",
|
||||
X"96",X"66",X"76",X"59",X"D9",X"95",X"67",X"AE",X"C1",X"E1",X"BD",X"49",X"D7",X"94",X"3E",X"7F",
|
||||
X"D4",X"78",X"7F",X"07",X"92",X"B0",X"2E",X"6F",X"D4",X"75",X"AF",X"07",X"85",X"F0",X"2E",X"6F",
|
||||
X"6A",X"62",X"75",X"66",X"66",X"62",X"B4",X"3F",X"D0",X"FC",X"65",X"2F",X"02",X"E0",X"F8",X"3F",
|
||||
X"96",X"76",X"27",X"56",X"A5",X"A1",X"B8",X"2F",X"86",X"E4",X"3F",X"03",X"E0",X"B5",X"7D",X"2B",
|
||||
X"79",X"61",X"AD",X"0B",X"D0",X"BC",X"3C",X"2F",X"66",X"5A",X"62",X"69",X"99",X"A9",X"98",X"6F",
|
||||
X"66",X"59",X"99",X"9A",X"5A",X"A5",X"A9",X"6A",X"65",X"99",X"99",X"9A",X"66",X"99",X"A9",X"6A",
|
||||
X"96",X"69",X"65",X"9D",X"98",X"9E",X"95",X"EE",X"86",X"B8",X"0B",X"86",X"A5",X"3B",X"C0",X"BF",
|
||||
X"7C",X"1B",X"43",X"F4",X"1F",X"C2",X"E0",X"AF",X"7A",X"07",X"99",X"95",X"6B",X"95",X"A5",X"AF",
|
||||
X"79",X"66",X"15",X"F8",X"0F",X"C7",X"D0",X"BF",X"96",X"66",X"75",X"6A",X"85",X"AA",X"94",X"7F",
|
||||
X"D4",X"AE",X"42",X"A5",X"B4",X"2F",X"C4",X"3F",X"86",X"E8",X"47",X"95",X"F4",X"2F",X"C0",X"BF",
|
||||
X"8A",X"E0",X"69",X"66",X"94",X"7F",X"80",X"BF",X"6A",X"95",X"5A",X"62",X"95",X"6F",X"90",X"BF",
|
||||
X"66",X"62",X"66",X"66",X"76",X"76",X"69",X"DD",X"66",X"59",X"99",X"99",X"DD",X"96",X"79",X"DD",
|
||||
X"89",X"9D",X"85",X"9D",X"D9",X"99",X"9D",X"EA",X"99",X"99",X"D9",X"55",X"A9",X"9A",X"22",X"AE",
|
||||
X"82",X"F5",X"F4",X"1E",X"0B",X"91",X"B9",X"6F",X"72",X"B8",X"2C",X"0F",X"57",X"84",X"7F",X"2F",
|
||||
X"A6",X"65",X"69",X"5A",X"86",X"71",X"7E",X"3B",X"98",X"99",X"67",X"27",X"65",X"A6",X"2E",X"6A",
|
||||
X"99",X"A6",X"1A",X"17",X"98",X"A5",X"6E",X"6B",X"95",X"6B",X"9E",X"03",X"D1",X"F0",X"3E",X"7F",
|
||||
X"A4",X"3E",X"2F",X"02",X"87",X"B4",X"2E",X"2F",X"A4",X"3D",X"6F",X"46",X"52",X"F4",X"3A",X"3F",
|
||||
X"D4",X"E0",X"BE",X"1E",X"02",X"F0",X"69",X"AF",X"66",X"98",X"7A",X"66",X"47",X"A5",X"65",X"BF",
|
||||
X"65",X"9D",X"66",X"5A",X"96",X"A5",X"B8",X"6B",X"65",X"A6",X"27",X"1A",X"86",X"E1",X"B8",X"2F",
|
||||
X"A4",X"7D",X"47",X"8E",X"82",X"F5",X"78",X"3F",X"95",X"A5",X"7F",X"0A",X"02",X"FC",X"0E",X"AF",
|
||||
X"95",X"86",X"F9",X"55",X"56",X"F0",X"3E",X"6F",X"17",X"A3",X"F4",X"19",X"6A",X"A0",X"7D",X"7F",
|
||||
X"6A",X"99",X"C5",X"89",X"96",X"90",X"FD",X"AF",X"A6",X"58",X"99",X"9C",X"85",X"99",X"EE",X"7E",
|
||||
X"99",X"99",X"99",X"66",X"85",X"A8",X"E8",X"6F",X"A2",X"67",X"62",X"1E",X"81",X"F5",X"78",X"6F",
|
||||
X"76",X"59",X"99",X"9A",X"1A",X"C1",X"F8",X"2F",X"C2",X"B4",X"79",X"69",X"4F",X"82",X"F4",X"2F",
|
||||
X"A1",X"E8",X"2E",X"0B",X"47",X"C2",X"F4",X"2F",X"C4",X"BC",X"0F",X"83",X"D1",X"F0",X"BC",X"1F",
|
||||
X"B4",X"3E",X"0A",X"D0",X"F5",X"78",X"7D",X"1F",X"A4",X"AD",X"2A",X"1E",X"4A",X"D0",X"F5",X"2F",
|
||||
X"96",X"75",X"6A",X"1A",X"95",X"E2",X"A8",X"2F",X"A4",X"AD",X"0F",X"82",X"D6",X"A0",X"F8",X"2F",
|
||||
X"78",X"2E",X"0E",X"8A",X"57",X"D0",X"FC",X"2B",X"75",X"6A",X"57",X"67",X"56",X"D4",X"F8",X"3B",
|
||||
X"6A",X"55",X"E8",X"6A",X"55",X"6B",X"84",X"AF",X"99",X"96",X"76",X"18",X"9D",X"9E",X"85",X"FE",
|
||||
X"9A",X"9D",X"56",X"11",X"FA",X"19",X"A9",X"7F",X"1F",X"87",X"D0",X"A8",X"6A",X"80",X"AE",X"AF",
|
||||
X"57",X"E5",X"B0",X"2D",X"67",X"90",X"7E",X"AF",X"69",X"95",X"FC",X"0E",X"0B",X"C0",X"E6",X"BF",
|
||||
X"1B",X"D1",X"E4",X"BC",X"03",X"F4",X"7C",X"3F",X"C6",X"92",X"F0",X"2F",X"02",X"E1",X"F0",X"7F",
|
||||
X"99",X"A1",X"79",X"59",X"9D",X"87",X"B5",X"3F",X"98",X"9D",X"5A",X"62",X"69",X"99",X"B8",X"2F",
|
||||
X"57",X"A5",X"66",X"2A",X"96",X"99",X"A7",X"66",X"59",X"D9",X"66",X"66",X"A6",X"66",X"77",X"66",
|
||||
X"26",X"A5",X"69",X"5A",X"A6",X"66",X"6A",X"66",X"27",X"6A",X"62",X"19",X"E6",X"61",X"6A",X"AB",
|
||||
X"79",X"0B",X"DA",X"90",X"E9",X"A4",X"2A",X"BF",X"75",X"5E",X"5B",X"D0",X"E1",X"F0",X"2A",X"BF",
|
||||
X"79",X"1E",X"1F",X"C1",X"C2",X"F0",X"2E",X"7F",X"27",X"99",X"8A",X"A1",X"86",X"A5",X"66",X"7F",
|
||||
X"66",X"62",X"66",X"69",X"87",X"D5",X"B8",X"2F",X"27",X"98",X"5E",X"D9",X"07",X"E1",X"E1",X"BF",
|
||||
X"5E",X"84",X"7F",X"8A",X"41",X"F5",X"68",X"AF",X"E4",X"61",X"7E",X"9D",X"07",X"E0",X"7A",X"3F",
|
||||
X"E1",X"18",X"BE",X"1A",X"06",X"E0",X"A8",X"AF",X"9A",X"80",X"BE",X"79",X"07",X"A1",X"69",X"AF",
|
||||
X"9A",X"59",X"98",X"96",X"76",X"56",X"F4",X"3F",X"79",X"4B",X"D0",X"F4",X"AD",X"0B",X"E0",X"3F",
|
||||
X"3E",X"12",X"B4",X"2E",X"0B",X"83",X"F4",X"3F",X"8A",X"82",X"F0",X"3F",X"03",X"B4",X"AC",X"2F",
|
||||
X"D0",X"BC",X"2D",X"4B",X"C0",X"B8",X"A8",X"3F",X"29",X"8D",X"67",X"99",X"8A",X"A0",X"B8",X"2F",
|
||||
X"2A",X"25",X"9A",X"98",X"67",X"A1",X"E9",X"2F",X"66",X"62",X"66",X"67",X"66",X"79",X"99",X"9E",
|
||||
X"98",X"A6",X"26",X"97",X"35",X"CD",X"89",X"D8",X"A2",X"8D",X"73",X"28",X"D7",X"35",X"A6",X"28",
|
||||
X"9C",X"D7",X"29",X"73",X"29",X"73",X"28",X"CD",X"8C",X"9D",X"68",X"A3",X"32",X"98",X"A3",X"5C",
|
||||
X"73",X"59",X"9D",X"8A",X"86",X"69",X"66",X"98",X"9D",X"8A",X"35",X"D7",X"63",X"28",X"CA",X"65",
|
||||
X"A3",X"62",X"75",X"A3",X"29",X"68",X"A5",X"D7",X"35",X"CA",X"32",X"8A",X"29",X"8A",X"65",X"CA",
|
||||
X"69",X"8C",X"9A",X"5C",X"A3",X"63",X"5A",X"5D",X"73",X"5C",X"D7",X"32",X"8A",X"35",X"9A",X"29",
|
||||
X"8A",X"35",X"C9",X"A3",X"32",X"8A",X"36",X"28",X"D7",X"32",X"8C",X"A3",X"5C",X"D7",X"35",X"D7",
|
||||
X"66",X"77",X"59",X"66",X"72",X"61",X"7A",X"AE",X"C1",X"A9",X"EA",X"43",X"E0",X"B0",X"3E",X"3F",
|
||||
X"C5",X"D4",X"BE",X"1C",X"46",X"F4",X"2E",X"2F",X"D0",X"F9",X"A4",X"3F",X"02",X"E4",X"B8",X"3F",
|
||||
X"C4",X"F8",X"2B",X"42",X"F0",X"A5",X"F5",X"2F",X"99",X"67",X"17",X"98",X"9D",X"D5",X"F5",X"2F",
|
||||
X"66",X"66",X"56",X"99",X"D9",X"A5",X"A7",X"7A",X"5D",X"97",X"56",X"99",X"E5",X"A6",X"69",X"DD",
|
||||
X"67",X"99",X"85",X"96",X"A6",X"68",X"7A",X"3B",X"89",X"8A",X"A2",X"85",X"E5",X"A4",X"7A",X"7F",
|
||||
X"98",X"5E",X"8E",X"C0",X"F4",X"B4",X"2E",X"7F",X"C0",X"FC",X"68",X"2F",X"03",X"E0",X"B8",X"3F",
|
||||
X"75",X"A9",X"3D",X"0F",X"57",X"83",X"F4",X"3F",X"A1",X"A5",X"B4",X"7D",X"1F",X"42",X"F4",X"2F",
|
||||
X"A8",X"2E",X"1A",X"0E",X"D0",X"7F",X"43",X"F0",X"9E",X"4A",X"E0",X"1F",X"81",X"F4",X"EC",X"2F",
|
||||
X"3F",X"06",X"A8",X"0B",X"82",X"A5",X"F8",X"2F",X"9D",X"D8",X"2E",X"07",X"93",X"C3",X"F4",X"3F",
|
||||
X"2E",X"47",X"D0",X"B8",X"2D",X"6D",X"1F",X"C2",X"2E",X"0A",X"D0",X"EC",X"2A",X"2B",X"0B",X"C3",
|
||||
X"99",X"D1",X"F4",X"6D",X"2D",X"3E",X"0B",X"D0",X"3D",X"0F",X"82",X"B0",X"B4",X"F0",X"F8",X"3D",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF");
|
||||
begin
|
||||
process(clk)
|
||||
|
||||
-- busy output
|
||||
busy <= busy_in;
|
||||
|
||||
-- conversion from 0-F ouput and volume scale to 0-F*256, silence at 7*256.
|
||||
sample <= std_logic_vector(to_unsigned(
|
||||
((to_integer(output_sil) -7) * vol(to_integer(unsigned(ctrl_volume)))) + 7*256, 12));
|
||||
|
||||
-- clock divider
|
||||
counter : process(clock, reset)
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
data <= rom_data(to_integer(unsigned(addr)));
|
||||
if reset = '1' then
|
||||
hdiv1 <= (others => '0');
|
||||
hdiv2 <= (others => '0');
|
||||
else
|
||||
|
||||
if rising_edge(clock) then
|
||||
|
||||
-- divide between 9 and 16 upon ctrl
|
||||
if hdiv1 = "1111" then
|
||||
hdiv1 <= "0"&ctrl_hdiv1;
|
||||
ena_hdiv2 <= '1';
|
||||
else
|
||||
hdiv1 <= hdiv1 + '1';
|
||||
ena_hdiv2 <= '0';
|
||||
end if;
|
||||
|
||||
-- divide by 16 is ok because : IC A5 divide by 8 and s14001a divide by 2 internally
|
||||
if ena_hdiv2 = '1' then
|
||||
if hdiv2 = "1111" then
|
||||
hdiv2 <= (others => '0');
|
||||
else
|
||||
hdiv2 <= hdiv2 + '1';
|
||||
end if;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
end if;
|
||||
end process;
|
||||
|
||||
--control/registers interface with cpu addr/data
|
||||
ctrl_regs : process(clock, reset)
|
||||
begin
|
||||
|
||||
if reset = '1' then
|
||||
|
||||
ctrl_s14001_cmd <= (others => '0');
|
||||
ctrl_hdiv1 <= (others => '0');
|
||||
ctrl_volume <= (others => '0');
|
||||
start_speech <= '0';
|
||||
|
||||
else
|
||||
if rising_edge(clock) then
|
||||
if busy_in = '1' then
|
||||
start_speech <= '0';
|
||||
end if;
|
||||
|
||||
if (cs = '1') and (wr_n = '0') and (addr = "00100") then -- 0x44
|
||||
|
||||
if (di(7 downto 6) = "00") and (busy_in = '0') and (start_speech = '0') then
|
||||
ctrl_s14001_cmd <= di(5 downto 0);
|
||||
start_speech <= '1';
|
||||
end if;
|
||||
|
||||
if di(7 downto 6) = "01" then
|
||||
ctrl_hdiv1 <= di(2 downto 0);
|
||||
ctrl_volume <= di(5 downto 3);
|
||||
end if;
|
||||
|
||||
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
|
||||
-- s14001a
|
||||
phoneme_length <= phoneme_param(4 downto 2)&'0';
|
||||
phoneme_repeat <= phoneme_param(1 downto 0)&'0';
|
||||
|
||||
s14001a: process(clock, reset)
|
||||
begin
|
||||
if reset = '1' then
|
||||
state <= waiting_start;
|
||||
else
|
||||
if rising_edge(clock) then
|
||||
if ena_hdiv2 = '1' then
|
||||
-- using hdiv2 as a sub-state counter
|
||||
-- computation are done during sub-state 0-14
|
||||
-- new sample is ready on sub-state 15
|
||||
-- next state is set on sub-state transition from 15 to 0
|
||||
|
||||
case state is
|
||||
|
||||
when waiting_start =>
|
||||
|
||||
output <= "00111";
|
||||
|
||||
case hdiv2 is
|
||||
|
||||
-- wait for start, set busy when done
|
||||
when X"0" =>
|
||||
busy_in <= '0';
|
||||
if start_speech = '1' then
|
||||
busy_in <= '1';
|
||||
end if;
|
||||
|
||||
-- compute syllable addr from word cmd
|
||||
when X"1" =>
|
||||
rom_addr <= "00000"&ctrl_s14001_cmd&'0';
|
||||
|
||||
when X"2" =>
|
||||
syllable_addr(11 downto 4) <= rom_do;
|
||||
rom_addr <= "00000"&ctrl_s14001_cmd&'1';
|
||||
|
||||
when X"3" =>
|
||||
syllable_addr(3 downto 0) <= rom_do(7 downto 4);
|
||||
|
||||
-- init playing speech
|
||||
when X"F" =>
|
||||
if busy_in = '1' then
|
||||
state <= reading;
|
||||
phoneme_start <= '1';
|
||||
phoneme_offset <= (others =>'0');
|
||||
end if;
|
||||
|
||||
when others => null;
|
||||
end case;
|
||||
|
||||
when reading =>
|
||||
case hdiv2 is
|
||||
|
||||
-- get phoneme addr and parameter
|
||||
when X"0" =>
|
||||
rom_addr <= syllable_addr;
|
||||
|
||||
when X"1" =>
|
||||
phoneme_addr <= rom_do&"0000";
|
||||
rom_addr <= syllable_addr + '1';
|
||||
|
||||
when X"2" =>
|
||||
phoneme_param <= rom_do;
|
||||
rom_addr <= phoneme_addr + phoneme_offset(11 downto 2);
|
||||
|
||||
when X"3" =>
|
||||
-- start with a new phoneme
|
||||
if phoneme_start = '1' then
|
||||
length_counter <= '0'&phoneme_length;
|
||||
repeat_counter <= '0'&phoneme_repeat;
|
||||
read_direction <= '1';
|
||||
old_delta <= "10";
|
||||
output_counter <= (others =>'0');
|
||||
phoneme_start <= '0';
|
||||
phoneme_offset <= (others =>'0');
|
||||
output <= "00111";
|
||||
end if;
|
||||
|
||||
-- get LPC data
|
||||
case phoneme_offset(1 downto 0) is
|
||||
when "00" => cur_delta <= rom_do(7 downto 6);
|
||||
when "01" => cur_delta <= rom_do(5 downto 4);
|
||||
when "10" => cur_delta <= rom_do(3 downto 2);
|
||||
when others => cur_delta <= rom_do(1 downto 0);
|
||||
end case;
|
||||
|
||||
-- compute new ouput from previous value and new LPC data
|
||||
when X"4" =>
|
||||
if read_direction = '1' then
|
||||
if ((mirror = '1') and (output_counter(1) = '1')) or (silence = '1') then
|
||||
output <= "00111" + delta_table(to_integer(unsigned(cur_delta)), 2);
|
||||
else
|
||||
output <= output + delta_table(to_integer(unsigned(cur_delta)),to_integer(unsigned(old_delta)));
|
||||
end if;
|
||||
else
|
||||
if phoneme_offset(4 downto 0) = "11111" then
|
||||
if (output_counter(1) = '1') or (silence = '1') then
|
||||
output <= "00111";
|
||||
else
|
||||
-- keep last value
|
||||
end if;
|
||||
else
|
||||
if (output_counter(1) = '1') or (silence = '1') then
|
||||
output <= "00111" - delta_table(2, to_integer(unsigned(cur_delta)));
|
||||
else
|
||||
output <= output - delta_table(to_integer(unsigned(old_delta)),to_integer(unsigned(cur_delta)));
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
old_delta <= cur_delta;
|
||||
|
||||
-- increase or decrease phoneme_offset (one offset = one sample)
|
||||
-- last offset when 32 samples have been read either forward or backward
|
||||
last_offset <= '0';
|
||||
if read_direction = '1' then
|
||||
if phoneme_offset(4 downto 0) = "11111" then
|
||||
last_offset <= '1';
|
||||
if mirror = '0' then
|
||||
phoneme_offset <= phoneme_offset + '1';
|
||||
end if;
|
||||
else
|
||||
phoneme_offset <= phoneme_offset + '1';
|
||||
end if;
|
||||
else
|
||||
if phoneme_offset(4 downto 0) = "00000" then
|
||||
last_offset <= '1';
|
||||
else
|
||||
phoneme_offset <= phoneme_offset - '1';
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- increase repeat counter every 32 samples
|
||||
when X"5" =>
|
||||
if last_offset = '1' then
|
||||
repeat_counter <= repeat_counter + '1';
|
||||
output_counter <= output_counter + '1';
|
||||
last_offset <= '0';
|
||||
end if;
|
||||
|
||||
-- limit ouput to 0 - F
|
||||
if output > "01111" then output <= "01111"; end if;
|
||||
if output < "00000" then output <= "00000"; end if;
|
||||
|
||||
-- manage read_direction and phoneme advance (+8bytes = next 32 samples)
|
||||
-- upon mirror condition
|
||||
when X"6" =>
|
||||
if mirror = '1' then
|
||||
if repeat_counter = 8 then
|
||||
repeat_counter <= '0'&phoneme_repeat;
|
||||
if length_counter(0) = '1' then
|
||||
phoneme_offset <= phoneme_offset + "100000";
|
||||
end if;
|
||||
if length_counter = 15 then
|
||||
-- will be 16 after on next state
|
||||
else
|
||||
if output_counter(0) = '1' then
|
||||
read_direction <= '0';
|
||||
else
|
||||
read_direction <= '1';
|
||||
end if;
|
||||
end if;
|
||||
length_counter <= length_counter + 1;
|
||||
else
|
||||
if output_counter(0) = '1' then
|
||||
read_direction <= '0';
|
||||
else
|
||||
read_direction <= '1';
|
||||
end if;
|
||||
end if;
|
||||
else -- not in mirror mode
|
||||
if repeat_counter = 8 then
|
||||
repeat_counter <= '0'&phoneme_repeat;
|
||||
if length_counter = 15 then
|
||||
-- will be 16 after this state
|
||||
end if;
|
||||
length_counter <= length_counter + 1;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- goto next syllable when length counter reach 16
|
||||
when X"F" =>
|
||||
if length_counter = 16 then
|
||||
state <= next_syllable;
|
||||
end if;
|
||||
|
||||
when others => null;
|
||||
|
||||
end case;
|
||||
|
||||
when next_syllable =>
|
||||
|
||||
case hdiv2 is
|
||||
|
||||
-- prepare for next syllable
|
||||
when X"0" =>
|
||||
syllable_addr <= syllable_addr + 2;
|
||||
phoneme_offset <= (others =>'0');
|
||||
phoneme_start <= '1';
|
||||
|
||||
-- one silent sample during syllable change
|
||||
when X"4" =>
|
||||
output <= "00111";
|
||||
|
||||
-- terminate if last phoneme reached
|
||||
when X"F" =>
|
||||
if last_phoneme = '1' then
|
||||
state <= waiting_start;
|
||||
else
|
||||
state <= reading;
|
||||
end if;
|
||||
|
||||
when others => null;
|
||||
end case;
|
||||
|
||||
when others => null;
|
||||
|
||||
end case; -- case state
|
||||
|
||||
-- set silent final output during 2 last quarter when in mirror mode
|
||||
if hdiv2 = X"6" then
|
||||
if ((mirror = '1') and (output_counter(1) = '1')) or (silence = '1') then
|
||||
output_sil <= "00111";
|
||||
else
|
||||
output_sil <= output;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
end architecture;
|
||||
|
||||
-- program roms
|
||||
speech_rom : entity work.berzerk_speech_rom
|
||||
port map (
|
||||
addr => rom_addr(11 downto 0),
|
||||
clk => clock,
|
||||
data => rom_do
|
||||
);
|
||||
|
||||
|
||||
end architecture;
|
||||
@ -0,0 +1,278 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all,ieee.numeric_std.all;
|
||||
|
||||
entity berzerk_speech_rom is
|
||||
port (
|
||||
clk : in std_logic;
|
||||
addr : in std_logic_vector(11 downto 0);
|
||||
data : out std_logic_vector(7 downto 0)
|
||||
);
|
||||
end entity;
|
||||
|
||||
architecture prom of berzerk_speech_rom is
|
||||
type rom is array(0 to 4095) of std_logic_vector(7 downto 0);
|
||||
signal rom_data: rom := (
|
||||
X"03",X"A0",X"04",X"40",X"04",X"E0",X"05",X"E0",X"06",X"E0",X"07",X"80",X"08",X"40",X"08",X"C0",
|
||||
X"09",X"20",X"09",X"A0",X"0A",X"E0",X"0B",X"40",X"0B",X"80",X"0B",X"E0",X"0C",X"60",X"0C",X"A0",
|
||||
X"0D",X"80",X"0E",X"60",X"0F",X"80",X"10",X"80",X"10",X"C0",X"11",X"E0",X"12",X"C0",X"13",X"60",
|
||||
X"13",X"C0",X"14",X"C0",X"15",X"60",X"15",X"E0",X"16",X"00",X"17",X"1D",X"17",X"1D",X"1D",X"49",
|
||||
X"1D",X"6E",X"20",X"9F",X"22",X"1F",X"22",X"1F",X"17",X"1E",X"24",X"41",X"28",X"D9",X"29",X"59",
|
||||
X"29",X"78",X"2D",X"1F",X"2D",X"1F",X"2D",X"7F",X"2A",X"49",X"2A",X"78",X"22",X"9F",X"2D",X"1F",
|
||||
X"2D",X"1F",X"2F",X"1C",X"37",X"41",X"37",X"7C",X"2D",X"1F",X"3B",X"5B",X"2F",X"9C",X"22",X"1F",
|
||||
X"3C",X"51",X"3E",X"51",X"3E",X"6E",X"2D",X"9F",X"2F",X"1D",X"2F",X"1E",X"2F",X"1D",X"40",X"50",
|
||||
X"40",X"6E",X"2D",X"9F",X"22",X"1F",X"42",X"49",X"42",X"78",X"2D",X"9F",X"45",X"41",X"49",X"1C",
|
||||
X"49",X"9C",X"51",X"59",X"52",X"41",X"52",X"78",X"2D",X"9F",X"2D",X"1F",X"56",X"52",X"56",X"79",
|
||||
X"2D",X"1F",X"58",X"51",X"58",X"78",X"2D",X"1F",X"5A",X"51",X"5A",X"78",X"2D",X"9F",X"5C",X"1E",
|
||||
X"5C",X"1E",X"60",X"C1",X"64",X"41",X"68",X"D9",X"69",X"50",X"69",X"6E",X"2D",X"9F",X"5C",X"1E",
|
||||
X"5C",X"1E",X"6B",X"5A",X"6C",X"C1",X"70",X"41",X"74",X"D1",X"17",X"1D",X"17",X"1D",X"76",X"41",
|
||||
X"7A",X"41",X"7E",X"59",X"7E",X"7C",X"2D",X"9F",X"22",X"1F",X"22",X"1F",X"22",X"7E",X"7F",X"41",
|
||||
X"83",X"58",X"49",X"1D",X"49",X"9D",X"20",X"1F",X"17",X"1E",X"84",X"51",X"84",X"78",X"22",X"1F",
|
||||
X"22",X"7F",X"86",X"58",X"86",X"78",X"2D",X"9F",X"87",X"49",X"87",X"7C",X"2D",X"1F",X"2D",X"1F",
|
||||
X"2D",X"7E",X"8F",X"5B",X"8A",X"5A",X"8B",X"C1",X"96",X"51",X"98",X"D0",X"9A",X"58",X"49",X"1D",
|
||||
X"49",X"1D",X"49",X"7C",X"22",X"1F",X"17",X"1E",X"9B",X"49",X"9B",X"79",X"20",X"9F",X"2D",X"1F",
|
||||
X"9E",X"52",X"49",X"1D",X"49",X"1D",X"49",X"79",X"A0",X"41",X"A4",X"D9",X"A5",X"41",X"49",X"1D",
|
||||
X"49",X"1D",X"49",X"78",X"2D",X"9F",X"A9",X"49",X"A9",X"78",X"2D",X"9F",X"2D",X"1F",X"2D",X"1F",
|
||||
X"2F",X"1C",X"AC",X"58",X"AC",X"79",X"22",X"1F",X"22",X"7F",X"AD",X"C9",X"B0",X"1D",X"B0",X"1D",
|
||||
X"B6",X"49",X"B6",X"78",X"2D",X"9F",X"B9",X"41",X"B9",X"78",X"22",X"1F",X"17",X"9F",X"BD",X"C1",
|
||||
X"8F",X"41",X"8F",X"7C",X"20",X"1F",X"93",X"49",X"93",X"78",X"2D",X"9F",X"FF",X"FF",X"FF",X"FF",
|
||||
X"75",X"A3",X"28",X"C9",X"D7",X"59",X"D9",X"67",X"5D",X"69",X"75",X"D8",X"C7",X"97",X"5A",X"29",
|
||||
X"89",X"A5",X"A5",X"A6",X"26",X"97",X"5A",X"89",X"67",X"65",X"9D",X"96",X"69",X"89",X"A5",X"A2",
|
||||
X"67",X"5D",X"76",X"28",X"9E",X"22",X"98",X"CA",X"63",X"27",X"28",X"9A",X"65",X"A5",X"9A",X"66",
|
||||
X"63",X"28",X"9D",X"99",X"66",X"96",X"76",X"5A",X"27",X"59",X"D9",X"66",X"78",X"89",X"D6",X"75",
|
||||
X"96",X"98",X"9A",X"5D",X"8A",X"71",X"78",X"D8",X"CA",X"59",X"D9",X"69",X"98",X"99",X"D6",X"76",
|
||||
X"27",X"5D",X"8A",X"65",X"99",X"9D",X"6A",X"19",X"D8",X"D5",X"E6",X"5A",X"5D",X"69",X"75",X"99",
|
||||
X"67",X"62",X"77",X"1A",X"94",X"7A",X"98",X"7F",X"C0",X"FC",X"6D",X"0F",X"80",X"AE",X"61",X"AF",
|
||||
X"A8",X"26",X"2F",X"85",X"46",X"F0",X"3D",X"7F",X"1A",X"A7",X"85",X"D6",X"B4",X"64",X"3F",X"6F",
|
||||
X"67",X"66",X"62",X"A5",X"A5",X"26",X"2B",X"9F",X"A6",X"62",X"66",X"65",X"98",X"69",X"7A",X"9E",
|
||||
X"99",X"72",X"63",X"69",X"99",X"99",X"99",X"97",X"72",X"5A",X"66",X"59",X"99",X"98",X"A6",X"65",
|
||||
X"E2",X"97",X"66",X"5D",X"99",X"69",X"99",X"99",X"8A",X"66",X"59",X"99",X"9D",X"75",X"99",X"98",
|
||||
X"8D",X"72",X"66",X"76",X"27",X"5D",X"97",X"5C",X"9D",X"75",X"99",X"E2",X"62",X"73",X"65",X"A2",
|
||||
X"8A",X"27",X"29",X"89",X"9A",X"5D",X"66",X"6A",X"25",X"9D",X"99",X"62",X"79",X"99",X"66",X"99",
|
||||
X"98",X"A6",X"26",X"5D",X"67",X"86",X"B5",X"3F",X"D4",X"F4",X"2F",X"03",X"E5",X"67",X"B1",X"2F",
|
||||
X"99",X"79",X"A5",X"1F",X"42",X"A7",X"B5",X"3F",X"2A",X"8A",X"5A",X"96",X"42",X"F4",X"3C",X"EF",
|
||||
X"78",X"2D",X"6F",X"43",X"82",X"E0",X"2F",X"3F",X"1E",X"2B",X"57",X"82",X"E0",X"E4",X"2F",X"6F",
|
||||
X"2A",X"67",X"59",X"89",X"E1",X"95",X"6E",X"6B",X"9A",X"65",X"99",X"99",X"98",X"59",X"AA",X"9E",
|
||||
X"99",X"97",X"62",X"98",X"98",X"69",X"AA",X"9E",X"99",X"98",X"99",X"99",X"96",X"29",X"AA",X"9E",
|
||||
X"98",X"9E",X"59",X"8A",X"81",X"F8",X"78",X"2F",X"99",X"99",X"96",X"57",X"95",X"A9",X"E8",X"6E",
|
||||
X"66",X"6A",X"65",X"6A",X"94",X"5E",X"A1",X"7F",X"D0",X"B8",X"AD",X"0F",X"D0",X"69",X"A8",X"7F",
|
||||
X"D0",X"B8",X"6E",X"0B",X"C0",X"A7",X"94",X"BF",X"D1",X"D5",X"F5",X"2F",X"52",X"82",X"F4",X"3F",
|
||||
X"E0",X"5A",X"B4",X"2F",X"81",X"E0",X"BC",X"2F",X"A5",X"1F",X"D4",X"2F",X"81",X"C5",X"F8",X"3F",
|
||||
X"8A",X"63",X"66",X"87",X"63",X"5A",X"59",X"CA",X"5A",X"5A",X"29",X"69",X"8A",X"29",X"5E",X"29",
|
||||
X"68",X"A5",X"A5",X"A6",X"66",X"66",X"66",X"66",X"62",X"66",X"63",X"67",X"26",X"69",X"96",X"89",
|
||||
X"96",X"99",X"73",X"5A",X"63",X"5C",X"CC",X"CA",X"62",X"96",X"73",X"32",X"8C",X"D6",X"98",X"A6",
|
||||
X"29",X"8A",X"32",X"8C",X"A5",X"A5",X"CA",X"5C",X"A3",X"35",X"A2",X"8C",X"D6",X"76",X"27",X"5C",
|
||||
X"89",X"D6",X"75",X"A5",X"CC",X"A3",X"27",X"32",X"98",X"A6",X"28",X"CA",X"5A",X"35",X"9C",X"CD",
|
||||
X"73",X"35",X"A6",X"29",X"8A",X"65",X"CD",X"73",X"26",X"96",X"98",X"9D",X"89",X"D8",X"A3",X"27",
|
||||
X"8A",X"35",X"A5",X"A5",X"9C",X"D7",X"35",X"CD",X"69",X"67",X"62",X"97",X"32",X"97",X"5C",X"CA",
|
||||
X"33",X"5D",X"72",X"8C",X"9D",X"73",X"5A",X"35",X"A5",X"CC",X"D7",X"33",X"35",X"D6",X"8D",X"69",
|
||||
X"96",X"69",X"73",X"5C",X"D8",X"A5",X"CC",X"CC",X"A3",X"5A",X"33",X"32",X"8C",X"D8",X"9C",X"CD",
|
||||
X"73",X"59",X"D7",X"32",X"8C",X"CC",X"A5",X"9C",X"CA",X"33",X"33",X"28",X"CA",X"5C",X"D7",X"35",
|
||||
X"86",X"A9",X"57",X"98",X"56",X"7A",X"87",X"BE",X"A0",X"6E",X"8B",X"90",X"6A",X"62",X"71",X"BF",
|
||||
X"A0",X"3F",X"5B",X"90",X"6A",X"95",X"99",X"AF",X"61",X"AA",X"69",X"E0",X"2F",X"43",X"96",X"BE",
|
||||
X"88",X"9E",X"2B",X"80",X"A9",X"6A",X"81",X"FF",X"1F",X"55",X"AB",X"90",X"6A",X"5A",X"85",X"BF",
|
||||
X"2A",X"D4",X"7A",X"26",X"55",X"7B",X"80",X"FF",X"96",X"A5",X"95",X"79",X"D5",X"3F",X"80",X"BF",
|
||||
X"76",X"62",X"36",X"29",X"99",X"A9",X"66",X"3A",X"99",X"66",X"59",X"9D",X"99",X"A6",X"66",X"76",
|
||||
X"99",X"A1",X"A8",X"6A",X"47",X"D1",X"F5",X"2F",X"66",X"6A",X"95",X"6A",X"52",X"72",X"F4",X"3F",
|
||||
X"5A",X"95",X"E6",X"7A",X"02",X"F0",X"68",X"BF",X"98",X"D4",X"BC",X"6D",X"0B",X"C0",X"79",X"FF",
|
||||
X"D4",X"95",X"FD",X"5D",X"0F",X"C0",X"A8",X"BF",X"C1",X"F0",X"BC",X"1F",X"47",X"D0",X"79",X"BF",
|
||||
X"A1",X"69",X"9E",X"1A",X"86",X"D4",X"3D",X"6F",X"A1",X"9C",X"7A",X"57",X"56",X"E0",X"79",X"6F",
|
||||
X"C5",X"A7",X"80",X"FD",X"0B",X"92",X"F4",X"3F",X"99",X"96",X"66",X"29",X"5A",X"A5",X"A8",X"6F",
|
||||
X"98",X"A5",X"98",X"5E",X"67",X"A1",X"A9",X"7A",X"95",X"E1",X"78",X"67",X"99",X"E1",X"A9",X"9E",
|
||||
X"6A",X"1A",X"87",X"56",X"D1",X"F4",X"AD",X"1F",X"76",X"1E",X"1A",X"63",X"5A",X"95",X"F5",X"2F",
|
||||
X"C2",X"F4",X"2E",X"07",X"96",X"86",X"F4",X"3F",X"5B",X"81",X"FC",X"0F",X"47",X"93",X"F4",X"3F",
|
||||
X"86",X"96",X"B8",X"0F",X"C0",X"B8",X"7C",X"2F",X"C0",X"FD",X"65",X"3F",X"03",X"A0",X"F8",X"3F",
|
||||
X"96",X"B0",X"2F",X"02",X"E6",X"1A",X"E8",X"2F",X"D4",X"F4",X"2F",X"03",X"D5",X"D9",X"F8",X"2F",
|
||||
X"97",X"94",X"BC",X"0B",X"D0",X"F4",X"BC",X"2B",X"C4",X"F8",X"3D",X"0F",X"C0",X"B8",X"A8",X"3F",
|
||||
X"C4",X"BD",X"1A",X"17",X"D0",X"FC",X"3C",X"2F",X"A4",X"AD",X"1B",X"47",X"C1",X"F8",X"78",X"2F",
|
||||
X"89",X"D9",X"57",X"96",X"A0",X"F8",X"6D",X"2F",X"66",X"66",X"57",X"96",X"95",X"F8",X"69",X"3F",
|
||||
X"97",X"5A",X"5D",X"75",X"D8",X"D7",X"5C",X"A3",X"35",X"CA",X"33",X"28",X"CA",X"35",X"CA",X"33",
|
||||
X"5A",X"28",X"9C",X"A5",X"D6",X"97",X"32",X"8D",X"72",X"8A",X"35",X"D6",X"96",X"8A",X"28",X"A5",
|
||||
X"72",X"97",X"5C",X"A3",X"32",X"8C",X"A5",X"A2",X"8C",X"A3",X"28",X"A2",X"8D",X"73",X"35",X"CA",
|
||||
X"5A",X"29",X"75",X"A2",X"97",X"28",X"CD",X"73",X"28",X"A3",X"33",X"5D",X"75",X"A5",X"D7",X"5C",
|
||||
X"69",X"68",X"CC",X"A3",X"35",X"D6",X"96",X"8A",X"35",X"CA",X"27",X"28",X"D6",X"97",X"5C",X"CA",
|
||||
X"29",X"75",X"D7",X"33",X"5C",X"CA",X"28",X"CA",X"33",X"28",X"D7",X"5C",X"A5",X"D7",X"5D",X"73",
|
||||
X"8D",X"75",X"CA",X"32",X"8A",X"5D",X"75",X"D6",X"97",X"5A",X"29",X"73",X"28",X"A2",X"8A",X"5A",
|
||||
X"28",X"D7",X"33",X"5A",X"5D",X"75",X"D6",X"8A",X"5D",X"68",X"A2",X"8A",X"5D",X"73",X"35",X"D7",
|
||||
X"65",X"5F",X"9E",X"81",X"95",X"F4",X"6A",X"7E",X"95",X"AA",X"9A",X"50",X"F5",X"74",X"3F",X"7F",
|
||||
X"9A",X"9E",X"54",X"56",X"A9",X"A5",X"2B",X"7B",X"66",X"99",X"86",X"62",X"A8",X"A5",X"6A",X"AA",
|
||||
X"99",X"5E",X"57",X"56",X"A8",X"A9",X"2B",X"1F",X"75",X"F4",X"3F",X"0D",X"43",X"F4",X"79",X"7F",
|
||||
X"3A",X"1F",X"12",X"F0",X"0B",X"D7",X"90",X"FF",X"67",X"E0",X"3E",X"55",X"61",X"7F",X"80",X"BF",
|
||||
X"5F",X"85",X"66",X"89",X"91",X"EF",X"50",X"BF",X"99",X"99",X"98",X"67",X"95",X"6B",X"94",X"7F",
|
||||
X"A1",X"79",X"5A",X"5A",X"86",X"D4",X"F9",X"2B",X"69",X"5E",X"57",X"66",X"86",X"D4",X"BC",X"2B",
|
||||
X"69",X"5A",X"96",X"67",X"56",X"D4",X"BC",X"2B",X"69",X"5A",X"95",X"DA",X"56",X"D4",X"BC",X"2B",
|
||||
X"69",X"99",X"76",X"56",X"98",X"9A",X"A1",X"AF",X"D0",X"F8",X"7D",X"0B",X"C0",X"7A",X"E0",X"7F",
|
||||
X"C1",X"B5",X"B5",X"2F",X"40",X"B8",X"7D",X"2F",X"2B",X"12",X"F0",X"3F",X"05",X"DA",X"C4",X"BE",
|
||||
X"A5",X"96",X"66",X"1E",X"85",X"E9",X"A8",X"2F",X"E4",X"78",X"6C",X"0B",X"D0",X"BC",X"79",X"2F",
|
||||
X"D4",X"B8",X"3D",X"0B",X"C0",X"F8",X"A8",X"3F",X"B4",X"7D",X"0F",X"0A",X"C0",X"FC",X"79",X"2F",
|
||||
X"8C",X"CD",X"75",X"A3",X"5C",X"D7",X"28",X"CD",X"73",X"5C",X"CA",X"33",X"28",X"D7",X"28",X"CC",
|
||||
X"A3",X"32",X"8C",X"A3",X"33",X"28",X"CC",X"CD",X"73",X"35",X"CC",X"A3",X"33",X"28",X"C9",X"A3",
|
||||
X"8C",X"CD",X"73",X"5C",X"A3",X"35",X"CC",X"CA",X"27",X"5C",X"D7",X"32",X"75",X"A3",X"28",X"CC",
|
||||
X"CD",X"73",X"32",X"8A",X"26",X"8C",X"A3",X"5C",X"A3",X"5C",X"A5",X"CD",X"8D",X"73",X"28",X"D7",
|
||||
X"99",X"A2",X"76",X"16",X"57",X"A5",X"A9",X"AF",X"88",X"99",X"FD",X"46",X"07",X"E0",X"7E",X"6F",
|
||||
X"66",X"17",X"FC",X"18",X"47",X"E4",X"7D",X"7F",X"91",X"A7",X"BD",X"18",X"4E",X"D0",X"BC",X"6F",
|
||||
X"89",X"86",X"F9",X"1E",X"07",X"D0",X"A9",X"FF",X"85",X"D7",X"BC",X"28",X"0F",X"C0",X"B9",X"7F",
|
||||
X"86",X"57",X"F9",X"28",X"0F",X"D0",X"AC",X"7F",X"66",X"5A",X"AA",X"55",X"5A",X"94",X"5E",X"FE",
|
||||
X"A1",X"6D",X"4A",X"D0",X"F8",X"78",X"AD",X"1F",X"75",X"7D",X"0B",X"C0",X"F8",X"79",X"7D",X"1F",
|
||||
X"66",X"A4",X"7E",X"03",X"F0",X"3D",X"B8",X"2F",X"38",X"5B",X"A8",X"0B",X"D0",X"7E",X"78",X"3F",
|
||||
X"35",X"7E",X"07",X"97",X"C0",X"BA",X"A0",X"BF",X"38",X"69",X"69",X"8A",X"57",X"E0",X"BC",X"2B",
|
||||
X"75",X"69",X"69",X"8A",X"57",X"E0",X"BC",X"2B",X"75",X"69",X"69",X"8A",X"57",X"E0",X"BC",X"2B",
|
||||
X"66",X"29",X"69",X"8A",X"57",X"E0",X"BC",X"2B",X"65",X"AA",X"12",X"B9",X"81",X"F8",X"78",X"7F",
|
||||
X"6A",X"61",X"9D",X"85",X"E8",X"89",X"F5",X"2F",X"79",X"66",X"3A",X"07",X"D1",X"E2",X"B4",X"3F",
|
||||
X"A0",X"F8",X"3D",X"0F",X"C0",X"B8",X"A8",X"2F",X"A4",X"AD",X"1F",X"0A",X"C0",X"F8",X"A8",X"2F",
|
||||
X"76",X"29",X"5A",X"99",X"56",X"B5",X"68",X"7F",X"A1",X"AA",X"19",X"5A",X"94",X"AA",X"78",X"6F",
|
||||
X"B0",X"6A",X"79",X"0B",X"C0",X"BC",X"3D",X"2F",X"2B",X"51",X"FC",X"0B",X"C0",X"F4",X"B8",X"2F",
|
||||
X"2E",X"0E",X"D0",X"F4",X"7D",X"0F",X"E0",X"3F",X"C4",X"AF",X"02",X"F0",X"78",X"1F",X"D4",X"7F",
|
||||
X"56",X"F5",X"27",X"95",X"A4",X"2F",X"C0",X"BF",X"1F",X"95",X"67",X"67",X"80",X"7F",X"90",X"BF",
|
||||
X"3D",X"55",X"E7",X"66",X"50",X"BF",X"41",X"BF",X"77",X"26",X"66",X"66",X"21",X"EA",X"51",X"FE",
|
||||
X"66",X"66",X"66",X"59",X"99",X"9D",X"DE",X"76",X"65",X"D9",X"99",X"89",X"99",X"A6",X"A7",X"76",
|
||||
X"96",X"66",X"69",X"66",X"59",X"99",X"E9",X"DE",X"5E",X"66",X"75",X"5D",X"89",X"E1",X"7A",X"6F",
|
||||
X"2A",X"67",X"83",X"B8",X"03",X"F0",X"B8",X"3F",X"A8",X"1B",X"D4",X"3F",X"03",X"D2",X"F4",X"3F",
|
||||
X"3D",X"0F",X"C1",X"E1",X"E9",X"0B",X"F0",X"3F",X"A5",X"2F",X"47",X"55",X"F8",X"0F",X"E0",X"3F",
|
||||
X"92",X"B8",X"5A",X"95",X"A4",X"2F",X"D0",X"BF",X"67",X"95",X"9E",X"62",X"55",X"7B",X"80",X"FF",
|
||||
X"69",X"99",X"99",X"99",X"85",X"AD",X"55",X"EF",X"76",X"66",X"66",X"66",X"55",X"EA",X"15",X"BE",
|
||||
X"96",X"75",X"99",X"79",X"5A",X"C1",X"F8",X"2F",X"2E",X"03",X"F4",X"2E",X"1B",X"53",X"F0",X"3F",
|
||||
X"5B",X"81",X"A9",X"6D",X"0B",X"D2",X"B5",X"3F",X"8A",X"56",X"A5",X"5E",X"27",X"A1",X"7A",X"3B",
|
||||
X"66",X"61",X"E8",X"6A",X"57",X"D1",X"B8",X"2F",X"71",X"A6",X"29",X"8E",X"57",X"D4",X"B8",X"2F",
|
||||
X"B0",X"39",X"AE",X"06",X"1E",X"D5",X"76",X"7F",X"66",X"AC",X"0B",X"9A",X"02",X"F0",X"B8",X"3F",
|
||||
X"66",X"62",X"67",X"67",X"56",X"E1",X"A8",X"2F",X"65",X"99",X"9A",X"66",X"67",X"A1",X"78",X"6F",
|
||||
X"A5",X"1E",X"8B",X"D0",X"92",X"F8",X"35",X"BF",X"74",X"7E",X"2A",X"06",X"AA",X"60",X"2F",X"7F",
|
||||
X"1E",X"5F",X"0F",X"43",X"E1",X"E0",X"2F",X"7F",X"A0",X"7C",X"7F",X"03",X"82",X"F0",X"3E",X"3F",
|
||||
X"83",X"F0",X"F4",X"2F",X"02",X"B8",X"68",X"6F",X"8A",X"C0",X"FC",X"0B",X"57",X"C2",X"F4",X"3F",
|
||||
X"86",X"B4",X"2F",X"43",X"E0",X"B8",X"7C",X"2B",X"56",X"A5",X"7A",X"27",X"5A",X"A1",X"7A",X"1E",
|
||||
X"66",X"A9",X"55",X"99",X"A9",X"55",X"AA",X"EE",X"2A",X"9D",X"56",X"95",X"A9",X"46",X"B6",X"BE",
|
||||
X"27",X"7A",X"55",X"96",X"7D",X"41",X"F7",X"BE",X"61",X"7F",X"1A",X"81",X"AD",X"45",X"A6",X"BF",
|
||||
X"66",X"39",X"6B",X"A0",X"1D",X"5B",X"C0",X"FF",X"A5",X"6A",X"86",X"65",X"9D",X"1B",X"D0",X"BF",
|
||||
X"66",X"A1",X"79",X"59",X"9D",X"4F",X"E0",X"7F",X"66",X"95",X"9D",X"86",X"A6",X"5A",X"B4",X"6F",
|
||||
X"66",X"62",X"68",X"6A",X"5A",X"A1",X"B8",X"2F",X"62",X"6A",X"55",X"DD",X"8A",X"67",X"A5",X"3F",
|
||||
X"96",X"66",X"76",X"59",X"D9",X"95",X"67",X"AE",X"C1",X"E1",X"BD",X"49",X"D7",X"94",X"3E",X"7F",
|
||||
X"D4",X"78",X"7F",X"07",X"92",X"B0",X"2E",X"6F",X"D4",X"75",X"AF",X"07",X"85",X"F0",X"2E",X"6F",
|
||||
X"6A",X"62",X"75",X"66",X"66",X"62",X"B4",X"3F",X"D0",X"FC",X"65",X"2F",X"02",X"E0",X"F8",X"3F",
|
||||
X"96",X"76",X"27",X"56",X"A5",X"A1",X"B8",X"2F",X"86",X"E4",X"3F",X"03",X"E0",X"B5",X"7D",X"2B",
|
||||
X"79",X"61",X"AD",X"0B",X"D0",X"BC",X"3C",X"2F",X"66",X"5A",X"62",X"69",X"99",X"A9",X"98",X"6F",
|
||||
X"66",X"59",X"99",X"9A",X"5A",X"A5",X"A9",X"6A",X"65",X"99",X"99",X"9A",X"66",X"99",X"A9",X"6A",
|
||||
X"96",X"69",X"65",X"9D",X"98",X"9E",X"95",X"EE",X"86",X"B8",X"0B",X"86",X"A5",X"3B",X"C0",X"BF",
|
||||
X"7C",X"1B",X"43",X"F4",X"1F",X"C2",X"E0",X"AF",X"7A",X"07",X"99",X"95",X"6B",X"95",X"A5",X"AF",
|
||||
X"79",X"66",X"15",X"F8",X"0F",X"C7",X"D0",X"BF",X"96",X"66",X"75",X"6A",X"85",X"AA",X"94",X"7F",
|
||||
X"D4",X"AE",X"42",X"A5",X"B4",X"2F",X"C4",X"3F",X"86",X"E8",X"47",X"95",X"F4",X"2F",X"C0",X"BF",
|
||||
X"8A",X"E0",X"69",X"66",X"94",X"7F",X"80",X"BF",X"6A",X"95",X"5A",X"62",X"95",X"6F",X"90",X"BF",
|
||||
X"66",X"62",X"66",X"66",X"76",X"76",X"69",X"DD",X"66",X"59",X"99",X"99",X"DD",X"96",X"79",X"DD",
|
||||
X"89",X"9D",X"85",X"9D",X"D9",X"99",X"9D",X"EA",X"99",X"99",X"D9",X"55",X"A9",X"9A",X"22",X"AE",
|
||||
X"82",X"F5",X"F4",X"1E",X"0B",X"91",X"B9",X"6F",X"72",X"B8",X"2C",X"0F",X"57",X"84",X"7F",X"2F",
|
||||
X"A6",X"65",X"69",X"5A",X"86",X"71",X"7E",X"3B",X"98",X"99",X"67",X"27",X"65",X"A6",X"2E",X"6A",
|
||||
X"99",X"A6",X"1A",X"17",X"98",X"A5",X"6E",X"6B",X"95",X"6B",X"9E",X"03",X"D1",X"F0",X"3E",X"7F",
|
||||
X"A4",X"3E",X"2F",X"02",X"87",X"B4",X"2E",X"2F",X"A4",X"3D",X"6F",X"46",X"52",X"F4",X"3A",X"3F",
|
||||
X"D4",X"E0",X"BE",X"1E",X"02",X"F0",X"69",X"AF",X"66",X"98",X"7A",X"66",X"47",X"A5",X"65",X"BF",
|
||||
X"65",X"9D",X"66",X"5A",X"96",X"A5",X"B8",X"6B",X"65",X"A6",X"27",X"1A",X"86",X"E1",X"B8",X"2F",
|
||||
X"A4",X"7D",X"47",X"8E",X"82",X"F5",X"78",X"3F",X"95",X"A5",X"7F",X"0A",X"02",X"FC",X"0E",X"AF",
|
||||
X"95",X"86",X"F9",X"55",X"56",X"F0",X"3E",X"6F",X"17",X"A3",X"F4",X"19",X"6A",X"A0",X"7D",X"7F",
|
||||
X"6A",X"99",X"C5",X"89",X"96",X"90",X"FD",X"AF",X"A6",X"58",X"99",X"9C",X"85",X"99",X"EE",X"7E",
|
||||
X"99",X"99",X"99",X"66",X"85",X"A8",X"E8",X"6F",X"A2",X"67",X"62",X"1E",X"81",X"F5",X"78",X"6F",
|
||||
X"76",X"59",X"99",X"9A",X"1A",X"C1",X"F8",X"2F",X"C2",X"B4",X"79",X"69",X"4F",X"82",X"F4",X"2F",
|
||||
X"A1",X"E8",X"2E",X"0B",X"47",X"C2",X"F4",X"2F",X"C4",X"BC",X"0F",X"83",X"D1",X"F0",X"BC",X"1F",
|
||||
X"B4",X"3E",X"0A",X"D0",X"F5",X"78",X"7D",X"1F",X"A4",X"AD",X"2A",X"1E",X"4A",X"D0",X"F5",X"2F",
|
||||
X"96",X"75",X"6A",X"1A",X"95",X"E2",X"A8",X"2F",X"A4",X"AD",X"0F",X"82",X"D6",X"A0",X"F8",X"2F",
|
||||
X"78",X"2E",X"0E",X"8A",X"57",X"D0",X"FC",X"2B",X"75",X"6A",X"57",X"67",X"56",X"D4",X"F8",X"3B",
|
||||
X"6A",X"55",X"E8",X"6A",X"55",X"6B",X"84",X"AF",X"99",X"96",X"76",X"18",X"9D",X"9E",X"85",X"FE",
|
||||
X"9A",X"9D",X"56",X"11",X"FA",X"19",X"A9",X"7F",X"1F",X"87",X"D0",X"A8",X"6A",X"80",X"AE",X"AF",
|
||||
X"57",X"E5",X"B0",X"2D",X"67",X"90",X"7E",X"AF",X"69",X"95",X"FC",X"0E",X"0B",X"C0",X"E6",X"BF",
|
||||
X"1B",X"D1",X"E4",X"BC",X"03",X"F4",X"7C",X"3F",X"C6",X"92",X"F0",X"2F",X"02",X"E1",X"F0",X"7F",
|
||||
X"99",X"A1",X"79",X"59",X"9D",X"87",X"B5",X"3F",X"98",X"9D",X"5A",X"62",X"69",X"99",X"B8",X"2F",
|
||||
X"57",X"A5",X"66",X"2A",X"96",X"99",X"A7",X"66",X"59",X"D9",X"66",X"66",X"A6",X"66",X"77",X"66",
|
||||
X"26",X"A5",X"69",X"5A",X"A6",X"66",X"6A",X"66",X"27",X"6A",X"62",X"19",X"E6",X"61",X"6A",X"AB",
|
||||
X"79",X"0B",X"DA",X"90",X"E9",X"A4",X"2A",X"BF",X"75",X"5E",X"5B",X"D0",X"E1",X"F0",X"2A",X"BF",
|
||||
X"79",X"1E",X"1F",X"C1",X"C2",X"F0",X"2E",X"7F",X"27",X"99",X"8A",X"A1",X"86",X"A5",X"66",X"7F",
|
||||
X"66",X"62",X"66",X"69",X"87",X"D5",X"B8",X"2F",X"27",X"98",X"5E",X"D9",X"07",X"E1",X"E1",X"BF",
|
||||
X"5E",X"84",X"7F",X"8A",X"41",X"F5",X"68",X"AF",X"E4",X"61",X"7E",X"9D",X"07",X"E0",X"7A",X"3F",
|
||||
X"E1",X"18",X"BE",X"1A",X"06",X"E0",X"A8",X"AF",X"9A",X"80",X"BE",X"79",X"07",X"A1",X"69",X"AF",
|
||||
X"9A",X"59",X"98",X"96",X"76",X"56",X"F4",X"3F",X"79",X"4B",X"D0",X"F4",X"AD",X"0B",X"E0",X"3F",
|
||||
X"3E",X"12",X"B4",X"2E",X"0B",X"83",X"F4",X"3F",X"8A",X"82",X"F0",X"3F",X"03",X"B4",X"AC",X"2F",
|
||||
X"D0",X"BC",X"2D",X"4B",X"C0",X"B8",X"A8",X"3F",X"29",X"8D",X"67",X"99",X"8A",X"A0",X"B8",X"2F",
|
||||
X"2A",X"25",X"9A",X"98",X"67",X"A1",X"E9",X"2F",X"66",X"62",X"66",X"67",X"66",X"79",X"99",X"9E",
|
||||
X"98",X"A6",X"26",X"97",X"35",X"CD",X"89",X"D8",X"A2",X"8D",X"73",X"28",X"D7",X"35",X"A6",X"28",
|
||||
X"9C",X"D7",X"29",X"73",X"29",X"73",X"28",X"CD",X"8C",X"9D",X"68",X"A3",X"32",X"98",X"A3",X"5C",
|
||||
X"73",X"59",X"9D",X"8A",X"86",X"69",X"66",X"98",X"9D",X"8A",X"35",X"D7",X"63",X"28",X"CA",X"65",
|
||||
X"A3",X"62",X"75",X"A3",X"29",X"68",X"A5",X"D7",X"35",X"CA",X"32",X"8A",X"29",X"8A",X"65",X"CA",
|
||||
X"69",X"8C",X"9A",X"5C",X"A3",X"63",X"5A",X"5D",X"73",X"5C",X"D7",X"32",X"8A",X"35",X"9A",X"29",
|
||||
X"8A",X"35",X"C9",X"A3",X"32",X"8A",X"36",X"28",X"D7",X"32",X"8C",X"A3",X"5C",X"D7",X"35",X"D7",
|
||||
X"66",X"77",X"59",X"66",X"72",X"61",X"7A",X"AE",X"C1",X"A9",X"EA",X"43",X"E0",X"B0",X"3E",X"3F",
|
||||
X"C5",X"D4",X"BE",X"1C",X"46",X"F4",X"2E",X"2F",X"D0",X"F9",X"A4",X"3F",X"02",X"E4",X"B8",X"3F",
|
||||
X"C4",X"F8",X"2B",X"42",X"F0",X"A5",X"F5",X"2F",X"99",X"67",X"17",X"98",X"9D",X"D5",X"F5",X"2F",
|
||||
X"66",X"66",X"56",X"99",X"D9",X"A5",X"A7",X"7A",X"5D",X"97",X"56",X"99",X"E5",X"A6",X"69",X"DD",
|
||||
X"67",X"99",X"85",X"96",X"A6",X"68",X"7A",X"3B",X"89",X"8A",X"A2",X"85",X"E5",X"A4",X"7A",X"7F",
|
||||
X"98",X"5E",X"8E",X"C0",X"F4",X"B4",X"2E",X"7F",X"C0",X"FC",X"68",X"2F",X"03",X"E0",X"B8",X"3F",
|
||||
X"75",X"A9",X"3D",X"0F",X"57",X"83",X"F4",X"3F",X"A1",X"A5",X"B4",X"7D",X"1F",X"42",X"F4",X"2F",
|
||||
X"A8",X"2E",X"1A",X"0E",X"D0",X"7F",X"43",X"F0",X"9E",X"4A",X"E0",X"1F",X"81",X"F4",X"EC",X"2F",
|
||||
X"3F",X"06",X"A8",X"0B",X"82",X"A5",X"F8",X"2F",X"9D",X"D8",X"2E",X"07",X"93",X"C3",X"F4",X"3F",
|
||||
X"2E",X"47",X"D0",X"B8",X"2D",X"6D",X"1F",X"C2",X"2E",X"0A",X"D0",X"EC",X"2A",X"2B",X"0B",X"C3",
|
||||
X"99",X"D1",X"F4",X"6D",X"2D",X"3E",X"0B",X"D0",X"3D",X"0F",X"82",X"B0",X"B4",X"F0",X"F8",X"3D",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF");
|
||||
begin
|
||||
process(clk)
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
data <= rom_data(to_integer(unsigned(addr)));
|
||||
end if;
|
||||
end process;
|
||||
end architecture;
|
||||
@ -1,2 +1,2 @@
|
||||
`define BUILD_DATE "180708"
|
||||
`define BUILD_TIME "072736"
|
||||
`define BUILD_DATE "180812"
|
||||
`define BUILD_TIME "123132"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user