diff options
author | oharboe <oharboe> | 2008-04-15 05:58:32 +0000 |
---|---|---|
committer | oharboe <oharboe> | 2008-04-15 05:58:32 +0000 |
commit | 4f29574821f2931771b30ee8e2be33030e7695a8 (patch) | |
tree | 95833ac6dfd60cc12739957ea4a6a2ff10c6572f | |
parent | 830f2d5f90f9a864ad76a9d43a8fcf362ac2b18e (diff) | |
download | zpu-4f29574821f2931771b30ee8e2be33030e7695a8.zip zpu-4f29574821f2931771b30ee8e2be33030e7695a8.tar.gz |
* zpu/simzpu_bram.do - retired.
* zpu/zpu_core_bram.vhd - retired
* zpu/hdl/zpu3 - retired
36 files changed, 5 insertions, 24291 deletions
diff --git a/zpu/ChangeLog b/zpu/ChangeLog index 8cc3b5b..e883d0d 100644 --- a/zpu/ChangeLog +++ b/zpu/ChangeLog @@ -1,3 +1,7 @@ +2008-04-15 Øyvind Harboe
+ * zpu/simzpu_bram.do - retired.
+ * zpu/zpu_core_bram.vhd - retired
+ * zpu/hdl/zpu3 - retired
2008-04-05 Øyvind Harboe
* zpu/docs/zpuphiregs.odt - ZPU Phi register overview
2008-03-06 Adam Pierce
diff --git a/zpu/hdl/zpu3/src/.cvsignore b/zpu/hdl/zpu3/src/.cvsignore deleted file mode 100644 index 760be11..0000000 --- a/zpu/hdl/zpu3/src/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -xilinx_device_details.xml diff --git a/zpu/hdl/zpu3/src/build.xml b/zpu/hdl/zpu3/src/build.xml deleted file mode 100644 index e1b268a..0000000 --- a/zpu/hdl/zpu3/src/build.xml +++ /dev/null @@ -1,114 +0,0 @@ -<!-- - -FIX!!! start /b /wait /belownormal does not propagate return code.. ---> -<project name="ZPU3" default="all" basedir="."> - <property name="chipname" value="ic300"/> - <property name="packagetype" value="xc3s400-ft256-4"/> - - - <description>eCosBoard firmware build file</description> - - <target name="setuplibs"> - <!-- N/A yet - <copy todir="../src"> - <fileset dir="..\fpgalib\" includes="foo_top.ngc" /> - </copy> - --> - </target> - - <target name="setup"> - <mkdir dir="..\reports"/> - <mkdir dir="..\syn"/> - <mkdir dir="..\ngo"/> - <mkdir dir="..\output"/> - <mkdir dir="..\tmp"/> - <mkdir dir="..\xst"/> - </target> - - <target name="clean"> - <delete dir="..\reports"/> - <delete dir="..\syn"/> - <delete dir="..\ngo"/> - <delete dir="..\output"/> - <delete dir="..\tmp"/> - <delete dir="..\xst"/> - </target> - - <target name="synthesis" depends="setup"> - <exec executable="cmd" failonerror="true"> - <arg line="/c xst -intstyle ise -ifn xmake.xst -ofn ..\reports\1_synthesis.txt"/> - </exec> - </target> - - - <target name="translate" depends="setup"> - <exec executable="cmd" failonerror="true"> - <arg line="/c ngdbuild -intstyle ise -dd ..\ngo -uc ${chipname}.ucf -a -p ${packagetype} ..\syn\${chipname}.ngc ..\ngo\${chipname}.ngd"/> - </exec> - <move tofile="..\reports\2_translate.txt"> - <fileset dir="..\ngo" includes="${chipname}.bld"/> - </move> - </target> - - <target name="mapping" depends="setup"> - <exec executable="cmd" failonerror="true"> - <arg line="/c map -intstyle ise -p ${packagetype} -ol high -timing -detail -cm area -ignore_keep_hierarchy -pr b -k 6 -r -c 100 -tx off -o ..\ngo\${chipname}_map.ncd ..\ngo\${chipname}.ngd ..\ngo\${chipname}.pcf"/> - </exec> - <move tofile="..\reports\3_mapping.txt"> - <fileset dir="..\ngo" includes="${chipname}_map.mrp"/> - </move> - </target> - - - <target name="placeandroute" depends="setup"> - <exec executable="cmd" failonerror="true"> - <arg line="/c par -w -intstyle ise -ol high -t 1 ..\ngo\${chipname}_map.ncd ..\ngo\${chipname}.ncd ..\ngo\${chipname}.pcf"/> - </exec> - <move tofile="..\reports\4_placeandroute.txt"> - <fileset dir="..\ngo" includes="${chipname}.par"/> - </move> - <move tofile="..\reports\5_pads.txt"> - <fileset dir="..\ngo" includes="${chipname}_pad.txt"/> - </move> - </target> - - - <target name="gentime" depends="setup"> - <exec executable="cmd" failonerror="true"> - <arg line="/c trce -intstyle ise -v 3 -l 3 -a -u 100 ..\ngo\${chipname}.ncd -o ..\reports\timing.twr ..\ngo\${chipname}.pcf"/> - </exec> - <delete file="..\reports\6_timing.txt"/> - <move tofile="..\reports\6_timing.txt"> - <fileset dir="..\reports" includes="timing.twr"/> - </move> - </target> - - - <target name="genbit" depends="setup"> - <exec executable="cmd" failonerror="true"> - <arg line="/c bitgen -intstyle ise -w -f ${chipname}.bitgen ..\ngo\${chipname}.ncd"/> - </exec> - <move tofile="..\reports\7_bitgen.txt"> - <fileset dir="..\ngo" includes="${chipname}.bgn"/> - </move> - </target> - - <target name="copyfiles" depends="setup"> - <copy todir="../output"> - <fileset dir="..\ngo" includes="${chipname}.bin"/> - </copy> - <!-- - <copy tofile="${workspace_loc}\firmware\board\xeddvifpgadata.rawdata"> - <fileset dir="..\ngo" includes="${chipname}.bin"/> - </copy> - --> - </target> - - - <target name="all" depends="setuplibs,synthesis,translate,mapping,placeandroute,gentime,genbit,copyfiles"> - - </target> - - -</project>
\ No newline at end of file diff --git a/zpu/hdl/zpu3/src/clocks.vhd b/zpu/hdl/zpu3/src/clocks.vhd deleted file mode 100644 index a352b3c..0000000 --- a/zpu/hdl/zpu3/src/clocks.vhd +++ /dev/null @@ -1,246 +0,0 @@ -library IEEE;
-use IEEE.STD_LOGIC_1164.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-library UNISIM;
-use UNISIM.vcomponents.all;
-
-entity clocks is
- port ( areset : in std_logic;
- cpu_clk_p : in std_logic;
- sdr_clk_fb_p : in std_logic;
- cpu_clk : out std_logic;
- cpu_clk_2x : out std_logic;
- cpu_clk_4x : out std_logic;
- ddr_in_clk : out std_logic;
- ddr_in_clk_2x : out std_logic;
- locked : out std_logic_vector(2 downto 0));
-end clocks;
-
-architecture behave of clocks is
-
-signal low : std_logic;
-
-signal cpu_clk_in : std_logic;
-signal sdr_clk_fb_in : std_logic;
-
-signal dcm_cpu1 : std_logic;
-signal dcm_cpu2 : std_logic;
-signal dcm_cpu2_dum : std_logic;
-signal dcm_cpu4 : std_logic;
-signal dcm_ddr2 : std_logic;
-signal dcm_ddr2_2x : std_logic;
-
-signal cpu_clk_int : std_logic;
-signal cpu_clk_2x_int : std_logic;
-signal cpu_clk_2x_dum_int : std_logic;
-signal cpu_clk_4x_int : std_logic;
-signal ddr_in_clk_int : std_logic;
-signal ddr_in_clk_2x_int : std_logic;
-
-signal dcm1_locked_del : std_logic;
-signal dcm2_locked_del : std_logic;
-signal dcm2_reset : std_logic;
-signal dcm3_reset : std_logic;
-
-signal locked_int : std_logic_vector(2 downto 0);
-signal del_addr : std_logic_vector(3 downto 0);
-
-begin
-
- low <= '0';
- del_addr <= "1111";
-
- cpu_clk <= cpu_clk_int;
- cpu_clk_2x <= cpu_clk_2x_int;
- cpu_clk_4x <= cpu_clk_4x_int;
- ddr_in_clk <= ddr_in_clk_int;
- ddr_in_clk_2x <= ddr_in_clk_2x_int;
- locked <= locked_int;
-
-
- CPU_IBUFG:
- IBUFG port map (
- O => cpu_clk_in,
- I => cpu_clk_p);
-
- SDR_FB_IBUFG:
- IBUFG port map (
- O => sdr_clk_fb_in,
- I => sdr_clk_fb_p);
-
- dcm2_rst:
- SRL16 generic map (
- INIT => X"0000")
- port map (
- Q => dcm1_locked_del,
- A0 => del_addr(0),
- A1 => del_addr(1),
- A2 => del_addr(2),
- A3 => del_addr(3),
- CLK => cpu_clk_int,
- D => locked_int(0));
-
- dcm2_reset <= not(dcm1_locked_del);
-
- dcm3_rst:
- SRL16 generic map (
- INIT => X"0000")
- port map (
- Q => dcm2_locked_del,
- A0 => del_addr(0),
- A1 => del_addr(1),
- A2 => del_addr(2),
- A3 => del_addr(3),
- CLK => cpu_clk_int,
- D => locked_int(1));
-
- dcm3_reset <= not(dcm2_locked_del);
-
- cpu1_dcm:
- DCM generic map (
- CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
- -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
- CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
- CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
- CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
- CLKIN_PERIOD => 15.625, -- Specify period of input clock
- CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
- CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
- DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
- -- an integer from 0 to 15
- DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
- DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
- DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
- FACTORY_JF => X"8080", -- FACTORY JF Values
- PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
- STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
- port map (
- CLK0 => dcm_cpu1, -- 0 degree DCM CLK ouptput
- CLK180 => open, -- 180 degree DCM CLK output
- CLK270 => open, -- 270 degree DCM CLK output
- CLK2X => dcm_cpu2, -- 2X DCM CLK output
- CLK2X180 => open, -- 2X, 180 degree DCM CLK out
- CLK90 => open, -- 90 degree DCM CLK output
- CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
- CLKFX => open, -- DCM CLK synthesis out (M/D)
- CLKFX180 => open, -- 180 degree CLK synthesis out
- LOCKED => locked_int(0), -- DCM LOCK status output
- PSDONE => open, -- Dynamic phase adjust done output
- STATUS => open, -- 8-bit DCM status bits output
- CLKFB => cpu_clk_int, -- DCM clock feedback
- CLKIN => cpu_clk_in, -- Clock input (from IBUFG, BUFG or DCM)
- PSCLK => low, -- Dynamic phase adjust clock input
- PSEN => low, -- Dynamic phase adjust enable input
- PSINCDEC => low, -- Dynamic phase adjust increment/decrement
- RST => areset); -- DCM asynchronous reset input
-
- cpu2_dcm:
- DCM generic map (
- CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
- -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
- CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
- CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
- CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
- CLKIN_PERIOD => 7.8125, -- Specify period of input clock
- CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
- CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
- DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
- -- an integer from 0 to 15
- DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
- DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
- DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
- FACTORY_JF => X"8080", -- FACTORY JF Values
- PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
- STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
- port map (
- CLK0 => dcm_cpu2_dum, -- 0 degree DCM CLK ouptput
- CLK180 => open, -- 180 degree DCM CLK output
- CLK270 => open, -- 270 degree DCM CLK output
- CLK2X => dcm_cpu4, -- 2X DCM CLK output
- CLK2X180 => open, -- 2X, 180 degree DCM CLK out
- CLK90 => open, -- 90 degree DCM CLK output
- CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
- CLKFX => open, -- DCM CLK synthesis out (M/D)
- CLKFX180 => open, -- 180 degree CLK synthesis out
- LOCKED => locked_int(1), -- DCM LOCK status output
- PSDONE => open, -- Dynamic phase adjust done output
- STATUS => open, -- 8-bit DCM status bits output
- CLKFB => cpu_clk_2x_dum_int, -- DCM clock feedback
- CLKIN => cpu_clk_2x_int, -- Clock input (from IBUFG, BUFG or DCM)
- PSCLK => low, -- Dynamic phase adjust clock input
- PSEN => low, -- Dynamic phase adjust enable input
- PSINCDEC => low, -- Dynamic phase adjust increment/decrement
- RST => dcm2_reset); -- DCM asynchronous reset input
-
- ddr_read_dcm:
- DCM generic map (
- CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
- -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
- CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
- CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
- CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
- CLKIN_PERIOD => 7.8125, -- Specify period of input clock
- CLKOUT_PHASE_SHIFT => "FIXED", -- Specify phase shift of NONE, FIXED or VARIABLE
--- CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
- CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
- DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
- -- an integer from 0 to 15
- DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
- DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
- DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
- FACTORY_JF => X"8080", -- FACTORY JF Values
- PHASE_SHIFT => 103, -- Amount of fixed phase shift from -255 to 255
--- PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
- STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
- port map (
- CLK0 => dcm_ddr2, -- 0 degree DCM CLK ouptput
- CLK180 => open, -- 180 degree DCM CLK output
- CLK270 => open, -- 270 degree DCM CLK output
- CLK2X => dcm_ddr2_2x, -- 2X DCM CLK output
- CLK2X180 => open, -- 2X, 180 degree DCM CLK out
- CLK90 => open, -- 90 degree DCM CLK output
- CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
- CLKFX => open, -- DCM CLK synthesis out (M/D)
- CLKFX180 => open, -- 180 degree CLK synthesis out
- LOCKED => locked_int(2), -- DCM LOCK status output
- PSDONE => open, -- Dynamic phase adjust done output
- STATUS => open, -- 8-bit DCM status bits output
- CLKFB => ddr_in_clk_int, -- DCM clock feedback
- CLKIN => sdr_clk_fb_in, -- Clock input (from IBUFG, BUFG or DCM)
- PSCLK => low, -- Dynamic phase adjust clock input
- PSEN => low, -- Dynamic phase adjust enable input
- PSINCDEC => low, -- Dynamic phase adjust increment/decrement
- RST => dcm3_reset); -- DCM asynchronous reset input
-
- cpu1:
- BUFG port map (
- I => dcm_cpu1,
- O => cpu_clk_int);
-
- cpu2:
- BUFG port map (
- I => dcm_cpu2,
- O => cpu_clk_2x_int);
-
- cpu2_dum:
- BUFG port map (
- I => dcm_cpu2_dum,
- O => cpu_clk_2x_dum_int);
-
- cpu4:
- BUFG port map (
- I => dcm_cpu4,
- O => cpu_clk_4x_int);
-
- ddr_clk:
- BUFG port map (
- I => dcm_ddr2,
- O => ddr_in_clk_int);
-
- ddr_clk_2x:
- BUFG port map (
- I => dcm_ddr2_2x,
- O => ddr_in_clk_2x_int);
-
-end behave;
\ No newline at end of file diff --git a/zpu/hdl/zpu3/src/ddr_bridge.vhd b/zpu/hdl/zpu3/src/ddr_bridge.vhd deleted file mode 100644 index 7dece76..0000000 --- a/zpu/hdl/zpu3/src/ddr_bridge.vhd +++ /dev/null @@ -1,203 +0,0 @@ -library IEEE;
-use IEEE.STD_LOGIC_1164.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-library UNISIM;
-use UNISIM.vcomponents.all;
-
-library zylin;
-use zylin.ddr.all;
-
-library work;
-use work.phi_config.all;
-
-entity ddr_bridge is
- port ( areset : in std_logic;
- cpu_clk : in std_logic;
- cpu_clk_2x : in std_logic;
- cpu_clk_4x : in std_logic;
- ddr_in_clk : in std_logic;
- ddr_in_clk_2x : in std_logic;
-
- cpu_we : in std_logic_vector(1 downto 0);
- cpu_re : in std_logic;
- cpu_din : in std_logic_vector(15 downto 0);
- cpu_a : in std_logic_vector(20 downto 0);
- cpu_dout : inout std_logic_vector(15 downto 0);
-
- sdr_clk_p : out std_logic; -- ddr_sdram_clock
- sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
- cke_q_p : out std_logic; -- clock enable
- cs_qn_p : out std_logic; -- /chip select
- ras_qn_p : inout std_logic; -- /ras
- cas_qn_p : inout std_logic; -- /cas
- we_qn_p : inout std_logic; -- /write enable
- dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
- dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
- ba_q_p : out std_logic_vector(1 downto 0); -- bank select
- sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
- sdr_d_p : inout std_logic_vector(15 downto 0)); -- bidir data bus
-end ddr_bridge;
-
-architecture behave of ddr_bridge is
-
-signal refresh_en : std_logic;
-signal ddr_command_we : std_logic;
-signal ddr_command : std_logic_vector(15 downto 0);
-
-signal ddr_req : std_logic;
-signal ddr_req_adr : std_logic_vector(23 downto 1);
-signal ddr_rd_wr_n : std_logic;
-signal ddr_req_len : std_logic;
-
-signal ddr_read_en : std_logic;
-signal ddr_write_en : std_logic;
-signal ddr_data_read : std_logic_vector(31 downto 0);
-signal ddr_data_write : std_logic_vector(35 downto 0);
-
-signal ddr_read_smp : std_logic_vector(31 downto 0);
-signal ddr_read_delay : std_logic_vector(15 downto 0);
-
-signal ddr_write_smp : std_logic_vector(15 downto 0);
-signal ddr_addr_smp : std_logic_vector(15 downto 0);
-
-signal ddr_req_type_smp : std_logic;
-signal ddr_req_on : std_logic;
-signal ddr_req_off : std_logic;
-signal ddr_req_int : std_logic;
-
-constant Sim_Delay : time := 1.0 ns;
-
-begin
-
- ddr_req_len <= '0';
- ddr_data_write <= "0000" & ddr_write_smp & ddr_write_smp;
- ddr_req_adr <= "0000000" & ddr_addr_smp;
- ddr_rd_wr_n <= ddr_req_type_smp;
- ddr_req <= ddr_req_int;
-
- process(cpu_clk, areset) -- CPU writeable registers
- begin
- if areset = '1' then
- refresh_en <= '0';
- ddr_command_we <= '0';
- ddr_command <= "0000000000000000";
- ddr_write_smp <= "0000000000000000";
- ddr_req_type_smp <= '0';
- ddr_req_on <= '0';
- elsif (cpu_clk'event and cpu_clk = '1') then
-
- if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Ctrl_Reg_Addr then
- refresh_en <= cpu_din(0);
- else
- refresh_en <= refresh_en;
- end if;
-
- if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Mode_Reg_Addr then
- ddr_command <= cpu_din;
- ddr_command_we <= '1';
- else
- ddr_command <= ddr_command;
- ddr_command_we <= '0';
- end if;
-
- if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Data_Reg_Addr then
- ddr_write_smp <= cpu_din;
- else
- ddr_write_smp <= ddr_write_smp;
- end if;
-
- if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Addr_Reg_Addr then
- ddr_addr_smp <= cpu_din;
- else
- ddr_addr_smp <= ddr_addr_smp;
- end if;
-
- if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Req_Reg_Addr then
- ddr_req_type_smp <= cpu_din(0);
- ddr_req_on <= '1';
- else
- ddr_req_type_smp <= ddr_req_type_smp;
- ddr_req_on <= '0';
- end if;
-
- end if;
- end process;
-
- -- CPU readable registers
- cpu_dout <= ddr_read_delay when (cpu_re = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Data_Reg_Addr) else "ZZZZZZZZZZZZZZZZ";
-
- -- Capture data read from DDR
- process(cpu_clk_2x, areset)
- begin
- if areset = '1' then
- ddr_read_smp <= (others => '0');
- elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
- if ddr_read_en = '1' then
- ddr_read_smp <= ddr_data_read after Sim_Delay;
- else
- ddr_read_smp <= ddr_read_smp after Sim_Delay;
- end if;
- end if;
- end process;
-
- -- Move captured data from DDR to cpu_clk domain (for better routing timing)
- process(cpu_clk, areset)
- begin
- if areset = '1' then
- ddr_read_delay <= "0000000000000000";
- elsif (cpu_clk'event and cpu_clk = '1') then
- ddr_read_delay <= ddr_read_smp(15 downto 0);
- end if;
- end process;
-
- process(cpu_clk_2x, areset)
- begin
- if areset = '1' then
- ddr_req_int <= '0';
- elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
- if ddr_req_on = '1' then
- ddr_req_int <= '1' after Sim_Delay;
- elsif ddr_read_en = '1' or ddr_write_en = '1' then
- ddr_req_int <= '0' after Sim_Delay;
- else
- ddr_req_int <= ddr_req_int after Sim_Delay;
- end if;
- end if;
- end process;
-
-
- ddr_interface:
- ddr_top port map(
- areset => areset,
- cpu_clk => cpu_clk,
- cpu_clk_2x => cpu_clk_2x,
- cpu_clk_4x => cpu_clk_4x,
- ddr_in_clk => ddr_in_clk,
- ddr_in_clk_2x => ddr_in_clk_2x,
- ddr_command => ddr_command,
- ddr_command_we => ddr_command_we,
- refresh_en => refresh_en,
- ddr_data_read => ddr_data_read,
- ddr_data_write => ddr_data_write,
- ddr_req => ddr_req,
- ddr_req_adr => ddr_req_adr,
- ddr_rd_wr_n => ddr_rd_wr_n,
- ddr_req_len => ddr_req_len,
- ddr_read_en => ddr_read_en,
- ddr_write_en => ddr_write_en,
- sdr_clk_p => sdr_clk_p,
- sdr_clk_n_p => sdr_clk_n_p,
- cke_q_p => cke_q_p,
- cs_qn_p => cs_qn_p,
- ras_qn_p => ras_qn_p,
- cas_qn_p => cas_qn_p,
- we_qn_p => we_qn_p,
- dm_q_p => dm_q_p,
- dqs_q_p => dqs_q_p,
- ba_q_p => ba_q_p,
- sdr_a_p => sdr_a_p,
- sdr_d_p => sdr_d_p);
-
-
-end behave;
diff --git a/zpu/hdl/zpu3/src/dmips_ram.vhd b/zpu/hdl/zpu3/src/dmips_ram.vhd deleted file mode 100644 index f472653..0000000 --- a/zpu/hdl/zpu3/src/dmips_ram.vhd +++ /dev/null @@ -1,3824 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_unsigned.all;
-
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-
-entity dualport_ram is
-port (clk : in std_logic;
- memAWriteEnable : in std_logic;
- memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memAWrite : in std_logic_vector(wordSize-1 downto 0);
- memARead : out std_logic_vector(wordSize-1 downto 0);
- memBWriteEnable : in std_logic;
- memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memBWrite : in std_logic_vector(wordSize-1 downto 0);
- memBRead : out std_logic_vector(wordSize-1 downto 0));
-end dualport_ram;
-
-architecture dualport_ram_arch of dualport_ram is
-
-
-type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
-
-shared variable ram : ram_type :=
-(
-0 => x"800b0b0b",
-1 => x"0b0b8070",
-2 => x"0b0b80e5",
-3 => x"d00c3a0b",
-4 => x"0b0bbed7",
-5 => x"04000000",
-6 => x"00000000",
-7 => x"00000000",
-8 => x"80088408",
-9 => x"88080b0b",
-10 => x"0bbfa72d",
-11 => x"880c840c",
-12 => x"800c0400",
-13 => x"00000000",
-14 => x"00000000",
-15 => x"00000000",
-16 => x"71fd0608",
-17 => x"72830609",
-18 => x"81058205",
-19 => x"832b2a83",
-20 => x"ffff0652",
-21 => x"0b0b0400",
-22 => x"00000000",
-23 => x"00000000",
-24 => x"71fd0608",
-25 => x"83ffff73",
-26 => x"83060981",
-27 => x"05820583",
-28 => x"2b2b0906",
-29 => x"7383ffff",
-30 => x"0b0b0b0b",
-31 => x"83a70400",
-32 => x"72098105",
-33 => x"72057373",
-34 => x"09060906",
-35 => x"73097306",
-36 => x"070a8106",
-37 => x"530b0b51",
-38 => x"04000000",
-39 => x"00000000",
-40 => x"72722473",
-41 => x"732e0753",
-42 => x"0b0b5104",
-43 => x"00000000",
-44 => x"00000000",
-45 => x"00000000",
-46 => x"00000000",
-47 => x"00000000",
-48 => x"71737109",
-49 => x"71068106",
-50 => x"30720a10",
-51 => x"0a720a10",
-52 => x"0a31050a",
-53 => x"81065151",
-54 => x"530b0b51",
-55 => x"04000000",
-56 => x"72722673",
-57 => x"732e0753",
-58 => x"0b0b5104",
-59 => x"00000000",
-60 => x"00000000",
-61 => x"00000000",
-62 => x"00000000",
-63 => x"00000000",
-64 => x"00000000",
-65 => x"00000000",
-66 => x"00000000",
-67 => x"00000000",
-68 => x"00000000",
-69 => x"00000000",
-70 => x"00000000",
-71 => x"00000000",
-72 => x"0b0b0b88",
-73 => x"c6040000",
-74 => x"00000000",
-75 => x"00000000",
-76 => x"00000000",
-77 => x"00000000",
-78 => x"00000000",
-79 => x"00000000",
-80 => x"720a722b",
-81 => x"0a530b0b",
-82 => x"51040000",
-83 => x"00000000",
-84 => x"00000000",
-85 => x"00000000",
-86 => x"00000000",
-87 => x"00000000",
-88 => x"72729f06",
-89 => x"0981050b",
-90 => x"0b0b88a7",
-91 => x"05040000",
-92 => x"00000000",
-93 => x"00000000",
-94 => x"00000000",
-95 => x"00000000",
-96 => x"72722aff",
-97 => x"739f062a",
-98 => x"0974090a",
-99 => x"8106ff05",
-100 => x"0607530b",
-101 => x"0b510400",
-102 => x"00000000",
-103 => x"00000000",
-104 => x"7171530b",
-105 => x"0b510406",
-106 => x"73830609",
-107 => x"81058205",
-108 => x"832b0b2b",
-109 => x"0772fc06",
-110 => x"0c515104",
-111 => x"00000000",
-112 => x"72098105",
-113 => x"72050970",
-114 => x"81050906",
-115 => x"0a810653",
-116 => x"0b0b5104",
-117 => x"00000000",
-118 => x"00000000",
-119 => x"00000000",
-120 => x"72098105",
-121 => x"72050970",
-122 => x"81050906",
-123 => x"0a098106",
-124 => x"530b0b51",
-125 => x"04000000",
-126 => x"00000000",
-127 => x"00000000",
-128 => x"71098105",
-129 => x"520b0b04",
-130 => x"00000000",
-131 => x"00000000",
-132 => x"00000000",
-133 => x"00000000",
-134 => x"00000000",
-135 => x"00000000",
-136 => x"72720981",
-137 => x"0505530b",
-138 => x"0b510400",
-139 => x"00000000",
-140 => x"00000000",
-141 => x"00000000",
-142 => x"00000000",
-143 => x"00000000",
-144 => x"72097206",
-145 => x"73730906",
-146 => x"07530b0b",
-147 => x"51040000",
-148 => x"00000000",
-149 => x"00000000",
-150 => x"00000000",
-151 => x"00000000",
-152 => x"71fc0608",
-153 => x"72830609",
-154 => x"81058305",
-155 => x"1010102a",
-156 => x"81ff0652",
-157 => x"0b0b0400",
-158 => x"00000000",
-159 => x"00000000",
-160 => x"71fc0608",
-161 => x"0b0b80e5",
-162 => x"bc738306",
-163 => x"10100508",
-164 => x"060b0b0b",
-165 => x"88ac0400",
-166 => x"00000000",
-167 => x"00000000",
-168 => x"80088408",
-169 => x"88087575",
-170 => x"0b0b0ba3",
-171 => x"fa2d5050",
-172 => x"80085688",
-173 => x"0c840c80",
-174 => x"0c510400",
-175 => x"00000000",
-176 => x"80088408",
-177 => x"88087575",
-178 => x"0b0b0ba4",
-179 => x"ca2d5050",
-180 => x"80085688",
-181 => x"0c840c80",
-182 => x"0c510400",
-183 => x"00000000",
-184 => x"72097081",
-185 => x"0509060a",
-186 => x"8106ff05",
-187 => x"70540b0b",
-188 => x"71067309",
-189 => x"727405ff",
-190 => x"05060751",
-191 => x"51510400",
-192 => x"72097081",
-193 => x"0509060a",
-194 => x"098106ff",
-195 => x"0570540b",
-196 => x"0b710673",
-197 => x"09727405",
-198 => x"ff050607",
-199 => x"51515104",
-200 => x"05ff0504",
-201 => x"00000000",
-202 => x"00000000",
-203 => x"00000000",
-204 => x"00000000",
-205 => x"00000000",
-206 => x"00000000",
-207 => x"00000000",
-208 => x"810b0b0b",
-209 => x"80e5cc0c",
-210 => x"51040000",
-211 => x"00000000",
-212 => x"00000000",
-213 => x"00000000",
-214 => x"00000000",
-215 => x"00000000",
-216 => x"71810552",
-217 => x"0b0b0400",
-218 => x"00000000",
-219 => x"00000000",
-220 => x"00000000",
-221 => x"00000000",
-222 => x"00000000",
-223 => x"00000000",
-224 => x"00000000",
-225 => x"00000000",
-226 => x"00000000",
-227 => x"00000000",
-228 => x"00000000",
-229 => x"00000000",
-230 => x"00000000",
-231 => x"00000000",
-232 => x"02840572",
-233 => x"10100552",
-234 => x"0b0b0400",
-235 => x"00000000",
-236 => x"00000000",
-237 => x"00000000",
-238 => x"00000000",
-239 => x"00000000",
-240 => x"00000000",
-241 => x"00000000",
-242 => x"00000000",
-243 => x"00000000",
-244 => x"00000000",
-245 => x"00000000",
-246 => x"00000000",
-247 => x"00000000",
-248 => x"717105ff",
-249 => x"0571530b",
-250 => x"0b510400",
-251 => x"00000000",
-252 => x"00000000",
-253 => x"00000000",
-254 => x"00000000",
-255 => x"00000000",
-256 => x"84803f80",
-257 => x"cef23f04",
-258 => x"10101010",
-259 => x"10101010",
-260 => x"10101010",
-261 => x"10101010",
-262 => x"10101010",
-263 => x"10101010",
-264 => x"10101010",
-265 => x"10101053",
-266 => x"0b0b5104",
-267 => x"7381ff06",
-268 => x"73830609",
-269 => x"81058305",
-270 => x"1010102b",
-271 => x"0772fc06",
-272 => x"0c515104",
-273 => x"3c047272",
-274 => x"80728106",
-275 => x"ff050972",
-276 => x"06057110",
-277 => x"520b0b72",
-278 => x"0a100a53",
-279 => x"0b0b72e9",
-280 => x"38515153",
-281 => x"0b0b5104",
-282 => x"70700b0b",
-283 => x"80f5c008",
-284 => x"520b0b84",
-285 => x"0b720508",
-286 => x"70810651",
-287 => x"510b0b70",
-288 => x"f2387108",
-289 => x"81ff0680",
-290 => x"0c505004",
-291 => x"70700b0b",
-292 => x"80f5c008",
-293 => x"520b0b84",
-294 => x"0b720508",
-295 => x"700a100a",
-296 => x"70810651",
-297 => x"51510b0b",
-298 => x"70ed3873",
-299 => x"720c5050",
-300 => x"0480e5cc",
-301 => x"08802ea8",
-302 => x"38838080",
-303 => x"0b0b0b80",
-304 => x"f5c00c82",
-305 => x"a0800b0b",
-306 => x"0b80f5c4",
-307 => x"0c829080",
-308 => x"0b80f5d4",
-309 => x"0c0b0b80",
-310 => x"f5c80b80",
-311 => x"f5d80c04",
-312 => x"f8808080",
-313 => x"a40b0b0b",
-314 => x"80f5c00c",
-315 => x"f8808082",
-316 => x"800b0b0b",
-317 => x"80f5c40c",
-318 => x"f8808084",
-319 => x"800b80f5",
-320 => x"d40cf880",
-321 => x"8080940b",
-322 => x"80f5d80c",
-323 => x"f8808080",
-324 => x"9c0b80f5",
-325 => x"d00cf880",
-326 => x"8080a00b",
-327 => x"80f5dc0c",
-328 => x"04f23d0d",
-329 => x"600b0b80",
-330 => x"f5c40856",
-331 => x"5d82750c",
-332 => x"8059805a",
-333 => x"800b8f3d",
-334 => x"71101017",
-335 => x"70085957",
-336 => x"5d5b8076",
-337 => x"81ff067c",
-338 => x"832b5658",
-339 => x"520b0b0b",
-340 => x"76530b0b",
-341 => x"7b5198c6",
-342 => x"3f7d7f7a",
-343 => x"72077c72",
-344 => x"07717160",
-345 => x"8105415f",
-346 => x"5d5b5957",
-347 => x"557a8724",
-348 => x"80c1380b",
-349 => x"0b80f5c4",
-350 => x"087b1010",
-351 => x"71057008",
-352 => x"58515580",
-353 => x"7681ff06",
-354 => x"7c832b56",
-355 => x"58520b0b",
-356 => x"0b76530b",
-357 => x"0b7b5198",
-358 => x"853f7d7f",
-359 => x"7a72077c",
-360 => x"72077171",
-361 => x"60810541",
-362 => x"5f5d5b59",
-363 => x"5755877b",
-364 => x"25c13876",
-365 => x"7d0c7784",
-366 => x"1e0c7c80",
-367 => x"0c903d0d",
-368 => x"04707080",
-369 => x"f5cc3351",
-370 => x"0b0b70b2",
-371 => x"3880e5d8",
-372 => x"08700852",
-373 => x"0b0b520b",
-374 => x"0b0b7080",
-375 => x"2e9a3884",
-376 => x"720580e5",
-377 => x"d80c702d",
-378 => x"80e5d808",
-379 => x"7008520b",
-380 => x"0b520b0b",
-381 => x"0b70e838",
-382 => x"810b80f5",
-383 => x"cc345050",
-384 => x"0404700b",
-385 => x"0b80f5bc",
-386 => x"08802e8e",
-387 => x"380b0b0b",
-388 => x"0b800b80",
-389 => x"2e098106",
-390 => x"83385004",
-391 => x"0b0b80f5",
-392 => x"bc510b0b",
-393 => x"0bf3d93f",
-394 => x"50040470",
-395 => x"70028f05",
-396 => x"33520b0b",
-397 => x"0b0b718a",
-398 => x"2e893871",
-399 => x"51fccd3f",
-400 => x"5050048d",
-401 => x"51fcc53f",
-402 => x"7151fcc0",
-403 => x"3f505004",
-404 => x"cd3d0db6",
-405 => x"3d707084",
-406 => x"05520b0b",
-407 => x"088cab5d",
-408 => x"56a63d5f",
-409 => x"5d807570",
-410 => x"81055733",
-411 => x"765c5559",
-412 => x"0b730b79",
-413 => x"2e80ca38",
-414 => x"8f3d5c73",
-415 => x"a52e0981",
-416 => x"0680cf38",
-417 => x"79708105",
-418 => x"5b33540b",
-419 => x"0b7380e4",
-420 => x"2e81c838",
-421 => x"7380e424",
-422 => x"80d13873",
-423 => x"80e32ea8",
-424 => x"3880520b",
-425 => x"0ba5517a",
-426 => x"2d80520b",
-427 => x"0b73517a",
-428 => x"2d821959",
-429 => x"79708105",
-430 => x"5b33540b",
-431 => x"0b73ffbb",
-432 => x"3878800c",
-433 => x"b53d0d04",
-434 => x"7c841e83",
-435 => x"72053356",
-436 => x"5e578052",
-437 => x"0b0b7351",
-438 => x"7a2d8119",
-439 => x"7a708105",
-440 => x"5c335559",
-441 => x"0b73ff93",
-442 => x"38d73973",
-443 => x"80f32e09",
-444 => x"8106ffad",
-445 => x"387c841e",
-446 => x"7108595e",
-447 => x"56807733",
-448 => x"56560b74",
-449 => x"0b762e8d",
-450 => x"38811670",
-451 => x"1870335a",
-452 => x"555677f5",
-453 => x"38ff1655",
-454 => x"807625ff",
-455 => x"97387670",
-456 => x"81055833",
-457 => x"5880520b",
-458 => x"0b77517a",
-459 => x"2d811975",
-460 => x"ff175757",
-461 => x"59807625",
-462 => x"fefa3876",
-463 => x"70810558",
-464 => x"33588052",
-465 => x"0b0b7751",
-466 => x"7a2d8119",
-467 => x"75ff1757",
-468 => x"57590b75",
-469 => x"8024c738",
-470 => x"feda397c",
-471 => x"841e7108",
-472 => x"70719f2c",
-473 => x"59530b0b",
-474 => x"595e5680",
-475 => x"7524818d",
-476 => x"38757e7d",
-477 => x"58595580",
-478 => x"57740b77",
-479 => x"2e098106",
-480 => x"bc38b07c",
-481 => x"3402b905",
-482 => x"567b0b76",
-483 => x"2e9938ff",
-484 => x"16560b0b",
-485 => x"75337870",
-486 => x"81055a34",
-487 => x"8117577b",
-488 => x"762e0981",
-489 => x"06e93880",
-490 => x"7834767e",
-491 => x"ff720557",
-492 => x"58560b0b",
-493 => x"758024fe",
-494 => x"e538fdf8",
-495 => x"398a7536",
-496 => x"0b0b80d7",
-497 => x"b005540b",
-498 => x"0b733376",
-499 => x"70810558",
-500 => x"348a7535",
-501 => x"550b0b74",
-502 => x"802effad",
-503 => x"388a7536",
-504 => x"0b0b80d7",
-505 => x"b005540b",
-506 => x"0b733376",
-507 => x"70810558",
-508 => x"348a7535",
-509 => x"550b0b74",
-510 => x"c438ff8d",
-511 => x"3974520b",
-512 => x"0b76530b",
-513 => x"0bb53dff",
-514 => x"b8055192",
-515 => x"dc3fa43d",
-516 => x"0856fedd",
-517 => x"397080c1",
-518 => x"0b81c48c",
-519 => x"34800b81",
-520 => x"c5e40c70",
-521 => x"800c5004",
-522 => x"7070800b",
-523 => x"81c48c33",
-524 => x"520b0b52",
-525 => x"0b0b0b70",
-526 => x"80c12e98",
-527 => x"387181c5",
-528 => x"e4080781",
-529 => x"c5e40c80",
-530 => x"c20b81c4",
-531 => x"90347080",
-532 => x"0c505004",
-533 => x"810b81c5",
-534 => x"e4080781",
-535 => x"c5e40c80",
-536 => x"c20b81c4",
-537 => x"90347080",
-538 => x"0c505004",
-539 => x"70707070",
-540 => x"7570088a",
-541 => x"05530b0b",
-542 => x"530b0b81",
-543 => x"c48c3351",
-544 => x"0b0b7080",
-545 => x"c12e8c38",
-546 => x"73f13870",
-547 => x"800c5050",
-548 => x"505004ff",
-549 => x"72057081",
-550 => x"c4880831",
-551 => x"740c800c",
-552 => x"50505050",
-553 => x"04fc3d0d",
-554 => x"81c49408",
-555 => x"550b0b74",
-556 => x"802e8e38",
-557 => x"76750871",
-558 => x"0c81c494",
-559 => x"0856540b",
-560 => x"0b8c1553",
-561 => x"0b0b81c4",
-562 => x"8808520b",
-563 => x"0b8a518e",
-564 => x"e93f7380",
-565 => x"0c863d0d",
-566 => x"04fb3d0d",
-567 => x"77700856",
-568 => x"56b0530b",
-569 => x"0b81c494",
-570 => x"08520b0b",
-571 => x"7451a1ff",
-572 => x"3f850b8c",
-573 => x"170c850b",
-574 => x"8c160c75",
-575 => x"08750c81",
-576 => x"c4940854",
-577 => x"0b0b7380",
-578 => x"2e8c3873",
-579 => x"08750c81",
-580 => x"c4940854",
-581 => x"0b0b8c14",
-582 => x"530b0b81",
-583 => x"c4880852",
-584 => x"0b0b8a51",
-585 => x"8e943f84",
-586 => x"1508b738",
-587 => x"860b8c16",
-588 => x"0c881552",
-589 => x"0b0b8816",
-590 => x"08518d96",
-591 => x"3f81c494",
-592 => x"08700876",
-593 => x"0c540b0b",
-594 => x"8c157054",
-595 => x"0b0b540b",
-596 => x"0b8a520b",
-597 => x"0b730851",
-598 => x"8de03f73",
-599 => x"800c873d",
-600 => x"0d047508",
-601 => x"540b0bb0",
-602 => x"530b0b73",
-603 => x"520b0b75",
-604 => x"51a0fc3f",
-605 => x"73800c87",
-606 => x"3d0d04e1",
-607 => x"3d0db051",
-608 => x"93833f80",
-609 => x"0881c484",
-610 => x"0cb05192",
-611 => x"f83f8008",
-612 => x"81c4940c",
-613 => x"81c48408",
-614 => x"80080c80",
-615 => x"0b800884",
-616 => x"050c820b",
-617 => x"80088805",
-618 => x"0ca80b80",
-619 => x"088c050c",
-620 => x"9f530b0b",
-621 => x"0b0b80d7",
-622 => x"bc520b0b",
-623 => x"80089005",
-624 => x"51a0ac3f",
-625 => x"993d5c9f",
-626 => x"530b0b0b",
-627 => x"0b80d7dc",
-628 => x"520b0b7b",
-629 => x"51a0983f",
-630 => x"8a0b8182",
-631 => x"cc0c0b0b",
-632 => x"80e28051",
-633 => x"f8ea3f0b",
-634 => x"0b80d7fc",
-635 => x"51f8e13f",
-636 => x"0b0b80e2",
-637 => x"8051f8d8",
-638 => x"3f80e5e0",
-639 => x"08802e8a",
-640 => x"a1380b0b",
-641 => x"80d8ac51",
-642 => x"f8c63f0b",
-643 => x"0b80e280",
-644 => x"51f8bd3f",
-645 => x"80e5dc08",
-646 => x"520b0b0b",
-647 => x"0b80d8d8",
-648 => x"51f8ad3f",
-649 => x"8051b488",
-650 => x"3f800880",
-651 => x"f5ec0c81",
-652 => x"0b923d5c",
-653 => x"58800b80",
-654 => x"e5dc0825",
-655 => x"8383388e",
-656 => x"3d5d80c1",
-657 => x"0b81c48c",
-658 => x"34810b81",
-659 => x"c5e40c80",
-660 => x"c20b81c4",
-661 => x"9034825e",
-662 => x"835a9f53",
-663 => x"0b0b0b0b",
-664 => x"80d98852",
-665 => x"0b0b7a51",
-666 => x"9f853f81",
-667 => x"5f807b53",
-668 => x"0b0b7c52",
-669 => x"0b0b558c",
-670 => x"f43f8008",
-671 => x"752e0981",
-672 => x"06833881",
-673 => x"550b0b74",
-674 => x"81c5e40c",
-675 => x"7d705755",
-676 => x"0b0b7483",
-677 => x"25a63874",
-678 => x"101015fd",
-679 => x"0540a13d",
-680 => x"ffbc0553",
-681 => x"0b0b8352",
-682 => x"0b0b7551",
-683 => x"8b8c3f81",
-684 => x"1e705f70",
-685 => x"5755830b",
-686 => x"7524dc38",
-687 => x"7f540b0b",
-688 => x"74530b0b",
-689 => x"80f5f052",
-690 => x"0b0b81c4",
-691 => x"9c518af6",
-692 => x"3f81c494",
-693 => x"08700857",
-694 => x"57b0530b",
-695 => x"0b76520b",
-696 => x"0b75519e",
-697 => x"8a3f850b",
-698 => x"8c180c85",
-699 => x"0b8c170c",
-700 => x"7608760c",
-701 => x"81c49408",
-702 => x"550b0b74",
-703 => x"802e8a38",
-704 => x"7408760c",
-705 => x"81c49408",
-706 => x"558c1553",
-707 => x"0b0b81c4",
-708 => x"8808520b",
-709 => x"0b8a518a",
-710 => x"a13f8416",
-711 => x"08888c38",
-712 => x"860b8c17",
-713 => x"0c881652",
-714 => x"0b0b8817",
-715 => x"085189a2",
-716 => x"3f81c494",
-717 => x"08700877",
-718 => x"0c578c16",
-719 => x"70540b0b",
-720 => x"558a520b",
-721 => x"0b740851",
-722 => x"89f03f80",
-723 => x"c10b81c4",
-724 => x"90335656",
-725 => x"0b0b7575",
-726 => x"26a83880",
-727 => x"c3520b0b",
-728 => x"75518adb",
-729 => x"3f80087f",
-730 => x"2e87ff38",
-731 => x"81167081",
-732 => x"ff0681c4",
-733 => x"9033520b",
-734 => x"0b57550b",
-735 => x"0b747627",
-736 => x"da38797e",
-737 => x"29607072",
-738 => x"35704172",
-739 => x"72317087",
-740 => x"2972315e",
-741 => x"530b0b8a",
-742 => x"0581c48c",
-743 => x"3381c488",
-744 => x"085a520b",
-745 => x"0b520b0b",
-746 => x"58550b76",
-747 => x"80c12e87",
-748 => x"f03878f6",
-749 => x"38811858",
-750 => x"80e5dc08",
-751 => x"7825fd82",
-752 => x"388051b0",
-753 => x"eb3f8008",
-754 => x"81c4800c",
-755 => x"0b0b80d9",
-756 => x"a851f4fc",
-757 => x"3f0b0b80",
-758 => x"e28051f4",
-759 => x"f33f0b0b",
-760 => x"80d9b851",
-761 => x"f4ea3f0b",
-762 => x"0b80e280",
-763 => x"51f4e13f",
-764 => x"81c48808",
-765 => x"520b0b0b",
-766 => x"0b80d9f0",
-767 => x"51f4d13f",
-768 => x"85520b0b",
-769 => x"0b0b80da",
-770 => x"8c51f4c4",
-771 => x"3f81c5e4",
-772 => x"08520b0b",
-773 => x"0b0b80da",
-774 => x"a851f4b4",
-775 => x"3f81520b",
-776 => x"0b0b0b80",
-777 => x"da8c51f4",
-778 => x"a73f81c4",
-779 => x"8c33520b",
-780 => x"0b0b0b80",
-781 => x"dac451f4",
-782 => x"973f80c1",
-783 => x"520b0b0b",
-784 => x"0b80dae0",
-785 => x"51f4893f",
-786 => x"81c49033",
-787 => x"520b0b0b",
-788 => x"0b80dafc",
-789 => x"51f3f93f",
-790 => x"80c2520b",
-791 => x"0b0b0b80",
-792 => x"dae051f3",
-793 => x"eb3f81c4",
-794 => x"bc08520b",
-795 => x"0b0b0b80",
-796 => x"db9851f3",
-797 => x"db3f8752",
-798 => x"0b0b0b0b",
-799 => x"80da8c51",
-800 => x"f3ce3f81",
-801 => x"82cc0852",
-802 => x"0b0b0b0b",
-803 => x"80dbb451",
-804 => x"f3be3f0b",
-805 => x"0b80dbd0",
-806 => x"51f3b53f",
-807 => x"0b0b80db",
-808 => x"fc51f3ac",
-809 => x"3f81c494",
-810 => x"08700853",
-811 => x"0b0b560b",
-812 => x"0b80dc88",
-813 => x"51f3993f",
-814 => x"0b0b80dc",
-815 => x"a451f390",
-816 => x"3f81c494",
-817 => x"08847105",
-818 => x"08530b0b",
-819 => x"5d0b0b80",
-820 => x"dcd851f2",
-821 => x"fb3f8052",
-822 => x"0b0b0b0b",
-823 => x"80da8c51",
-824 => x"f2ee3f81",
-825 => x"c4940888",
-826 => x"71050853",
-827 => x"0b0b580b",
-828 => x"0b80dcf4",
-829 => x"51f2d93f",
-830 => x"82520b0b",
-831 => x"0b0b80da",
-832 => x"8c51f2cc",
-833 => x"3f81c494",
-834 => x"088c7105",
-835 => x"08530b0b",
-836 => x"590b0b80",
-837 => x"dd9051f2",
-838 => x"b73f9152",
-839 => x"0b0b0b0b",
-840 => x"80da8c51",
-841 => x"f2aa3f81",
-842 => x"c4940890",
-843 => x"05520b0b",
-844 => x"0b0b80dd",
-845 => x"ac51f298",
-846 => x"3f0b0b80",
-847 => x"ddc851f2",
-848 => x"8f3f0b0b",
-849 => x"80de8051",
-850 => x"f2863f81",
-851 => x"c4840870",
-852 => x"08530b0b",
-853 => x"570b0b80",
-854 => x"dc8851f1",
-855 => x"f33f0b0b",
-856 => x"80de9451",
-857 => x"f1ea3f81",
-858 => x"c4840884",
-859 => x"71050853",
-860 => x"0b0b550b",
-861 => x"0b80dcd8",
-862 => x"51f1d53f",
-863 => x"80520b0b",
-864 => x"0b0b80da",
-865 => x"8c51f1c8",
-866 => x"3f81c484",
-867 => x"08887105",
-868 => x"08530b0b",
-869 => x"560b0b80",
-870 => x"dcf451f1",
-871 => x"b33f8152",
-872 => x"0b0b0b0b",
-873 => x"80da8c51",
-874 => x"f1a63f81",
-875 => x"c484088c",
-876 => x"71050853",
-877 => x"0b0b5d0b",
-878 => x"0b80dd90",
-879 => x"51f1913f",
-880 => x"92520b0b",
-881 => x"0b0b80da",
-882 => x"8c51f184",
-883 => x"3f81c484",
-884 => x"08900552",
-885 => x"0b0b0b0b",
-886 => x"80ddac51",
-887 => x"f0f23f0b",
-888 => x"0b80ddc8",
-889 => x"51f0e93f",
-890 => x"7d520b0b",
-891 => x"0b0b80de",
-892 => x"d451f0dc",
-893 => x"3f85520b",
-894 => x"0b0b0b80",
-895 => x"da8c51f0",
-896 => x"cf3f7952",
-897 => x"0b0b0b0b",
-898 => x"80def051",
-899 => x"f0c23f8d",
-900 => x"520b0b0b",
-901 => x"0b80da8c",
-902 => x"51f0b53f",
-903 => x"7f520b0b",
-904 => x"0b0b80df",
-905 => x"8c51f0a8",
-906 => x"3f87520b",
-907 => x"0b0b0b80",
-908 => x"da8c51f0",
-909 => x"9b3f7e52",
-910 => x"0b0b0b0b",
-911 => x"80dfa851",
-912 => x"f08e3f81",
-913 => x"520b0b0b",
-914 => x"0b80da8c",
-915 => x"51f0813f",
-916 => x"7b520b0b",
-917 => x"0b0b80df",
-918 => x"c451eff4",
-919 => x"3f0b0b80",
-920 => x"dfe051ef",
-921 => x"eb3f7a52",
-922 => x"0b0b0b0b",
-923 => x"80e09851",
-924 => x"efde3f0b",
-925 => x"0b80e0b4",
-926 => x"51efd53f",
-927 => x"0b0b80e2",
-928 => x"8051efcc",
-929 => x"3f81c480",
-930 => x"0880f5ec",
-931 => x"08317080",
-932 => x"f5e80c52",
-933 => x"0b0b0b0b",
-934 => x"80e0ec51",
-935 => x"efb23f80",
-936 => x"f5e80856",
-937 => x"810b7625",
-938 => x"819d3880",
-939 => x"e5dc0870",
-940 => x"77bd84c0",
-941 => x"293580f5",
-942 => x"e00c7671",
-943 => x"3580f5e4",
-944 => x"0c768ddd",
-945 => x"297187e8",
-946 => x"293581c4",
-947 => x"980c5b0b",
-948 => x"0b80e0fc",
-949 => x"51eef93f",
-950 => x"80f5e008",
-951 => x"520b0b0b",
-952 => x"0b80e1ac",
-953 => x"51eee93f",
-954 => x"0b0b80e1",
-955 => x"b451eee0",
-956 => x"3f80f5e4",
-957 => x"08520b0b",
-958 => x"0b0b80e1",
-959 => x"ac51eed0",
-960 => x"3f81c498",
-961 => x"08520b0b",
-962 => x"0b0b80e1",
-963 => x"e451eec0",
-964 => x"3f0b0b80",
-965 => x"e28051ee",
-966 => x"b73f800b",
-967 => x"800ca13d",
-968 => x"0d040b0b",
-969 => x"80e28451",
-970 => x"f5de3976",
-971 => x"0856b053",
-972 => x"0b0b7552",
-973 => x"0b0b7651",
-974 => x"95b53f80",
-975 => x"c10b81c4",
-976 => x"90335656",
-977 => x"f88e390b",
-978 => x"0b80e2b4",
-979 => x"51ee813f",
-980 => x"0b0b80e2",
-981 => x"ec51edf8",
-982 => x"3f0b0b80",
-983 => x"e28051ed",
-984 => x"ef3f800b",
-985 => x"800ca13d",
-986 => x"0d04a13d",
-987 => x"ffb80552",
-988 => x"0b0b8051",
-989 => x"80dc3f9f",
-990 => x"530b0b0b",
-991 => x"0b80e38c",
-992 => x"520b0b7a",
-993 => x"5194e83f",
-994 => x"777881c4",
-995 => x"880c8117",
-996 => x"7081ff06",
-997 => x"81c49033",
-998 => x"520b0b58",
-999 => x"565af7db",
-1000 => x"39ff1570",
-1001 => x"77317e0c",
-1002 => x"59800b81",
-1003 => x"19595980",
-1004 => x"e5dc0878",
-1005 => x"25f58b38",
-1006 => x"f8873970",
-1007 => x"70738232",
-1008 => x"70307072",
-1009 => x"07802580",
-1010 => x"0c520b0b",
-1011 => x"520b0b50",
-1012 => x"50047070",
-1013 => x"70747671",
-1014 => x"530b0b54",
-1015 => x"0b0b520b",
-1016 => x"0b0b0b71",
-1017 => x"822e8338",
-1018 => x"83517181",
-1019 => x"2e9a3881",
-1020 => x"72269f38",
-1021 => x"71822eb8",
-1022 => x"3871842e",
-1023 => x"a9387073",
-1024 => x"0c70800c",
-1025 => x"50505004",
-1026 => x"80e40b81",
-1027 => x"c4880825",
-1028 => x"8b388073",
-1029 => x"0c70800c",
-1030 => x"50505004",
-1031 => x"83730c70",
-1032 => x"800c5050",
-1033 => x"50048273",
-1034 => x"0c70800c",
-1035 => x"50505004",
-1036 => x"81730c70",
-1037 => x"800c5050",
-1038 => x"50047074",
-1039 => x"74148205",
-1040 => x"710c800c",
-1041 => x"5004f73d",
-1042 => x"0d7b7d7f",
-1043 => x"61857205",
-1044 => x"70822b75",
-1045 => x"71057074",
-1046 => x"71708405",
-1047 => x"530b0b0c",
-1048 => x"5a5a5d5b",
-1049 => x"760c7980",
-1050 => x"f8180c79",
-1051 => x"86720552",
-1052 => x"0b0b5758",
-1053 => x"5a5a7676",
-1054 => x"249e3876",
-1055 => x"b329822b",
-1056 => x"79710551",
-1057 => x"530b0b76",
-1058 => x"73708405",
-1059 => x"550c8114",
-1060 => x"540b0b75",
-1061 => x"7425f038",
-1062 => x"7681cc29",
-1063 => x"19fc7105",
-1064 => x"088105fc",
-1065 => x"72050c7a",
-1066 => x"1970089f",
-1067 => x"a073050c",
-1068 => x"5856850b",
-1069 => x"81c4880c",
-1070 => x"75800c8b",
-1071 => x"3d0d0470",
-1072 => x"70700293",
-1073 => x"05335180",
-1074 => x"02840597",
-1075 => x"0533540b",
-1076 => x"0b520b0b",
-1077 => x"70732e88",
-1078 => x"3871800c",
-1079 => x"50505004",
-1080 => x"7081c48c",
-1081 => x"34810b80",
-1082 => x"0c505050",
-1083 => x"04f83d0d",
-1084 => x"7a7c5956",
-1085 => x"820b8319",
-1086 => x"55550b0b",
-1087 => x"74167033",
-1088 => x"75335b51",
-1089 => x"530b0b72",
-1090 => x"792e80cf",
-1091 => x"3880c10b",
-1092 => x"81168116",
-1093 => x"56565782",
-1094 => x"7525df38",
-1095 => x"ffa91770",
-1096 => x"81ff0655",
-1097 => x"590b7382",
-1098 => x"26833887",
-1099 => x"5581530b",
-1100 => x"0b7680d2",
-1101 => x"2e9e3877",
-1102 => x"520b0b75",
-1103 => x"5193b53f",
-1104 => x"80530b0b",
-1105 => x"72800825",
-1106 => x"8b388715",
-1107 => x"81c4880c",
-1108 => x"81530b0b",
-1109 => x"72800c8a",
-1110 => x"3d0d0472",
-1111 => x"81c48c34",
-1112 => x"827525ff",
-1113 => x"9538ffb4",
-1114 => x"39f93d0d",
-1115 => x"797b7d54",
-1116 => x"0b0b5872",
-1117 => x"59773079",
-1118 => x"70307072",
-1119 => x"079f2a73",
-1120 => x"71315a52",
-1121 => x"0b0b5977",
-1122 => x"0b795673",
-1123 => x"0c530b0b",
-1124 => x"73847305",
-1125 => x"0c540b0b",
-1126 => x"800c893d",
-1127 => x"0d04f93d",
-1128 => x"0d797b7d",
-1129 => x"7f56540b",
-1130 => x"0b520b0b",
-1131 => x"540b0b72",
-1132 => x"802ea638",
-1133 => x"70577158",
-1134 => x"a0733152",
-1135 => x"0b0b800b",
-1136 => x"7225a638",
-1137 => x"7770742b",
-1138 => x"5770732a",
-1139 => x"78752b07",
-1140 => x"56510b74",
-1141 => x"76530b0b",
-1142 => x"510b0b70",
-1143 => x"740c7184",
-1144 => x"150c7380",
-1145 => x"0c893d0d",
-1146 => x"04805677",
-1147 => x"72302b55",
-1148 => x"0b0b7476",
-1149 => x"530b0b51",
-1150 => x"e039fb3d",
-1151 => x"0d777955",
-1152 => x"5580560b",
-1153 => x"0b757524",
-1154 => x"b5388074",
-1155 => x"24a53880",
-1156 => x"530b0b73",
-1157 => x"520b0b74",
-1158 => x"5180f33f",
-1159 => x"8008540b",
-1160 => x"0b75802e",
-1161 => x"87388008",
-1162 => x"30540b0b",
-1163 => x"73800c87",
-1164 => x"3d0d0473",
-1165 => x"30768132",
-1166 => x"57540b0b",
-1167 => x"d2397430",
-1168 => x"55815673",
-1169 => x"8025c838",
-1170 => x"ea39fa3d",
-1171 => x"0d787a57",
-1172 => x"5580570b",
-1173 => x"0b767524",
-1174 => x"ae38759f",
-1175 => x"2c540b0b",
-1176 => x"81530b0b",
-1177 => x"75743274",
-1178 => x"31520b0b",
-1179 => x"74519f3f",
-1180 => x"8008540b",
-1181 => x"0b76802e",
-1182 => x"87388008",
-1183 => x"30540b0b",
-1184 => x"73800c88",
-1185 => x"3d0d0474",
-1186 => x"30558157",
-1187 => x"cd39fc3d",
-1188 => x"0d767853",
-1189 => x"0b0b540b",
-1190 => x"0b81530b",
-1191 => x"0b807473",
-1192 => x"26520b0b",
-1193 => x"5572802e",
-1194 => x"9e387080",
-1195 => x"2eb73880",
-1196 => x"7224b238",
-1197 => x"71107310",
-1198 => x"75722653",
-1199 => x"0b0b540b",
-1200 => x"0b520b0b",
-1201 => x"72e43873",
-1202 => x"51788338",
-1203 => x"74510b0b",
-1204 => x"70800c86",
-1205 => x"3d0d0472",
-1206 => x"0a100a72",
-1207 => x"0a100a53",
-1208 => x"0b0b530b",
-1209 => x"0b72802e",
-1210 => x"de387174",
-1211 => x"26e93873",
-1212 => x"72317574",
-1213 => x"07740a10",
-1214 => x"0a740a10",
-1215 => x"0a555556",
-1216 => x"540b0be1",
-1217 => x"39707073",
-1218 => x"520b0b80",
-1219 => x"eea80851",
-1220 => x"953f5050",
-1221 => x"04707073",
-1222 => x"520b0b80",
-1223 => x"eea80851",
-1224 => x"92dc3f50",
-1225 => x"5004f43d",
-1226 => x"0d7e608b",
-1227 => x"710570f8",
-1228 => x"065b5555",
-1229 => x"5d729626",
-1230 => x"83389058",
-1231 => x"800b7824",
-1232 => x"74792607",
-1233 => x"5580540b",
-1234 => x"0b74742e",
-1235 => x"09810680",
-1236 => x"d5387c51",
-1237 => x"8edf3f77",
-1238 => x"83f72680",
-1239 => x"d0387783",
-1240 => x"2a701010",
-1241 => x"1080e6a0",
-1242 => x"058c7105",
-1243 => x"08585854",
-1244 => x"0b0b7577",
-1245 => x"2e828a38",
-1246 => x"841608fc",
-1247 => x"068c1708",
-1248 => x"88180871",
-1249 => x"8c72050c",
-1250 => x"8872050c",
-1251 => x"5b760584",
-1252 => x"71050881",
-1253 => x"07847205",
-1254 => x"0c530b0b",
-1255 => x"7c518e96",
-1256 => x"3f881654",
-1257 => x"0b0b7380",
-1258 => x"0c8e3d0d",
-1259 => x"0477892a",
-1260 => x"78832a58",
-1261 => x"540b0b73",
-1262 => x"802ebf38",
-1263 => x"77862ab8",
-1264 => x"05578474",
-1265 => x"27b43880",
-1266 => x"db145794",
-1267 => x"7427ab38",
-1268 => x"778c2a80",
-1269 => x"ee055780",
-1270 => x"d474279e",
-1271 => x"38778f2a",
-1272 => x"80f70557",
-1273 => x"82d47427",
-1274 => x"91387792",
-1275 => x"2a80fc05",
-1276 => x"578ad474",
-1277 => x"27843880",
-1278 => x"fe570b0b",
-1279 => x"76101010",
-1280 => x"80e6a005",
-1281 => x"8c710508",
-1282 => x"56530b0b",
-1283 => x"74732ea6",
-1284 => x"38841508",
-1285 => x"fc067079",
-1286 => x"3155560b",
-1287 => x"738f2489",
-1288 => x"d2387380",
-1289 => x"2589d438",
-1290 => x"8c150855",
-1291 => x"0b0b7473",
-1292 => x"2e098106",
-1293 => x"dc388117",
-1294 => x"5980e6b0",
-1295 => x"08560b0b",
-1296 => x"7580e6a8",
-1297 => x"2e82f938",
-1298 => x"841608fc",
-1299 => x"06707931",
-1300 => x"55550b73",
-1301 => x"8f2480c2",
-1302 => x"3880e6a8",
-1303 => x"0b80e6b4",
-1304 => x"0c80e6a8",
-1305 => x"0b80e6b0",
-1306 => x"0c807424",
-1307 => x"80e83874",
-1308 => x"16847105",
-1309 => x"08810784",
-1310 => x"72050c53",
-1311 => x"0b0bfe9c",
-1312 => x"3988168c",
-1313 => x"71050857",
-1314 => x"590b750b",
-1315 => x"792e0981",
-1316 => x"06fde538",
-1317 => x"821459ff",
-1318 => x"a0397716",
-1319 => x"78810784",
-1320 => x"180c7080",
-1321 => x"e6b40c70",
-1322 => x"80e6b00c",
-1323 => x"80e6a80b",
-1324 => x"8c72050c",
-1325 => x"8c710508",
-1326 => x"8872050c",
-1327 => x"74810784",
-1328 => x"72050c74",
-1329 => x"0574710c",
-1330 => x"5b7c518b",
-1331 => x"e93f8816",
-1332 => x"540b0bfd",
-1333 => x"d13983ff",
-1334 => x"752783c1",
-1335 => x"3874892a",
-1336 => x"75832a54",
-1337 => x"0b0b540b",
-1338 => x"0b73802e",
-1339 => x"80cb3874",
-1340 => x"862ab805",
-1341 => x"530b0b84",
-1342 => x"7427be38",
-1343 => x"80db1453",
-1344 => x"0b0b9474",
-1345 => x"27b33874",
-1346 => x"8c2a80ee",
-1347 => x"05530b0b",
-1348 => x"80d47427",
-1349 => x"a438748f",
-1350 => x"2a80f705",
-1351 => x"530b0b82",
-1352 => x"d4742795",
-1353 => x"3874922a",
-1354 => x"80fc0553",
-1355 => x"0b0b8ad4",
-1356 => x"74278638",
-1357 => x"80fe530b",
-1358 => x"0b721010",
-1359 => x"1080e6a0",
-1360 => x"05887105",
-1361 => x"0855570b",
-1362 => x"730b772e",
-1363 => x"86cd3884",
-1364 => x"1408fc06",
-1365 => x"5b740b7b",
-1366 => x"278f3888",
-1367 => x"1408540b",
-1368 => x"0b73772e",
-1369 => x"098106e7",
-1370 => x"388c1408",
-1371 => x"80e6a00b",
-1372 => x"84050871",
-1373 => x"8c190c75",
-1374 => x"88190c77",
-1375 => x"8873050c",
-1376 => x"5c57758c",
-1377 => x"150c7853",
-1378 => x"0b0b8079",
-1379 => x"2483be38",
-1380 => x"72822c81",
-1381 => x"712b5656",
-1382 => x"0b747b26",
-1383 => x"80d1387a",
-1384 => x"7506570b",
-1385 => x"0b7682bc",
-1386 => x"3878fc06",
-1387 => x"84055974",
-1388 => x"10707c06",
-1389 => x"55550b73",
-1390 => x"82aa3884",
-1391 => x"1959f039",
-1392 => x"80e6a00b",
-1393 => x"84050879",
-1394 => x"540b0b5b",
-1395 => x"788025c0",
-1396 => x"3882fa39",
-1397 => x"74097b06",
-1398 => x"7080e6a0",
-1399 => x"0b84050c",
-1400 => x"5b741055",
-1401 => x"0b0b747b",
-1402 => x"26853874",
-1403 => x"85f33880",
-1404 => x"e6a00b88",
-1405 => x"05087084",
-1406 => x"720508fc",
-1407 => x"06707b31",
-1408 => x"7b72268f",
-1409 => x"7225075d",
-1410 => x"575c5c55",
-1411 => x"78802e80",
-1412 => x"e3387915",
-1413 => x"80e69808",
-1414 => x"19907105",
-1415 => x"59540b0b",
-1416 => x"5680e694",
-1417 => x"08ff2e89",
-1418 => x"38a08f73",
-1419 => x"05e08006",
-1420 => x"570b0b76",
-1421 => x"520b0b7c",
-1422 => x"5188fc3f",
-1423 => x"8008540b",
-1424 => x"0b8008ff",
-1425 => x"2e903880",
-1426 => x"08762782",
-1427 => x"c2387480",
-1428 => x"e6a02e82",
-1429 => x"ba3880e6",
-1430 => x"a00b8805",
-1431 => x"08558415",
-1432 => x"08fc0670",
-1433 => x"79317972",
-1434 => x"268f7225",
-1435 => x"075d555a",
-1436 => x"7a849b38",
-1437 => x"77810784",
-1438 => x"160c7715",
-1439 => x"7080e6a0",
-1440 => x"0b88050c",
-1441 => x"74810784",
-1442 => x"72050c56",
-1443 => x"7c5188a6",
-1444 => x"3f881554",
-1445 => x"0b0b7380",
-1446 => x"0c8e3d0d",
-1447 => x"0474832a",
-1448 => x"70540b0b",
-1449 => x"540b0b80",
-1450 => x"742481a9",
-1451 => x"3872822c",
-1452 => x"81712b80",
-1453 => x"e6a40807",
-1454 => x"7080e6a0",
-1455 => x"0b84050c",
-1456 => x"75101010",
-1457 => x"80e6a005",
-1458 => x"88710508",
-1459 => x"718c1b0c",
-1460 => x"70881b0c",
-1461 => x"79887305",
-1462 => x"0c57555c",
-1463 => x"55758c15",
-1464 => x"0cfda339",
-1465 => x"78791010",
-1466 => x"1080e6a0",
-1467 => x"0570565b",
-1468 => x"5c8c1408",
-1469 => x"560b0b75",
-1470 => x"742ea738",
-1471 => x"841608fc",
-1472 => x"06707931",
-1473 => x"58530b0b",
-1474 => x"768f2484",
-1475 => x"98387680",
-1476 => x"2584de38",
-1477 => x"8c160856",
-1478 => x"0b0b7574",
-1479 => x"2e098106",
-1480 => x"db388814",
-1481 => x"811a7083",
-1482 => x"06555a54",
-1483 => x"0b0b72c1",
-1484 => x"387b8306",
-1485 => x"560b0b75",
-1486 => x"802efd98",
-1487 => x"38ff1cf8",
-1488 => x"1b5b5c88",
-1489 => x"1a087a2e",
-1490 => x"e838fd95",
-1491 => x"39831953",
-1492 => x"0b0bfcbc",
-1493 => x"39831470",
-1494 => x"822c8171",
-1495 => x"2b80e6a4",
-1496 => x"08077080",
-1497 => x"e6a00b84",
-1498 => x"050c7610",
-1499 => x"101080e6",
-1500 => x"a0058871",
-1501 => x"0508718c",
-1502 => x"1c0c7088",
-1503 => x"1c0c7a88",
-1504 => x"73050c58",
-1505 => x"530b0b5d",
-1506 => x"56530b0b",
-1507 => x"fecf3980",
-1508 => x"e5e40817",
-1509 => x"59800876",
-1510 => x"2e819438",
-1511 => x"80e69408",
-1512 => x"ff2e84b7",
-1513 => x"38737631",
-1514 => x"1980e5e4",
-1515 => x"0c738706",
-1516 => x"7056530b",
-1517 => x"0b72802e",
-1518 => x"88388873",
-1519 => x"31701555",
-1520 => x"5576149f",
-1521 => x"ff06a080",
-1522 => x"71311670",
-1523 => x"540b0b7e",
-1524 => x"530b0b51",
-1525 => x"530b0b85",
-1526 => x"de3f8008",
-1527 => x"568008ff",
-1528 => x"2e81a238",
-1529 => x"80e5e408",
-1530 => x"73057080",
-1531 => x"e5e40c74",
-1532 => x"7580e6a0",
-1533 => x"0b88050c",
-1534 => x"77763115",
-1535 => x"81075556",
-1536 => x"597a80e6",
-1537 => x"a02e83e0",
-1538 => x"38798f26",
-1539 => x"838d3881",
-1540 => x"0b84150c",
-1541 => x"841508fc",
-1542 => x"06707931",
-1543 => x"7972268f",
-1544 => x"7225075d",
-1545 => x"555a7a80",
-1546 => x"2efcc938",
-1547 => x"80e03980",
-1548 => x"089fff06",
-1549 => x"550b0b74",
-1550 => x"fee23878",
-1551 => x"80e5e40c",
-1552 => x"80e6a00b",
-1553 => x"8805087a",
-1554 => x"18810784",
-1555 => x"72050c55",
-1556 => x"80e69008",
-1557 => x"79278638",
-1558 => x"7880e690",
-1559 => x"0c80e68c",
-1560 => x"087927fb",
-1561 => x"f9387880",
-1562 => x"e68c0c84",
-1563 => x"1508fc06",
-1564 => x"70793179",
-1565 => x"72268f72",
-1566 => x"25075d55",
-1567 => x"5a7a802e",
-1568 => x"fbf2388a",
-1569 => x"39807457",
-1570 => x"530b0bfe",
-1571 => x"d7397c51",
-1572 => x"84a43f80",
-1573 => x"0b800c8e",
-1574 => x"3d0d0480",
-1575 => x"7324a538",
-1576 => x"72822c81",
-1577 => x"712b80e6",
-1578 => x"a4080770",
-1579 => x"80e6a00b",
-1580 => x"84050c5c",
-1581 => x"5a768c17",
-1582 => x"0c738817",
-1583 => x"0c758818",
-1584 => x"0cf9bf39",
-1585 => x"83730570",
-1586 => x"822c8171",
-1587 => x"2b80e6a4",
-1588 => x"08077080",
-1589 => x"e6a00b84",
-1590 => x"050c5d5b",
-1591 => x"530b0bd5",
-1592 => x"397a7506",
-1593 => x"5c0b0b7b",
-1594 => x"fbfa3884",
-1595 => x"19751056",
-1596 => x"59ef39ff",
-1597 => x"17810559",
-1598 => x"f6bf398c",
-1599 => x"15088816",
-1600 => x"08718c72",
-1601 => x"050c8872",
-1602 => x"050c5975",
-1603 => x"15847105",
-1604 => x"08810784",
-1605 => x"72050c58",
-1606 => x"7c51839a",
-1607 => x"3f881554",
-1608 => x"0b0bfaf2",
-1609 => x"39771678",
-1610 => x"81078418",
-1611 => x"0c8c1708",
-1612 => x"88180871",
-1613 => x"8c72050c",
-1614 => x"8872050c",
-1615 => x"5c7080e6",
-1616 => x"b40c7080",
-1617 => x"e6b00c80",
-1618 => x"e6a80b8c",
-1619 => x"72050c8c",
-1620 => x"71050888",
-1621 => x"72050c77",
-1622 => x"81078472",
-1623 => x"050c7705",
-1624 => x"77710c55",
-1625 => x"7c5182ce",
-1626 => x"3f881654",
-1627 => x"0b0bf4b6",
-1628 => x"39721684",
-1629 => x"71050881",
-1630 => x"07847205",
-1631 => x"0c588c16",
-1632 => x"08881708",
-1633 => x"718c7205",
-1634 => x"0c887205",
-1635 => x"0c577c51",
-1636 => x"82a43f88",
-1637 => x"16540b0b",
-1638 => x"f48c3972",
-1639 => x"84150cf4",
-1640 => x"1af80670",
-1641 => x"841d0881",
-1642 => x"0607841d",
-1643 => x"0c701c55",
-1644 => x"56850b84",
-1645 => x"150c850b",
-1646 => x"88150c8f",
-1647 => x"7627fd90",
-1648 => x"38881b52",
-1649 => x"0b0b7c51",
-1650 => x"85b43f80",
-1651 => x"e6a00b88",
-1652 => x"050880e5",
-1653 => x"e4085a55",
-1654 => x"fcf63978",
-1655 => x"80e5e40c",
-1656 => x"7380e694",
-1657 => x"0cfbc639",
-1658 => x"7284150c",
-1659 => x"fce239fb",
-1660 => x"3d0d7770",
-1661 => x"7a7c5855",
-1662 => x"530b0b56",
-1663 => x"8f752781",
-1664 => x"85387276",
-1665 => x"07830651",
-1666 => x"0b0b7080",
-1667 => x"f9387573",
-1668 => x"520b0b54",
-1669 => x"0b0b7070",
-1670 => x"8405520b",
-1671 => x"0b087470",
-1672 => x"8405560c",
-1673 => x"73717084",
-1674 => x"05530b0b",
-1675 => x"08717084",
-1676 => x"05530b0b",
-1677 => x"0c717084",
-1678 => x"05530b0b",
-1679 => x"08717084",
-1680 => x"05530b0b",
-1681 => x"0c717084",
-1682 => x"05530b0b",
-1683 => x"08717084",
-1684 => x"05530b0b",
-1685 => x"0cf01656",
-1686 => x"540b0b74",
-1687 => x"8f26ffb6",
-1688 => x"38837527",
-1689 => x"99387070",
-1690 => x"8405520b",
-1691 => x"0b087470",
-1692 => x"8405560c",
-1693 => x"fc15550b",
-1694 => x"0b748326",
-1695 => x"e9387371",
-1696 => x"540b0b52",
-1697 => x"0b0bff15",
-1698 => x"510b0b70",
-1699 => x"ff2e9f38",
-1700 => x"72708105",
-1701 => x"540b0b33",
-1702 => x"72708105",
-1703 => x"540b0b34",
-1704 => x"ff710551",
-1705 => x"0b0b70ff",
-1706 => x"2e098106",
-1707 => x"e3387580",
-1708 => x"0c873d0d",
-1709 => x"04040470",
-1710 => x"70707080",
-1711 => x"0b81c5e8",
-1712 => x"0c765188",
-1713 => x"d93f8008",
-1714 => x"530b0b80",
-1715 => x"08ff2e89",
-1716 => x"3872800c",
-1717 => x"50505050",
-1718 => x"0481c5e8",
-1719 => x"08540b0b",
-1720 => x"73802eed",
-1721 => x"38757471",
-1722 => x"0c520b0b",
-1723 => x"72800c50",
-1724 => x"50505004",
-1725 => x"fb3d0d77",
-1726 => x"79707207",
-1727 => x"8306530b",
-1728 => x"0b540b0b",
-1729 => x"520b0b70",
-1730 => x"9b387173",
-1731 => x"7308540b",
-1732 => x"0b56540b",
-1733 => x"0b717308",
-1734 => x"2e80d838",
-1735 => x"7375540b",
-1736 => x"0b520b0b",
-1737 => x"0b0b7133",
-1738 => x"7081ff06",
-1739 => x"520b0b54",
-1740 => x"0b0b7080",
-1741 => x"2ea53872",
-1742 => x"3355700b",
-1743 => x"752e0981",
-1744 => x"069c3881",
-1745 => x"72058114",
-1746 => x"71337081",
-1747 => x"ff06540b",
-1748 => x"0b56540b",
-1749 => x"0b520b0b",
-1750 => x"70dd3872",
-1751 => x"33557381",
-1752 => x"ff067581",
-1753 => x"ff067171",
-1754 => x"31800c55",
-1755 => x"520b0b87",
-1756 => x"3d0d0471",
-1757 => x"09f7fbfd",
-1758 => x"ff730506",
-1759 => x"f8848281",
-1760 => x"8006520b",
-1761 => x"0b0b0b71",
-1762 => x"9f388414",
-1763 => x"84167108",
-1764 => x"540b0b56",
-1765 => x"540b0b71",
-1766 => x"75082ed7",
-1767 => x"38737554",
-1768 => x"0b0b520b",
-1769 => x"0bfefd39",
-1770 => x"800b800c",
-1771 => x"873d0d04",
-1772 => x"fb3d0d77",
-1773 => x"70520b0b",
-1774 => x"56fdfa3f",
-1775 => x"80e6a00b",
-1776 => x"88050884",
-1777 => x"710508fc",
-1778 => x"06707b31",
-1779 => x"9fef05e0",
-1780 => x"8006e080",
-1781 => x"05520b0b",
-1782 => x"5555a080",
-1783 => x"75249838",
-1784 => x"80520b0b",
-1785 => x"7551fdcf",
-1786 => x"3f80e6a8",
-1787 => x"0814530b",
-1788 => x"0b728008",
-1789 => x"2e913875",
-1790 => x"51fdbb3f",
-1791 => x"80530b0b",
-1792 => x"72800c87",
-1793 => x"3d0d0474",
-1794 => x"30520b0b",
-1795 => x"7551fda7",
-1796 => x"3f8008ff",
-1797 => x"2eab3880",
-1798 => x"e6a00b88",
-1799 => x"05087476",
-1800 => x"31810784",
-1801 => x"72050c53",
-1802 => x"0b0b80e5",
-1803 => x"e4087531",
-1804 => x"80e5e40c",
-1805 => x"7551fcfe",
-1806 => x"3f810b80",
-1807 => x"0c873d0d",
-1808 => x"0480520b",
-1809 => x"0b7551fc",
-1810 => x"ee3f80e6",
-1811 => x"a00b8805",
-1812 => x"08800871",
-1813 => x"31540b0b",
-1814 => x"540b0b8f",
-1815 => x"7325ff97",
-1816 => x"38800880",
-1817 => x"e6940831",
-1818 => x"80e5e40c",
-1819 => x"72810784",
-1820 => x"150c7551",
-1821 => x"fcc03f80",
-1822 => x"530b0bff",
-1823 => x"8339f73d",
-1824 => x"0d7b7d54",
-1825 => x"0b0b5a72",
-1826 => x"802e82ab",
-1827 => x"387951fc",
-1828 => x"a43ff873",
-1829 => x"05847105",
-1830 => x"0870fe06",
-1831 => x"70730584",
-1832 => x"710508fc",
-1833 => x"065c5758",
-1834 => x"540b0b57",
-1835 => x"80e6a808",
-1836 => x"742e838b",
-1837 => x"38778415",
-1838 => x"0c807381",
-1839 => x"0656590b",
-1840 => x"740b792e",
-1841 => x"81f53877",
-1842 => x"14847105",
-1843 => x"08810656",
-1844 => x"530b0b74",
-1845 => x"a3387716",
-1846 => x"56788287",
-1847 => x"38881408",
-1848 => x"550b0b74",
-1849 => x"80e6a82e",
-1850 => x"83a7388c",
-1851 => x"1408708c",
-1852 => x"170c7588",
-1853 => x"72050c58",
-1854 => x"75810784",
-1855 => x"180c7517",
-1856 => x"76710c54",
-1857 => x"0b0b7881",
-1858 => x"a93883ff",
-1859 => x"762781e5",
-1860 => x"3875892a",
-1861 => x"76832a54",
-1862 => x"0b0b540b",
-1863 => x"0b73802e",
-1864 => x"80cb3875",
-1865 => x"862ab805",
-1866 => x"530b0b84",
-1867 => x"7427be38",
-1868 => x"80db1453",
-1869 => x"0b0b9474",
-1870 => x"27b33875",
-1871 => x"8c2a80ee",
-1872 => x"05530b0b",
-1873 => x"80d47427",
-1874 => x"a438758f",
-1875 => x"2a80f705",
-1876 => x"530b0b82",
-1877 => x"d4742795",
-1878 => x"3875922a",
-1879 => x"80fc0553",
-1880 => x"0b0b8ad4",
-1881 => x"74278638",
-1882 => x"80fe530b",
-1883 => x"0b721010",
-1884 => x"1080e6a0",
-1885 => x"05887105",
-1886 => x"0855550b",
-1887 => x"730b752e",
-1888 => x"82da3884",
-1889 => x"1408fc06",
-1890 => x"59750b79",
-1891 => x"278f3888",
-1892 => x"1408540b",
-1893 => x"0b73752e",
-1894 => x"098106e7",
-1895 => x"388c1408",
-1896 => x"708c190c",
-1897 => x"7488190c",
-1898 => x"77887205",
-1899 => x"0c55768c",
-1900 => x"150c7951",
-1901 => x"fa803f8b",
-1902 => x"3d0d0476",
-1903 => x"08777131",
-1904 => x"58760588",
-1905 => x"18085656",
-1906 => x"0b7480e6",
-1907 => x"a82e80ea",
-1908 => x"388c1708",
-1909 => x"708c170c",
-1910 => x"75887205",
-1911 => x"0c530b0b",
-1912 => x"fde53988",
-1913 => x"14088c15",
-1914 => x"08708c73",
-1915 => x"050c5988",
-1916 => x"190cfe84",
-1917 => x"3975832a",
-1918 => x"70540b0b",
-1919 => x"540b0b80",
-1920 => x"742481a2",
-1921 => x"3872822c",
-1922 => x"81712b80",
-1923 => x"e6a40807",
-1924 => x"80e6a00b",
-1925 => x"84050c74",
-1926 => x"10101080",
-1927 => x"e6a00588",
-1928 => x"71050871",
-1929 => x"8c1b0c70",
-1930 => x"881b0c79",
-1931 => x"8873050c",
-1932 => x"565a5576",
-1933 => x"8c150cfe",
-1934 => x"f9398159",
-1935 => x"fd893977",
-1936 => x"16738106",
-1937 => x"540b0b55",
-1938 => x"729a3876",
-1939 => x"08777131",
-1940 => x"5875058c",
-1941 => x"18088819",
-1942 => x"08718c72",
-1943 => x"050c8872",
-1944 => x"050c5555",
-1945 => x"0b0b7481",
-1946 => x"0784180c",
-1947 => x"7680e6a0",
-1948 => x"0b88050c",
-1949 => x"80e69c08",
-1950 => x"7526feb6",
-1951 => x"3880e698",
-1952 => x"08520b0b",
-1953 => x"7951faa8",
-1954 => x"3f7951f8",
-1955 => x"a93ffea7",
-1956 => x"3981778c",
-1957 => x"170c7788",
-1958 => x"170c758c",
-1959 => x"190c7588",
-1960 => x"190c59fc",
-1961 => x"d3398314",
-1962 => x"70822c81",
-1963 => x"712b80e6",
-1964 => x"a4080780",
-1965 => x"e6a00b84",
-1966 => x"050c7510",
-1967 => x"101080e6",
-1968 => x"a0058871",
-1969 => x"0508718c",
-1970 => x"1c0c7088",
-1971 => x"1c0c7a88",
-1972 => x"73050c57",
-1973 => x"5b56530b",
-1974 => x"0bfed839",
-1975 => x"807324a3",
-1976 => x"3872822c",
-1977 => x"81712b80",
-1978 => x"e6a40807",
-1979 => x"80e6a00b",
-1980 => x"84050c58",
-1981 => x"748c180c",
-1982 => x"7388180c",
-1983 => x"7688160c",
-1984 => x"fdac3983",
-1985 => x"73057082",
-1986 => x"2c81712b",
-1987 => x"80e6a408",
-1988 => x"0780e6a0",
-1989 => x"0b84050c",
-1990 => x"59530b0b",
-1991 => x"d7397070",
-1992 => x"7081c5ec",
-1993 => x"08510b0b",
-1994 => x"708a3881",
-1995 => x"c5f47081",
-1996 => x"c5ec0c51",
-1997 => x"740b7105",
-1998 => x"520b0bff",
-1999 => x"530b0b71",
-2000 => x"87fb8080",
-2001 => x"268a3871",
-2002 => x"81c5ec0c",
-2003 => x"70530b0b",
-2004 => x"72800c50",
-2005 => x"50500470",
-2006 => x"70707080",
-2007 => x"0b80e5d0",
-2008 => x"08540b0b",
-2009 => x"540b0b72",
-2010 => x"812e9d38",
-2011 => x"7381c5f0",
-2012 => x"0ccabe3f",
-2013 => x"c98a3f80",
-2014 => x"f5a8520b",
-2015 => x"0b8151d3",
-2016 => x"fa3f8008",
-2017 => x"518a8f3f",
-2018 => x"7281c5f0",
-2019 => x"0ccaa23f",
-2020 => x"c8ee3f80",
-2021 => x"f5a8520b",
-2022 => x"0b8151d3",
-2023 => x"de3f8008",
-2024 => x"5189f33f",
-2025 => x"00ff3900",
-2026 => x"ff39f53d",
-2027 => x"0d7e6081",
-2028 => x"c5f00870",
-2029 => x"5b585b5b",
-2030 => x"7580c538",
-2031 => x"777a25a2",
-2032 => x"38771b70",
-2033 => x"337081ff",
-2034 => x"06585859",
-2035 => x"758a2e99",
-2036 => x"387681ff",
-2037 => x"0651c9b4",
-2038 => x"3f811858",
-2039 => x"790b7824",
-2040 => x"e0387980",
-2041 => x"0c8d3d0d",
-2042 => x"048d51c9",
-2043 => x"9f3f7833",
-2044 => x"7081ff06",
-2045 => x"520b0b57",
-2046 => x"c9923f81",
-2047 => x"1858dd39",
-2048 => x"79557a54",
-2049 => x"0b0b7d53",
-2050 => x"0b0b8552",
-2051 => x"0b0b8d3d",
-2052 => x"fc0551c8",
-2053 => x"af3f8008",
-2054 => x"5688f43f",
-2055 => x"7b80080c",
-2056 => x"75800c8d",
-2057 => x"3d0d04f6",
-2058 => x"3d0d7d7f",
-2059 => x"81c5f008",
-2060 => x"705a585a",
-2061 => x"5a7580ca",
-2062 => x"38767925",
-2063 => x"b638761a",
-2064 => x"58c8a53f",
-2065 => x"80087834",
-2066 => x"800b8008",
-2067 => x"81ff0657",
-2068 => x"580b758a",
-2069 => x"2ea83875",
-2070 => x"8d327030",
-2071 => x"7080257a",
-2072 => x"07515156",
-2073 => x"0b0b7580",
-2074 => x"c0388117",
-2075 => x"57780b77",
-2076 => x"24cc3876",
-2077 => x"560b0b75",
-2078 => x"800c8c3d",
-2079 => x"0d048158",
-2080 => x"d6397855",
-2081 => x"79540b0b",
-2082 => x"7c530b0b",
-2083 => x"84520b0b",
-2084 => x"8c3dfc05",
-2085 => x"51c7ad3f",
-2086 => x"80085687",
-2087 => x"f23f7a80",
-2088 => x"080c7580",
-2089 => x"0c8c3d0d",
-2090 => x"04811756",
-2091 => x"c839f93d",
-2092 => x"0d795781",
-2093 => x"c5f00880",
-2094 => x"2eb23876",
-2095 => x"518ac03f",
-2096 => x"7b567a55",
-2097 => x"80088105",
-2098 => x"540b0b76",
-2099 => x"530b0b82",
-2100 => x"520b0b89",
-2101 => x"3dfc0551",
-2102 => x"c6ea3f80",
-2103 => x"085787af",
-2104 => x"3f778008",
-2105 => x"0c76800c",
-2106 => x"893d0d04",
-2107 => x"87a13f85",
-2108 => x"0b80080c",
-2109 => x"ff0b800c",
-2110 => x"893d0d04",
-2111 => x"fb3d0d81",
-2112 => x"c5f00870",
-2113 => x"56540b0b",
-2114 => x"73883874",
-2115 => x"800c873d",
-2116 => x"0d047753",
-2117 => x"0b0b8352",
-2118 => x"0b0b873d",
-2119 => x"fc0551c6",
-2120 => x"a33f8008",
-2121 => x"540b0b86",
-2122 => x"e63f7580",
-2123 => x"080c7380",
-2124 => x"0c873d0d",
-2125 => x"04ff0b80",
-2126 => x"0c04fb3d",
-2127 => x"0d775581",
-2128 => x"c5f00880",
-2129 => x"2eae3874",
-2130 => x"5189b43f",
-2131 => x"80088105",
-2132 => x"540b0b74",
-2133 => x"530b0b87",
-2134 => x"520b0b87",
-2135 => x"3dfc0551",
-2136 => x"c5e23f80",
-2137 => x"085586a7",
-2138 => x"3f758008",
-2139 => x"0c74800c",
-2140 => x"873d0d04",
-2141 => x"86993f85",
-2142 => x"0b80080c",
-2143 => x"ff0b800c",
-2144 => x"873d0d04",
-2145 => x"fa3d0d81",
-2146 => x"c5f00880",
-2147 => x"2ea8387a",
-2148 => x"5579540b",
-2149 => x"0b78530b",
-2150 => x"0b86520b",
-2151 => x"0b883dfc",
-2152 => x"0551c5a0",
-2153 => x"3f800856",
-2154 => x"85e53f76",
-2155 => x"80080c75",
-2156 => x"800c883d",
-2157 => x"0d0485d7",
-2158 => x"3f9d0b80",
-2159 => x"080cff0b",
-2160 => x"800c883d",
-2161 => x"0d04f73d",
-2162 => x"0d7b7d5b",
-2163 => x"59bc530b",
-2164 => x"0b80520b",
-2165 => x"0b795186",
-2166 => x"fd3f8070",
-2167 => x"56579856",
-2168 => x"74197033",
-2169 => x"70782b79",
-2170 => x"078118f8",
-2171 => x"1a5a5859",
-2172 => x"55588475",
-2173 => x"24ea3876",
-2174 => x"7a238419",
-2175 => x"58807056",
-2176 => x"57985674",
-2177 => x"18703370",
-2178 => x"782b7907",
-2179 => x"8118f81a",
-2180 => x"5a585951",
-2181 => x"540b0b84",
-2182 => x"7524e838",
-2183 => x"76821b23",
-2184 => x"88195880",
-2185 => x"70565798",
-2186 => x"56741870",
-2187 => x"3370782b",
-2188 => x"79078118",
-2189 => x"f81a5a58",
-2190 => x"5951540b",
-2191 => x"0b847524",
-2192 => x"e8387684",
-2193 => x"1b0c8c19",
-2194 => x"58807056",
-2195 => x"57985674",
-2196 => x"18703370",
-2197 => x"782b7907",
-2198 => x"8118f81a",
-2199 => x"5a585951",
-2200 => x"540b0b84",
-2201 => x"7524e838",
-2202 => x"76881b23",
-2203 => x"90195880",
-2204 => x"70565798",
-2205 => x"56741870",
-2206 => x"3370782b",
-2207 => x"79078118",
-2208 => x"f81a5a58",
-2209 => x"5951540b",
-2210 => x"0b847524",
-2211 => x"e838768a",
-2212 => x"1b239419",
-2213 => x"58807056",
-2214 => x"57985674",
-2215 => x"18703370",
-2216 => x"782b7907",
-2217 => x"8118f81a",
-2218 => x"5a585951",
-2219 => x"540b0b84",
-2220 => x"7524e838",
-2221 => x"768c1b23",
-2222 => x"98195880",
-2223 => x"70565798",
-2224 => x"56741870",
-2225 => x"3370782b",
-2226 => x"79078118",
-2227 => x"f81a5a58",
-2228 => x"5951540b",
-2229 => x"0b847524",
-2230 => x"e838768e",
-2231 => x"1b239c19",
-2232 => x"58807056",
-2233 => x"57b85674",
-2234 => x"18703370",
-2235 => x"782b7907",
-2236 => x"8118f81a",
-2237 => x"5a58595a",
-2238 => x"540b0b88",
-2239 => x"7524e838",
-2240 => x"76901b0c",
-2241 => x"8b3d0d04",
-2242 => x"e93d0d6a",
-2243 => x"81c5f008",
-2244 => x"57570b75",
-2245 => x"933880c0",
-2246 => x"800b8418",
-2247 => x"0c75ac18",
-2248 => x"0c75800c",
-2249 => x"993d0d04",
-2250 => x"893d7055",
-2251 => x"6a540b0b",
-2252 => x"558a520b",
-2253 => x"0b993dff",
-2254 => x"bc0551c2",
-2255 => x"873f8008",
-2256 => x"77530b0b",
-2257 => x"75520b0b",
-2258 => x"56fcfb3f",
-2259 => x"82c13f77",
-2260 => x"80080c75",
-2261 => x"800c993d",
-2262 => x"0d04e93d",
-2263 => x"0d695781",
-2264 => x"c5f00880",
-2265 => x"2ebd3876",
-2266 => x"5185943f",
-2267 => x"893d7056",
-2268 => x"80088105",
-2269 => x"5577540b",
-2270 => x"0b568f52",
-2271 => x"0b0b993d",
-2272 => x"ffbc0551",
-2273 => x"c1be3f80",
-2274 => x"086b530b",
-2275 => x"0b76520b",
-2276 => x"0b57fcb2",
-2277 => x"3f81f83f",
-2278 => x"7780080c",
-2279 => x"76800c99",
-2280 => x"3d0d0481",
-2281 => x"ea3f850b",
-2282 => x"80080cff",
-2283 => x"0b800c99",
-2284 => x"3d0d04fc",
-2285 => x"3d0d8154",
-2286 => x"0b0b81c5",
-2287 => x"f0088838",
-2288 => x"73800c86",
-2289 => x"3d0d0476",
-2290 => x"530b0b97",
-2291 => x"b9520b0b",
-2292 => x"863dfc05",
-2293 => x"51c0ed3f",
-2294 => x"8008540b",
-2295 => x"0b81b03f",
-2296 => x"7480080c",
-2297 => x"73800c86",
-2298 => x"3d0d04f4",
-2299 => x"3d0d7e80",
-2300 => x"f5d40870",
-2301 => x"0881ff06",
-2302 => x"913df805",
-2303 => x"540b0b51",
-2304 => x"5959c29d",
-2305 => x"3f775780",
-2306 => x"540b0b76",
-2307 => x"557b7d58",
-2308 => x"520b0b0b",
-2309 => x"76530b0b",
-2310 => x"8e3df005",
-2311 => x"5184dc3f",
-2312 => x"797b5879",
-2313 => x"0c76841a",
-2314 => x"0c78800c",
-2315 => x"8e3d0d04",
-2316 => x"f43d0d7e",
-2317 => x"80f5d408",
-2318 => x"70087081",
-2319 => x"ff06923d",
-2320 => x"f8055551",
-2321 => x"5a5759c1",
-2322 => x"d83f7757",
-2323 => x"800b8b3d",
-2324 => x"59540b0b",
-2325 => x"76557b7d",
-2326 => x"58520b0b",
-2327 => x"0b76530b",
-2328 => x"0b775184",
-2329 => x"963f8056",
-2330 => x"bd84c076",
-2331 => x"5555797b",
-2332 => x"58520b0b",
-2333 => x"0b76530b",
-2334 => x"0b775183",
-2335 => x"fe3f7a57",
-2336 => x"78802e84",
-2337 => x"3876790c",
-2338 => x"76800c8e",
-2339 => x"3d0d0480",
-2340 => x"eea80880",
-2341 => x"0c04f73d",
-2342 => x"0d7b80ee",
-2343 => x"a80882c8",
-2344 => x"7105085a",
-2345 => x"540b0b5a",
-2346 => x"77802e80",
-2347 => x"eb388188",
-2348 => x"18841908",
-2349 => x"ff058171",
-2350 => x"2b595559",
-2351 => x"80742481",
-2352 => x"80388074",
-2353 => x"2480c138",
-2354 => x"73822b78",
-2355 => x"71058805",
-2356 => x"56568180",
-2357 => x"19087706",
-2358 => x"530b0b72",
-2359 => x"802e80c3",
-2360 => x"38781670",
-2361 => x"08530b0b",
-2362 => x"530b0b79",
-2363 => x"51740853",
-2364 => x"0b0b722d",
-2365 => x"ff14fc17",
-2366 => x"fc177981",
-2367 => x"2c5a5757",
-2368 => x"540b0b73",
-2369 => x"8025cb38",
-2370 => x"7708580b",
-2371 => x"0b77ff9e",
-2372 => x"3880eea8",
-2373 => x"08530b0b",
-2374 => x"bc730508",
-2375 => x"a9387951",
-2376 => x"f5823f74",
-2377 => x"08530b0b",
-2378 => x"722dff14",
-2379 => x"fc17fc17",
-2380 => x"79812c5a",
-2381 => x"5757540b",
-2382 => x"0b738025",
-2383 => x"ff9438c8",
-2384 => x"398057fe",
-2385 => x"fd397251",
-2386 => x"bc730508",
-2387 => x"540b0b73",
-2388 => x"2d7951f4",
-2389 => x"cf3ffb3d",
-2390 => x"0d777a71",
-2391 => x"028c05a3",
-2392 => x"05335854",
-2393 => x"0b0b540b",
-2394 => x"0b568373",
-2395 => x"2780e738",
-2396 => x"75830651",
-2397 => x"0b0b7080",
-2398 => x"dd387488",
-2399 => x"2b750770",
-2400 => x"71902b07",
-2401 => x"55518f73",
-2402 => x"27b33873",
-2403 => x"72708405",
-2404 => x"540b0b0c",
-2405 => x"71747170",
-2406 => x"8405530b",
-2407 => x"0b0c7471",
-2408 => x"70840553",
-2409 => x"0b0b0c74",
-2410 => x"71708405",
-2411 => x"530b0b0c",
-2412 => x"f014540b",
-2413 => x"0b520b0b",
-2414 => x"728f26cf",
-2415 => x"38837327",
-2416 => x"95387372",
-2417 => x"70840554",
-2418 => x"0b0b0cfc",
-2419 => x"7305530b",
-2420 => x"0b728326",
-2421 => x"ed38ff73",
-2422 => x"05510b0b",
-2423 => x"70ff2e98",
-2424 => x"38747270",
-2425 => x"8105540b",
-2426 => x"0b34ff71",
-2427 => x"05510b0b",
-2428 => x"70ff2e09",
-2429 => x"8106ea38",
-2430 => x"75800c87",
-2431 => x"3d0d0470",
-2432 => x"70707075",
-2433 => x"70718306",
-2434 => x"530b0b55",
-2435 => x"520b0b70",
-2436 => x"80c53871",
-2437 => x"70087009",
-2438 => x"f7fbfdff",
-2439 => x"720506f8",
-2440 => x"84828180",
-2441 => x"06540b0b",
-2442 => x"520b0b53",
-2443 => x"0b0b71a3",
-2444 => x"38847305",
-2445 => x"70087009",
-2446 => x"f7fbfdff",
-2447 => x"720506f8",
-2448 => x"84828180",
-2449 => x"06540b0b",
-2450 => x"520b0b53",
-2451 => x"0b0b7180",
-2452 => x"2edf3872",
-2453 => x"520b0b0b",
-2454 => x"0b713353",
-2455 => x"0b0b7280",
-2456 => x"2e8f3881",
-2457 => x"72057033",
-2458 => x"540b0b52",
-2459 => x"0b0b72f3",
-2460 => x"38717431",
-2461 => x"800c5050",
-2462 => x"505004e4",
-2463 => x"3d0d6ea1",
-2464 => x"3d08a33d",
-2465 => x"0859575f",
-2466 => x"80764d77",
-2467 => x"4ea33d08",
-2468 => x"a53d0857",
-2469 => x"4b0b754c",
-2470 => x"5e0b0b7d",
-2471 => x"6c2487b2",
-2472 => x"38806a24",
-2473 => x"87cd3869",
-2474 => x"6b58566b",
-2475 => x"6d5d460b",
-2476 => x"7b477544",
-2477 => x"76450b0b",
-2478 => x"64646868",
-2479 => x"5c5c5656",
-2480 => x"0b7481f5",
-2481 => x"38787627",
-2482 => x"82dd3875",
-2483 => x"81ff2683",
-2484 => x"2b5583ff",
-2485 => x"ff76278c",
-2486 => x"389055fe",
-2487 => x"800a7627",
-2488 => x"83389855",
-2489 => x"750b752a",
-2490 => x"80e3bc05",
-2491 => x"7033a077",
-2492 => x"31713157",
-2493 => x"55577480",
-2494 => x"2e953875",
-2495 => x"752ba076",
-2496 => x"317a772b",
-2497 => x"7c722a07",
-2498 => x"7c782b5d",
-2499 => x"5b59560b",
-2500 => x"0b75902a",
-2501 => x"7683ffff",
-2502 => x"0671540b",
-2503 => x"0b7a530b",
-2504 => x"0b595788",
-2505 => x"bf3f8008",
-2506 => x"5b88a53f",
-2507 => x"80088008",
-2508 => x"79297c90",
-2509 => x"2b7c902a",
-2510 => x"07565659",
-2511 => x"73752794",
-2512 => x"388008ff",
-2513 => x"05761555",
-2514 => x"59757426",
-2515 => x"87387474",
-2516 => x"2687f438",
-2517 => x"76520b0b",
-2518 => x"73753151",
-2519 => x"88863f80",
-2520 => x"085587ec",
-2521 => x"3f800880",
-2522 => x"0879297b",
-2523 => x"83ffff06",
-2524 => x"77902b07",
-2525 => x"56595773",
-2526 => x"78279638",
-2527 => x"8008ff05",
-2528 => x"76155557",
-2529 => x"75742689",
-2530 => x"38777426",
-2531 => x"77713158",
-2532 => x"5678902b",
-2533 => x"77075880",
-2534 => x"5b0b0b7a",
-2535 => x"4077417f",
-2536 => x"0b615654",
-2537 => x"0b0b7d80",
-2538 => x"dd38737f",
-2539 => x"0c747f84",
-2540 => x"050c7e80",
-2541 => x"0c9e3d0d",
-2542 => x"0480705c",
-2543 => x"58747926",
-2544 => x"d8387481",
-2545 => x"ff26832b",
-2546 => x"577483ff",
-2547 => x"ff2682bd",
-2548 => x"3874772a",
-2549 => x"80e3bc05",
-2550 => x"7033a079",
-2551 => x"31713159",
-2552 => x"5c5d7682",
-2553 => x"cf387654",
-2554 => x"0b0b7479",
-2555 => x"27853881",
-2556 => x"540b0b79",
-2557 => x"76277407",
-2558 => x"59815878",
-2559 => x"ff993876",
-2560 => x"58805bff",
-2561 => x"94397352",
-2562 => x"0b0b7453",
-2563 => x"0b0b9e3d",
-2564 => x"e80551d2",
-2565 => x"d43f6769",
-2566 => x"567f0c74",
-2567 => x"7f84050c",
-2568 => x"7e800c9e",
-2569 => x"3d0d0475",
-2570 => x"802e81d2",
-2571 => x"387581ff",
-2572 => x"26832b55",
-2573 => x"83ffff76",
-2574 => x"278c3890",
-2575 => x"55fe800a",
-2576 => x"76278338",
-2577 => x"9855750b",
-2578 => x"752a80e3",
-2579 => x"bc057033",
-2580 => x"a0773171",
-2581 => x"31575e54",
-2582 => x"0b0b7484",
-2583 => x"b8387876",
-2584 => x"31540b0b",
-2585 => x"8176902a",
-2586 => x"7783ffff",
-2587 => x"065f5d5b",
-2588 => x"0b7b520b",
-2589 => x"0b735185",
-2590 => x"eb3f8008",
-2591 => x"5785d13f",
-2592 => x"80088008",
-2593 => x"7e297890",
-2594 => x"2b7c902a",
-2595 => x"07565659",
-2596 => x"73752794",
-2597 => x"388008ff",
-2598 => x"05761555",
-2599 => x"59757426",
-2600 => x"87387474",
-2601 => x"26859738",
-2602 => x"7b520b0b",
-2603 => x"73753151",
-2604 => x"85b23f80",
-2605 => x"08558598",
-2606 => x"3f800880",
-2607 => x"087e297b",
-2608 => x"83ffff06",
-2609 => x"77902b07",
-2610 => x"56595773",
-2611 => x"78279638",
-2612 => x"8008ff05",
-2613 => x"76155557",
-2614 => x"75742689",
-2615 => x"38777426",
-2616 => x"77713158",
-2617 => x"5a78902b",
-2618 => x"77077b41",
-2619 => x"410b7f0b",
-2620 => x"6156540b",
-2621 => x"0b7d802e",
-2622 => x"fdb038fe",
-2623 => x"89397552",
-2624 => x"0b0b8151",
-2625 => x"84ca3f80",
-2626 => x"0856fea1",
-2627 => x"399057fe",
-2628 => x"800a7527",
-2629 => x"fdbb3898",
-2630 => x"75712a80",
-2631 => x"e3bc0570",
-2632 => x"33a07331",
-2633 => x"7131530b",
-2634 => x"0b5d5e57",
-2635 => x"0b0b7680",
-2636 => x"2efdb338",
-2637 => x"a0773175",
-2638 => x"782b7772",
-2639 => x"2a077779",
-2640 => x"2b7b7a2b",
-2641 => x"7d742a07",
-2642 => x"7d7b2b73",
-2643 => x"902a7483",
-2644 => x"ffff0671",
-2645 => x"597f772a",
-2646 => x"585e5c41",
-2647 => x"5f585c54",
-2648 => x"0b0b8480",
-2649 => x"3f800854",
-2650 => x"0b0b83e4",
-2651 => x"3f800880",
-2652 => x"08792975",
-2653 => x"902b7e90",
-2654 => x"2a075656",
-2655 => x"59737527",
-2656 => x"99388008",
-2657 => x"ff057b15",
-2658 => x"55597a74",
-2659 => x"268c3873",
-2660 => x"75278738",
-2661 => x"ff197b15",
-2662 => x"55597652",
-2663 => x"0b0b7375",
-2664 => x"315183c0",
-2665 => x"3f800855",
-2666 => x"83a63f80",
-2667 => x"08800879",
-2668 => x"297d83ff",
-2669 => x"ff067790",
-2670 => x"2b075659",
-2671 => x"57737827",
-2672 => x"99388008",
-2673 => x"ff057b15",
-2674 => x"55577a74",
-2675 => x"268c3873",
-2676 => x"78278738",
-2677 => x"ff177b15",
-2678 => x"55570b73",
-2679 => x"78317990",
-2680 => x"2b780770",
-2681 => x"83ffff06",
-2682 => x"71902a79",
-2683 => x"83ffff06",
-2684 => x"7a902a73",
-2685 => x"72297373",
-2686 => x"29747329",
-2687 => x"76742973",
-2688 => x"902a0572",
-2689 => x"05575543",
-2690 => x"5f5b585a",
-2691 => x"57595a74",
-2692 => x"7c278638",
-2693 => x"84808017",
-2694 => x"5774902a",
-2695 => x"177983ff",
-2696 => x"ff067684",
-2697 => x"80802905",
-2698 => x"57570b0b",
-2699 => x"767a269a",
-2700 => x"38767a32",
-2701 => x"70307072",
-2702 => x"07802556",
-2703 => x"5a5b7c76",
-2704 => x"27fad438",
-2705 => x"73802efa",
-2706 => x"ce38ff18",
-2707 => x"58805bfa",
-2708 => x"c839ff76",
-2709 => x"530b0b77",
-2710 => x"540b0b9f",
-2711 => x"3de80552",
-2712 => x"0b0b5ece",
-2713 => x"843f6769",
-2714 => x"574c0b75",
-2715 => x"4d698025",
-2716 => x"f8b5387d",
-2717 => x"096a6c5c",
-2718 => x"530b0b7a",
-2719 => x"540b0b9f",
-2720 => x"3de80552",
-2721 => x"0b0b5ecd",
-2722 => x"e03f6769",
-2723 => x"714c704d",
-2724 => x"5856f897",
-2725 => x"39a07531",
-2726 => x"76762b7a",
-2727 => x"772b7c73",
-2728 => x"2a077c78",
-2729 => x"2b72902a",
-2730 => x"7383ffff",
-2731 => x"0671587e",
-2732 => x"762a5742",
-2733 => x"405d5d57",
-2734 => x"5881a93f",
-2735 => x"80085781",
-2736 => x"8f3f8008",
-2737 => x"80087e29",
-2738 => x"78902b7d",
-2739 => x"902a0756",
-2740 => x"56597375",
-2741 => x"27993880",
-2742 => x"08ff0576",
-2743 => x"15555975",
-2744 => x"74268c38",
-2745 => x"73752787",
-2746 => x"38ff1976",
-2747 => x"1555597b",
-2748 => x"520b0b73",
-2749 => x"75315180",
-2750 => x"eb3f8008",
-2751 => x"5580d13f",
-2752 => x"80088008",
-2753 => x"7e297c83",
-2754 => x"ffff0670",
-2755 => x"78902b07",
-2756 => x"51565858",
-2757 => x"73772799",
-2758 => x"388008ff",
-2759 => x"05761555",
-2760 => x"58757426",
-2761 => x"8c387377",
-2762 => x"278738ff",
-2763 => x"18761555",
-2764 => x"5878902b",
-2765 => x"78077478",
-2766 => x"31555bfa",
-2767 => x"b339ff19",
-2768 => x"76155559",
-2769 => x"fae239ff",
-2770 => x"19761555",
-2771 => x"59f88539",
-2772 => x"70707080",
-2773 => x"530b0b75",
-2774 => x"520b0b74",
-2775 => x"51ceaf3f",
-2776 => x"50505004",
-2777 => x"70707081",
-2778 => x"530b0b75",
-2779 => x"520b0b74",
-2780 => x"51ce9b3f",
-2781 => x"50505004",
-2782 => x"707080f5",
-2783 => x"b00bfc05",
-2784 => x"7008520b",
-2785 => x"0b520b0b",
-2786 => x"0b70ff2e",
-2787 => x"9738702d",
-2788 => x"fc720570",
-2789 => x"08520b0b",
-2790 => x"520b0b0b",
-2791 => x"70ff2e09",
-2792 => x"8106eb38",
-2793 => x"50500404",
-2794 => x"ffb4963f",
-2795 => x"04000000",
-2796 => x"30313233",
-2797 => x"34353637",
-2798 => x"38390000",
-2799 => x"44485259",
-2800 => x"53544f4e",
-2801 => x"45205052",
-2802 => x"4f475241",
-2803 => x"4d2c2053",
-2804 => x"4f4d4520",
-2805 => x"53545249",
-2806 => x"4e470000",
-2807 => x"44485259",
-2808 => x"53544f4e",
-2809 => x"45205052",
-2810 => x"4f475241",
-2811 => x"4d2c2031",
-2812 => x"27535420",
-2813 => x"53545249",
-2814 => x"4e470000",
-2815 => x"44687279",
-2816 => x"73746f6e",
-2817 => x"65204265",
-2818 => x"6e63686d",
-2819 => x"61726b2c",
-2820 => x"20566572",
-2821 => x"73696f6e",
-2822 => x"20322e31",
-2823 => x"20284c61",
-2824 => x"6e677561",
-2825 => x"67653a20",
-2826 => x"43290a00",
-2827 => x"50726f67",
-2828 => x"72616d20",
-2829 => x"636f6d70",
-2830 => x"696c6564",
-2831 => x"20776974",
-2832 => x"68202772",
-2833 => x"65676973",
-2834 => x"74657227",
-2835 => x"20617474",
-2836 => x"72696275",
-2837 => x"74650a00",
-2838 => x"45786563",
-2839 => x"7574696f",
-2840 => x"6e207374",
-2841 => x"61727473",
-2842 => x"2c202564",
-2843 => x"2072756e",
-2844 => x"73207468",
-2845 => x"726f7567",
-2846 => x"68204468",
-2847 => x"72797374",
-2848 => x"6f6e650a",
-2849 => x"00000000",
-2850 => x"44485259",
-2851 => x"53544f4e",
-2852 => x"45205052",
-2853 => x"4f475241",
-2854 => x"4d2c2032",
-2855 => x"274e4420",
-2856 => x"53545249",
-2857 => x"4e470000",
-2858 => x"45786563",
-2859 => x"7574696f",
-2860 => x"6e20656e",
-2861 => x"64730a00",
-2862 => x"46696e61",
-2863 => x"6c207661",
-2864 => x"6c756573",
-2865 => x"206f6620",
-2866 => x"74686520",
-2867 => x"76617269",
-2868 => x"61626c65",
-2869 => x"73207573",
-2870 => x"65642069",
-2871 => x"6e207468",
-2872 => x"65206265",
-2873 => x"6e63686d",
-2874 => x"61726b3a",
-2875 => x"0a000000",
-2876 => x"496e745f",
-2877 => x"476c6f62",
-2878 => x"3a202020",
-2879 => x"20202020",
-2880 => x"20202020",
-2881 => x"2025640a",
-2882 => x"00000000",
-2883 => x"20202020",
-2884 => x"20202020",
-2885 => x"73686f75",
-2886 => x"6c642062",
-2887 => x"653a2020",
-2888 => x"2025640a",
-2889 => x"00000000",
-2890 => x"426f6f6c",
-2891 => x"5f476c6f",
-2892 => x"623a2020",
-2893 => x"20202020",
-2894 => x"20202020",
-2895 => x"2025640a",
-2896 => x"00000000",
-2897 => x"43685f31",
-2898 => x"5f476c6f",
-2899 => x"623a2020",
-2900 => x"20202020",
-2901 => x"20202020",
-2902 => x"2025630a",
-2903 => x"00000000",
-2904 => x"20202020",
-2905 => x"20202020",
-2906 => x"73686f75",
-2907 => x"6c642062",
-2908 => x"653a2020",
-2909 => x"2025630a",
-2910 => x"00000000",
-2911 => x"43685f32",
-2912 => x"5f476c6f",
-2913 => x"623a2020",
-2914 => x"20202020",
-2915 => x"20202020",
-2916 => x"2025630a",
-2917 => x"00000000",
-2918 => x"4172725f",
-2919 => x"315f476c",
-2920 => x"6f625b38",
-2921 => x"5d3a2020",
-2922 => x"20202020",
-2923 => x"2025640a",
-2924 => x"00000000",
-2925 => x"4172725f",
-2926 => x"325f476c",
-2927 => x"6f625b38",
-2928 => x"5d5b375d",
-2929 => x"3a202020",
-2930 => x"2025640a",
-2931 => x"00000000",
-2932 => x"20202020",
-2933 => x"20202020",
-2934 => x"73686f75",
-2935 => x"6c642062",
-2936 => x"653a2020",
-2937 => x"204e756d",
-2938 => x"6265725f",
-2939 => x"4f665f52",
-2940 => x"756e7320",
-2941 => x"2b203130",
-2942 => x"0a000000",
-2943 => x"5074725f",
-2944 => x"476c6f62",
-2945 => x"2d3e0a00",
-2946 => x"20205074",
-2947 => x"725f436f",
-2948 => x"6d703a20",
-2949 => x"20202020",
-2950 => x"20202020",
-2951 => x"2025640a",
-2952 => x"00000000",
-2953 => x"20202020",
-2954 => x"20202020",
-2955 => x"73686f75",
-2956 => x"6c642062",
-2957 => x"653a2020",
-2958 => x"2028696d",
-2959 => x"706c656d",
-2960 => x"656e7461",
-2961 => x"74696f6e",
-2962 => x"2d646570",
-2963 => x"656e6465",
-2964 => x"6e74290a",
-2965 => x"00000000",
-2966 => x"20204469",
-2967 => x"7363723a",
-2968 => x"20202020",
-2969 => x"20202020",
-2970 => x"20202020",
-2971 => x"2025640a",
-2972 => x"00000000",
-2973 => x"2020456e",
-2974 => x"756d5f43",
-2975 => x"6f6d703a",
-2976 => x"20202020",
-2977 => x"20202020",
-2978 => x"2025640a",
-2979 => x"00000000",
-2980 => x"2020496e",
-2981 => x"745f436f",
-2982 => x"6d703a20",
-2983 => x"20202020",
-2984 => x"20202020",
-2985 => x"2025640a",
-2986 => x"00000000",
-2987 => x"20205374",
-2988 => x"725f436f",
-2989 => x"6d703a20",
-2990 => x"20202020",
-2991 => x"20202020",
-2992 => x"2025730a",
-2993 => x"00000000",
-2994 => x"20202020",
-2995 => x"20202020",
-2996 => x"73686f75",
-2997 => x"6c642062",
-2998 => x"653a2020",
-2999 => x"20444852",
-3000 => x"5953544f",
-3001 => x"4e452050",
-3002 => x"524f4752",
-3003 => x"414d2c20",
-3004 => x"534f4d45",
-3005 => x"20535452",
-3006 => x"494e470a",
-3007 => x"00000000",
-3008 => x"4e657874",
-3009 => x"5f507472",
-3010 => x"5f476c6f",
-3011 => x"622d3e0a",
-3012 => x"00000000",
-3013 => x"20202020",
-3014 => x"20202020",
-3015 => x"73686f75",
-3016 => x"6c642062",
-3017 => x"653a2020",
-3018 => x"2028696d",
-3019 => x"706c656d",
-3020 => x"656e7461",
-3021 => x"74696f6e",
-3022 => x"2d646570",
-3023 => x"656e6465",
-3024 => x"6e74292c",
-3025 => x"2073616d",
-3026 => x"65206173",
-3027 => x"2061626f",
-3028 => x"76650a00",
-3029 => x"496e745f",
-3030 => x"315f4c6f",
-3031 => x"633a2020",
-3032 => x"20202020",
-3033 => x"20202020",
-3034 => x"2025640a",
-3035 => x"00000000",
-3036 => x"496e745f",
-3037 => x"325f4c6f",
-3038 => x"633a2020",
-3039 => x"20202020",
-3040 => x"20202020",
-3041 => x"2025640a",
-3042 => x"00000000",
-3043 => x"496e745f",
-3044 => x"335f4c6f",
-3045 => x"633a2020",
-3046 => x"20202020",
-3047 => x"20202020",
-3048 => x"2025640a",
-3049 => x"00000000",
-3050 => x"456e756d",
-3051 => x"5f4c6f63",
-3052 => x"3a202020",
-3053 => x"20202020",
-3054 => x"20202020",
-3055 => x"2025640a",
-3056 => x"00000000",
-3057 => x"5374725f",
-3058 => x"315f4c6f",
-3059 => x"633a2020",
-3060 => x"20202020",
-3061 => x"20202020",
-3062 => x"2025730a",
-3063 => x"00000000",
-3064 => x"20202020",
-3065 => x"20202020",
-3066 => x"73686f75",
-3067 => x"6c642062",
-3068 => x"653a2020",
-3069 => x"20444852",
-3070 => x"5953544f",
-3071 => x"4e452050",
-3072 => x"524f4752",
-3073 => x"414d2c20",
-3074 => x"31275354",
-3075 => x"20535452",
-3076 => x"494e470a",
-3077 => x"00000000",
-3078 => x"5374725f",
-3079 => x"325f4c6f",
-3080 => x"633a2020",
-3081 => x"20202020",
-3082 => x"20202020",
-3083 => x"2025730a",
-3084 => x"00000000",
-3085 => x"20202020",
-3086 => x"20202020",
-3087 => x"73686f75",
-3088 => x"6c642062",
-3089 => x"653a2020",
-3090 => x"20444852",
-3091 => x"5953544f",
-3092 => x"4e452050",
-3093 => x"524f4752",
-3094 => x"414d2c20",
-3095 => x"32274e44",
-3096 => x"20535452",
-3097 => x"494e470a",
-3098 => x"00000000",
-3099 => x"55736572",
-3100 => x"2074696d",
-3101 => x"653a2025",
-3102 => x"640a0000",
-3103 => x"4d696372",
-3104 => x"6f736563",
-3105 => x"6f6e6473",
-3106 => x"20666f72",
-3107 => x"206f6e65",
-3108 => x"2072756e",
-3109 => x"20746872",
-3110 => x"6f756768",
-3111 => x"20446872",
-3112 => x"7973746f",
-3113 => x"6e653a20",
-3114 => x"00000000",
-3115 => x"2564200a",
-3116 => x"00000000",
-3117 => x"44687279",
-3118 => x"73746f6e",
-3119 => x"65732070",
-3120 => x"65722053",
-3121 => x"65636f6e",
-3122 => x"643a2020",
-3123 => x"20202020",
-3124 => x"20202020",
-3125 => x"20202020",
-3126 => x"20202020",
-3127 => x"20202020",
-3128 => x"00000000",
-3129 => x"56415820",
-3130 => x"4d495053",
-3131 => x"20726174",
-3132 => x"696e6720",
-3133 => x"2a203130",
-3134 => x"3030203d",
-3135 => x"20256420",
-3136 => x"0a000000",
-3137 => x"50726f67",
-3138 => x"72616d20",
-3139 => x"636f6d70",
-3140 => x"696c6564",
-3141 => x"20776974",
-3142 => x"686f7574",
-3143 => x"20277265",
-3144 => x"67697374",
-3145 => x"65722720",
-3146 => x"61747472",
-3147 => x"69627574",
-3148 => x"650a0000",
-3149 => x"4d656173",
-3150 => x"75726564",
-3151 => x"2074696d",
-3152 => x"6520746f",
-3153 => x"6f20736d",
-3154 => x"616c6c20",
-3155 => x"746f206f",
-3156 => x"62746169",
-3157 => x"6e206d65",
-3158 => x"616e696e",
-3159 => x"6766756c",
-3160 => x"20726573",
-3161 => x"756c7473",
-3162 => x"0a000000",
-3163 => x"506c6561",
-3164 => x"73652069",
-3165 => x"6e637265",
-3166 => x"61736520",
-3167 => x"6e756d62",
-3168 => x"6572206f",
-3169 => x"66207275",
-3170 => x"6e730a00",
-3171 => x"44485259",
-3172 => x"53544f4e",
-3173 => x"45205052",
-3174 => x"4f475241",
-3175 => x"4d2c2033",
-3176 => x"27524420",
-3177 => x"53545249",
-3178 => x"4e470000",
-3179 => x"43000000",
-3180 => x"64756d6d",
-3181 => x"792e6578",
-3182 => x"65000000",
-3183 => x"00010202",
-3184 => x"03030303",
-3185 => x"04040404",
-3186 => x"04040404",
-3187 => x"05050505",
-3188 => x"05050505",
-3189 => x"05050505",
-3190 => x"05050505",
-3191 => x"06060606",
-3192 => x"06060606",
-3193 => x"06060606",
-3194 => x"06060606",
-3195 => x"06060606",
-3196 => x"06060606",
-3197 => x"06060606",
-3198 => x"06060606",
-3199 => x"07070707",
-3200 => x"07070707",
-3201 => x"07070707",
-3202 => x"07070707",
-3203 => x"07070707",
-3204 => x"07070707",
-3205 => x"07070707",
-3206 => x"07070707",
-3207 => x"07070707",
-3208 => x"07070707",
-3209 => x"07070707",
-3210 => x"07070707",
-3211 => x"07070707",
-3212 => x"07070707",
-3213 => x"07070707",
-3214 => x"07070707",
-3215 => x"08080808",
-3216 => x"08080808",
-3217 => x"08080808",
-3218 => x"08080808",
-3219 => x"08080808",
-3220 => x"08080808",
-3221 => x"08080808",
-3222 => x"08080808",
-3223 => x"08080808",
-3224 => x"08080808",
-3225 => x"08080808",
-3226 => x"08080808",
-3227 => x"08080808",
-3228 => x"08080808",
-3229 => x"08080808",
-3230 => x"08080808",
-3231 => x"08080808",
-3232 => x"08080808",
-3233 => x"08080808",
-3234 => x"08080808",
-3235 => x"08080808",
-3236 => x"08080808",
-3237 => x"08080808",
-3238 => x"08080808",
-3239 => x"08080808",
-3240 => x"08080808",
-3241 => x"08080808",
-3242 => x"08080808",
-3243 => x"08080808",
-3244 => x"08080808",
-3245 => x"08080808",
-3246 => x"08080808",
-3247 => x"00ffffff",
-3248 => x"ff00ffff",
-3249 => x"ffff00ff",
-3250 => x"ffffff00",
-3251 => x"00000000",
-3252 => x"00000000",
-3253 => x"00000000",
-3254 => x"00003ab8",
-3255 => x"000186a0", -- iterations
-3256 => x"00000000",
-3257 => x"00000000",
-3258 => x"00000000",
-3259 => x"00000000",
-3260 => x"00000000",
-3261 => x"00000000",
-3262 => x"00000000",
-3263 => x"00000000",
-3264 => x"00000000",
-3265 => x"00000000",
-3266 => x"00000000",
-3267 => x"00000000",
-3268 => x"00000000",
-3269 => x"ffffffff",
-3270 => x"00000000",
-3271 => x"00020000",
-3272 => x"00000000",
-3273 => x"00000000",
-3274 => x"00003320",
-3275 => x"00003320",
-3276 => x"00003328",
-3277 => x"00003328",
-3278 => x"00003330",
-3279 => x"00003330",
-3280 => x"00003338",
-3281 => x"00003338",
-3282 => x"00003340",
-3283 => x"00003340",
-3284 => x"00003348",
-3285 => x"00003348",
-3286 => x"00003350",
-3287 => x"00003350",
-3288 => x"00003358",
-3289 => x"00003358",
-3290 => x"00003360",
-3291 => x"00003360",
-3292 => x"00003368",
-3293 => x"00003368",
-3294 => x"00003370",
-3295 => x"00003370",
-3296 => x"00003378",
-3297 => x"00003378",
-3298 => x"00003380",
-3299 => x"00003380",
-3300 => x"00003388",
-3301 => x"00003388",
-3302 => x"00003390",
-3303 => x"00003390",
-3304 => x"00003398",
-3305 => x"00003398",
-3306 => x"000033a0",
-3307 => x"000033a0",
-3308 => x"000033a8",
-3309 => x"000033a8",
-3310 => x"000033b0",
-3311 => x"000033b0",
-3312 => x"000033b8",
-3313 => x"000033b8",
-3314 => x"000033c0",
-3315 => x"000033c0",
-3316 => x"000033c8",
-3317 => x"000033c8",
-3318 => x"000033d0",
-3319 => x"000033d0",
-3320 => x"000033d8",
-3321 => x"000033d8",
-3322 => x"000033e0",
-3323 => x"000033e0",
-3324 => x"000033e8",
-3325 => x"000033e8",
-3326 => x"000033f0",
-3327 => x"000033f0",
-3328 => x"000033f8",
-3329 => x"000033f8",
-3330 => x"00003400",
-3331 => x"00003400",
-3332 => x"00003408",
-3333 => x"00003408",
-3334 => x"00003410",
-3335 => x"00003410",
-3336 => x"00003418",
-3337 => x"00003418",
-3338 => x"00003420",
-3339 => x"00003420",
-3340 => x"00003428",
-3341 => x"00003428",
-3342 => x"00003430",
-3343 => x"00003430",
-3344 => x"00003438",
-3345 => x"00003438",
-3346 => x"00003440",
-3347 => x"00003440",
-3348 => x"00003448",
-3349 => x"00003448",
-3350 => x"00003450",
-3351 => x"00003450",
-3352 => x"00003458",
-3353 => x"00003458",
-3354 => x"00003460",
-3355 => x"00003460",
-3356 => x"00003468",
-3357 => x"00003468",
-3358 => x"00003470",
-3359 => x"00003470",
-3360 => x"00003478",
-3361 => x"00003478",
-3362 => x"00003480",
-3363 => x"00003480",
-3364 => x"00003488",
-3365 => x"00003488",
-3366 => x"00003490",
-3367 => x"00003490",
-3368 => x"00003498",
-3369 => x"00003498",
-3370 => x"000034a0",
-3371 => x"000034a0",
-3372 => x"000034a8",
-3373 => x"000034a8",
-3374 => x"000034b0",
-3375 => x"000034b0",
-3376 => x"000034b8",
-3377 => x"000034b8",
-3378 => x"000034c0",
-3379 => x"000034c0",
-3380 => x"000034c8",
-3381 => x"000034c8",
-3382 => x"000034d0",
-3383 => x"000034d0",
-3384 => x"000034d8",
-3385 => x"000034d8",
-3386 => x"000034e0",
-3387 => x"000034e0",
-3388 => x"000034e8",
-3389 => x"000034e8",
-3390 => x"000034f0",
-3391 => x"000034f0",
-3392 => x"000034f8",
-3393 => x"000034f8",
-3394 => x"00003500",
-3395 => x"00003500",
-3396 => x"00003508",
-3397 => x"00003508",
-3398 => x"00003510",
-3399 => x"00003510",
-3400 => x"00003518",
-3401 => x"00003518",
-3402 => x"00003520",
-3403 => x"00003520",
-3404 => x"00003528",
-3405 => x"00003528",
-3406 => x"00003530",
-3407 => x"00003530",
-3408 => x"00003538",
-3409 => x"00003538",
-3410 => x"00003540",
-3411 => x"00003540",
-3412 => x"00003548",
-3413 => x"00003548",
-3414 => x"00003550",
-3415 => x"00003550",
-3416 => x"00003558",
-3417 => x"00003558",
-3418 => x"00003560",
-3419 => x"00003560",
-3420 => x"00003568",
-3421 => x"00003568",
-3422 => x"00003570",
-3423 => x"00003570",
-3424 => x"00003578",
-3425 => x"00003578",
-3426 => x"00003580",
-3427 => x"00003580",
-3428 => x"00003588",
-3429 => x"00003588",
-3430 => x"00003590",
-3431 => x"00003590",
-3432 => x"00003598",
-3433 => x"00003598",
-3434 => x"000035a0",
-3435 => x"000035a0",
-3436 => x"000035a8",
-3437 => x"000035a8",
-3438 => x"000035b0",
-3439 => x"000035b0",
-3440 => x"000035b8",
-3441 => x"000035b8",
-3442 => x"000035c0",
-3443 => x"000035c0",
-3444 => x"000035c8",
-3445 => x"000035c8",
-3446 => x"000035d0",
-3447 => x"000035d0",
-3448 => x"000035d8",
-3449 => x"000035d8",
-3450 => x"000035e0",
-3451 => x"000035e0",
-3452 => x"000035e8",
-3453 => x"000035e8",
-3454 => x"000035f0",
-3455 => x"000035f0",
-3456 => x"000035f8",
-3457 => x"000035f8",
-3458 => x"00003600",
-3459 => x"00003600",
-3460 => x"00003608",
-3461 => x"00003608",
-3462 => x"00003610",
-3463 => x"00003610",
-3464 => x"00003618",
-3465 => x"00003618",
-3466 => x"00003620",
-3467 => x"00003620",
-3468 => x"00003628",
-3469 => x"00003628",
-3470 => x"00003630",
-3471 => x"00003630",
-3472 => x"00003638",
-3473 => x"00003638",
-3474 => x"00003640",
-3475 => x"00003640",
-3476 => x"00003648",
-3477 => x"00003648",
-3478 => x"00003650",
-3479 => x"00003650",
-3480 => x"00003658",
-3481 => x"00003658",
-3482 => x"00003660",
-3483 => x"00003660",
-3484 => x"00003668",
-3485 => x"00003668",
-3486 => x"00003670",
-3487 => x"00003670",
-3488 => x"00003678",
-3489 => x"00003678",
-3490 => x"00003680",
-3491 => x"00003680",
-3492 => x"00003688",
-3493 => x"00003688",
-3494 => x"00003690",
-3495 => x"00003690",
-3496 => x"00003698",
-3497 => x"00003698",
-3498 => x"000036a0",
-3499 => x"000036a0",
-3500 => x"000036a8",
-3501 => x"000036a8",
-3502 => x"000036b0",
-3503 => x"000036b0",
-3504 => x"000036b8",
-3505 => x"000036b8",
-3506 => x"000036c0",
-3507 => x"000036c0",
-3508 => x"000036c8",
-3509 => x"000036c8",
-3510 => x"000036d0",
-3511 => x"000036d0",
-3512 => x"000036d8",
-3513 => x"000036d8",
-3514 => x"000036e0",
-3515 => x"000036e0",
-3516 => x"000036e8",
-3517 => x"000036e8",
-3518 => x"000036f0",
-3519 => x"000036f0",
-3520 => x"000036f8",
-3521 => x"000036f8",
-3522 => x"00003700",
-3523 => x"00003700",
-3524 => x"00003708",
-3525 => x"00003708",
-3526 => x"00003710",
-3527 => x"00003710",
-3528 => x"00003718",
-3529 => x"00003718",
-3530 => x"0000372c",
-3531 => x"00000000",
-3532 => x"00003994",
-3533 => x"000039f0",
-3534 => x"00003a4c",
-3535 => x"00000000",
-3536 => x"00000000",
-3537 => x"00000000",
-3538 => x"00000000",
-3539 => x"00000000",
-3540 => x"00000000",
-3541 => x"00000000",
-3542 => x"00000000",
-3543 => x"00000000",
-3544 => x"000031ac",
-3545 => x"00000000",
-3546 => x"00000000",
-3547 => x"00000000",
-3548 => x"00000000",
-3549 => x"00000000",
-3550 => x"00000000",
-3551 => x"00000000",
-3552 => x"00000000",
-3553 => x"00000000",
-3554 => x"00000000",
-3555 => x"00000000",
-3556 => x"00000000",
-3557 => x"00000000",
-3558 => x"00000000",
-3559 => x"00000000",
-3560 => x"00000000",
-3561 => x"00000000",
-3562 => x"00000000",
-3563 => x"00000000",
-3564 => x"00000000",
-3565 => x"00000000",
-3566 => x"00000000",
-3567 => x"00000000",
-3568 => x"00000000",
-3569 => x"00000000",
-3570 => x"00000000",
-3571 => x"00000000",
-3572 => x"00000000",
-3573 => x"00000001",
-3574 => x"330eabcd",
-3575 => x"1234e66d",
-3576 => x"deec0005",
-3577 => x"000b0000",
-3578 => x"00000000",
-3579 => x"00000000",
-3580 => x"00000000",
-3581 => x"00000000",
-3582 => x"00000000",
-3583 => x"00000000",
-3584 => x"00000000",
-3585 => x"00000000",
-3586 => x"00000000",
-3587 => x"00000000",
-3588 => x"00000000",
-3589 => x"00000000",
-3590 => x"00000000",
-3591 => x"00000000",
-3592 => x"00000000",
-3593 => x"00000000",
-3594 => x"00000000",
-3595 => x"00000000",
-3596 => x"00000000",
-3597 => x"00000000",
-3598 => x"00000000",
-3599 => x"00000000",
-3600 => x"00000000",
-3601 => x"00000000",
-3602 => x"00000000",
-3603 => x"00000000",
-3604 => x"00000000",
-3605 => x"00000000",
-3606 => x"00000000",
-3607 => x"00000000",
-3608 => x"00000000",
-3609 => x"00000000",
-3610 => x"00000000",
-3611 => x"00000000",
-3612 => x"00000000",
-3613 => x"00000000",
-3614 => x"00000000",
-3615 => x"00000000",
-3616 => x"00000000",
-3617 => x"00000000",
-3618 => x"00000000",
-3619 => x"00000000",
-3620 => x"00000000",
-3621 => x"00000000",
-3622 => x"00000000",
-3623 => x"00000000",
-3624 => x"00000000",
-3625 => x"00000000",
-3626 => x"00000000",
-3627 => x"00000000",
-3628 => x"00000000",
-3629 => x"00000000",
-3630 => x"00000000",
-3631 => x"00000000",
-3632 => x"00000000",
-3633 => x"00000000",
-3634 => x"00000000",
-3635 => x"00000000",
-3636 => x"00000000",
-3637 => x"00000000",
-3638 => x"00000000",
-3639 => x"00000000",
-3640 => x"00000000",
-3641 => x"00000000",
-3642 => x"00000000",
-3643 => x"00000000",
-3644 => x"00000000",
-3645 => x"00000000",
-3646 => x"00000000",
-3647 => x"00000000",
-3648 => x"00000000",
-3649 => x"00000000",
-3650 => x"00000000",
-3651 => x"00000000",
-3652 => x"00000000",
-3653 => x"00000000",
-3654 => x"00000000",
-3655 => x"00000000",
-3656 => x"00000000",
-3657 => x"00000000",
-3658 => x"00000000",
-3659 => x"00000000",
-3660 => x"00000000",
-3661 => x"00000000",
-3662 => x"00000000",
-3663 => x"00000000",
-3664 => x"00000000",
-3665 => x"00000000",
-3666 => x"00000000",
-3667 => x"00000000",
-3668 => x"00000000",
-3669 => x"00000000",
-3670 => x"00000000",
-3671 => x"00000000",
-3672 => x"00000000",
-3673 => x"00000000",
-3674 => x"00000000",
-3675 => x"00000000",
-3676 => x"00000000",
-3677 => x"00000000",
-3678 => x"00000000",
-3679 => x"00000000",
-3680 => x"00000000",
-3681 => x"00000000",
-3682 => x"00000000",
-3683 => x"00000000",
-3684 => x"00000000",
-3685 => x"00000000",
-3686 => x"00000000",
-3687 => x"00000000",
-3688 => x"00000000",
-3689 => x"00000000",
-3690 => x"00000000",
-3691 => x"00000000",
-3692 => x"00000000",
-3693 => x"00000000",
-3694 => x"00000000",
-3695 => x"00000000",
-3696 => x"00000000",
-3697 => x"00000000",
-3698 => x"00000000",
-3699 => x"00000000",
-3700 => x"00000000",
-3701 => x"00000000",
-3702 => x"00000000",
-3703 => x"00000000",
-3704 => x"00000000",
-3705 => x"00000000",
-3706 => x"00000000",
-3707 => x"00000000",
-3708 => x"00000000",
-3709 => x"00000000",
-3710 => x"00000000",
-3711 => x"00000000",
-3712 => x"00000000",
-3713 => x"00000000",
-3714 => x"00000000",
-3715 => x"00000000",
-3716 => x"00000000",
-3717 => x"00000000",
-3718 => x"00000000",
-3719 => x"00000000",
-3720 => x"00000000",
-3721 => x"00000000",
-3722 => x"00000000",
-3723 => x"00000000",
-3724 => x"00000000",
-3725 => x"00000000",
-3726 => x"00000000",
-3727 => x"00000000",
-3728 => x"00000000",
-3729 => x"00000000",
-3730 => x"00000000",
-3731 => x"00000000",
-3732 => x"00000000",
-3733 => x"00000000",
-3734 => x"00000000",
-3735 => x"00000000",
-3736 => x"00000000",
-3737 => x"00000000",
-3738 => x"00000000",
-3739 => x"00000000",
-3740 => x"00000000",
-3741 => x"00000000",
-3742 => x"00000000",
-3743 => x"00000000",
-3744 => x"00000000",
-3745 => x"00000000",
-3746 => x"00000000",
-3747 => x"00000000",
-3748 => x"00000000",
-3749 => x"00000000",
-3750 => x"00000000",
-3751 => x"00000000",
-3752 => x"00000000",
-3753 => x"00000000",
-3754 => x"000031b0",
-3755 => x"ffffffff",
-3756 => x"00000000",
-3757 => x"ffffffff",
-3758 => x"00000000",
- others => x"00000000"
-);
-
-begin
-
-process (clk)
-begin
- if (clk'event and clk = '1') then
- if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
- report "write collision" severity failure;
- end if;
-
- if (memAWriteEnable = '1') then
- ram(conv_integer(memAAddr)) := memAWrite;
- memARead <= memAWrite;
- else
- memARead <= ram(conv_integer(memAAddr));
- end if;
- end if;
-end process;
-
-process (clk)
-begin
- if (clk'event and clk = '1') then
- if (memBWriteEnable = '1') then
- ram(conv_integer(memBAddr)) := memBWrite;
- memBRead <= memBWrite;
- else
- memBRead <= ram(conv_integer(memBAddr));
- end if;
- end if;
-end process;
-
-
-
-
-end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/dualport_ram.vhd b/zpu/hdl/zpu3/src/dualport_ram.vhd deleted file mode 100644 index 54380ce..0000000 --- a/zpu/hdl/zpu3/src/dualport_ram.vhd +++ /dev/null @@ -1,4996 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_unsigned.all;
-
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-
-entity dualport_ram is
-port (clk : in std_logic;
- memAWriteEnable : in std_logic;
- memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memAWrite : in std_logic_vector(wordSize-1 downto 0);
- memARead : out std_logic_vector(wordSize-1 downto 0);
- memBWriteEnable : in std_logic;
- memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memBWrite : in std_logic_vector(wordSize-1 downto 0);
- memBRead : out std_logic_vector(wordSize-1 downto 0));
-end dualport_ram;
-
-architecture dualport_ram_arch of dualport_ram is
-
-
-type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
-
-shared variable ram : ram_type :=
-(
-0 => x"800b0b0b",
-1 => x"0b0b8070",
-2 => x"0b0b818a",
-3 => x"880c3a0b",
-4 => x"0b80fae8",
-5 => x"04000000",
-6 => x"00000000",
-7 => x"00000000",
-8 => x"80088408",
-9 => x"88080b0b",
-10 => x"80fbba2d",
-11 => x"880c840c",
-12 => x"800c0400",
-13 => x"00000000",
-14 => x"00000000",
-15 => x"00000000",
-16 => x"71fd0608",
-17 => x"72830609",
-18 => x"81058205",
-19 => x"832b2a83",
-20 => x"ffff0652",
-21 => x"04000000",
-22 => x"00000000",
-23 => x"00000000",
-24 => x"71fd0608",
-25 => x"83ffff73",
-26 => x"83060981",
-27 => x"05820583",
-28 => x"2b2b0906",
-29 => x"7383ffff",
-30 => x"0b0b0b0b",
-31 => x"83a70400",
-32 => x"72098105",
-33 => x"72057373",
-34 => x"09060906",
-35 => x"73097306",
-36 => x"070a8106",
-37 => x"530b0b51",
-38 => x"04000000",
-39 => x"00000000",
-40 => x"72722473",
-41 => x"732e0753",
-42 => x"0b0b5104",
-43 => x"00000000",
-44 => x"00000000",
-45 => x"00000000",
-46 => x"00000000",
-47 => x"00000000",
-48 => x"71737109",
-49 => x"71068106",
-50 => x"30720a10",
-51 => x"0a720a10",
-52 => x"0a31050a",
-53 => x"81065151",
-54 => x"530b0b51",
-55 => x"04000000",
-56 => x"72722673",
-57 => x"732e0753",
-58 => x"0b0b5104",
-59 => x"00000000",
-60 => x"00000000",
-61 => x"00000000",
-62 => x"00000000",
-63 => x"00000000",
-64 => x"00000000",
-65 => x"00000000",
-66 => x"00000000",
-67 => x"00000000",
-68 => x"00000000",
-69 => x"00000000",
-70 => x"00000000",
-71 => x"00000000",
-72 => x"72728072",
-73 => x"8106ff05",
-74 => x"09720605",
-75 => x"71105272",
-76 => x"0a100a53",
-77 => x"0b0b72eb",
-78 => x"38515153",
-79 => x"0b0b5104",
-80 => x"720a722b",
-81 => x"0a530b0b",
-82 => x"51040000",
-83 => x"00000000",
-84 => x"00000000",
-85 => x"00000000",
-86 => x"00000000",
-87 => x"00000000",
-88 => x"72729f06",
-89 => x"0981050b",
-90 => x"0b0b88a7",
-91 => x"05040000",
-92 => x"00000000",
-93 => x"00000000",
-94 => x"00000000",
-95 => x"00000000",
-96 => x"72722aff",
-97 => x"739f062a",
-98 => x"0974090a",
-99 => x"8106ff05",
-100 => x"0607530b",
-101 => x"0b510400",
-102 => x"00000000",
-103 => x"00000000",
-104 => x"7171530b",
-105 => x"0b510406",
-106 => x"73830609",
-107 => x"81058205",
-108 => x"832b0b2b",
-109 => x"0772fc06",
-110 => x"0c515104",
-111 => x"00000000",
-112 => x"72098105",
-113 => x"72050970",
-114 => x"81050906",
-115 => x"0a810653",
-116 => x"0b0b5104",
-117 => x"00000000",
-118 => x"00000000",
-119 => x"00000000",
-120 => x"72098105",
-121 => x"72050970",
-122 => x"81050906",
-123 => x"0a098106",
-124 => x"530b0b51",
-125 => x"04000000",
-126 => x"00000000",
-127 => x"00000000",
-128 => x"71098105",
-129 => x"52040000",
-130 => x"00000000",
-131 => x"00000000",
-132 => x"00000000",
-133 => x"00000000",
-134 => x"00000000",
-135 => x"00000000",
-136 => x"72720981",
-137 => x"0505530b",
-138 => x"0b510400",
-139 => x"00000000",
-140 => x"00000000",
-141 => x"00000000",
-142 => x"00000000",
-143 => x"00000000",
-144 => x"72097206",
-145 => x"73730906",
-146 => x"07530b0b",
-147 => x"51040000",
-148 => x"00000000",
-149 => x"00000000",
-150 => x"00000000",
-151 => x"00000000",
-152 => x"71fc0608",
-153 => x"72830609",
-154 => x"81058305",
-155 => x"1010102a",
-156 => x"81ff0652",
-157 => x"04000000",
-158 => x"00000000",
-159 => x"00000000",
-160 => x"71fc0608",
-161 => x"0b0b8189",
-162 => x"f4738306",
-163 => x"10100508",
-164 => x"060b0b0b",
-165 => x"88ac0400",
-166 => x"00000000",
-167 => x"00000000",
-168 => x"80088408",
-169 => x"88087575",
-170 => x"0b0b0b8f",
-171 => x"e42d5050",
-172 => x"80085688",
-173 => x"0c840c80",
-174 => x"0c510400",
-175 => x"00000000",
-176 => x"80088408",
-177 => x"88087575",
-178 => x"0b0b0b91",
-179 => x"9c2d5050",
-180 => x"80085688",
-181 => x"0c840c80",
-182 => x"0c510400",
-183 => x"00000000",
-184 => x"72097081",
-185 => x"0509060a",
-186 => x"8106ff05",
-187 => x"70540b0b",
-188 => x"71067309",
-189 => x"727405ff",
-190 => x"05060751",
-191 => x"51510400",
-192 => x"72097081",
-193 => x"0509060a",
-194 => x"098106ff",
-195 => x"0570540b",
-196 => x"0b710673",
-197 => x"09727405",
-198 => x"ff050607",
-199 => x"51515104",
-200 => x"05ff0504",
-201 => x"00000000",
-202 => x"00000000",
-203 => x"00000000",
-204 => x"00000000",
-205 => x"00000000",
-206 => x"00000000",
-207 => x"00000000",
-208 => x"810b0b0b",
-209 => x"818a840c",
-210 => x"51040000",
-211 => x"00000000",
-212 => x"00000000",
-213 => x"00000000",
-214 => x"00000000",
-215 => x"00000000",
-216 => x"71810552",
-217 => x"04000000",
-218 => x"00000000",
-219 => x"00000000",
-220 => x"00000000",
-221 => x"00000000",
-222 => x"00000000",
-223 => x"00000000",
-224 => x"00000000",
-225 => x"00000000",
-226 => x"00000000",
-227 => x"00000000",
-228 => x"00000000",
-229 => x"00000000",
-230 => x"00000000",
-231 => x"00000000",
-232 => x"02840572",
-233 => x"10100552",
-234 => x"04000000",
-235 => x"00000000",
-236 => x"00000000",
-237 => x"00000000",
-238 => x"00000000",
-239 => x"00000000",
-240 => x"00000000",
-241 => x"00000000",
-242 => x"00000000",
-243 => x"00000000",
-244 => x"00000000",
-245 => x"00000000",
-246 => x"00000000",
-247 => x"00000000",
-248 => x"717105ff",
-249 => x"0571530b",
-250 => x"0b510400",
-251 => x"00000000",
-252 => x"00000000",
-253 => x"00000000",
-254 => x"00000000",
-255 => x"00000000",
-256 => x"83cd3f80",
-257 => x"fd803f04",
-258 => x"10101010",
-259 => x"10101010",
-260 => x"10101010",
-261 => x"10101010",
-262 => x"10101010",
-263 => x"10101010",
-264 => x"10101010",
-265 => x"10101053",
-266 => x"0b0b5104",
-267 => x"7381ff06",
-268 => x"73830609",
-269 => x"81058305",
-270 => x"1010102b",
-271 => x"0772fc06",
-272 => x"0c515104",
-273 => x"3c047070",
-274 => x"0b0b819a",
-275 => x"90085284",
-276 => x"0b720508",
-277 => x"70810651",
-278 => x"510b0b70",
-279 => x"f2387108",
-280 => x"81ff0680",
-281 => x"0c505004",
-282 => x"70700b0b",
-283 => x"819a9008",
-284 => x"52840b72",
-285 => x"0508700a",
-286 => x"100a7081",
-287 => x"06515151",
-288 => x"0b0b70ed",
-289 => x"3873720c",
-290 => x"50500481",
-291 => x"8a840880",
-292 => x"2ea83883",
-293 => x"80800b0b",
-294 => x"0b819a90",
-295 => x"0c82a080",
-296 => x"0b0b0b81",
-297 => x"9a940c82",
-298 => x"90800b81",
-299 => x"9aa40c0b",
-300 => x"0b819a98",
-301 => x"0b819aa8",
-302 => x"0c04f880",
-303 => x"8080a40b",
-304 => x"0b0b819a",
-305 => x"900cf880",
-306 => x"8082800b",
-307 => x"0b0b819a",
-308 => x"940cf880",
-309 => x"8084800b",
-310 => x"819aa40c",
-311 => x"f8808080",
-312 => x"940b819a",
-313 => x"a80cf880",
-314 => x"80809c0b",
-315 => x"819aa00c",
-316 => x"f8808080",
-317 => x"a00b819a",
-318 => x"ac0c04f2",
-319 => x"3d0d600b",
-320 => x"0b819a94",
-321 => x"08565d82",
-322 => x"750c8059",
-323 => x"805a800b",
-324 => x"8f3d7110",
-325 => x"10177008",
-326 => x"5a575d5b",
-327 => x"807781ff",
-328 => x"067c832b",
-329 => x"5658520b",
-330 => x"76530b0b",
-331 => x"7b5183ae",
-332 => x"3f7d7f7a",
-333 => x"72077c72",
-334 => x"07717160",
-335 => x"8105415f",
-336 => x"5d5b5957",
-337 => x"557a8724",
-338 => x"bf380b0b",
-339 => x"819a9408",
-340 => x"7b101071",
-341 => x"05700859",
-342 => x"51558077",
-343 => x"81ff067c",
-344 => x"832b5658",
-345 => x"520b7653",
-346 => x"0b0b7b51",
-347 => x"82f03f7d",
-348 => x"7f7a7207",
-349 => x"7c720771",
-350 => x"71608105",
-351 => x"415f5d5b",
-352 => x"59575587",
-353 => x"7b25c338",
-354 => x"767d0c77",
-355 => x"841e0c7c",
-356 => x"800c903d",
-357 => x"0d047070",
-358 => x"819a9c33",
-359 => x"510b0b70",
-360 => x"aa38818a",
-361 => x"90087008",
-362 => x"52520b70",
-363 => x"802e9638",
-364 => x"84720581",
-365 => x"8a900c70",
-366 => x"2d818a90",
-367 => x"08700852",
-368 => x"520b70ec",
-369 => x"38810b81",
-370 => x"9a9c3450",
-371 => x"50040470",
-372 => x"0b0b819a",
-373 => x"8c08802e",
-374 => x"8e380b0b",
-375 => x"0b0b800b",
-376 => x"802e0981",
-377 => x"06833850",
-378 => x"040b0b81",
-379 => x"9a8c510b",
-380 => x"0b0bf48c",
-381 => x"3f500404",
-382 => x"8c08028c",
-383 => x"0cfa3d0d",
-384 => x"800b8c08",
-385 => x"fc050c8c",
-386 => x"08fc0508",
-387 => x"892481b9",
-388 => x"388c08f0",
-389 => x"05705253",
-390 => x"0b0bfddf",
-391 => x"3f8c08f4",
-392 => x"05088c08",
-393 => x"f8050c8c",
-394 => x"08f80508",
-395 => x"520b0b81",
-396 => x"85b45187",
-397 => x"c53f0b0b",
-398 => x"8185c051",
-399 => x"8a8b3f0b",
-400 => x"0b8185d0",
-401 => x"518a823f",
-402 => x"fc0b819a",
-403 => x"b00c819a",
-404 => x"b008812c",
-405 => x"530b0b72",
-406 => x"fe2e8438",
-407 => x"87903f8a",
-408 => x"0b819ab4",
-409 => x"0c819ab4",
-410 => x"08819ab0",
-411 => x"0829530b",
-412 => x"0b72d82e",
-413 => x"843886f6",
-414 => x"3f8a0b81",
-415 => x"9ab00c84",
-416 => x"e2ad800b",
-417 => x"819ab40c",
-418 => x"819ab408",
-419 => x"819ab008",
-420 => x"29530b0b",
-421 => x"72afd7c2",
-422 => x"802e8438",
-423 => x"86d03f81",
-424 => x"0a0b819a",
-425 => x"b00cff0b",
-426 => x"819ab40c",
-427 => x"819ab408",
-428 => x"819ab008",
-429 => x"25843886",
-430 => x"b53f8c08",
-431 => x"fc050881",
-432 => x"058c08fc",
-433 => x"050cfebf",
-434 => x"398c08fc",
-435 => x"05088a2e",
-436 => x"8438869a",
-437 => x"3f72800c",
-438 => x"883d0d8c",
-439 => x"0c048c08",
-440 => x"028c0cf5",
-441 => x"3d0d8c08",
-442 => x"9405089f",
-443 => x"388c088c",
-444 => x"05088c08",
-445 => x"9005088c",
-446 => x"08880508",
-447 => x"5856540b",
-448 => x"0b73760c",
-449 => x"7484170c",
-450 => x"81cd3980",
-451 => x"0b8c08f0",
-452 => x"050c800b",
-453 => x"8c08f405",
-454 => x"0c8c088c",
-455 => x"05088c08",
-456 => x"90050856",
-457 => x"540b0b73",
-458 => x"8c08f005",
-459 => x"0c748c08",
-460 => x"f4050c8c",
-461 => x"08f8058c",
-462 => x"08f00556",
-463 => x"56887054",
-464 => x"0b0b7553",
-465 => x"0b0b7652",
-466 => x"540b0b85",
-467 => x"ef3fa00b",
-468 => x"8c089405",
-469 => x"08318c08",
-470 => x"ec050c8c",
-471 => x"08ec0508",
-472 => x"80249f38",
-473 => x"800b8c08",
-474 => x"f4050c8c",
-475 => x"08ec0508",
-476 => x"308c08fc",
-477 => x"0508712b",
-478 => x"8c08f005",
-479 => x"0c540b0b",
-480 => x"bb398c08",
-481 => x"fc05088c",
-482 => x"08ec0508",
-483 => x"2a8c08e8",
-484 => x"050c8c08",
-485 => x"fc05088c",
-486 => x"08940508",
-487 => x"2b8c08f4",
-488 => x"050c8c08",
-489 => x"f805088c",
-490 => x"08940508",
-491 => x"2b708c08",
-492 => x"e8050807",
-493 => x"8c08f005",
-494 => x"0c540b0b",
-495 => x"8c08f005",
-496 => x"088c08f4",
-497 => x"05088c08",
-498 => x"88050858",
-499 => x"56540b0b",
-500 => x"73760c74",
-501 => x"84170c8c",
-502 => x"08880508",
-503 => x"800c8d3d",
-504 => x"0d8c0c04",
-505 => x"8c08028c",
-506 => x"0cf93d0d",
-507 => x"800b8c08",
-508 => x"fc050c8c",
-509 => x"08880508",
-510 => x"8025ab38",
-511 => x"8c088805",
-512 => x"08308c08",
-513 => x"88050c80",
-514 => x"0b8c08f4",
-515 => x"050c8c08",
-516 => x"fc050888",
-517 => x"38810b8c",
-518 => x"08f4050c",
-519 => x"8c08f405",
-520 => x"088c08fc",
-521 => x"050c8c08",
-522 => x"8c050880",
-523 => x"25ab388c",
-524 => x"088c0508",
-525 => x"308c088c",
-526 => x"050c800b",
-527 => x"8c08f005",
-528 => x"0c8c08fc",
-529 => x"05088838",
-530 => x"810b8c08",
-531 => x"f0050c8c",
-532 => x"08f00508",
-533 => x"8c08fc05",
-534 => x"0c80530b",
-535 => x"0b8c088c",
-536 => x"0508528c",
-537 => x"08880508",
-538 => x"5181b13f",
-539 => x"8008708c",
-540 => x"08f8050c",
-541 => x"540b0b8c",
-542 => x"08fc0508",
-543 => x"802e8c38",
-544 => x"8c08f805",
-545 => x"08308c08",
-546 => x"f8050c8c",
-547 => x"08f80508",
-548 => x"70800c54",
-549 => x"0b0b893d",
-550 => x"0d8c0c04",
-551 => x"8c08028c",
-552 => x"0cfb3d0d",
-553 => x"800b8c08",
-554 => x"fc050c8c",
-555 => x"08880508",
-556 => x"80259338",
-557 => x"8c088805",
-558 => x"08308c08",
-559 => x"88050c81",
-560 => x"0b8c08fc",
-561 => x"050c8c08",
-562 => x"8c050880",
-563 => x"258c388c",
-564 => x"088c0508",
-565 => x"308c088c",
-566 => x"050c8153",
-567 => x"0b0b8c08",
-568 => x"8c050852",
-569 => x"8c088805",
-570 => x"0851b13f",
-571 => x"8008708c",
-572 => x"08f8050c",
-573 => x"540b0b8c",
-574 => x"08fc0508",
-575 => x"802e8c38",
-576 => x"8c08f805",
-577 => x"08308c08",
-578 => x"f8050c8c",
-579 => x"08f80508",
-580 => x"70800c54",
-581 => x"0b0b873d",
-582 => x"0d8c0c04",
-583 => x"8c08028c",
-584 => x"0c707070",
-585 => x"70810b8c",
-586 => x"08fc050c",
-587 => x"800b8c08",
-588 => x"f8050c8c",
-589 => x"088c0508",
-590 => x"8c088805",
-591 => x"0827ac38",
-592 => x"8c08fc05",
-593 => x"08802ea3",
-594 => x"38800b8c",
-595 => x"088c0508",
-596 => x"2499388c",
-597 => x"088c0508",
-598 => x"108c088c",
-599 => x"050c8c08",
-600 => x"fc050810",
-601 => x"8c08fc05",
-602 => x"0cc9398c",
-603 => x"08fc0508",
-604 => x"802e80c9",
-605 => x"388c088c",
-606 => x"05088c08",
-607 => x"88050826",
-608 => x"a1388c08",
-609 => x"8805088c",
-610 => x"088c0508",
-611 => x"318c0888",
-612 => x"050c8c08",
-613 => x"f805088c",
-614 => x"08fc0508",
-615 => x"078c08f8",
-616 => x"050c8c08",
-617 => x"fc050881",
-618 => x"2a8c08fc",
-619 => x"050c8c08",
-620 => x"8c050881",
-621 => x"2a8c088c",
-622 => x"050cffaf",
-623 => x"398c0890",
-624 => x"0508802e",
-625 => x"8f388c08",
-626 => x"88050870",
-627 => x"8c08f405",
-628 => x"0c518d39",
-629 => x"8c08f805",
-630 => x"08708c08",
-631 => x"f4050c51",
-632 => x"8c08f405",
-633 => x"08800c50",
-634 => x"5050508c",
-635 => x"0c047086",
-636 => x"5186a03f",
-637 => x"815180e7",
-638 => x"be3ffc3d",
-639 => x"0d873d70",
-640 => x"70840552",
-641 => x"0856530b",
-642 => x"0b745281",
-643 => x"8a940888",
-644 => x"71050852",
-645 => x"540b0b9f",
-646 => x"e73f863d",
-647 => x"0d047070",
-648 => x"7070863d",
-649 => x"8805530b",
-650 => x"0b765275",
-651 => x"88710508",
-652 => x"52540b0b",
-653 => x"9fca3f50",
-654 => x"50505004",
-655 => x"fc3d0d76",
-656 => x"70797b55",
-657 => x"5555558f",
-658 => x"72278e38",
-659 => x"72750783",
-660 => x"06510b0b",
-661 => x"70802eaf",
-662 => x"38ff7205",
-663 => x"520b0b71",
-664 => x"ff2e9d38",
-665 => x"72708105",
-666 => x"540b0b33",
-667 => x"74708105",
-668 => x"5634ff72",
-669 => x"05520b0b",
-670 => x"71ff2e09",
-671 => x"8106e538",
-672 => x"74800c86",
-673 => x"3d0d0474",
-674 => x"51727084",
-675 => x"05540b0b",
-676 => x"08717084",
-677 => x"05530b0b",
-678 => x"0c727084",
-679 => x"05540b0b",
-680 => x"08717084",
-681 => x"05530b0b",
-682 => x"0c727084",
-683 => x"05540b0b",
-684 => x"08717084",
-685 => x"05530b0b",
-686 => x"0c727084",
-687 => x"05540b0b",
-688 => x"08717084",
-689 => x"05530b0b",
-690 => x"0cf07205",
-691 => x"520b0b71",
-692 => x"8f26ffb5",
-693 => x"38837227",
-694 => x"9c387270",
-695 => x"8405540b",
-696 => x"0b087170",
-697 => x"8405530b",
-698 => x"0b0cfc72",
-699 => x"05520b0b",
-700 => x"718326e6",
-701 => x"3870540b",
-702 => x"0bfede39",
-703 => x"f73d0d7c",
-704 => x"7052530b",
-705 => x"0b858c3f",
-706 => x"72540b0b",
-707 => x"80085581",
-708 => x"85e05681",
-709 => x"57800881",
-710 => x"055a8b3d",
-711 => x"e4710559",
-712 => x"530b0b82",
-713 => x"59f47305",
-714 => x"527b8871",
-715 => x"05085253",
-716 => x"0b0bb7ce",
-717 => x"3f800830",
-718 => x"70800807",
-719 => x"9f2c8a07",
-720 => x"800c530b",
-721 => x"0b8b3d0d",
-722 => x"04707073",
-723 => x"52818a94",
-724 => x"0851ffa8",
-725 => x"3f505004",
-726 => x"70707070",
-727 => x"75530b0b",
-728 => x"84d87305",
-729 => x"08802e8d",
-730 => x"3880530b",
-731 => x"0b72800c",
-732 => x"50505050",
-733 => x"04818052",
-734 => x"725180c1",
-735 => x"cc3f8008",
-736 => x"84d8140c",
-737 => x"ff530b0b",
-738 => x"8008802e",
-739 => x"e0388008",
-740 => x"540b0b9f",
-741 => x"530b0b80",
-742 => x"74708405",
-743 => x"560cff73",
-744 => x"05530b0b",
-745 => x"807324c1",
-746 => x"38807470",
-747 => x"8405560c",
-748 => x"ff730553",
-749 => x"0b0b7280",
-750 => x"25dd38ff",
-751 => x"ac397070",
-752 => x"70707577",
-753 => x"55530b0b",
-754 => x"9f742790",
-755 => x"3896730c",
-756 => x"ff520b0b",
-757 => x"71800c50",
-758 => x"50505004",
-759 => x"84d87305",
-760 => x"08520b0b",
-761 => x"71802e97",
-762 => x"38731010",
-763 => x"72057008",
-764 => x"79720c51",
-765 => x"520b0b71",
-766 => x"800c5050",
-767 => x"50500472",
-768 => x"51fed53f",
-769 => x"ff528008",
-770 => x"c93884d8",
-771 => x"73050874",
-772 => x"10107105",
-773 => x"70087a72",
-774 => x"0c515152",
-775 => x"d839f93d",
-776 => x"0d797b58",
-777 => x"560b769f",
-778 => x"2680f138",
-779 => x"84d81608",
-780 => x"540b0b73",
-781 => x"802ead38",
-782 => x"76101014",
-783 => x"70085555",
-784 => x"0b73802e",
-785 => x"be388058",
-786 => x"73812e8f",
-787 => x"3873ff2e",
-788 => x"a7388075",
-789 => x"0c765173",
-790 => x"2d80580b",
-791 => x"0b77800c",
-792 => x"893d0d04",
-793 => x"7551fdf0",
-794 => x"3fff5880",
-795 => x"08ed3884",
-796 => x"d8160854",
-797 => x"0b0bc139",
-798 => x"96760c81",
-799 => x"0b800c89",
-800 => x"3d0d0475",
-801 => x"5182873f",
-802 => x"76530b0b",
-803 => x"80085275",
-804 => x"5181be3f",
-805 => x"8008800c",
-806 => x"893d0d04",
-807 => x"96760cff",
-808 => x"0b800c89",
-809 => x"3d0d04fc",
-810 => x"3d0d7678",
-811 => x"56530b0b",
-812 => x"ff540b0b",
-813 => x"749f2680",
-814 => x"c13884d8",
-815 => x"73050852",
-816 => x"0b0b7180",
-817 => x"2ebb3874",
-818 => x"10107205",
-819 => x"7008530b",
-820 => x"0b530b0b",
-821 => x"81540b0b",
-822 => x"71802e9e",
-823 => x"3882540b",
-824 => x"0b71ff2e",
-825 => x"95388354",
-826 => x"0b0b7181",
-827 => x"2e8c3880",
-828 => x"730c7451",
-829 => x"712d8054",
-830 => x"0b0b7380",
-831 => x"0c863d0d",
-832 => x"047251fc",
-833 => x"d33f8008",
-834 => x"f13884d8",
-835 => x"73050852",
-836 => x"ffb53970",
-837 => x"70735281",
-838 => x"8a940851",
-839 => x"fe803f50",
-840 => x"50047070",
-841 => x"7075530b",
-842 => x"0b745281",
-843 => x"8a940851",
-844 => x"fd8c3f50",
-845 => x"50500470",
-846 => x"818a9408",
-847 => x"51fc993f",
-848 => x"50047070",
-849 => x"7352818a",
-850 => x"940851fe",
-851 => x"da3f5050",
-852 => x"04fc3d0d",
-853 => x"800b819a",
-854 => x"b80c7852",
-855 => x"775180df",
-856 => x"bc3f8008",
-857 => x"540b0b80",
-858 => x"08ff2e88",
-859 => x"3873800c",
-860 => x"863d0d04",
-861 => x"819ab808",
-862 => x"550b0b74",
-863 => x"802eee38",
-864 => x"7675710c",
-865 => x"530b0b73",
-866 => x"800c863d",
-867 => x"0d0480df",
-868 => x"873f0470",
-869 => x"70707075",
-870 => x"70718306",
-871 => x"530b0b55",
-872 => x"5270bf38",
-873 => x"71700870",
-874 => x"09f7fbfd",
-875 => x"ff720506",
-876 => x"70f88482",
-877 => x"81800651",
-878 => x"5152530b",
-879 => x"0b70a138",
-880 => x"84730570",
-881 => x"087009f7",
-882 => x"fbfdff72",
-883 => x"050670f8",
-884 => x"84828180",
-885 => x"06515152",
-886 => x"530b0b70",
-887 => x"802ee138",
-888 => x"72520b0b",
-889 => x"7133510b",
-890 => x"0b70802e",
-891 => x"8c388172",
-892 => x"05703352",
-893 => x"520b70f6",
-894 => x"38717431",
-895 => x"800c5050",
-896 => x"50500470",
-897 => x"70707076",
-898 => x"88710508",
-899 => x"540b0b54",
-900 => x"0b0b728d",
-901 => x"38728415",
-902 => x"0c72800c",
-903 => x"50505050",
-904 => x"04735275",
-905 => x"51b1db3f",
-906 => x"800b8815",
-907 => x"0c800b84",
-908 => x"150c8008",
-909 => x"800c5050",
-910 => x"505004fd",
-911 => x"ad3d0d82",
-912 => x"d63d0882",
-913 => x"d83d0882",
-914 => x"da3d0882",
-915 => x"dc3d0844",
-916 => x"5b454980",
-917 => x"70658c05",
-918 => x"2270832a",
-919 => x"81327081",
-920 => x"06515959",
-921 => x"4947750b",
-922 => x"672e0981",
-923 => x"068c3863",
-924 => x"90050867",
-925 => x"2e098106",
-926 => x"92386351",
-927 => x"a2e03fff",
-928 => x"56800881",
-929 => x"ec38638c",
-930 => x"0522570b",
-931 => x"0b769a06",
-932 => x"560b0b75",
-933 => x"8a2ebf38",
-934 => x"82c13d70",
-935 => x"7182d43d",
-936 => x"0c5b4380",
-937 => x"0b82d43d",
-938 => x"0c800b82",
-939 => x"d33d0c80",
-940 => x"46785b80",
-941 => x"79337081",
-942 => x"ff065959",
-943 => x"56760b76",
-944 => x"2e833881",
-945 => x"5676a52e",
-946 => x"81b13875",
-947 => x"802e81ab",
-948 => x"38811959",
-949 => x"de39638e",
-950 => x"05227090",
-951 => x"2b575880",
-952 => x"7624ffb4",
-953 => x"3876fd06",
-954 => x"560b0b75",
-955 => x"82a33d23",
-956 => x"77028405",
-957 => x"89860523",
-958 => x"639c0508",
-959 => x"82a73d0c",
-960 => x"63a40508",
-961 => x"82a93d0c",
-962 => x"9f3d7082",
-963 => x"a13d0c82",
-964 => x"a43d0c88",
-965 => x"800b82a2",
-966 => x"3d0c8880",
-967 => x"0b82a53d",
-968 => x"0c800b82",
-969 => x"a63d0c60",
-970 => x"530b0b78",
-971 => x"52829f3d",
-972 => x"70525695",
-973 => x"cb3f8008",
-974 => x"57800b80",
-975 => x"08248e38",
-976 => x"7551a39b",
-977 => x"3f800880",
-978 => x"2e8338ff",
-979 => x"5782a23d",
-980 => x"2270862a",
-981 => x"70810651",
-982 => x"57580b75",
-983 => x"802e9038",
-984 => x"638c0522",
-985 => x"80c00756",
-986 => x"0b0b7564",
-987 => x"8c052376",
-988 => x"560b0b75",
-989 => x"800c82d5",
-990 => x"3d0d0478",
-991 => x"7b31570b",
-992 => x"0b76802e",
-993 => x"b1387a7a",
-994 => x"0c76841b",
-995 => x"0c82d33d",
-996 => x"081782d4",
-997 => x"3d0c881a",
-998 => x"82d33d08",
-999 => x"81710582",
-1000 => x"d53d0c81",
-1001 => x"71055157",
-1002 => x"5a0b7587",
-1003 => x"2480cb38",
-1004 => x"65177933",
-1005 => x"59460b77",
-1006 => x"81ff0656",
-1007 => x"0b0b7580",
-1008 => x"2e93fe38",
-1009 => x"81195980",
-1010 => x"70714743",
-1011 => x"5fff5e7e",
-1012 => x"82d53d34",
-1013 => x"7833580b",
-1014 => x"0b7781ff",
-1015 => x"06811a5a",
-1016 => x"5de01d56",
-1017 => x"0b0b7580",
-1018 => x"d82687a1",
-1019 => x"38751010",
-1020 => x"81868405",
-1021 => x"560b0b75",
-1022 => x"080482d5",
-1023 => x"3df00552",
-1024 => x"6351fbff",
-1025 => x"3f80088a",
-1026 => x"a5386266",
-1027 => x"187a335a",
-1028 => x"475affa2",
-1029 => x"397e9007",
-1030 => x"5f0b0b7e",
-1031 => x"842a7081",
-1032 => x"0651560b",
-1033 => x"0b7592ba",
-1034 => x"387e862a",
-1035 => x"70810651",
-1036 => x"560b0b75",
-1037 => x"802e92aa",
-1038 => x"38606184",
-1039 => x"05827205",
-1040 => x"225a4256",
-1041 => x"815c800b",
-1042 => x"82d53d34",
-1043 => x"7d42807e",
-1044 => x"2486387e",
-1045 => x"feff065f",
-1046 => x"62783070",
-1047 => x"7a079f2a",
-1048 => x"64307066",
-1049 => x"079f2a72",
-1050 => x"07525951",
-1051 => x"585b0b76",
-1052 => x"802e918d",
-1053 => x"387b812e",
-1054 => x"8b9d3881",
-1055 => x"7c259281",
-1056 => x"387b822e",
-1057 => x"8bd63881",
-1058 => x"88e85b0b",
-1059 => x"0b7a51fa",
-1060 => x"823f8008",
-1061 => x"5c0b0b7b",
-1062 => x"5e7b6225",
-1063 => x"8338615e",
-1064 => x"82d43d33",
-1065 => x"7081ff06",
-1066 => x"57580b75",
-1067 => x"802e90ba",
-1068 => x"38811e5e",
-1069 => x"7e818406",
-1070 => x"400b0b7f",
-1071 => x"80fa3864",
-1072 => x"7e315780",
-1073 => x"0b772580",
-1074 => x"ef389077",
-1075 => x"25b93881",
-1076 => x"85e47a0c",
-1077 => x"900b841b",
-1078 => x"0c82d33d",
-1079 => x"08900582",
-1080 => x"d43d0c88",
-1081 => x"1a82d33d",
-1082 => x"08817105",
-1083 => x"82d53d0c",
-1084 => x"81710551",
-1085 => x"575a0b75",
-1086 => x"872485aa",
-1087 => x"38f01757",
-1088 => x"0b0b7690",
-1089 => x"24c93881",
-1090 => x"85e47a0c",
-1091 => x"76841b0c",
-1092 => x"82d33d08",
-1093 => x"1782d43d",
-1094 => x"0c881a82",
-1095 => x"d33d0881",
-1096 => x"710582d5",
-1097 => x"3d0c8171",
-1098 => x"0551575a",
-1099 => x"0b758724",
-1100 => x"8ff63882",
-1101 => x"d43d3358",
-1102 => x"0b0b7781",
-1103 => x"ff06560b",
-1104 => x"0b75802e",
-1105 => x"86e83882",
-1106 => x"d53dfc71",
-1107 => x"057b0c58",
-1108 => x"810b841b",
-1109 => x"0c82d33d",
-1110 => x"08810582",
-1111 => x"d43d0c88",
-1112 => x"1a82d33d",
-1113 => x"08817105",
-1114 => x"82d53d0c",
-1115 => x"81710551",
-1116 => x"575a0b75",
-1117 => x"87248789",
-1118 => x"387f8180",
-1119 => x"2e84d738",
-1120 => x"617c3157",
-1121 => x"800b7725",
-1122 => x"80fa3890",
-1123 => x"7725b938",
-1124 => x"8185f47a",
-1125 => x"0c900b84",
-1126 => x"1b0c82d3",
-1127 => x"3d089005",
-1128 => x"82d43d0c",
-1129 => x"881a82d3",
-1130 => x"3d088171",
-1131 => x"0582d53d",
-1132 => x"0c817105",
-1133 => x"51575a0b",
-1134 => x"75872484",
-1135 => x"8138f017",
-1136 => x"570b0b76",
-1137 => x"9024c938",
-1138 => x"8185f47a",
-1139 => x"0c76841b",
-1140 => x"0c82d33d",
-1141 => x"081782d4",
-1142 => x"3d0c881a",
-1143 => x"82d33d08",
-1144 => x"81710582",
-1145 => x"d53d0c81",
-1146 => x"71055157",
-1147 => x"5a877625",
-1148 => x"933882d5",
-1149 => x"3df00552",
-1150 => x"6351f887",
-1151 => x"3f800886",
-1152 => x"ad38625a",
-1153 => x"7a0b7a0c",
-1154 => x"7b841b0c",
-1155 => x"82d33d08",
-1156 => x"1c82d43d",
-1157 => x"0c881a82",
-1158 => x"d33d0881",
-1159 => x"710582d5",
-1160 => x"3d0c8171",
-1161 => x"0551575a",
-1162 => x"0b758724",
-1163 => x"84eb387e",
-1164 => x"822a7081",
-1165 => x"0651560b",
-1166 => x"0b75802e",
-1167 => x"81813864",
-1168 => x"7e315780",
-1169 => x"0b772580",
-1170 => x"f6389077",
-1171 => x"25b93881",
-1172 => x"85e47a0c",
-1173 => x"900b841b",
-1174 => x"0c82d33d",
-1175 => x"08900582",
-1176 => x"d43d0c88",
-1177 => x"1a82d33d",
-1178 => x"08817105",
-1179 => x"82d53d0c",
-1180 => x"81710551",
-1181 => x"575a0b75",
-1182 => x"87248485",
-1183 => x"38f01757",
-1184 => x"0b0b7690",
-1185 => x"24c93881",
-1186 => x"85e47a0c",
-1187 => x"76841b0c",
-1188 => x"82d33d08",
-1189 => x"1782d43d",
-1190 => x"0c82d23d",
-1191 => x"08817105",
-1192 => x"82d43d0c",
-1193 => x"81710551",
-1194 => x"56870b76",
-1195 => x"25913882",
-1196 => x"d53df005",
-1197 => x"526351f6",
-1198 => x"ca3f8008",
-1199 => x"84f0387d",
-1200 => x"567d6525",
-1201 => x"83386456",
-1202 => x"65164682",
-1203 => x"d33d0884",
-1204 => x"cb38800b",
-1205 => x"82d33d0c",
-1206 => x"625a6680",
-1207 => x"2ef7d238",
-1208 => x"6651b2d6",
-1209 => x"3f80795c",
-1210 => x"47f7c839",
-1211 => x"7e90075f",
-1212 => x"0b0b7e84",
-1213 => x"2a708106",
-1214 => x"51560b0b",
-1215 => x"758cd538",
-1216 => x"7e862a70",
-1217 => x"81065156",
-1218 => x"0b0b7580",
-1219 => x"2e8cc538",
-1220 => x"60618405",
-1221 => x"82720522",
-1222 => x"5a425680",
-1223 => x"5c800b82",
-1224 => x"d53d34fa",
-1225 => x"a7397e90",
-1226 => x"075f0b0b",
-1227 => x"7e842a70",
-1228 => x"81065156",
-1229 => x"0b0b758c",
-1230 => x"89387e86",
-1231 => x"2a708106",
-1232 => x"51560b0b",
-1233 => x"75802e8b",
-1234 => x"f9386061",
-1235 => x"84057108",
-1236 => x"902b7090",
-1237 => x"2c515a42",
-1238 => x"56807824",
-1239 => x"89ac3881",
-1240 => x"5cf9e939",
-1241 => x"60618405",
-1242 => x"71084742",
-1243 => x"56648025",
-1244 => x"f8e23864",
-1245 => x"30457e84",
-1246 => x"07793359",
-1247 => x"5ff8d839",
-1248 => x"8119597e",
-1249 => x"90077933",
-1250 => x"595ff8cb",
-1251 => x"397c802e",
-1252 => x"8caf3882",
-1253 => x"b73d5b7c",
-1254 => x"0b7b3481",
-1255 => x"5c800b82",
-1256 => x"d53d34f9",
-1257 => x"f03982d5",
-1258 => x"3df00552",
-1259 => x"6351f4d3",
-1260 => x"3f800882",
-1261 => x"f93862f0",
-1262 => x"18585afa",
-1263 => x"c33982d5",
-1264 => x"3df00552",
-1265 => x"6351f4bb",
-1266 => x"3f800882",
-1267 => x"e13862f0",
-1268 => x"18585afb",
-1269 => x"ec39647e",
-1270 => x"3157800b",
-1271 => x"7725fba0",
-1272 => x"38907725",
-1273 => x"b9388185",
-1274 => x"f47a0c90",
-1275 => x"0b841b0c",
-1276 => x"82d33d08",
-1277 => x"900582d4",
-1278 => x"3d0c881a",
-1279 => x"82d33d08",
-1280 => x"81710582",
-1281 => x"d53d0c81",
-1282 => x"71055157",
-1283 => x"5a0b7587",
-1284 => x"2480d638",
-1285 => x"f017570b",
-1286 => x"0b769024",
-1287 => x"c9388185",
-1288 => x"f47a0c76",
-1289 => x"841b0c82",
-1290 => x"d33d0817",
-1291 => x"82d43d0c",
-1292 => x"881a82d3",
-1293 => x"3d088171",
-1294 => x"0582d53d",
-1295 => x"0c817105",
-1296 => x"51575a87",
-1297 => x"7625fab8",
-1298 => x"3882d53d",
-1299 => x"f0055263",
-1300 => x"51f3b03f",
-1301 => x"800881d6",
-1302 => x"3862627d",
-1303 => x"31585a0b",
-1304 => x"768024fa",
-1305 => x"a638fb9c",
-1306 => x"3982d53d",
-1307 => x"f0055263",
-1308 => x"51f3903f",
-1309 => x"800881b6",
-1310 => x"3862f018",
-1311 => x"585aff97",
-1312 => x"3982d53d",
-1313 => x"f0055263",
-1314 => x"51f2f83f",
-1315 => x"8008819e",
-1316 => x"3862f018",
-1317 => x"585afbe8",
-1318 => x"3982d53d",
-1319 => x"f0055263",
-1320 => x"51f2e03f",
-1321 => x"80088186",
-1322 => x"38625afb",
-1323 => x"82397e0a",
-1324 => x"100a7081",
-1325 => x"0651560b",
-1326 => x"0b75802e",
-1327 => x"f9bb38b0",
-1328 => x"0b82b73d",
-1329 => x"347c0284",
-1330 => x"0589d505",
-1331 => x"3482d53d",
-1332 => x"ff84057a",
-1333 => x"0c820b84",
-1334 => x"1b0c82d3",
-1335 => x"3d088205",
-1336 => x"82d43d0c",
-1337 => x"881a82d3",
-1338 => x"3d088171",
-1339 => x"0582d53d",
-1340 => x"0c817105",
-1341 => x"51575a87",
-1342 => x"7625f8fd",
-1343 => x"3882d53d",
-1344 => x"58f01852",
-1345 => x"6351f1fb",
-1346 => x"3f8008a2",
-1347 => x"38625a7f",
-1348 => x"81802e09",
-1349 => x"8106f8e8",
-1350 => x"38fdbb39",
-1351 => x"82d53df0",
-1352 => x"05526351",
-1353 => x"f1dd3f80",
-1354 => x"08802efb",
-1355 => x"a5386680",
-1356 => x"2e863866",
-1357 => x"51ae833f",
-1358 => x"638c0522",
-1359 => x"70862a70",
-1360 => x"8106685a",
-1361 => x"5157440b",
-1362 => x"75802ef4",
-1363 => x"a238ff56",
-1364 => x"f49f3980",
-1365 => x"0b82d53d",
-1366 => x"34606184",
-1367 => x"0571085d",
-1368 => x"42567a80",
-1369 => x"2e88d138",
-1370 => x"7c80d32e",
-1371 => x"85aa387e",
-1372 => x"842a7081",
-1373 => x"0651560b",
-1374 => x"0b75859c",
-1375 => x"38807e24",
-1376 => x"f689387d",
-1377 => x"530b0b75",
-1378 => x"527a51ba",
-1379 => x"d03f7d5c",
-1380 => x"8008802e",
-1381 => x"f5ff3880",
-1382 => x"087b315c",
-1383 => x"7d0b7c25",
-1384 => x"f5f3387d",
-1385 => x"5cf5ee39",
-1386 => x"7e842a70",
-1387 => x"81065156",
-1388 => x"0b0b7587",
-1389 => x"bb387e86",
-1390 => x"2a708106",
-1391 => x"51560b0b",
-1392 => x"75802e87",
-1393 => x"ab386061",
-1394 => x"84057108",
-1395 => x"52425665",
-1396 => x"0b762378",
-1397 => x"5bf1dc39",
-1398 => x"78337081",
-1399 => x"ff065758",
-1400 => x"0b7580ec",
-1401 => x"2efb9938",
-1402 => x"7e900778",
-1403 => x"81ff0681",
-1404 => x"1b5b5e5f",
-1405 => x"f3eb3960",
-1406 => x"61840571",
-1407 => x"085a4256",
-1408 => x"820b8189",
-1409 => x"84607207",
-1410 => x"41495c80",
-1411 => x"f85d800b",
-1412 => x"82d53d34",
-1413 => x"f4b63989",
-1414 => x"7827a838",
-1415 => x"ff1b5b8a",
-1416 => x"52775180",
-1417 => x"d8b43f80",
-1418 => x"08b00556",
-1419 => x"0b0b757b",
-1420 => x"348a5277",
-1421 => x"5180d7f6",
-1422 => x"3f800858",
-1423 => x"0b0b7789",
-1424 => x"26da38ff",
-1425 => x"1bb01957",
-1426 => x"5b0b750b",
-1427 => x"7b3482d5",
-1428 => x"3d707c31",
-1429 => x"ffb0055d",
-1430 => x"56f4ba39",
-1431 => x"ff1b788f",
-1432 => x"06690557",
-1433 => x"5b0b7533",
-1434 => x"7b347784",
-1435 => x"2a580b0b",
-1436 => x"77802eda",
-1437 => x"38ff1b78",
-1438 => x"8f066905",
-1439 => x"575b0b75",
-1440 => x"337b3477",
-1441 => x"842a580b",
-1442 => x"0b77d138",
-1443 => x"c1397e80",
-1444 => x"c0077933",
-1445 => x"595ff2bf",
-1446 => x"3982b73d",
-1447 => x"5b7c80c3",
-1448 => x"2e91387e",
-1449 => x"842a7081",
-1450 => x"0651560b",
-1451 => x"0b75802e",
-1452 => x"82c83888",
-1453 => x"530b0b80",
-1454 => x"529d3d70",
-1455 => x"5256bbcf",
-1456 => x"3f75540b",
-1457 => x"0b606184",
-1458 => x"05710855",
-1459 => x"7c540b0b",
-1460 => x"6a530b0b",
-1461 => x"425686e8",
-1462 => x"3f80085c",
-1463 => x"8008ff2e",
-1464 => x"fccc3880",
-1465 => x"0b82d53d",
-1466 => x"34f3aa39",
-1467 => x"78708105",
-1468 => x"5a335d0b",
-1469 => x"0b7caa2e",
-1470 => x"85ef3880",
-1471 => x"0bd01e71",
-1472 => x"4057570b",
-1473 => x"758926f1",
-1474 => x"d8387610",
-1475 => x"10107710",
-1476 => x"057d05d0",
-1477 => x"05797081",
-1478 => x"055b33d0",
-1479 => x"7105585e",
-1480 => x"57897627",
-1481 => x"e538765e",
-1482 => x"76ff25f1",
-1483 => x"b438ff5e",
-1484 => x"f1af3981",
-1485 => x"89987f84",
-1486 => x"2a708106",
-1487 => x"5157480b",
-1488 => x"75818a38",
-1489 => x"7e862a70",
-1490 => x"81065156",
-1491 => x"0b0b7580",
-1492 => x"2e80fa38",
-1493 => x"60618405",
-1494 => x"82720522",
-1495 => x"5a425682",
-1496 => x"7f810657",
-1497 => x"5c77802e",
-1498 => x"f1dc3875",
-1499 => x"802ef1d6",
-1500 => x"387e7c07",
-1501 => x"5f800b82",
-1502 => x"d53d34f1",
-1503 => x"cf39ab0b",
-1504 => x"82d53d34",
-1505 => x"783358f0",
-1506 => x"ce398057",
-1507 => x"0b0b7610",
-1508 => x"10107710",
-1509 => x"057d05d0",
-1510 => x"05797081",
-1511 => x"055b33d0",
-1512 => x"7105585e",
-1513 => x"57897627",
-1514 => x"e3387645",
-1515 => x"f0b3397e",
-1516 => x"81800779",
-1517 => x"33595ff0",
-1518 => x"9e398189",
-1519 => x"847f842a",
-1520 => x"70810651",
-1521 => x"57480b75",
-1522 => x"802efef8",
-1523 => x"38606184",
-1524 => x"0571085a",
-1525 => x"4256ff87",
-1526 => x"397e8107",
-1527 => x"7933595f",
-1528 => x"eff53982",
-1529 => x"d43d3356",
-1530 => x"0b0b75ef",
-1531 => x"e738a00b",
-1532 => x"82d53d34",
-1533 => x"783358ef",
-1534 => x"de396061",
-1535 => x"84054256",
-1536 => x"8316337b",
-1537 => x"34815cf7",
-1538 => x"94397730",
-1539 => x"58ad0b82",
-1540 => x"d53d3481",
-1541 => x"5cf0b539",
-1542 => x"7a4a8070",
-1543 => x"585c8853",
-1544 => x"0b0b7b52",
-1545 => x"9b3d7052",
-1546 => x"58b8e43f",
-1547 => x"7b7e2481",
-1548 => x"94387610",
-1549 => x"106a0556",
-1550 => x"0b0b7508",
-1551 => x"802eb638",
-1552 => x"77540b0b",
-1553 => x"7508530b",
-1554 => x"0b82d53d",
-1555 => x"ff880552",
-1556 => x"685183ec",
-1557 => x"3f8008ff",
-1558 => x"2ef9d338",
-1559 => x"80081c56",
-1560 => x"0b0b757e",
-1561 => x"248f3881",
-1562 => x"17765d57",
-1563 => x"757e2e09",
-1564 => x"8106ffbe",
-1565 => x"387b802e",
-1566 => x"f09b3881",
-1567 => x"1c526851",
-1568 => x"a7c73f80",
-1569 => x"08478008",
-1570 => x"802ef9ac",
-1571 => x"3888530b",
-1572 => x"0b805277",
-1573 => x"51b7f83f",
-1574 => x"77557b54",
-1575 => x"0b0b82d5",
-1576 => x"3df69405",
-1577 => x"530b0b66",
-1578 => x"52685184",
-1579 => x"8a3f8008",
-1580 => x"7c2e0981",
-1581 => x"06f8f738",
-1582 => x"66678008",
-1583 => x"05575b80",
-1584 => x"7634efd1",
-1585 => x"3977557b",
-1586 => x"540b0b82",
-1587 => x"d53df694",
-1588 => x"05530b0b",
-1589 => x"7b526851",
-1590 => x"83dd3f80",
-1591 => x"085c8008",
-1592 => x"ff2ef8ca",
-1593 => x"387a4aff",
-1594 => x"8c397e0a",
-1595 => x"100a7081",
-1596 => x"0651560b",
-1597 => x"0b75802e",
-1598 => x"efba3882",
-1599 => x"1e5eefb4",
-1600 => x"397bfaca",
-1601 => x"387e8106",
-1602 => x"560b0b75",
-1603 => x"802efabe",
-1604 => x"380289ff",
-1605 => x"055bb00b",
-1606 => x"7b3482d5",
-1607 => x"3d707c31",
-1608 => x"ffb0055d",
-1609 => x"56eeee39",
-1610 => x"82d53df0",
-1611 => x"05526351",
-1612 => x"e9d13f80",
-1613 => x"08f7f738",
-1614 => x"6282d53d",
-1615 => x"33595aef",
-1616 => x"f7396061",
-1617 => x"84057108",
-1618 => x"5a425677",
-1619 => x"8025f48f",
-1620 => x"38fdb739",
-1621 => x"60618405",
-1622 => x"71085a42",
-1623 => x"56805cf3",
-1624 => x"bc396061",
-1625 => x"84057108",
-1626 => x"5a425681",
-1627 => x"5cedd739",
-1628 => x"60618405",
-1629 => x"71086871",
-1630 => x"0c527a5d",
-1631 => x"4256eab3",
-1632 => x"397bee83",
-1633 => x"38ff1b78",
-1634 => x"b706b007",
-1635 => x"585b0b76",
-1636 => x"0b7b3477",
-1637 => x"832a580b",
-1638 => x"0b77ea38",
-1639 => x"7e810656",
-1640 => x"0b0b7580",
-1641 => x"2ef9a738",
-1642 => x"76b02ef9",
-1643 => x"a138ff1b",
-1644 => x"5bb00b7b",
-1645 => x"34fee339",
-1646 => x"8189ac5b",
-1647 => x"865cedd5",
-1648 => x"3982d33d",
-1649 => x"088a3880",
-1650 => x"0b82d33d",
-1651 => x"0cf6df39",
-1652 => x"82d53df0",
-1653 => x"05526351",
-1654 => x"e8a93f80",
-1655 => x"08f6cf38",
-1656 => x"800b82d3",
-1657 => x"3d0cf6c6",
-1658 => x"39606184",
-1659 => x"05710840",
-1660 => x"42567d80",
-1661 => x"25ebdd38",
-1662 => x"ff793359",
-1663 => x"5eebd839",
-1664 => x"fc3d0d81",
-1665 => x"8a940855",
-1666 => x"b8150880",
-1667 => x"2e973878",
-1668 => x"540b0b77",
-1669 => x"530b0b76",
-1670 => x"52818a94",
-1671 => x"0851e89b",
-1672 => x"3f863d0d",
-1673 => x"04745190",
-1674 => x"c13f7854",
-1675 => x"0b0b7753",
-1676 => x"0b0b7652",
-1677 => x"818a9408",
-1678 => x"51e8803f",
-1679 => x"863d0d04",
-1680 => x"f63d0d7c",
-1681 => x"7e615956",
-1682 => x"58805674",
-1683 => x"0b762ea0",
-1684 => x"3876540b",
-1685 => x"0b7e530b",
-1686 => x"0b745277",
-1687 => x"5182d53f",
-1688 => x"80085580",
-1689 => x"08ff2ea6",
-1690 => x"3874800c",
-1691 => x"8c3d0d04",
-1692 => x"76540b0b",
-1693 => x"75530b0b",
-1694 => x"8c3df405",
-1695 => x"52775182",
-1696 => x"b33f8008",
-1697 => x"558008ff",
-1698 => x"2e098106",
-1699 => x"dc388077",
-1700 => x"0c818a78",
-1701 => x"0c74800c",
-1702 => x"8c3d0d04",
-1703 => x"70707070",
-1704 => x"77540b0b",
-1705 => x"76530b0b",
-1706 => x"7552818a",
-1707 => x"940851ff",
-1708 => x"8f3f5050",
-1709 => x"505004ec",
-1710 => x"3d0d6668",
-1711 => x"6a6c6e73",
-1712 => x"5c405d42",
-1713 => x"42420b60",
-1714 => x"802e819b",
-1715 => x"38806008",
-1716 => x"5a5d0b0b",
-1717 => x"7c7a2781",
-1718 => x"8338933d",
-1719 => x"5b7b0884",
-1720 => x"1d087d56",
-1721 => x"7a08557c",
-1722 => x"540b0b63",
-1723 => x"530b0b40",
-1724 => x"5efecd3f",
-1725 => x"80085880",
-1726 => x"08ff2e80",
-1727 => x"fa38807a",
-1728 => x"80083156",
-1729 => x"567c7526",
-1730 => x"83388156",
-1731 => x"80087a27",
-1732 => x"80da3875",
-1733 => x"802e80d4",
-1734 => x"3880081d",
-1735 => x"5d60802e",
-1736 => x"a7388056",
-1737 => x"0b0b7580",
-1738 => x"08259738",
-1739 => x"751b550b",
-1740 => x"0b743377",
-1741 => x"70810559",
-1742 => x"34811656",
-1743 => x"770b7624",
-1744 => x"eb387f08",
-1745 => x"8405600c",
-1746 => x"78708405",
-1747 => x"5a08550b",
-1748 => x"0b74802e",
-1749 => x"b138797d",
-1750 => x"26ff8238",
-1751 => x"7c550b0b",
-1752 => x"74800c96",
-1753 => x"3d0d04ff",
-1754 => x"5afee239",
-1755 => x"7d7c0c7e",
-1756 => x"841d0c7c",
-1757 => x"55e83981",
-1758 => x"8a620c80",
-1759 => x"7c0c8008",
-1760 => x"800c963d",
-1761 => x"0d046080",
-1762 => x"2e843874",
-1763 => x"600c747c",
-1764 => x"0cff1d80",
-1765 => x"0c963d0d",
-1766 => x"04fc3d0d",
-1767 => x"79557854",
-1768 => x"0b0b7753",
-1769 => x"0b0b7652",
-1770 => x"818a9408",
-1771 => x"51fe883f",
-1772 => x"863d0d04",
-1773 => x"f83d0d7b",
-1774 => x"7d7f8191",
-1775 => x"94540b0b",
-1776 => x"595755e3",
-1777 => x"ce3f8008",
-1778 => x"81269838",
-1779 => x"74540b0b",
-1780 => x"74802e88",
-1781 => x"38757534",
-1782 => x"81540b0b",
-1783 => x"73800c8a",
-1784 => x"3d0d0481",
-1785 => x"89b45281",
-1786 => x"919451be",
-1787 => x"c93f8008",
-1788 => x"81d93880",
-1789 => x"08540b0b",
-1790 => x"74802ee0",
-1791 => x"3880ff76",
-1792 => x"25d338ff",
-1793 => x"8016530b",
-1794 => x"0b8eff73",
-1795 => x"2785b838",
-1796 => x"f0801653",
-1797 => x"0b0b83ef",
-1798 => x"ff732782",
-1799 => x"d038fc80",
-1800 => x"8016530b",
-1801 => x"0b80fbff",
-1802 => x"ff732785",
-1803 => x"c2388fff",
-1804 => x"0a16530b",
-1805 => x"0bf7c00a",
-1806 => x"73278689",
-1807 => x"38ff540b",
-1808 => x"0bc00a76",
-1809 => x"25ff9538",
-1810 => x"75820a06",
-1811 => x"709e2c70",
-1812 => x"fc075151",
-1813 => x"530b0b72",
-1814 => x"75708105",
-1815 => x"57347581",
-1816 => x"fc0a0670",
-1817 => x"982aff80",
-1818 => x"0751530b",
-1819 => x"0b727570",
-1820 => x"81055734",
-1821 => x"7587f080",
-1822 => x"80067092",
-1823 => x"2aff8007",
-1824 => x"51530b0b",
-1825 => x"72757081",
-1826 => x"05573475",
-1827 => x"8fe08006",
-1828 => x"708c2aff",
-1829 => x"80075153",
-1830 => x"0b0b7275",
-1831 => x"70810557",
-1832 => x"34759fc0",
-1833 => x"0670862a",
-1834 => x"ff800751",
-1835 => x"530b0b72",
-1836 => x"75708105",
-1837 => x"573475ff",
-1838 => x"bf06ff80",
-1839 => x"07530b0b",
-1840 => x"72753486",
-1841 => x"0b800c8a",
-1842 => x"3d0d0481",
-1843 => x"89bc5281",
-1844 => x"919451bc",
-1845 => x"e13f8008",
-1846 => x"81f93875",
-1847 => x"81ff0676",
-1848 => x"882c7081",
-1849 => x"ff068008",
-1850 => x"5759540b",
-1851 => x"0b587480",
-1852 => x"2efde938",
-1853 => x"76802efd",
-1854 => x"d3388008",
-1855 => x"80ff1870",
-1856 => x"81ff0651",
-1857 => x"540b0b56",
-1858 => x"729e2683",
-1859 => x"38815680",
-1860 => x"08a01870",
-1861 => x"81ff0651",
-1862 => x"540b0b54",
-1863 => x"0b0b728f",
-1864 => x"26853881",
-1865 => x"540b0b75",
-1866 => x"7407530b",
-1867 => x"0b72802e",
-1868 => x"b4388008",
-1869 => x"c019540b",
-1870 => x"0b5672be",
-1871 => x"26833881",
-1872 => x"568008ff",
-1873 => x"80197081",
-1874 => x"ff065154",
-1875 => x"0b0b540b",
-1876 => x"0b7280fc",
-1877 => x"26853881",
-1878 => x"540b0b75",
-1879 => x"7407530b",
-1880 => x"0b7280da",
-1881 => x"38ff0b80",
-1882 => x"0c8a3d0d",
-1883 => x"04fcd080",
-1884 => x"16530b0b",
-1885 => x"ff540b0b",
-1886 => x"8fff7327",
-1887 => x"fcde3875",
-1888 => x"83e08006",
-1889 => x"708c2ae0",
-1890 => x"0751530b",
-1891 => x"0b727570",
-1892 => x"81055734",
-1893 => x"759fc006",
-1894 => x"70862aff",
-1895 => x"80075153",
-1896 => x"0b0b7275",
-1897 => x"70810557",
-1898 => x"3475ffbf",
-1899 => x"06ff8007",
-1900 => x"530b0b72",
-1901 => x"7534830b",
-1902 => x"800c8a3d",
-1903 => x"0d047675",
-1904 => x"70810557",
-1905 => x"34777534",
-1906 => x"82540b0b",
-1907 => x"73800c8a",
-1908 => x"3d0d0481",
-1909 => x"89c45281",
-1910 => x"919451ba",
-1911 => x"d93f8008",
-1912 => x"80eb3875",
-1913 => x"81ff0676",
-1914 => x"882c7081",
-1915 => x"ff068008",
-1916 => x"5759540b",
-1917 => x"0b587480",
-1918 => x"2efbe138",
-1919 => x"76802efb",
-1920 => x"cb388008",
-1921 => x"530b0b81",
-1922 => x"a0772785",
-1923 => x"3881530b",
-1924 => x"0b7681ff",
-1925 => x"2efece38",
-1926 => x"81707406",
-1927 => x"540b0b54",
-1928 => x"0b0b7280",
-1929 => x"2efebe38",
-1930 => x"8008530b",
-1931 => x"0b81a078",
-1932 => x"27853873",
-1933 => x"530b0b77",
-1934 => x"81ff2efe",
-1935 => x"a8387274",
-1936 => x"06530b0b",
-1937 => x"72802efe",
-1938 => x"9c38fef2",
-1939 => x"398189cc",
-1940 => x"52819194",
-1941 => x"51b9df3f",
-1942 => x"8008faf0",
-1943 => x"38800876",
-1944 => x"81ff0677",
-1945 => x"882c7081",
-1946 => x"ff065955",
-1947 => x"59598154",
-1948 => x"0b0b7480",
-1949 => x"2efae538",
-1950 => x"75802e82",
-1951 => x"b438df16",
-1952 => x"530b0b72",
-1953 => x"80dd26fd",
-1954 => x"dc38df18",
-1955 => x"530b0b72",
-1956 => x"80dd26fd",
-1957 => x"d0387608",
-1958 => x"9c387377",
-1959 => x"0c9b7570",
-1960 => x"81055734",
-1961 => x"a4757081",
-1962 => x"05573480",
-1963 => x"c2757081",
-1964 => x"05573483",
-1965 => x"59757570",
-1966 => x"81055734",
-1967 => x"77753482",
-1968 => x"19800c8a",
-1969 => x"3d0d0475",
-1970 => x"8fc00670",
-1971 => x"862ac007",
-1972 => x"51530b0b",
-1973 => x"72757081",
-1974 => x"05573475",
-1975 => x"ffbf06ff",
-1976 => x"8007530b",
-1977 => x"0b727534",
-1978 => x"82540b0b",
-1979 => x"fdde3975",
-1980 => x"80f08080",
-1981 => x"0670922a",
-1982 => x"f0075153",
-1983 => x"0b0b7275",
-1984 => x"70810557",
-1985 => x"34758fe0",
-1986 => x"8006708c",
-1987 => x"2aff8007",
-1988 => x"51530b0b",
-1989 => x"72757081",
-1990 => x"05573475",
-1991 => x"9fc00670",
-1992 => x"862aff80",
-1993 => x"0751530b",
-1994 => x"0b727570",
-1995 => x"81055734",
-1996 => x"75ffbf06",
-1997 => x"ff800753",
-1998 => x"0b0b7275",
-1999 => x"34840b80",
-2000 => x"0c8a3d0d",
-2001 => x"047581c0",
-2002 => x"0a067098",
-2003 => x"2af80751",
-2004 => x"530b0b72",
-2005 => x"75708105",
-2006 => x"57347587",
-2007 => x"f0808006",
-2008 => x"70922aff",
-2009 => x"80075153",
-2010 => x"0b0b7275",
-2011 => x"70810557",
-2012 => x"34758fe0",
-2013 => x"8006708c",
-2014 => x"2aff8007",
-2015 => x"51530b0b",
-2016 => x"72757081",
-2017 => x"05573475",
-2018 => x"9fc00670",
-2019 => x"862aff80",
-2020 => x"0751530b",
-2021 => x"0b727570",
-2022 => x"81055734",
-2023 => x"75ffbf06",
-2024 => x"ff800753",
-2025 => x"0b0b7275",
-2026 => x"34850b80",
-2027 => x"0c8a3d0d",
-2028 => x"04760880",
-2029 => x"2e9d3880",
-2030 => x"08770c9b",
-2031 => x"75708105",
-2032 => x"5734a875",
-2033 => x"70810557",
-2034 => x"3480c275",
-2035 => x"70810557",
-2036 => x"34835977",
-2037 => x"75348119",
-2038 => x"800c8a3d",
-2039 => x"0d04fa3d",
-2040 => x"0d78818a",
-2041 => x"9408540b",
-2042 => x"0b55b873",
-2043 => x"0508802e",
-2044 => x"81ce388c",
-2045 => x"15227083",
-2046 => x"ffff0670",
-2047 => x"832a8132",
-2048 => x"70810651",
-2049 => x"55555672",
-2050 => x"802e80ea",
-2051 => x"3873842a",
-2052 => x"81328106",
-2053 => x"57ff530b",
-2054 => x"0b76818b",
-2055 => x"3873822a",
-2056 => x"70810651",
-2057 => x"530b0b72",
-2058 => x"802ebf38",
-2059 => x"b0150854",
-2060 => x"0b0b7380",
-2061 => x"2e9e3880",
-2062 => x"c015530b",
-2063 => x"0b73732e",
-2064 => x"8f387352",
-2065 => x"818a9408",
-2066 => x"5188a53f",
-2067 => x"8c152256",
-2068 => x"76b0160c",
-2069 => x"75db0653",
-2070 => x"0b0b728c",
-2071 => x"1623800b",
-2072 => x"84160c90",
-2073 => x"1508750c",
-2074 => x"72560b0b",
-2075 => x"75880753",
-2076 => x"0b0b728c",
-2077 => x"16239015",
-2078 => x"08802e80",
-2079 => x"cb388c15",
-2080 => x"22708106",
-2081 => x"55530b0b",
-2082 => x"73a43872",
-2083 => x"0a100a70",
-2084 => x"81065153",
-2085 => x"0b0b7287",
-2086 => x"38941508",
-2087 => x"540b0b73",
-2088 => x"88160c80",
-2089 => x"530b0b72",
-2090 => x"800c883d",
-2091 => x"0d04800b",
-2092 => x"88160c94",
-2093 => x"15083098",
-2094 => x"160c8053",
-2095 => x"0b0be839",
-2096 => x"725183a6",
-2097 => x"3ffeac39",
-2098 => x"745194c6",
-2099 => x"3f8c1522",
-2100 => x"70810655",
-2101 => x"530b0b73",
-2102 => x"802effaf",
-2103 => x"38d039f8",
-2104 => x"3d0d7a58",
-2105 => x"0b0b7780",
-2106 => x"2e81a938",
-2107 => x"818a9408",
-2108 => x"540b0bb8",
-2109 => x"1408802e",
-2110 => x"80f9388c",
-2111 => x"18227090",
-2112 => x"2b70902c",
-2113 => x"70832a81",
-2114 => x"3281065c",
-2115 => x"5157540b",
-2116 => x"0b7880d7",
-2117 => x"38901808",
-2118 => x"570b0b76",
-2119 => x"802e80cb",
-2120 => x"38770877",
-2121 => x"3177790c",
-2122 => x"7683067a",
-2123 => x"5855550b",
-2124 => x"73853894",
-2125 => x"1808560b",
-2126 => x"0b758819",
-2127 => x"0c807525",
-2128 => x"aa387453",
-2129 => x"0b0b7652",
-2130 => x"9c180851",
-2131 => x"a4180854",
-2132 => x"0b0b732d",
-2133 => x"800b8008",
-2134 => x"2580cd38",
-2135 => x"80081775",
-2136 => x"80083156",
-2137 => x"570b7480",
-2138 => x"24d83880",
-2139 => x"0b800c8a",
-2140 => x"3d0d0473",
-2141 => x"5181f33f",
-2142 => x"8c182270",
-2143 => x"902b7090",
-2144 => x"2c70832a",
-2145 => x"81328106",
-2146 => x"5c515754",
-2147 => x"0b0b78db",
-2148 => x"38ff8239",
-2149 => x"80c1df52",
-2150 => x"818a9408",
-2151 => x"5191973f",
-2152 => x"8008800c",
-2153 => x"8a3d0d04",
-2154 => x"8c182280",
-2155 => x"c007540b",
-2156 => x"0b738c19",
-2157 => x"23ff0b80",
-2158 => x"0c8a3d0d",
-2159 => x"04707251",
-2160 => x"800b710c",
-2161 => x"800b8472",
-2162 => x"050c800b",
-2163 => x"8872050c",
-2164 => x"028e0522",
-2165 => x"8c720523",
-2166 => x"02920522",
-2167 => x"8e720523",
-2168 => x"800b9072",
-2169 => x"050c800b",
-2170 => x"9472050c",
-2171 => x"800b9872",
-2172 => x"050c709c",
-2173 => x"72050c80",
-2174 => x"f3d60ba0",
-2175 => x"72050c80",
-2176 => x"f4a90ba4",
-2177 => x"72050c80",
-2178 => x"f5bc0ba8",
-2179 => x"72050c80",
-2180 => x"f6960bac",
-2181 => x"72050c50",
-2182 => x"04fa3d0d",
-2183 => x"797080dc",
-2184 => x"298c7105",
-2185 => x"540b0b7a",
-2186 => x"530b0b56",
-2187 => x"57949a3f",
-2188 => x"80088008",
-2189 => x"55568008",
-2190 => x"802ea838",
-2191 => x"80088c05",
-2192 => x"540b0b80",
-2193 => x"0b80080c",
-2194 => x"76800884",
-2195 => x"050c7380",
-2196 => x"0888050c",
-2197 => x"74530b0b",
-2198 => x"80527351",
-2199 => x"a4b13f75",
-2200 => x"540b0b73",
-2201 => x"800c883d",
-2202 => x"0d04fc3d",
-2203 => x"0d7680c7",
-2204 => x"940bbc72",
-2205 => x"050c5581",
-2206 => x"0bb8160c",
-2207 => x"800b84dc",
-2208 => x"160c830b",
-2209 => x"84e0160c",
-2210 => x"84e81584",
-2211 => x"e4160c74",
-2212 => x"540b0b80",
-2213 => x"530b0b84",
-2214 => x"52841508",
-2215 => x"51fe9e3f",
-2216 => x"74540b0b",
-2217 => x"81530b0b",
-2218 => x"89528815",
-2219 => x"0851fe8d",
-2220 => x"3f74540b",
-2221 => x"0b82530b",
-2222 => x"0b8a528c",
-2223 => x"150851fd",
-2224 => x"fc3f863d",
-2225 => x"0d04f93d",
-2226 => x"0d79818a",
-2227 => x"9408540b",
-2228 => x"0b57b873",
-2229 => x"0508802e",
-2230 => x"80ce3884",
-2231 => x"dc730556",
-2232 => x"88160884",
-2233 => x"1708ff05",
-2234 => x"55558074",
-2235 => x"24a2388c",
-2236 => x"15227090",
-2237 => x"2b70902c",
-2238 => x"51540b0b",
-2239 => x"5872802e",
-2240 => x"80cd3880",
-2241 => x"dc15ff15",
-2242 => x"55550b73",
-2243 => x"8025e038",
-2244 => x"7508530b",
-2245 => x"0b72802e",
-2246 => x"9f387256",
-2247 => x"88160884",
-2248 => x"1708ff05",
-2249 => x"5555c339",
-2250 => x"7251febe",
-2251 => x"3f818a94",
-2252 => x"0884dc05",
-2253 => x"56ffa939",
-2254 => x"84527651",
-2255 => x"fddb3f80",
-2256 => x"08760c80",
-2257 => x"08802e80",
-2258 => x"c0388008",
-2259 => x"56ce3981",
-2260 => x"0b8c1623",
-2261 => x"72750c72",
-2262 => x"88160c72",
-2263 => x"84160c72",
-2264 => x"90160c72",
-2265 => x"94160c72",
-2266 => x"98160cff",
-2267 => x"0b8e1623",
-2268 => x"72b0160c",
-2269 => x"72b4160c",
-2270 => x"7280c416",
-2271 => x"0c7280c8",
-2272 => x"160c7480",
-2273 => x"0c893d0d",
-2274 => x"048c770c",
-2275 => x"800b800c",
-2276 => x"893d0d04",
-2277 => x"707080c1",
-2278 => x"df527351",
-2279 => x"8d983f50",
-2280 => x"50047081",
-2281 => x"8a940851",
-2282 => x"eb3f5004",
-2283 => x"fb3d0d77",
-2284 => x"705256a3",
-2285 => x"873f8191",
-2286 => x"f00b8805",
-2287 => x"08847105",
-2288 => x"08fc0670",
-2289 => x"7b319fef",
-2290 => x"05e08006",
-2291 => x"e0800556",
-2292 => x"56530b0b",
-2293 => x"a0807424",
-2294 => x"96388052",
-2295 => x"7551abbb",
-2296 => x"3f8191f8",
-2297 => x"0815530b",
-2298 => x"0b728008",
-2299 => x"2e913875",
-2300 => x"51a2ca3f",
-2301 => x"80530b0b",
-2302 => x"72800c87",
-2303 => x"3d0d0473",
-2304 => x"30527551",
-2305 => x"ab953f80",
-2306 => x"08ff2eab",
-2307 => x"388191f0",
-2308 => x"0b880508",
-2309 => x"75753181",
-2310 => x"07847205",
-2311 => x"0c530b0b",
-2312 => x"8191b408",
-2313 => x"74318191",
-2314 => x"b40c7551",
-2315 => x"a28f3f81",
-2316 => x"0b800c87",
-2317 => x"3d0d0480",
-2318 => x"527551aa",
-2319 => x"de3f8191",
-2320 => x"f00b8805",
-2321 => x"08800871",
-2322 => x"3156530b",
-2323 => x"0b8f7525",
-2324 => x"ff9d3880",
-2325 => x"088191e4",
-2326 => x"08318191",
-2327 => x"b40c7481",
-2328 => x"0784140c",
-2329 => x"7551a1d5",
-2330 => x"3f80530b",
-2331 => x"0bff8939",
-2332 => x"f63d0d7c",
-2333 => x"7e540b0b",
-2334 => x"5b72802e",
-2335 => x"82a2387a",
-2336 => x"51a1b93f",
-2337 => x"f8730584",
-2338 => x"71050870",
-2339 => x"fe067073",
-2340 => x"05847105",
-2341 => x"08fc065d",
-2342 => x"5859540b",
-2343 => x"0b588191",
-2344 => x"f808752e",
-2345 => x"83833878",
-2346 => x"84160c80",
-2347 => x"73810654",
-2348 => x"0b0b5a72",
-2349 => x"0b7a2e81",
-2350 => x"eb387815",
-2351 => x"84710508",
-2352 => x"81065153",
-2353 => x"0b0b72a3",
-2354 => x"38781757",
-2355 => x"7981fc38",
-2356 => x"88150853",
-2357 => x"0b0b7281",
-2358 => x"91f82e83",
-2359 => x"9c388c15",
-2360 => x"08708c15",
-2361 => x"0c738872",
-2362 => x"050c5676",
-2363 => x"81078419",
-2364 => x"0c761877",
-2365 => x"710c530b",
-2366 => x"0b79819f",
-2367 => x"3883ff77",
-2368 => x"2781da38",
-2369 => x"76892a77",
-2370 => x"832a5653",
-2371 => x"0b0b7280",
-2372 => x"2e80c038",
-2373 => x"76862ab8",
-2374 => x"05558473",
-2375 => x"27b53880",
-2376 => x"db730555",
-2377 => x"947327ab",
-2378 => x"38768c2a",
-2379 => x"80ee0555",
-2380 => x"80d47327",
-2381 => x"9e38768f",
-2382 => x"2a80f705",
-2383 => x"5582d473",
-2384 => x"27913876",
-2385 => x"922a80fc",
-2386 => x"05558ad4",
-2387 => x"73278438",
-2388 => x"80fe550b",
-2389 => x"0b741010",
-2390 => x"108191f0",
-2391 => x"05887105",
-2392 => x"0855560b",
-2393 => x"730b762e",
-2394 => x"82cd3884",
-2395 => x"1408fc06",
-2396 => x"530b0b76",
-2397 => x"73278f38",
-2398 => x"88140854",
-2399 => x"0b0b7376",
-2400 => x"2e098106",
-2401 => x"e6388c14",
-2402 => x"08708c1a",
-2403 => x"0c74881a",
-2404 => x"0c788872",
-2405 => x"050c5677",
-2406 => x"8c150c7a",
-2407 => x"519f9e3f",
-2408 => x"8c3d0d04",
-2409 => x"77087871",
-2410 => x"31597705",
-2411 => x"88190854",
-2412 => x"0b0b5772",
-2413 => x"8191f82e",
-2414 => x"80ea388c",
-2415 => x"1808708c",
-2416 => x"150c7388",
-2417 => x"72050c56",
-2418 => x"fdf03988",
-2419 => x"15088c16",
-2420 => x"08708c73",
-2421 => x"050c5788",
-2422 => x"170cfe8f",
-2423 => x"3976832a",
-2424 => x"70540b0b",
-2425 => x"55800b75",
-2426 => x"2481a338",
-2427 => x"72822c81",
-2428 => x"712b8191",
-2429 => x"f4080781",
-2430 => x"91f00b84",
-2431 => x"050c530b",
-2432 => x"0b741010",
-2433 => x"108191f0",
-2434 => x"05887105",
-2435 => x"0855560b",
-2436 => x"0b758c19",
-2437 => x"0c738819",
-2438 => x"0c778817",
-2439 => x"0c778c15",
-2440 => x"0cfef839",
-2441 => x"815afd92",
-2442 => x"39781773",
-2443 => x"8106540b",
-2444 => x"0b57729a",
-2445 => x"38770878",
-2446 => x"71315977",
-2447 => x"058c1908",
-2448 => x"881a0871",
-2449 => x"8c72050c",
-2450 => x"8872050c",
-2451 => x"57570b0b",
-2452 => x"76810784",
-2453 => x"190c7781",
-2454 => x"91f00b88",
-2455 => x"050c8191",
-2456 => x"ec087726",
-2457 => x"feb53881",
-2458 => x"91e80852",
-2459 => x"7a51fabc",
-2460 => x"3f7a519d",
-2461 => x"c83ffea8",
-2462 => x"3981788c",
-2463 => x"150c7888",
-2464 => x"150c738c",
-2465 => x"1a0c7388",
-2466 => x"1a0c5afc",
-2467 => x"de398315",
-2468 => x"70822c81",
-2469 => x"712b8191",
-2470 => x"f4080781",
-2471 => x"91f00b84",
-2472 => x"050c5153",
-2473 => x"0b0b7410",
-2474 => x"10108191",
-2475 => x"f0058871",
-2476 => x"05085556",
-2477 => x"fed93974",
-2478 => x"530b0b80",
-2479 => x"7524a938",
-2480 => x"72822c81",
-2481 => x"712b8191",
-2482 => x"f4080781",
-2483 => x"91f00b84",
-2484 => x"050c530b",
-2485 => x"0b758c19",
-2486 => x"0c738819",
-2487 => x"0c778817",
-2488 => x"0c778c15",
-2489 => x"0cfdb439",
-2490 => x"83157082",
-2491 => x"2c81712b",
-2492 => x"8191f408",
-2493 => x"078191f0",
-2494 => x"0b84050c",
-2495 => x"51530b0b",
-2496 => x"d439f23d",
-2497 => x"0d606288",
-2498 => x"71050870",
-2499 => x"57575f5a",
-2500 => x"74802e81",
-2501 => x"9f388c1a",
-2502 => x"2270832a",
-2503 => x"81327081",
-2504 => x"06515558",
-2505 => x"0b738638",
-2506 => x"901a0893",
-2507 => x"387951f1",
-2508 => x"ad3fff54",
-2509 => x"0b0b8008",
-2510 => x"80fa388c",
-2511 => x"1a22587d",
-2512 => x"08578078",
-2513 => x"83ffff06",
-2514 => x"700a100a",
-2515 => x"70810651",
-2516 => x"56575573",
-2517 => x"0b752e80",
-2518 => x"e2387491",
-2519 => x"38760884",
-2520 => x"18088819",
-2521 => x"5956590b",
-2522 => x"74802ef1",
-2523 => x"3874540b",
-2524 => x"0b888075",
-2525 => x"27863888",
-2526 => x"80540b0b",
-2527 => x"73530b0b",
-2528 => x"78529c1a",
-2529 => x"0851a41a",
-2530 => x"08540b0b",
-2531 => x"732d800b",
-2532 => x"80082583",
-2533 => x"86388008",
-2534 => x"19758008",
-2535 => x"317f8805",
-2536 => x"08800831",
-2537 => x"70618805",
-2538 => x"0c565659",
-2539 => x"73ffab38",
-2540 => x"80540b0b",
-2541 => x"73800c90",
-2542 => x"3d0d0475",
-2543 => x"81327081",
-2544 => x"06764151",
-2545 => x"540b0b73",
-2546 => x"802e81d0",
-2547 => x"38749138",
-2548 => x"76088418",
-2549 => x"08881959",
-2550 => x"56590b74",
-2551 => x"802ef138",
-2552 => x"881a0878",
-2553 => x"83ffff06",
-2554 => x"70892a70",
-2555 => x"81065156",
-2556 => x"59567380",
-2557 => x"2e839e38",
-2558 => x"7575278f",
-2559 => x"3877872a",
-2560 => x"70810651",
-2561 => x"540b0b73",
-2562 => x"82d63874",
-2563 => x"76278338",
-2564 => x"74560b0b",
-2565 => x"75530b0b",
-2566 => x"78527908",
-2567 => x"5196f93f",
-2568 => x"881a0876",
-2569 => x"31881b0c",
-2570 => x"7908167a",
-2571 => x"0c74560b",
-2572 => x"0b751975",
-2573 => x"77317f88",
-2574 => x"05087831",
-2575 => x"70618805",
-2576 => x"0c565659",
-2577 => x"73802efe",
-2578 => x"e7388c1a",
-2579 => x"2258fefd",
-2580 => x"39777854",
-2581 => x"0b0b7953",
-2582 => x"0b0b7b52",
-2583 => x"5696b93f",
-2584 => x"881a0878",
-2585 => x"31881b0c",
-2586 => x"7908187a",
-2587 => x"0c7c7631",
-2588 => x"5d0b0b7c",
-2589 => x"8e387951",
-2590 => x"f0e53f80",
-2591 => x"08819c38",
-2592 => x"80085f75",
-2593 => x"19757731",
-2594 => x"7f880508",
-2595 => x"78317061",
-2596 => x"88050c56",
-2597 => x"56597380",
-2598 => x"2efe9538",
-2599 => x"74819438",
-2600 => x"76088418",
-2601 => x"08881959",
-2602 => x"56590b74",
-2603 => x"802ef138",
-2604 => x"74530b0b",
-2605 => x"8a527851",
-2606 => x"94a33f80",
-2607 => x"08793181",
-2608 => x"055d8008",
-2609 => x"84388115",
-2610 => x"5d815f7c",
-2611 => x"58747d27",
-2612 => x"83387458",
-2613 => x"941a0888",
-2614 => x"1b087105",
-2615 => x"575c807a",
-2616 => x"085c540b",
-2617 => x"0b901a08",
-2618 => x"7b278538",
-2619 => x"81540b0b",
-2620 => x"75782585",
-2621 => x"387380c2",
-2622 => x"387b7824",
-2623 => x"fed3387b",
-2624 => x"530b0b78",
-2625 => x"529c1a08",
-2626 => x"51a41a08",
-2627 => x"540b0b73",
-2628 => x"2d800856",
-2629 => x"80088024",
-2630 => x"fed3388c",
-2631 => x"1a2280c0",
-2632 => x"07540b0b",
-2633 => x"738c1b23",
-2634 => x"ff540b0b",
-2635 => x"73800c90",
-2636 => x"3d0d047e",
-2637 => x"ff9538fe",
-2638 => x"f7397553",
-2639 => x"0b0b7852",
-2640 => x"7a5194d4",
-2641 => x"3f790816",
-2642 => x"7a0c7951",
-2643 => x"ef913f80",
-2644 => x"08c9387c",
-2645 => x"76315d0b",
-2646 => x"0b7cfea7",
-2647 => x"38fe9739",
-2648 => x"901a087a",
-2649 => x"08713176",
-2650 => x"71057056",
-2651 => x"5a575281",
-2652 => x"8a940851",
-2653 => x"97c83f80",
-2654 => x"08802eff",
-2655 => x"9e388008",
-2656 => x"901b0c80",
-2657 => x"08167a0c",
-2658 => x"77941b0c",
-2659 => x"74881b0c",
-2660 => x"7456fcf7",
-2661 => x"39790858",
-2662 => x"901a0878",
-2663 => x"27853881",
-2664 => x"540b0b75",
-2665 => x"75278438",
-2666 => x"73bd3894",
-2667 => x"1a08560b",
-2668 => x"0b757526",
-2669 => x"80e13875",
-2670 => x"530b0b78",
-2671 => x"529c1a08",
-2672 => x"51a41a08",
-2673 => x"540b0b73",
-2674 => x"2d800856",
-2675 => x"80088024",
-2676 => x"fcdd388c",
-2677 => x"1a2280c0",
-2678 => x"07540b0b",
-2679 => x"738c1b23",
-2680 => x"ff540b0b",
-2681 => x"fec63975",
-2682 => x"530b0b78",
-2683 => x"52775193",
-2684 => x"a73f7908",
-2685 => x"167a0c79",
-2686 => x"51ede43f",
-2687 => x"8008802e",
-2688 => x"fcad388c",
-2689 => x"1a2280c0",
-2690 => x"07540b0b",
-2691 => x"738c1b23",
-2692 => x"ff540b0b",
-2693 => x"fe963974",
-2694 => x"75540b0b",
-2695 => x"79530b0b",
-2696 => x"78525692",
-2697 => x"f33f881a",
-2698 => x"08753188",
-2699 => x"1b0c7908",
-2700 => x"157a0cfb",
-2701 => x"fa39f93d",
-2702 => x"0d797b58",
-2703 => x"530b0b80",
-2704 => x"0b818a94",
-2705 => x"08530b0b",
-2706 => x"5672722e",
-2707 => x"80d03884",
-2708 => x"dc730555",
-2709 => x"0b0b7476",
-2710 => x"2e80c338",
-2711 => x"88150884",
-2712 => x"1608ff05",
-2713 => x"540b0b54",
-2714 => x"0b0b8073",
-2715 => x"24a3388c",
-2716 => x"14227090",
-2717 => x"2b70902c",
-2718 => x"51530b0b",
-2719 => x"587180ed",
-2720 => x"3880dc14",
-2721 => x"ff14540b",
-2722 => x"0b540b0b",
-2723 => x"728025df",
-2724 => x"38740855",
-2725 => x"0b0b74c4",
-2726 => x"38818a94",
-2727 => x"085284dc",
-2728 => x"7205550b",
-2729 => x"0b74802e",
-2730 => x"bd388815",
-2731 => x"08841608",
-2732 => x"ff05540b",
-2733 => x"0b540b0b",
-2734 => x"807324a2",
-2735 => x"388c1422",
-2736 => x"70902b70",
-2737 => x"902c5153",
-2738 => x"0b0b5871",
-2739 => x"b33880dc",
-2740 => x"14ff1454",
-2741 => x"0b0b540b",
-2742 => x"0b728025",
-2743 => x"e0387408",
-2744 => x"550b0b74",
-2745 => x"c5387580",
-2746 => x"0c893d0d",
-2747 => x"04735176",
-2748 => x"2d758008",
-2749 => x"0780dc15",
-2750 => x"ff155555",
-2751 => x"56ff8d39",
-2752 => x"7351762d",
-2753 => x"75800807",
-2754 => x"80dc15ff",
-2755 => x"15555556",
-2756 => x"c839ea3d",
-2757 => x"0d688c71",
-2758 => x"0522700a",
-2759 => x"100a8106",
-2760 => x"57585674",
-2761 => x"80ee388e",
-2762 => x"16227090",
-2763 => x"2b70902c",
-2764 => x"51555880",
-2765 => x"7424b538",
-2766 => x"983dc405",
-2767 => x"530b0b73",
-2768 => x"52818a94",
-2769 => x"0851a298",
-2770 => x"3f800b80",
-2771 => x"08249938",
-2772 => x"7983e080",
-2773 => x"06540b0b",
-2774 => x"7380c080",
-2775 => x"2e819f38",
-2776 => x"73828080",
-2777 => x"2e81a138",
-2778 => x"8c162257",
-2779 => x"0b0b7690",
-2780 => x"8007540b",
-2781 => x"0b738c17",
-2782 => x"23888052",
-2783 => x"818a9408",
-2784 => x"5181c63f",
-2785 => x"80089f38",
-2786 => x"8c162282",
-2787 => x"07540b0b",
-2788 => x"738c1723",
-2789 => x"80c31670",
-2790 => x"770c9017",
-2791 => x"0c810b94",
-2792 => x"170c983d",
-2793 => x"0d04818a",
-2794 => x"940880c7",
-2795 => x"940bbc72",
-2796 => x"050c540b",
-2797 => x"0b8c1622",
-2798 => x"81800754",
-2799 => x"0b0b738c",
-2800 => x"17238008",
-2801 => x"760c8008",
-2802 => x"90170c88",
-2803 => x"800b9417",
-2804 => x"0c74802e",
-2805 => x"cd388e16",
-2806 => x"2270902b",
-2807 => x"70902c53",
-2808 => x"0b0b5558",
-2809 => x"aacb3f80",
-2810 => x"08802eff",
-2811 => x"b5388c16",
-2812 => x"22810754",
-2813 => x"0b0b738c",
-2814 => x"1723983d",
-2815 => x"0d04810b",
-2816 => x"8c172258",
-2817 => x"55fee539",
-2818 => x"a8160880",
-2819 => x"f5bc2e09",
-2820 => x"8106fed4",
-2821 => x"388c1622",
-2822 => x"88800754",
-2823 => x"0b0b738c",
-2824 => x"17238880",
-2825 => x"0b80cc17",
-2826 => x"0cfece39",
-2827 => x"70707352",
-2828 => x"818a9408",
-2829 => x"51933f50",
-2830 => x"50047070",
-2831 => x"7352818a",
-2832 => x"940851f0",
-2833 => x"ab3f5050",
-2834 => x"04f33d0d",
-2835 => x"7f618b71",
-2836 => x"0570f806",
-2837 => x"5c55555e",
-2838 => x"72962683",
-2839 => x"38905980",
-2840 => x"0b792474",
-2841 => x"7a260753",
-2842 => x"0b0b8054",
-2843 => x"0b0b7274",
-2844 => x"2e098106",
-2845 => x"80d4387d",
-2846 => x"5191c13f",
-2847 => x"7883f726",
-2848 => x"80cf3878",
-2849 => x"832a7010",
-2850 => x"10108191",
-2851 => x"f0058c71",
-2852 => x"05085959",
-2853 => x"5a76782e",
-2854 => x"83e73884",
-2855 => x"1708fc06",
-2856 => x"568c1708",
-2857 => x"88180871",
-2858 => x"8c72050c",
-2859 => x"8872050c",
-2860 => x"58751784",
-2861 => x"71050881",
-2862 => x"07847205",
-2863 => x"0c530b0b",
-2864 => x"7d5190f9",
-2865 => x"3f881754",
-2866 => x"0b0b7380",
-2867 => x"0c8f3d0d",
-2868 => x"0478892a",
-2869 => x"79832a5b",
-2870 => x"530b0b72",
-2871 => x"802e80c0",
-2872 => x"3878862a",
-2873 => x"b8055a84",
-2874 => x"7327b538",
-2875 => x"80db7305",
-2876 => x"5a947327",
-2877 => x"ab38788c",
-2878 => x"2a80ee05",
-2879 => x"5a80d473",
-2880 => x"279e3878",
-2881 => x"8f2a80f7",
-2882 => x"055a82d4",
-2883 => x"73279138",
-2884 => x"78922a80",
-2885 => x"fc055a8a",
-2886 => x"d4732784",
-2887 => x"3880fe5a",
-2888 => x"0b0b7910",
-2889 => x"10108191",
-2890 => x"f0058c71",
-2891 => x"05085855",
-2892 => x"0b760b75",
-2893 => x"2ea63884",
-2894 => x"1708fc06",
-2895 => x"707a3155",
-2896 => x"560b738f",
-2897 => x"2489c638",
-2898 => x"738025fe",
-2899 => x"d4388c17",
-2900 => x"08570b0b",
-2901 => x"76752e09",
-2902 => x"8106dc38",
-2903 => x"811a5a81",
-2904 => x"92800857",
-2905 => x"0b0b7681",
-2906 => x"91f82e82",
-2907 => x"ed388417",
-2908 => x"08fc0670",
-2909 => x"7a315556",
-2910 => x"0b738f24",
-2911 => x"829c3881",
-2912 => x"91f80b81",
-2913 => x"92840c81",
-2914 => x"91f80b81",
-2915 => x"92800c73",
-2916 => x"8025fe9d",
-2917 => x"3883ff76",
-2918 => x"27849d38",
-2919 => x"75892a76",
-2920 => x"832a5553",
-2921 => x"0b0b7280",
-2922 => x"2e80cc38",
-2923 => x"75862ab8",
-2924 => x"05540b0b",
-2925 => x"847327bf",
-2926 => x"3880db73",
-2927 => x"05540b0b",
-2928 => x"947327b3",
-2929 => x"38758c2a",
-2930 => x"80ee0554",
-2931 => x"0b0b80d4",
-2932 => x"7327a438",
-2933 => x"758f2a80",
-2934 => x"f705540b",
-2935 => x"0b82d473",
-2936 => x"27953875",
-2937 => x"922a80fc",
-2938 => x"05540b0b",
-2939 => x"8ad47327",
-2940 => x"863880fe",
-2941 => x"540b0b73",
-2942 => x"10101081",
-2943 => x"91f00588",
-2944 => x"71050856",
-2945 => x"580b740b",
-2946 => x"782e87a0",
-2947 => x"38841508",
-2948 => x"fc06530b",
-2949 => x"0b757327",
-2950 => x"8f388815",
-2951 => x"08550b0b",
-2952 => x"74782e09",
-2953 => x"8106e638",
-2954 => x"8c150881",
-2955 => x"91f00b84",
-2956 => x"0508718c",
-2957 => x"1a0c7688",
-2958 => x"1a0c7888",
-2959 => x"73050c78",
-2960 => x"8c180c5d",
-2961 => x"5879530b",
-2962 => x"0b807a24",
-2963 => x"84983872",
-2964 => x"822c8171",
-2965 => x"2b5c530b",
-2966 => x"0b7a7c26",
-2967 => x"81ac387b",
-2968 => x"7b06530b",
-2969 => x"0b728398",
-2970 => x"3879fc06",
-2971 => x"84055a7a",
-2972 => x"10707d06",
-2973 => x"540b0b5b",
-2974 => x"72838538",
-2975 => x"841a5aef",
-2976 => x"3988178c",
-2977 => x"71050858",
-2978 => x"580b760b",
-2979 => x"782e0981",
-2980 => x"06fc8838",
-2981 => x"821a5afd",
-2982 => x"c6397817",
-2983 => x"79810784",
-2984 => x"190c7081",
-2985 => x"92840c70",
-2986 => x"8192800c",
-2987 => x"8191f80b",
-2988 => x"8c72050c",
-2989 => x"8c710508",
-2990 => x"8872050c",
-2991 => x"74810784",
-2992 => x"72050c74",
-2993 => x"71057571",
-2994 => x"0c51530b",
-2995 => x"0b7d518c",
-2996 => x"ec3f8817",
-2997 => x"540b0bfb",
-2998 => x"f1398191",
-2999 => x"f00b8405",
-3000 => x"087a540b",
-3001 => x"0b5c7980",
-3002 => x"25fee438",
-3003 => x"82f8397a",
-3004 => x"097c0670",
-3005 => x"8191f00b",
-3006 => x"84050c5c",
-3007 => x"7a105b0b",
-3008 => x"0b7a7c26",
-3009 => x"85387a85",
-3010 => x"f2388191",
-3011 => x"f00b8805",
-3012 => x"08708472",
-3013 => x"0508fc06",
-3014 => x"707c317c",
-3015 => x"72268f72",
-3016 => x"25075757",
-3017 => x"5c5d5572",
-3018 => x"802e80e3",
-3019 => x"38797a16",
-3020 => x"8191e808",
-3021 => x"1b907105",
-3022 => x"5a55575b",
-3023 => x"8191e408",
-3024 => x"ff2e8938",
-3025 => x"a08f7305",
-3026 => x"e0800657",
-3027 => x"0b0b7652",
-3028 => x"7d5194c7",
-3029 => x"3f800854",
-3030 => x"0b0b8008",
-3031 => x"ff2e9038",
-3032 => x"80087627",
-3033 => x"82b33874",
-3034 => x"8191f02e",
-3035 => x"82ab3881",
-3036 => x"91f00b88",
-3037 => x"05085584",
-3038 => x"1508fc06",
-3039 => x"707a317a",
-3040 => x"72268f72",
-3041 => x"25075255",
-3042 => x"530b0b72",
-3043 => x"84913874",
-3044 => x"79810784",
-3045 => x"170c7916",
-3046 => x"708191f0",
-3047 => x"0b88050c",
-3048 => x"75810784",
-3049 => x"72050c54",
-3050 => x"0b0b7e52",
-3051 => x"578b8e3f",
-3052 => x"8817540b",
-3053 => x"0bfa9339",
-3054 => x"75832a70",
-3055 => x"540b0b54",
-3056 => x"0b0b8074",
-3057 => x"2481a738",
-3058 => x"72822c81",
-3059 => x"712b8191",
-3060 => x"f4080770",
-3061 => x"8191f00b",
-3062 => x"84050c75",
-3063 => x"10101081",
-3064 => x"91f00588",
-3065 => x"71050858",
-3066 => x"5a5d530b",
-3067 => x"0b778c18",
-3068 => x"0c748818",
-3069 => x"0c768819",
-3070 => x"0c768c16",
-3071 => x"0cfcc639",
-3072 => x"797a1010",
-3073 => x"108191f0",
-3074 => x"05705759",
-3075 => x"5d8c1508",
-3076 => x"570b0b76",
-3077 => x"752ea638",
-3078 => x"841708fc",
-3079 => x"06707a31",
-3080 => x"55560b73",
-3081 => x"8f2483ef",
-3082 => x"38738025",
-3083 => x"84af388c",
-3084 => x"1708570b",
-3085 => x"0b76752e",
-3086 => x"098106dc",
-3087 => x"38881581",
-3088 => x"1b708306",
-3089 => x"555b5572",
-3090 => x"c4387c83",
-3091 => x"06530b0b",
-3092 => x"72802efd",
-3093 => x"9a38ff1d",
-3094 => x"f819595d",
-3095 => x"88180878",
-3096 => x"2ee838fd",
-3097 => x"9739831a",
-3098 => x"530b0bfb",
-3099 => x"e2398314",
-3100 => x"70822c81",
-3101 => x"712b8191",
-3102 => x"f4080770",
-3103 => x"8191f00b",
-3104 => x"84050c76",
-3105 => x"10101081",
-3106 => x"91f00588",
-3107 => x"71050859",
-3108 => x"5b5e5153",
-3109 => x"0b0bfed5",
-3110 => x"398191b4",
-3111 => x"08175880",
-3112 => x"08762e81",
-3113 => x"99388191",
-3114 => x"e408ff2e",
-3115 => x"849b3873",
-3116 => x"76311881",
-3117 => x"91b40c73",
-3118 => x"87067057",
-3119 => x"530b0b72",
-3120 => x"802e8838",
-3121 => x"88733170",
-3122 => x"15555676",
-3123 => x"149fff06",
-3124 => x"a0807131",
-3125 => x"1770540b",
-3126 => x"0b7f530b",
-3127 => x"0b57530b",
-3128 => x"0b91b83f",
-3129 => x"8008530b",
-3130 => x"0b8008ff",
-3131 => x"2e81a738",
-3132 => x"8191b408",
-3133 => x"16708191",
-3134 => x"b40c7475",
-3135 => x"8191f00b",
-3136 => x"88050c74",
-3137 => x"76311870",
-3138 => x"81075155",
-3139 => x"56587b81",
-3140 => x"91f02e83",
-3141 => x"c138798f",
-3142 => x"2682ee38",
-3143 => x"810b8415",
-3144 => x"0c841508",
-3145 => x"fc06707a",
-3146 => x"317a7226",
-3147 => x"8f722507",
-3148 => x"5255530b",
-3149 => x"0b72802e",
-3150 => x"fcd53880",
-3151 => x"e2398008",
-3152 => x"9fff0653",
-3153 => x"0b0b72fe",
-3154 => x"dd387781",
-3155 => x"91b40c81",
-3156 => x"91f00b88",
-3157 => x"05087b18",
-3158 => x"81078472",
-3159 => x"050c5581",
-3160 => x"91e00878",
-3161 => x"27863877",
-3162 => x"8191e00c",
-3163 => x"8191dc08",
-3164 => x"7827fc83",
-3165 => x"38778191",
-3166 => x"dc0c8415",
-3167 => x"08fc0670",
-3168 => x"7a317a72",
-3169 => x"268f7225",
-3170 => x"07525553",
-3171 => x"0b0b7280",
-3172 => x"2efbfc38",
-3173 => x"8a398074",
-3174 => x"540b0b56",
-3175 => x"fed2397d",
-3176 => x"51879a3f",
-3177 => x"800b800c",
-3178 => x"8f3d0d04",
-3179 => x"73530b0b",
-3180 => x"807424ab",
-3181 => x"3872822c",
-3182 => x"81712b81",
-3183 => x"91f40807",
-3184 => x"708191f0",
-3185 => x"0b84050c",
-3186 => x"5d530b0b",
-3187 => x"778c180c",
-3188 => x"7488180c",
-3189 => x"7688190c",
-3190 => x"768c160c",
-3191 => x"f8e73983",
-3192 => x"1470822c",
-3193 => x"81712b81",
-3194 => x"91f40807",
-3195 => x"708191f0",
-3196 => x"0b84050c",
-3197 => x"5e51530b",
-3198 => x"0bd2397b",
-3199 => x"7b06530b",
-3200 => x"0b72fbfc",
-3201 => x"38841a7b",
-3202 => x"105c5aef",
-3203 => x"39ff1a81",
-3204 => x"7105515a",
-3205 => x"f6c93978",
-3206 => x"17798107",
-3207 => x"84190c8c",
-3208 => x"18088819",
-3209 => x"08718c72",
-3210 => x"050c8872",
-3211 => x"050c5970",
-3212 => x"8192840c",
-3213 => x"70819280",
-3214 => x"0c8191f8",
-3215 => x"0b8c7205",
-3216 => x"0c8c7105",
-3217 => x"08887205",
-3218 => x"0c748107",
-3219 => x"8472050c",
-3220 => x"74710575",
-3221 => x"710c5153",
-3222 => x"0b0bf8f1",
-3223 => x"39751784",
-3224 => x"71050881",
-3225 => x"07847205",
-3226 => x"0c530b0b",
-3227 => x"8c170888",
-3228 => x"1808718c",
-3229 => x"72050c88",
-3230 => x"72050c58",
-3231 => x"7d5185bd",
-3232 => x"3f881754",
-3233 => x"0b0bf4c2",
-3234 => x"39728415",
-3235 => x"0cf41af8",
-3236 => x"0670841e",
-3237 => x"08810607",
-3238 => x"841e0c70",
-3239 => x"1d540b0b",
-3240 => x"5b850b84",
-3241 => x"140c850b",
-3242 => x"88140c8f",
-3243 => x"7b27fdaf",
-3244 => x"38881c52",
-3245 => x"7d51e3b8",
-3246 => x"3f8191f0",
-3247 => x"0b880508",
-3248 => x"8191b408",
-3249 => x"5955fd97",
-3250 => x"39778191",
-3251 => x"b40c7381",
-3252 => x"91e40cfb",
-3253 => x"e2397284",
-3254 => x"150cfd83",
-3255 => x"39fa3d0d",
-3256 => x"7a790288",
-3257 => x"05a70533",
-3258 => x"5652530b",
-3259 => x"0b837327",
-3260 => x"8c387083",
-3261 => x"06520b0b",
-3262 => x"71802eb1",
-3263 => x"38ff7305",
-3264 => x"530b0b72",
-3265 => x"ff2e9b38",
-3266 => x"70335273",
-3267 => x"0b722e94",
-3268 => x"38817105",
-3269 => x"ff14540b",
-3270 => x"0b5172ff",
-3271 => x"2e098106",
-3272 => x"e7388051",
-3273 => x"0b0b7080",
-3274 => x"0c883d0d",
-3275 => x"04707257",
-3276 => x"55835175",
-3277 => x"82802914",
-3278 => x"ff720552",
-3279 => x"560b7080",
-3280 => x"25f13883",
-3281 => x"732780cb",
-3282 => x"38740876",
-3283 => x"327009f7",
-3284 => x"fbfdff72",
-3285 => x"050670f8",
-3286 => x"84828180",
-3287 => x"06515151",
-3288 => x"0b0b7080",
-3289 => x"2e9e3874",
-3290 => x"51805270",
-3291 => x"3357730b",
-3292 => x"772effb0",
-3293 => x"38817105",
-3294 => x"81730553",
-3295 => x"0b0b5183",
-3296 => x"7227e838",
-3297 => x"fc730584",
-3298 => x"1656530b",
-3299 => x"0b728326",
-3300 => x"ffb73874",
-3301 => x"51fee639",
-3302 => x"fa3d0d78",
-3303 => x"7a7c7272",
-3304 => x"72575757",
-3305 => x"5956560b",
-3306 => x"740b7627",
-3307 => x"be387615",
-3308 => x"51750b71",
-3309 => x"27b53870",
-3310 => x"7717ff14",
-3311 => x"540b0b55",
-3312 => x"530b0b71",
-3313 => x"ff2e9d38",
-3314 => x"ff14ff14",
-3315 => x"540b0b54",
-3316 => x"0b0b7233",
-3317 => x"7434ff72",
-3318 => x"05520b0b",
-3319 => x"71ff2e09",
-3320 => x"8106e538",
-3321 => x"75800c88",
-3322 => x"3d0d0476",
-3323 => x"8f269c38",
-3324 => x"ff720552",
-3325 => x"0b0b71ff",
-3326 => x"2eea3872",
-3327 => x"70810554",
-3328 => x"0b0b3374",
-3329 => x"70810556",
-3330 => x"34e63974",
-3331 => x"76078306",
-3332 => x"510b0b70",
-3333 => x"db387575",
-3334 => x"540b0b51",
-3335 => x"72708405",
-3336 => x"540b0b08",
-3337 => x"71708405",
-3338 => x"530b0b0c",
-3339 => x"72708405",
-3340 => x"540b0b08",
-3341 => x"71708405",
-3342 => x"530b0b0c",
-3343 => x"72708405",
-3344 => x"540b0b08",
-3345 => x"71708405",
-3346 => x"530b0b0c",
-3347 => x"72708405",
-3348 => x"540b0b08",
-3349 => x"71708405",
-3350 => x"530b0b0c",
-3351 => x"f0720552",
-3352 => x"0b0b718f",
-3353 => x"26ffb538",
-3354 => x"8372279c",
-3355 => x"38727084",
-3356 => x"05540b0b",
-3357 => x"08717084",
-3358 => x"05530b0b",
-3359 => x"0cfc7205",
-3360 => x"520b0b71",
-3361 => x"8326e638",
-3362 => x"70540b0b",
-3363 => x"fee239fc",
-3364 => x"3d0d7679",
-3365 => x"71028c05",
-3366 => x"9f053357",
-3367 => x"55530b0b",
-3368 => x"55837227",
-3369 => x"8c387483",
-3370 => x"06510b0b",
-3371 => x"70802ea8",
-3372 => x"38ff7205",
-3373 => x"520b0b71",
-3374 => x"ff2e9638",
-3375 => x"73737081",
-3376 => x"055534ff",
-3377 => x"7205520b",
-3378 => x"0b71ff2e",
-3379 => x"098106ec",
-3380 => x"3874800c",
-3381 => x"863d0d04",
-3382 => x"7474882b",
-3383 => x"75077071",
-3384 => x"902b0751",
-3385 => x"540b0b51",
-3386 => x"8f7227b0",
-3387 => x"38727170",
-3388 => x"8405530b",
-3389 => x"0b0c7271",
-3390 => x"70840553",
-3391 => x"0b0b0c72",
-3392 => x"71708405",
-3393 => x"530b0b0c",
-3394 => x"72717084",
-3395 => x"05530b0b",
-3396 => x"0cf07205",
-3397 => x"520b0b71",
-3398 => x"8f26d238",
-3399 => x"83722795",
-3400 => x"38727170",
-3401 => x"8405530b",
-3402 => x"0b0cfc72",
-3403 => x"05520b0b",
-3404 => x"718326ed",
-3405 => x"3870530b",
-3406 => x"0bfef639",
-3407 => x"0404ef3d",
-3408 => x"0d636567",
-3409 => x"405d420b",
-3410 => x"7b802e85",
-3411 => x"ab386151",
-3412 => x"eb3ff81c",
-3413 => x"70847205",
-3414 => x"0870fc06",
-3415 => x"70628b05",
-3416 => x"70f80641",
-3417 => x"59455b5c",
-3418 => x"41579674",
-3419 => x"2782e238",
-3420 => x"807b247e",
-3421 => x"7c260759",
-3422 => x"80540b0b",
-3423 => x"78742e09",
-3424 => x"810682c6",
-3425 => x"38777b25",
-3426 => x"82913877",
-3427 => x"178191f0",
-3428 => x"0b880508",
-3429 => x"5e560b7c",
-3430 => x"0b762e84",
-3431 => x"ea388416",
-3432 => x"0870fe06",
-3433 => x"17847105",
-3434 => x"08810651",
-3435 => x"55550b73",
-3436 => x"82a43874",
-3437 => x"fc06597c",
-3438 => x"762e858f",
-3439 => x"3877195f",
-3440 => x"0b0b7e7b",
-3441 => x"25829438",
-3442 => x"79810654",
-3443 => x"0b0b7382",
-3444 => x"dc387677",
-3445 => x"08318471",
-3446 => x"0508fc06",
-3447 => x"565a7580",
-3448 => x"2e93387c",
-3449 => x"762e859c",
-3450 => x"38741918",
-3451 => x"590b0b78",
-3452 => x"7b2584b0",
-3453 => x"3879802e",
-3454 => x"82b33877",
-3455 => x"15567a0b",
-3456 => x"762482a9",
-3457 => x"388c1a08",
-3458 => x"881b0871",
-3459 => x"8c72050c",
-3460 => x"8872050c",
-3461 => x"55797659",
-3462 => x"57881761",
-3463 => x"fc055759",
-3464 => x"0b75a426",
-3465 => x"86ab387b",
-3466 => x"79555593",
-3467 => x"762780cf",
-3468 => x"387b7084",
-3469 => x"055d087c",
-3470 => x"56790c74",
-3471 => x"70840556",
-3472 => x"088c180c",
-3473 => x"9017540b",
-3474 => x"0b9b7627",
-3475 => x"b2387470",
-3476 => x"84055608",
-3477 => x"740c7470",
-3478 => x"84055608",
-3479 => x"94180c98",
-3480 => x"17540b0b",
-3481 => x"a3762797",
-3482 => x"38747084",
-3483 => x"05560874",
-3484 => x"0c747084",
-3485 => x"0556089c",
-3486 => x"180ca017",
-3487 => x"540b0b74",
-3488 => x"70840556",
-3489 => x"08747084",
-3490 => x"05560c74",
-3491 => x"70840556",
-3492 => x"08747084",
-3493 => x"05560c74",
-3494 => x"08740c77",
-3495 => x"7b31560b",
-3496 => x"0b758f26",
-3497 => x"80d13884",
-3498 => x"17088106",
-3499 => x"78078418",
-3500 => x"0c771784",
-3501 => x"71050881",
-3502 => x"07847205",
-3503 => x"0c540b0b",
-3504 => x"6151fcf9",
-3505 => x"3f881754",
-3506 => x"0b0b7380",
-3507 => x"0c933d0d",
-3508 => x"04905bfd",
-3509 => x"9b397856",
-3510 => x"fdee398c",
-3511 => x"16088817",
-3512 => x"08718c72",
-3513 => x"050c8872",
-3514 => x"050c557e",
-3515 => x"707c3157",
-3516 => x"588f7627",
-3517 => x"ffb1387a",
-3518 => x"17841808",
-3519 => x"81067c07",
-3520 => x"84190c76",
-3521 => x"81078472",
-3522 => x"050c7671",
-3523 => x"05847105",
-3524 => x"08810784",
-3525 => x"72050c55",
-3526 => x"88055261",
-3527 => x"51dad13f",
-3528 => x"6151fc99",
-3529 => x"3f881754",
-3530 => x"0b0bff9e",
-3531 => x"397d5261",
-3532 => x"51ea963f",
-3533 => x"80085980",
-3534 => x"08802e81",
-3535 => x"ab388008",
-3536 => x"f8056084",
-3537 => x"0508fe06",
-3538 => x"61055557",
-3539 => x"0b0b7674",
-3540 => x"2e848d38",
-3541 => x"fc18560b",
-3542 => x"0b75a426",
-3543 => x"81b0387b",
-3544 => x"80085555",
-3545 => x"93762780",
-3546 => x"dc387470",
-3547 => x"84055608",
-3548 => x"80087084",
-3549 => x"05800c0c",
-3550 => x"80087570",
-3551 => x"84055708",
-3552 => x"71708405",
-3553 => x"530b0b0c",
-3554 => x"540b0b9b",
-3555 => x"7627b638",
-3556 => x"74708405",
-3557 => x"56087470",
-3558 => x"8405560c",
-3559 => x"74708405",
-3560 => x"56087470",
-3561 => x"8405560c",
-3562 => x"a3762799",
-3563 => x"38747084",
-3564 => x"05560874",
-3565 => x"70840556",
-3566 => x"0c747084",
-3567 => x"05560874",
-3568 => x"70840556",
-3569 => x"0c747084",
-3570 => x"05560874",
-3571 => x"70840556",
-3572 => x"0c747084",
-3573 => x"05560874",
-3574 => x"70840556",
-3575 => x"0c740874",
-3576 => x"0c7b5261",
-3577 => x"51d9893f",
-3578 => x"6151fad1",
-3579 => x"3f78540b",
-3580 => x"0b73800c",
-3581 => x"933d0d04",
-3582 => x"7d526151",
-3583 => x"e8cb3f80",
-3584 => x"08800c93",
-3585 => x"3d0d0484",
-3586 => x"160855fb",
-3587 => x"a6397553",
-3588 => x"0b0b7b52",
-3589 => x"800851ff",
-3590 => x"a4a23f7b",
-3591 => x"526151d8",
-3592 => x"cf3fc539",
-3593 => x"8c160888",
-3594 => x"1708718c",
-3595 => x"72050c88",
-3596 => x"72050c55",
-3597 => x"8c1a0888",
-3598 => x"1b08718c",
-3599 => x"72050c88",
-3600 => x"72050c55",
-3601 => x"79795957",
-3602 => x"fbcf3977",
-3603 => x"19901c55",
-3604 => x"550b730b",
-3605 => x"7524faf0",
-3606 => x"387a1770",
-3607 => x"8191f00b",
-3608 => x"88050c75",
-3609 => x"7c318107",
-3610 => x"8472050c",
-3611 => x"5d841708",
-3612 => x"81067b07",
-3613 => x"84180c61",
-3614 => x"51f9c23f",
-3615 => x"8817540b",
-3616 => x"0bfcc739",
-3617 => x"74191890",
-3618 => x"1c555d0b",
-3619 => x"730b7d24",
-3620 => x"fae3388c",
-3621 => x"1a08881b",
-3622 => x"08718c72",
-3623 => x"050c8872",
-3624 => x"050c5588",
-3625 => x"1a61fc05",
-3626 => x"57590b75",
-3627 => x"a42681bc",
-3628 => x"387b7955",
-3629 => x"55937627",
-3630 => x"80cf387b",
-3631 => x"7084055d",
-3632 => x"087c5679",
-3633 => x"0c747084",
-3634 => x"0556088c",
-3635 => x"1b0c901a",
-3636 => x"540b0b9b",
-3637 => x"7627b238",
-3638 => x"74708405",
-3639 => x"5608740c",
-3640 => x"74708405",
-3641 => x"5608941b",
-3642 => x"0c981a54",
-3643 => x"0b0ba376",
-3644 => x"27973874",
-3645 => x"70840556",
-3646 => x"08740c74",
-3647 => x"70840556",
-3648 => x"089c1b0c",
-3649 => x"a01a540b",
-3650 => x"0b747084",
-3651 => x"05560874",
-3652 => x"70840556",
-3653 => x"0c747084",
-3654 => x"05560874",
-3655 => x"70840556",
-3656 => x"0c740874",
-3657 => x"0c7a1a70",
-3658 => x"8191f00b",
-3659 => x"88050c7d",
-3660 => x"7c318107",
-3661 => x"8472050c",
-3662 => x"540b0b84",
-3663 => x"1a088106",
-3664 => x"7b07841b",
-3665 => x"0c6151f7",
-3666 => x"f43f7854",
-3667 => x"0b0bfda1",
-3668 => x"3975530b",
-3669 => x"0b7b5278",
-3670 => x"51ffa1e0",
-3671 => x"3ffabc39",
-3672 => x"841708fc",
-3673 => x"06186058",
-3674 => x"58fab039",
-3675 => x"75530b0b",
-3676 => x"7b527851",
-3677 => x"ffa1c53f",
-3678 => x"7a1a7081",
-3679 => x"91f00b88",
-3680 => x"050c7d7c",
-3681 => x"31810784",
-3682 => x"72050c54",
-3683 => x"0b0b841a",
-3684 => x"0881067b",
-3685 => x"07841b0c",
-3686 => x"ffab3970",
-3687 => x"70707080",
-3688 => x"0b819ab8",
-3689 => x"0c765187",
-3690 => x"853f8008",
-3691 => x"530b0b80",
-3692 => x"08ff2e89",
-3693 => x"3872800c",
-3694 => x"50505050",
-3695 => x"04819ab8",
-3696 => x"08540b0b",
-3697 => x"73802eed",
-3698 => x"38757471",
-3699 => x"0c527280",
-3700 => x"0c505050",
-3701 => x"5004f93d",
-3702 => x"0d797c55",
-3703 => x"7b540b0b",
-3704 => x"8e710522",
-3705 => x"70902b70",
-3706 => x"902c5557",
-3707 => x"818a9408",
-3708 => x"530b0b58",
-3709 => x"5685e33f",
-3710 => x"80085780",
-3711 => x"0b800824",
-3712 => x"933880d0",
-3713 => x"16088008",
-3714 => x"0580d017",
-3715 => x"0c76800c",
-3716 => x"893d0d04",
-3717 => x"8c162283",
-3718 => x"dfff0655",
-3719 => x"0b0b748c",
-3720 => x"17237680",
-3721 => x"0c893d0d",
-3722 => x"04fa3d0d",
-3723 => x"788c7105",
-3724 => x"2270882a",
-3725 => x"70810651",
-3726 => x"57585674",
-3727 => x"b1388c16",
-3728 => x"2283dfff",
-3729 => x"06550b0b",
-3730 => x"748c1723",
-3731 => x"7a540b0b",
-3732 => x"79530b0b",
-3733 => x"8e162270",
-3734 => x"902b7090",
-3735 => x"2c540b0b",
-3736 => x"56818a94",
-3737 => x"08525682",
-3738 => x"fe3f883d",
-3739 => x"0d048254",
-3740 => x"0b0b8053",
-3741 => x"0b0b8e16",
-3742 => x"2270902b",
-3743 => x"70902c54",
-3744 => x"0b0b5681",
-3745 => x"8a940852",
-3746 => x"5784913f",
-3747 => x"8c162283",
-3748 => x"dfff0655",
-3749 => x"0b0b748c",
-3750 => x"17237a54",
-3751 => x"0b0b7953",
-3752 => x"0b0b8e16",
-3753 => x"2270902b",
-3754 => x"70902c54",
-3755 => x"0b0b5681",
-3756 => x"8a940852",
-3757 => x"5682b03f",
-3758 => x"883d0d04",
-3759 => x"f93d0d79",
-3760 => x"7c557b54",
-3761 => x"0b0b8e71",
-3762 => x"05227090",
-3763 => x"2b70902c",
-3764 => x"5557818a",
-3765 => x"9408530b",
-3766 => x"0b585683",
-3767 => x"bf3f8008",
-3768 => x"578008ff",
-3769 => x"2e9b388c",
-3770 => x"1622a080",
-3771 => x"07550b0b",
-3772 => x"748c1723",
-3773 => x"800880d0",
-3774 => x"170c7680",
-3775 => x"0c893d0d",
-3776 => x"048c1622",
-3777 => x"83dfff06",
-3778 => x"550b0b74",
-3779 => x"8c172376",
-3780 => x"800c893d",
-3781 => x"0d047070",
-3782 => x"70748e71",
-3783 => x"05227090",
-3784 => x"2b70902c",
-3785 => x"55515153",
-3786 => x"0b0b818a",
-3787 => x"94085181",
-3788 => x"f43f5050",
-3789 => x"5004fb3d",
-3790 => x"0d777970",
-3791 => x"72078306",
-3792 => x"530b0b54",
-3793 => x"0b0b5270",
-3794 => x"99387173",
-3795 => x"7308540b",
-3796 => x"0b56540b",
-3797 => x"0b717308",
-3798 => x"2e80d038",
-3799 => x"7375540b",
-3800 => x"0b520b0b",
-3801 => x"71337081",
-3802 => x"ff065254",
-3803 => x"0b0b7080",
-3804 => x"2ea33872",
-3805 => x"3355700b",
-3806 => x"752e0981",
-3807 => x"069a3881",
-3808 => x"72058114",
-3809 => x"71337081",
-3810 => x"ff06540b",
-3811 => x"0b56540b",
-3812 => x"0b5270df",
-3813 => x"38723355",
-3814 => x"7381ff06",
-3815 => x"7581ff06",
-3816 => x"71713180",
-3817 => x"0c525287",
-3818 => x"3d0d0471",
-3819 => x"0970f7fb",
-3820 => x"fdff1406",
-3821 => x"70f88482",
-3822 => x"81800651",
-3823 => x"51510b0b",
-3824 => x"709d3884",
-3825 => x"14841671",
-3826 => x"08540b0b",
-3827 => x"56540b0b",
-3828 => x"7175082e",
-3829 => x"d6387375",
-3830 => x"540b0b52",
-3831 => x"ff843980",
-3832 => x"0b800c87",
-3833 => x"3d0d04fb",
-3834 => x"3d0d800b",
-3835 => x"819ab80c",
-3836 => x"7a530b0b",
-3837 => x"79527851",
-3838 => x"83c33f80",
-3839 => x"08558008",
-3840 => x"ff2e8838",
-3841 => x"74800c87",
-3842 => x"3d0d0481",
-3843 => x"9ab80856",
-3844 => x"0b0b7580",
-3845 => x"2eee3877",
-3846 => x"76710c54",
-3847 => x"0b0b7480",
-3848 => x"0c873d0d",
-3849 => x"04707070",
-3850 => x"70800b81",
-3851 => x"9ab80c76",
-3852 => x"5185db3f",
-3853 => x"8008530b",
-3854 => x"0b8008ff",
-3855 => x"2e893872",
-3856 => x"800c5050",
-3857 => x"50500481",
-3858 => x"9ab80854",
-3859 => x"0b0b7380",
-3860 => x"2eed3875",
-3861 => x"74710c52",
-3862 => x"72800c50",
-3863 => x"50505004",
-3864 => x"fc3d0d80",
-3865 => x"0b819ab8",
-3866 => x"0c785277",
-3867 => x"51889c3f",
-3868 => x"8008540b",
-3869 => x"0b8008ff",
-3870 => x"2e883873",
-3871 => x"800c863d",
-3872 => x"0d04819a",
-3873 => x"b808550b",
-3874 => x"0b74802e",
-3875 => x"ee387675",
-3876 => x"710c530b",
-3877 => x"0b73800c",
-3878 => x"863d0d04",
-3879 => x"fb3d0d80",
-3880 => x"0b819ab8",
-3881 => x"0c7a530b",
-3882 => x"0b795278",
-3883 => x"5185e63f",
-3884 => x"80085580",
-3885 => x"08ff2e88",
-3886 => x"3874800c",
-3887 => x"873d0d04",
-3888 => x"819ab808",
-3889 => x"560b0b75",
-3890 => x"802eee38",
-3891 => x"7776710c",
-3892 => x"540b0b74",
-3893 => x"800c873d",
-3894 => x"0d04fb3d",
-3895 => x"0d800b81",
-3896 => x"9ab80c7a",
-3897 => x"530b0b79",
-3898 => x"52785182",
-3899 => x"cd3f8008",
-3900 => x"558008ff",
-3901 => x"2e883874",
-3902 => x"800c873d",
-3903 => x"0d04819a",
-3904 => x"b808560b",
-3905 => x"0b75802e",
-3906 => x"ee387776",
-3907 => x"710c540b",
-3908 => x"0b74800c",
-3909 => x"873d0d04",
-3910 => x"810b800c",
-3911 => x"04707281",
-3912 => x"2e873880",
-3913 => x"0b800c50",
-3914 => x"04735181",
-3915 => x"8a3f7070",
-3916 => x"70819abc",
-3917 => x"08510b0b",
-3918 => x"708a3881",
-3919 => x"9ac47081",
-3920 => x"9abc0c51",
-3921 => x"0b0b7075",
-3922 => x"72055252",
-3923 => x"ff530b0b",
-3924 => x"7087fb80",
-3925 => x"80268a38",
-3926 => x"70819abc",
-3927 => x"0c71530b",
-3928 => x"0b72800c",
-3929 => x"50505004",
-3930 => x"70707070",
-3931 => x"800b818a",
-3932 => x"8808540b",
-3933 => x"0b540b0b",
-3934 => x"72812e9e",
-3935 => x"3873819a",
-3936 => x"c00cff8e",
-3937 => x"863fff8c",
-3938 => x"f73f8199",
-3939 => x"f8528151",
-3940 => x"ff90e53f",
-3941 => x"80085187",
-3942 => x"d53f7281",
-3943 => x"9ac00cff",
-3944 => x"8de93fff",
-3945 => x"8cda3f81",
-3946 => x"99f85281",
-3947 => x"51ff90c8",
-3948 => x"3f800851",
-3949 => x"87b83f00",
-3950 => x"ff3900ff",
-3951 => x"39f53d0d",
-3952 => x"7e60819a",
-3953 => x"c008705b",
-3954 => x"585b5b75",
-3955 => x"80c63877",
-3956 => x"7a25a338",
-3957 => x"771b7033",
-3958 => x"7081ff06",
-3959 => x"58585975",
-3960 => x"8a2e9a38",
-3961 => x"7681ff06",
-3962 => x"51ff8cfc",
-3963 => x"3f811858",
-3964 => x"790b7824",
-3965 => x"df387980",
-3966 => x"0c8d3d0d",
-3967 => x"048d51ff",
-3968 => x"8ce63f78",
-3969 => x"337081ff",
-3970 => x"065257ff",
-3971 => x"8cda3f81",
-3972 => x"1858dd39",
-3973 => x"79557a54",
-3974 => x"0b0b7d53",
-3975 => x"0b0b8552",
-3976 => x"8d3dfc05",
-3977 => x"51ff8c9c",
-3978 => x"3f800856",
-3979 => x"86b93f7b",
-3980 => x"80080c75",
-3981 => x"800c8d3d",
-3982 => x"0d04f63d",
-3983 => x"0d7d7f81",
-3984 => x"9ac00870",
-3985 => x"5a585a5a",
-3986 => x"7580ca38",
-3987 => x"767925b6",
-3988 => x"38761a56",
-3989 => x"ff8bef3f",
-3990 => x"80087634",
-3991 => x"800b8008",
-3992 => x"81ff0657",
-3993 => x"580b758a",
-3994 => x"2ea73875",
-3995 => x"8d327030",
-3996 => x"7080257a",
-3997 => x"07515156",
-3998 => x"0b0b75bf",
-3999 => x"38811757",
-4000 => x"780b7724",
-4001 => x"cc387656",
-4002 => x"0b0b7580",
-4003 => x"0c8c3d0d",
-4004 => x"048158d7",
-4005 => x"39785579",
-4006 => x"540b0b7c",
-4007 => x"530b0b84",
-4008 => x"528c3dfc",
-4009 => x"0551ff8b",
-4010 => x"9b3f8008",
-4011 => x"5685b83f",
-4012 => x"7a80080c",
-4013 => x"75800c8c",
-4014 => x"3d0d0481",
-4015 => x"1756c939",
-4016 => x"f93d0d79",
-4017 => x"57819ac0",
-4018 => x"08802eb2",
-4019 => x"387651ff",
-4020 => x"9dc13f7b",
-4021 => x"567a5580",
-4022 => x"08810554",
-4023 => x"0b0b7653",
-4024 => x"0b0b8252",
-4025 => x"893dfc05",
-4026 => x"51ff8ad8",
-4027 => x"3f800857",
-4028 => x"84f53f77",
-4029 => x"80080c76",
-4030 => x"800c893d",
-4031 => x"0d0484e7",
-4032 => x"3f850b80",
-4033 => x"080cff0b",
-4034 => x"800c893d",
-4035 => x"0d04fb3d",
-4036 => x"0d819ac0",
-4037 => x"08705654",
-4038 => x"0b0b7388",
-4039 => x"3874800c",
-4040 => x"873d0d04",
-4041 => x"77530b0b",
-4042 => x"8352873d",
-4043 => x"fc0551ff",
-4044 => x"8a923f80",
-4045 => x"08540b0b",
-4046 => x"84ad3f75",
-4047 => x"80080c73",
-4048 => x"800c873d",
-4049 => x"0d04ff0b",
-4050 => x"800c04fb",
-4051 => x"3d0d7755",
-4052 => x"819ac008",
-4053 => x"802eae38",
-4054 => x"7451ff9c",
-4055 => x"b63f8008",
-4056 => x"8105540b",
-4057 => x"0b74530b",
-4058 => x"0b875287",
-4059 => x"3dfc0551",
-4060 => x"ff89d13f",
-4061 => x"80085583",
-4062 => x"ee3f7580",
-4063 => x"080c7480",
-4064 => x"0c873d0d",
-4065 => x"0483e03f",
-4066 => x"850b8008",
-4067 => x"0cff0b80",
-4068 => x"0c873d0d",
-4069 => x"04fa3d0d",
-4070 => x"819ac008",
-4071 => x"802ea738",
-4072 => x"7a557954",
-4073 => x"0b0b7853",
-4074 => x"0b0b8652",
-4075 => x"883dfc05",
-4076 => x"51ff8990",
-4077 => x"3f800856",
-4078 => x"83ad3f76",
-4079 => x"80080c75",
-4080 => x"800c883d",
-4081 => x"0d04839f",
-4082 => x"3f9d0b80",
-4083 => x"080cff0b",
-4084 => x"800c883d",
-4085 => x"0d04fb3d",
-4086 => x"0d777956",
-4087 => x"56807054",
-4088 => x"0b0b540b",
-4089 => x"0b737525",
-4090 => x"9f387410",
-4091 => x"1010f805",
-4092 => x"52721670",
-4093 => x"3370742b",
-4094 => x"76078116",
-4095 => x"f8165656",
-4096 => x"56515174",
-4097 => x"7324ea38",
-4098 => x"73800c87",
-4099 => x"3d0d04fc",
-4100 => x"3d0d7678",
-4101 => x"5555bc53",
-4102 => x"0b0b8052",
-4103 => x"7351e8ef",
-4104 => x"3f845274",
-4105 => x"51ffaf3f",
-4106 => x"80087423",
-4107 => x"84528415",
-4108 => x"51ffa33f",
-4109 => x"80088215",
-4110 => x"23845288",
-4111 => x"1551ff96",
-4112 => x"3f800884",
-4113 => x"150c8452",
-4114 => x"8c1551ff",
-4115 => x"893f8008",
-4116 => x"88152384",
-4117 => x"52901551",
-4118 => x"fefc3f80",
-4119 => x"088a1523",
-4120 => x"84529415",
-4121 => x"51feef3f",
-4122 => x"80088c15",
-4123 => x"23845298",
-4124 => x"1551fee2",
-4125 => x"3f80088e",
-4126 => x"15238852",
-4127 => x"9c1551fe",
-4128 => x"d53f8008",
-4129 => x"90150c86",
-4130 => x"3d0d04e9",
-4131 => x"3d0d6a81",
-4132 => x"9ac00857",
-4133 => x"570b7593",
-4134 => x"3880c080",
-4135 => x"0b84180c",
-4136 => x"75ac180c",
-4137 => x"75800c99",
-4138 => x"3d0d0489",
-4139 => x"3d70556a",
-4140 => x"540b0b55",
-4141 => x"8a52993d",
-4142 => x"ffbc0551",
-4143 => x"ff87853f",
-4144 => x"80087753",
-4145 => x"0b0b7552",
-4146 => x"56fec43f",
-4147 => x"81993f77",
-4148 => x"80080c75",
-4149 => x"800c993d",
-4150 => x"0d04e93d",
-4151 => x"0d695781",
-4152 => x"9ac00880",
-4153 => x"2ebb3876",
-4154 => x"51ff99a7",
-4155 => x"3f893d70",
-4156 => x"56800881",
-4157 => x"05557754",
-4158 => x"0b0b568f",
-4159 => x"52993dff",
-4160 => x"bc0551ff",
-4161 => x"86be3f80",
-4162 => x"086b530b",
-4163 => x"0b765257",
-4164 => x"fdfd3f80",
-4165 => x"d23f7780",
-4166 => x"080c7680",
-4167 => x"0c993d0d",
-4168 => x"0480c43f",
-4169 => x"850b8008",
-4170 => x"0cff0b80",
-4171 => x"0c993d0d",
-4172 => x"04fc3d0d",
-4173 => x"81540b0b",
-4174 => x"819ac008",
-4175 => x"88387380",
-4176 => x"0c863d0d",
-4177 => x"0476530b",
-4178 => x"0b97b952",
-4179 => x"863dfc05",
-4180 => x"51ff85f0",
-4181 => x"3f800854",
-4182 => x"0b0b8c3f",
-4183 => x"7480080c",
-4184 => x"73800c86",
-4185 => x"3d0d0481",
-4186 => x"8a940880",
-4187 => x"0c04f73d",
-4188 => x"0d7b818a",
-4189 => x"940882c8",
-4190 => x"7105085a",
-4191 => x"540b0b5a",
-4192 => x"77802e80",
-4193 => x"eb388188",
-4194 => x"18841908",
-4195 => x"ff058171",
-4196 => x"2b595559",
-4197 => x"80742481",
-4198 => x"80388074",
-4199 => x"2480c138",
-4200 => x"73822b78",
-4201 => x"71058805",
-4202 => x"56568180",
-4203 => x"19087706",
-4204 => x"530b0b72",
-4205 => x"802e80c3",
-4206 => x"38781670",
-4207 => x"08530b0b",
-4208 => x"530b0b79",
-4209 => x"51740853",
-4210 => x"0b0b722d",
-4211 => x"ff14fc17",
-4212 => x"fc177981",
-4213 => x"2c5a5757",
-4214 => x"540b0b73",
-4215 => x"8025cb38",
-4216 => x"7708580b",
-4217 => x"0b77ff9e",
-4218 => x"38818a94",
-4219 => x"08530b0b",
-4220 => x"bc730508",
-4221 => x"a9387951",
-4222 => x"f7bd3f74",
-4223 => x"08530b0b",
-4224 => x"722dff14",
-4225 => x"fc17fc17",
-4226 => x"79812c5a",
-4227 => x"5757540b",
-4228 => x"0b738025",
-4229 => x"ff9438c8",
-4230 => x"398057fe",
-4231 => x"fd397251",
-4232 => x"bc730508",
-4233 => x"530b0b72",
-4234 => x"2d7951f7",
-4235 => x"8a3f8c08",
-4236 => x"028c0c70",
-4237 => x"70707080",
-4238 => x"530b0b8c",
-4239 => x"088c0508",
-4240 => x"528c0888",
-4241 => x"050851ff",
-4242 => x"8dd23f80",
-4243 => x"0870800c",
-4244 => x"540b0b50",
-4245 => x"5050508c",
-4246 => x"0c048c08",
-4247 => x"028c0c70",
-4248 => x"70707081",
-4249 => x"530b0b8c",
-4250 => x"088c0508",
-4251 => x"528c0888",
-4252 => x"050851ff",
-4253 => x"8da63f80",
-4254 => x"0870800c",
-4255 => x"540b0b50",
-4256 => x"5050508c",
-4257 => x"0c047070",
-4258 => x"819a800b",
-4259 => x"fc057008",
-4260 => x"52520b70",
-4261 => x"ff2e9338",
-4262 => x"702dfc72",
-4263 => x"05700852",
-4264 => x"520b70ff",
-4265 => x"2e098106",
-4266 => x"ef385050",
-4267 => x"0404ff85",
-4268 => x"e53f0400",
-4269 => x"4379636c",
-4270 => x"65732025",
-4271 => x"640a0000",
-4272 => x"48656c6c",
-4273 => x"6f20776f",
-4274 => x"726c6420",
-4275 => x"310a0000",
-4276 => x"48656c6c",
-4277 => x"6f20776f",
-4278 => x"726c6420",
-4279 => x"320a0000",
-4280 => x"0a000000",
-4281 => x"20202020",
-4282 => x"20202020",
-4283 => x"20202020",
-4284 => x"20202020",
-4285 => x"30303030",
-4286 => x"30303030",
-4287 => x"30303030",
-4288 => x"30303030",
-4289 => x"000017e3",
-4290 => x"0000138d",
-4291 => x"0000138d",
-4292 => x"000017d9",
-4293 => x"0000138d",
-4294 => x"0000138d",
-4295 => x"0000138d",
-4296 => x"0000138d",
-4297 => x"0000138d",
-4298 => x"0000138d",
-4299 => x"00001364",
-4300 => x"0000177e",
-4301 => x"0000138d",
-4302 => x"00001376",
-4303 => x"000016ec",
-4304 => x"0000138d",
-4305 => x"000017af",
-4306 => x"0000178a",
-4307 => x"0000178a",
-4308 => x"0000178a",
-4309 => x"0000178a",
-4310 => x"0000178a",
-4311 => x"0000178a",
-4312 => x"0000178a",
-4313 => x"0000178a",
-4314 => x"0000178a",
-4315 => x"0000138d",
-4316 => x"0000138d",
-4317 => x"0000138d",
-4318 => x"0000138d",
-4319 => x"0000138d",
-4320 => x"0000138d",
-4321 => x"0000138d",
-4322 => x"0000138d",
-4323 => x"0000138d",
-4324 => x"00001699",
-4325 => x"00001326",
-4326 => x"0000138d",
-4327 => x"0000138d",
-4328 => x"0000138d",
-4329 => x"0000138d",
-4330 => x"0000138d",
-4331 => x"0000138d",
-4332 => x"0000138d",
-4333 => x"0000138d",
-4334 => x"0000138d",
-4335 => x"0000138d",
-4336 => x"000012ec",
-4337 => x"0000138d",
-4338 => x"0000138d",
-4339 => x"0000138d",
-4340 => x"00001553",
-4341 => x"0000138d",
-4342 => x"00001015",
-4343 => x"0000138d",
-4344 => x"0000138d",
-4345 => x"00001733",
-4346 => x"0000138d",
-4347 => x"0000138d",
-4348 => x"0000138d",
-4349 => x"0000138d",
-4350 => x"0000138d",
-4351 => x"0000138d",
-4352 => x"0000138d",
-4353 => x"0000138d",
-4354 => x"0000138d",
-4355 => x"0000138d",
-4356 => x"00001699",
-4357 => x"0000132a",
-4358 => x"0000138d",
-4359 => x"0000138d",
-4360 => x"0000138d",
-4361 => x"0000168e",
-4362 => x"0000132a",
-4363 => x"0000138d",
-4364 => x"0000138d",
-4365 => x"000015d8",
-4366 => x"0000138d",
-4367 => x"000015a8",
-4368 => x"000012f0",
-4369 => x"000015f7",
-4370 => x"00001383",
-4371 => x"0000138d",
-4372 => x"00001553",
-4373 => x"0000138d",
-4374 => x"00001019",
-4375 => x"0000138d",
-4376 => x"0000138d",
-4377 => x"000017ba",
-4378 => x"62756720",
-4379 => x"696e2076",
-4380 => x"66707269",
-4381 => x"6e74663a",
-4382 => x"20626164",
-4383 => x"20626173",
-4384 => x"65000000",
-4385 => x"30313233",
-4386 => x"34353637",
-4387 => x"38396162",
-4388 => x"63646566",
-4389 => x"00000000",
-4390 => x"30313233",
-4391 => x"34353637",
-4392 => x"38394142",
-4393 => x"43444546",
-4394 => x"00000000",
-4395 => x"286e756c",
-4396 => x"6c290000",
-4397 => x"432d5554",
-4398 => x"462d3800",
-4399 => x"432d534a",
-4400 => x"49530000",
-4401 => x"432d4555",
-4402 => x"434a5000",
-4403 => x"432d4a49",
-4404 => x"53000000",
-4405 => x"43000000",
-4406 => x"2e000000",
-4407 => x"49534f2d",
-4408 => x"38383539",
-4409 => x"2d310000",
-4410 => x"64756d6d",
-4411 => x"792e6578",
-4412 => x"65000000",
-4413 => x"00ffffff",
-4414 => x"ff00ffff",
-4415 => x"ffff00ff",
-4416 => x"ffffff00",
-4417 => x"00000000",
-4418 => x"00000000",
-4419 => x"00000000",
-4420 => x"00004d08",
-4421 => x"00004518",
-4422 => x"00000000",
-4423 => x"00004780",
-4424 => x"000047dc",
-4425 => x"00004838",
-4426 => x"00000000",
-4427 => x"00000000",
-4428 => x"00000000",
-4429 => x"00000000",
-4430 => x"00000000",
-4431 => x"00000000",
-4432 => x"00000000",
-4433 => x"00000000",
-4434 => x"00000000",
-4435 => x"000044d4",
-4436 => x"00000000",
-4437 => x"00000000",
-4438 => x"00000000",
-4439 => x"00000000",
-4440 => x"00000000",
-4441 => x"00000000",
-4442 => x"00000000",
-4443 => x"00000000",
-4444 => x"00000000",
-4445 => x"00000000",
-4446 => x"00000000",
-4447 => x"00000000",
-4448 => x"00000000",
-4449 => x"00000000",
-4450 => x"00000000",
-4451 => x"00000000",
-4452 => x"00000000",
-4453 => x"00000000",
-4454 => x"00000000",
-4455 => x"00000000",
-4456 => x"00000000",
-4457 => x"00000000",
-4458 => x"00000000",
-4459 => x"00000000",
-4460 => x"00000000",
-4461 => x"00000000",
-4462 => x"00000000",
-4463 => x"00000000",
-4464 => x"00000001",
-4465 => x"330eabcd",
-4466 => x"1234e66d",
-4467 => x"deec0005",
-4468 => x"000b0000",
-4469 => x"00000000",
-4470 => x"00000000",
-4471 => x"00000000",
-4472 => x"00000000",
-4473 => x"00000000",
-4474 => x"00000000",
-4475 => x"00000000",
-4476 => x"00000000",
-4477 => x"00000000",
-4478 => x"00000000",
-4479 => x"00000000",
-4480 => x"00000000",
-4481 => x"00000000",
-4482 => x"00000000",
-4483 => x"00000000",
-4484 => x"00000000",
-4485 => x"00000000",
-4486 => x"00000000",
-4487 => x"00000000",
-4488 => x"00000000",
-4489 => x"00000000",
-4490 => x"00000000",
-4491 => x"00000000",
-4492 => x"00000000",
-4493 => x"00000000",
-4494 => x"00000000",
-4495 => x"00000000",
-4496 => x"00000000",
-4497 => x"00000000",
-4498 => x"00000000",
-4499 => x"00000000",
-4500 => x"00000000",
-4501 => x"00000000",
-4502 => x"00000000",
-4503 => x"00000000",
-4504 => x"00000000",
-4505 => x"00000000",
-4506 => x"00000000",
-4507 => x"00000000",
-4508 => x"00000000",
-4509 => x"00000000",
-4510 => x"00000000",
-4511 => x"00000000",
-4512 => x"00000000",
-4513 => x"00000000",
-4514 => x"00000000",
-4515 => x"00000000",
-4516 => x"00000000",
-4517 => x"00000000",
-4518 => x"00000000",
-4519 => x"00000000",
-4520 => x"00000000",
-4521 => x"00000000",
-4522 => x"00000000",
-4523 => x"00000000",
-4524 => x"00000000",
-4525 => x"00000000",
-4526 => x"00000000",
-4527 => x"00000000",
-4528 => x"00000000",
-4529 => x"00000000",
-4530 => x"00000000",
-4531 => x"00000000",
-4532 => x"00000000",
-4533 => x"00000000",
-4534 => x"00000000",
-4535 => x"00000000",
-4536 => x"00000000",
-4537 => x"00000000",
-4538 => x"00000000",
-4539 => x"00000000",
-4540 => x"00000000",
-4541 => x"00000000",
-4542 => x"00000000",
-4543 => x"00000000",
-4544 => x"00000000",
-4545 => x"00000000",
-4546 => x"00000000",
-4547 => x"00000000",
-4548 => x"00000000",
-4549 => x"00000000",
-4550 => x"00000000",
-4551 => x"00000000",
-4552 => x"00000000",
-4553 => x"00000000",
-4554 => x"00000000",
-4555 => x"00000000",
-4556 => x"00000000",
-4557 => x"00000000",
-4558 => x"00000000",
-4559 => x"00000000",
-4560 => x"00000000",
-4561 => x"00000000",
-4562 => x"00000000",
-4563 => x"00000000",
-4564 => x"00000000",
-4565 => x"00000000",
-4566 => x"00000000",
-4567 => x"00000000",
-4568 => x"00000000",
-4569 => x"00000000",
-4570 => x"00000000",
-4571 => x"00000000",
-4572 => x"00000000",
-4573 => x"00000000",
-4574 => x"00000000",
-4575 => x"00000000",
-4576 => x"00000000",
-4577 => x"00000000",
-4578 => x"00000000",
-4579 => x"00000000",
-4580 => x"00000000",
-4581 => x"00000000",
-4582 => x"00000000",
-4583 => x"00000000",
-4584 => x"00000000",
-4585 => x"00000000",
-4586 => x"00000000",
-4587 => x"00000000",
-4588 => x"00000000",
-4589 => x"00000000",
-4590 => x"00000000",
-4591 => x"00000000",
-4592 => x"00000000",
-4593 => x"00000000",
-4594 => x"00000000",
-4595 => x"00000000",
-4596 => x"00000000",
-4597 => x"00000000",
-4598 => x"00000000",
-4599 => x"00000000",
-4600 => x"00000000",
-4601 => x"00000000",
-4602 => x"00000000",
-4603 => x"00000000",
-4604 => x"00000000",
-4605 => x"00000000",
-4606 => x"00000000",
-4607 => x"00000000",
-4608 => x"00000000",
-4609 => x"00000000",
-4610 => x"00000000",
-4611 => x"00000000",
-4612 => x"00000000",
-4613 => x"00000000",
-4614 => x"00000000",
-4615 => x"00000000",
-4616 => x"00000000",
-4617 => x"00000000",
-4618 => x"00000000",
-4619 => x"00000000",
-4620 => x"00000000",
-4621 => x"00000000",
-4622 => x"00000000",
-4623 => x"00000000",
-4624 => x"00000000",
-4625 => x"00000000",
-4626 => x"00000000",
-4627 => x"00000000",
-4628 => x"00000000",
-4629 => x"00000000",
-4630 => x"00000000",
-4631 => x"00000000",
-4632 => x"00000000",
-4633 => x"00000000",
-4634 => x"00000000",
-4635 => x"00000000",
-4636 => x"00000000",
-4637 => x"00000000",
-4638 => x"00000000",
-4639 => x"00000000",
-4640 => x"00000000",
-4641 => x"00000000",
-4642 => x"00000000",
-4643 => x"00000000",
-4644 => x"00000000",
-4645 => x"43000000",
-4646 => x"00000000",
-4647 => x"00000000",
-4648 => x"00000000",
-4649 => x"00000000",
-4650 => x"00000000",
-4651 => x"00000001",
-4652 => x"000044dc",
-4653 => x"00000000",
-4654 => x"00000000",
-4655 => x"00000000",
-4656 => x"00000000",
-4657 => x"00000000",
-4658 => x"00000000",
-4659 => x"00000000",
-4660 => x"00000000",
-4661 => x"00000000",
-4662 => x"00000000",
-4663 => x"00000000",
-4664 => x"00000000",
-4665 => x"ffffffff",
-4666 => x"00000000",
-4667 => x"00020000",
-4668 => x"00000000",
-4669 => x"00000000",
-4670 => x"000048f0",
-4671 => x"000048f0",
-4672 => x"000048f8",
-4673 => x"000048f8",
-4674 => x"00004900",
-4675 => x"00004900",
-4676 => x"00004908",
-4677 => x"00004908",
-4678 => x"00004910",
-4679 => x"00004910",
-4680 => x"00004918",
-4681 => x"00004918",
-4682 => x"00004920",
-4683 => x"00004920",
-4684 => x"00004928",
-4685 => x"00004928",
-4686 => x"00004930",
-4687 => x"00004930",
-4688 => x"00004938",
-4689 => x"00004938",
-4690 => x"00004940",
-4691 => x"00004940",
-4692 => x"00004948",
-4693 => x"00004948",
-4694 => x"00004950",
-4695 => x"00004950",
-4696 => x"00004958",
-4697 => x"00004958",
-4698 => x"00004960",
-4699 => x"00004960",
-4700 => x"00004968",
-4701 => x"00004968",
-4702 => x"00004970",
-4703 => x"00004970",
-4704 => x"00004978",
-4705 => x"00004978",
-4706 => x"00004980",
-4707 => x"00004980",
-4708 => x"00004988",
-4709 => x"00004988",
-4710 => x"00004990",
-4711 => x"00004990",
-4712 => x"00004998",
-4713 => x"00004998",
-4714 => x"000049a0",
-4715 => x"000049a0",
-4716 => x"000049a8",
-4717 => x"000049a8",
-4718 => x"000049b0",
-4719 => x"000049b0",
-4720 => x"000049b8",
-4721 => x"000049b8",
-4722 => x"000049c0",
-4723 => x"000049c0",
-4724 => x"000049c8",
-4725 => x"000049c8",
-4726 => x"000049d0",
-4727 => x"000049d0",
-4728 => x"000049d8",
-4729 => x"000049d8",
-4730 => x"000049e0",
-4731 => x"000049e0",
-4732 => x"000049e8",
-4733 => x"000049e8",
-4734 => x"000049f0",
-4735 => x"000049f0",
-4736 => x"000049f8",
-4737 => x"000049f8",
-4738 => x"00004a00",
-4739 => x"00004a00",
-4740 => x"00004a08",
-4741 => x"00004a08",
-4742 => x"00004a10",
-4743 => x"00004a10",
-4744 => x"00004a18",
-4745 => x"00004a18",
-4746 => x"00004a20",
-4747 => x"00004a20",
-4748 => x"00004a28",
-4749 => x"00004a28",
-4750 => x"00004a30",
-4751 => x"00004a30",
-4752 => x"00004a38",
-4753 => x"00004a38",
-4754 => x"00004a40",
-4755 => x"00004a40",
-4756 => x"00004a48",
-4757 => x"00004a48",
-4758 => x"00004a50",
-4759 => x"00004a50",
-4760 => x"00004a58",
-4761 => x"00004a58",
-4762 => x"00004a60",
-4763 => x"00004a60",
-4764 => x"00004a68",
-4765 => x"00004a68",
-4766 => x"00004a70",
-4767 => x"00004a70",
-4768 => x"00004a78",
-4769 => x"00004a78",
-4770 => x"00004a80",
-4771 => x"00004a80",
-4772 => x"00004a88",
-4773 => x"00004a88",
-4774 => x"00004a90",
-4775 => x"00004a90",
-4776 => x"00004a98",
-4777 => x"00004a98",
-4778 => x"00004aa0",
-4779 => x"00004aa0",
-4780 => x"00004aa8",
-4781 => x"00004aa8",
-4782 => x"00004ab0",
-4783 => x"00004ab0",
-4784 => x"00004ab8",
-4785 => x"00004ab8",
-4786 => x"00004ac0",
-4787 => x"00004ac0",
-4788 => x"00004ac8",
-4789 => x"00004ac8",
-4790 => x"00004ad0",
-4791 => x"00004ad0",
-4792 => x"00004ad8",
-4793 => x"00004ad8",
-4794 => x"00004ae0",
-4795 => x"00004ae0",
-4796 => x"00004ae8",
-4797 => x"00004ae8",
-4798 => x"00004af0",
-4799 => x"00004af0",
-4800 => x"00004af8",
-4801 => x"00004af8",
-4802 => x"00004b00",
-4803 => x"00004b00",
-4804 => x"00004b08",
-4805 => x"00004b08",
-4806 => x"00004b10",
-4807 => x"00004b10",
-4808 => x"00004b18",
-4809 => x"00004b18",
-4810 => x"00004b20",
-4811 => x"00004b20",
-4812 => x"00004b28",
-4813 => x"00004b28",
-4814 => x"00004b30",
-4815 => x"00004b30",
-4816 => x"00004b38",
-4817 => x"00004b38",
-4818 => x"00004b40",
-4819 => x"00004b40",
-4820 => x"00004b48",
-4821 => x"00004b48",
-4822 => x"00004b50",
-4823 => x"00004b50",
-4824 => x"00004b58",
-4825 => x"00004b58",
-4826 => x"00004b60",
-4827 => x"00004b60",
-4828 => x"00004b68",
-4829 => x"00004b68",
-4830 => x"00004b70",
-4831 => x"00004b70",
-4832 => x"00004b78",
-4833 => x"00004b78",
-4834 => x"00004b80",
-4835 => x"00004b80",
-4836 => x"00004b88",
-4837 => x"00004b88",
-4838 => x"00004b90",
-4839 => x"00004b90",
-4840 => x"00004b98",
-4841 => x"00004b98",
-4842 => x"00004ba0",
-4843 => x"00004ba0",
-4844 => x"00004ba8",
-4845 => x"00004ba8",
-4846 => x"00004bb0",
-4847 => x"00004bb0",
-4848 => x"00004bb8",
-4849 => x"00004bb8",
-4850 => x"00004bc0",
-4851 => x"00004bc0",
-4852 => x"00004bc8",
-4853 => x"00004bc8",
-4854 => x"00004bd0",
-4855 => x"00004bd0",
-4856 => x"00004bd8",
-4857 => x"00004bd8",
-4858 => x"00004be0",
-4859 => x"00004be0",
-4860 => x"00004be8",
-4861 => x"00004be8",
-4862 => x"00004bf0",
-4863 => x"00004bf0",
-4864 => x"00004bf8",
-4865 => x"00004bf8",
-4866 => x"00004c00",
-4867 => x"00004c00",
-4868 => x"00004c08",
-4869 => x"00004c08",
-4870 => x"00004c10",
-4871 => x"00004c10",
-4872 => x"00004c18",
-4873 => x"00004c18",
-4874 => x"00004c20",
-4875 => x"00004c20",
-4876 => x"00004c28",
-4877 => x"00004c28",
-4878 => x"00004c30",
-4879 => x"00004c30",
-4880 => x"00004c38",
-4881 => x"00004c38",
-4882 => x"00004c40",
-4883 => x"00004c40",
-4884 => x"00004c48",
-4885 => x"00004c48",
-4886 => x"00004c50",
-4887 => x"00004c50",
-4888 => x"00004c58",
-4889 => x"00004c58",
-4890 => x"00004c60",
-4891 => x"00004c60",
-4892 => x"00004c68",
-4893 => x"00004c68",
-4894 => x"00004c70",
-4895 => x"00004c70",
-4896 => x"00004c78",
-4897 => x"00004c78",
-4898 => x"00004c80",
-4899 => x"00004c80",
-4900 => x"00004c88",
-4901 => x"00004c88",
-4902 => x"00004c90",
-4903 => x"00004c90",
-4904 => x"00004c98",
-4905 => x"00004c98",
-4906 => x"00004ca0",
-4907 => x"00004ca0",
-4908 => x"00004ca8",
-4909 => x"00004ca8",
-4910 => x"00004cb0",
-4911 => x"00004cb0",
-4912 => x"00004cb8",
-4913 => x"00004cb8",
-4914 => x"00004cc0",
-4915 => x"00004cc0",
-4916 => x"00004cc8",
-4917 => x"00004cc8",
-4918 => x"00004cd0",
-4919 => x"00004cd0",
-4920 => x"00004cd8",
-4921 => x"00004cd8",
-4922 => x"00004ce0",
-4923 => x"00004ce0",
-4924 => x"00004ce8",
-4925 => x"00004ce8",
-4926 => x"000044e8",
-4927 => x"ffffffff",
-4928 => x"00000000",
-4929 => x"ffffffff",
-4930 => x"00000000",
- others => x"00000000"
-);
-
-begin
-
-process (clk)
-begin
- if (clk'event and clk = '1') then
- if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
- report "write collision" severity failure;
- end if;
-
- if (memAWriteEnable = '1') then
- ram(conv_integer(memAAddr)) := memAWrite;
- memARead <= memAWrite;
- else
- memARead <= ram(conv_integer(memAAddr));
- end if;
- end if;
-end process;
-
-process (clk)
-begin
- if (clk'event and clk = '1') then
- if (memBWriteEnable = '1') then
- ram(conv_integer(memBAddr)) := memBWrite;
- memBRead <= memBWrite;
- else
- memBRead <= ram(conv_integer(memBAddr));
- end if;
- end if;
-end process;
-
-
-
-
-end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/dualport_ram_synplicity.vhd b/zpu/hdl/zpu3/src/dualport_ram_synplicity.vhd deleted file mode 100644 index 83a7de2..0000000 --- a/zpu/hdl/zpu3/src/dualport_ram_synplicity.vhd +++ /dev/null @@ -1,5012 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all; -use ieee.std_logic_unsigned.all; - - -library zylin; -use zylin.zpu_config.all; -use zylin.zpupkg.all; - -entity dualport_ram is -port (clk : in std_logic; - memAWriteEnable : in std_logic; - memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit); - memAWrite : in std_logic_vector(wordSize-1 downto 0); - memARead : out std_logic_vector(wordSize-1 downto 0); - memBWriteEnable : in std_logic; - memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit); - memBWrite : in std_logic_vector(wordSize-1 downto 0); - memBRead : out std_logic_vector(wordSize-1 downto 0)); -end dualport_ram; - -architecture dualport_ram_arch of dualport_ram is - - -type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0); - - ---shared variable ram : ram_type := -signal ram : ram_type := -( -0 => x"800b0b0b", -1 => x"0b0b8070", -2 => x"0b0b818a", -3 => x"dc0c3a0b", -4 => x"0b80dab4", -5 => x"04000000", -6 => x"00000000", -7 => x"00000000", -8 => x"80088408", -9 => x"88080b0b", -10 => x"80db972d", -11 => x"880c840c", -12 => x"800c0400", -13 => x"00000000", -14 => x"00000000", -15 => x"00000000", -16 => x"71fd0608", -17 => x"72830609", -18 => x"81058205", -19 => x"832b0b2a", -20 => x"83ffff06", -21 => x"52810504", -22 => x"00000000", -23 => x"00000000", -24 => x"71fd0608", -25 => x"83ffff73", -26 => x"83060981", -27 => x"05820583", -28 => x"2b0b2b09", -29 => x"067383ff", -30 => x"ff0b0b0b", -31 => x"0b83a704", -32 => x"72098105", -33 => x"72057373", -34 => x"09060906", -35 => x"73097306", -36 => x"070a8106", -37 => x"53518105", -38 => x"04000000", -39 => x"00000000", -40 => x"72722473", -41 => x"732e0753", -42 => x"51810504", -43 => x"00000000", -44 => x"00000000", -45 => x"00000000", -46 => x"00000000", -47 => x"00000000", -48 => x"71737109", -49 => x"71068106", -50 => x"30720a10", -51 => x"0a720a10", -52 => x"0a31050a", -53 => x"81065151", -54 => x"53518105", -55 => x"04000000", -56 => x"72722673", -57 => x"732e0753", -58 => x"51810504", -59 => x"00000000", -60 => x"00000000", -61 => x"00000000", -62 => x"00000000", -63 => x"00000000", -64 => x"72ff0571", -65 => x"81050673", -66 => x"ff050972", -67 => x"74058005", -68 => x"06075350", -69 => x"50040000", -70 => x"00000000", -71 => x"00000000", -72 => x"0b0b0b8c", -73 => x"f8040000", -74 => x"00000000", -75 => x"00000000", -76 => x"00000000", -77 => x"00000000", -78 => x"00000000", -79 => x"00000000", -80 => x"720a722b", -81 => x"0a535181", -82 => x"05040000", -83 => x"00000000", -84 => x"00000000", -85 => x"00000000", -86 => x"00000000", -87 => x"00000000", -88 => x"72729f06", -89 => x"0981050b", -90 => x"0b0b88a7", -91 => x"05040000", -92 => x"00000000", -93 => x"00000000", -94 => x"00000000", -95 => x"00000000", -96 => x"72722aff", -97 => x"739f062a", -98 => x"0974090a", -99 => x"8106ff05", -100 => x"06075351", -101 => x"81050400", -102 => x"00000000", -103 => x"00000000", -104 => x"71718105", -105 => x"53510406", -106 => x"73830609", -107 => x"81058205", -108 => x"832b0b2b", -109 => x"0772fc06", -110 => x"0c515181", -111 => x"05040000", -112 => x"72098105", -113 => x"72050970", -114 => x"81050906", -115 => x"0a810653", -116 => x"51810504", -117 => x"00000000", -118 => x"00000000", -119 => x"00000000", -120 => x"72098105", -121 => x"72050970", -122 => x"81050906", -123 => x"0a098106", -124 => x"53518105", -125 => x"04000000", -126 => x"00000000", -127 => x"00000000", -128 => x"71098105", -129 => x"52810504", -130 => x"00000000", -131 => x"00000000", -132 => x"00000000", -133 => x"00000000", -134 => x"00000000", -135 => x"00000000", -136 => x"72720981", -137 => x"05055351", -138 => x"81050409", -139 => x"81058305", -140 => x"1010102b", -141 => x"0772fc06", -142 => x"0c515181", -143 => x"05040000", -144 => x"72097206", -145 => x"73730906", -146 => x"07535181", -147 => x"05040000", -148 => x"00000000", -149 => x"00000000", -150 => x"00000000", -151 => x"00000000", -152 => x"71fc0608", -153 => x"72830609", -154 => x"81058305", -155 => x"1010102a", -156 => x"81ff0652", -157 => x"81050400", -158 => x"00000000", -159 => x"00000000", -160 => x"71fc0608", -161 => x"0b0b818a", -162 => x"88738306", -163 => x"10100508", -164 => x"067381ff", -165 => x"06738306", -166 => x"0b0b0b84", -167 => x"ab040000", -168 => x"80088408", -169 => x"88087575", -170 => x"0b0b0bb3", -171 => x"912d5050", -172 => x"80085688", -173 => x"0c840c80", -174 => x"0c810551", -175 => x"04000000", -176 => x"80088408", -177 => x"88087575", -178 => x"0b0b0bb4", -179 => x"8a2d5050", -180 => x"80085688", -181 => x"0c840c80", -182 => x"0c810551", -183 => x"04000000", -184 => x"72097081", -185 => x"0509060a", -186 => x"8106ff05", -187 => x"70547181", -188 => x"05067309", -189 => x"72740580", -190 => x"05060753", -191 => x"50500400", -192 => x"72097081", -193 => x"0509060a", -194 => x"098106ff", -195 => x"05705471", -196 => x"81050673", -197 => x"09727405", -198 => x"80050607", -199 => x"53505004", -200 => x"05800504", -201 => x"00000000", -202 => x"00000000", -203 => x"00000000", -204 => x"00000000", -205 => x"00000000", -206 => x"00000000", -207 => x"00000000", -208 => x"810b0b0b", -209 => x"818ad80c", -210 => x"51810504", -211 => x"00000000", -212 => x"00000000", -213 => x"00000000", -214 => x"00000000", -215 => x"00000000", -216 => x"72830610", -217 => x"10728306", -218 => x"0710100b", -219 => x"0b818a98", -220 => x"05080400", -221 => x"00000000", -222 => x"00000000", -223 => x"00000000", -224 => x"00000000", -225 => x"00000000", -226 => x"00000000", -227 => x"00000000", -228 => x"00000000", -229 => x"00000000", -230 => x"00000000", -231 => x"00000000", -232 => x"02840572", -233 => x"10100552", -234 => x"81050400", -235 => x"00000000", -236 => x"00000000", -237 => x"00000000", -238 => x"00000000", -239 => x"00000000", -240 => x"00000000", -241 => x"00000000", -242 => x"00000000", -243 => x"00000000", -244 => x"00000000", -245 => x"00000000", -246 => x"00000000", -247 => x"00000000", -248 => x"71710571", -249 => x"81055351", -250 => x"04000000", -251 => x"00000000", -252 => x"00000000", -253 => x"00000000", -254 => x"00000000", -255 => x"00000000", -256 => x"8db33f80", -257 => x"f39e3f04", -258 => x"10101010", -259 => x"10101010", -260 => x"10101010", -261 => x"10101010", -262 => x"10101010", -263 => x"10101010", -264 => x"10101010", -265 => x"10101053", -266 => x"51810504", -267 => x"72fc0608", -268 => x"81ff0a06", -269 => x"72fc0670", -270 => x"5408fe80", -271 => x"0a060772", -272 => x"0c515181", -273 => x"050472fc", -274 => x"06080a10", -275 => x"10101010", -276 => x"1010100a", -277 => x"87fc8080", -278 => x"0672fc06", -279 => x"08f883ff", -280 => x"ff060772", -281 => x"fc060c51", -282 => x"51810504", -283 => x"72fc0608", -284 => x"0a101010", -285 => x"10101010", -286 => x"10101010", -287 => x"10101010", -288 => x"100a83fe", -289 => x"800672fc", -290 => x"0608fc81", -291 => x"ff060772", -292 => x"fc060c51", -293 => x"51810504", -294 => x"72fc0608", -295 => x"0a101010", -296 => x"10101010", -297 => x"10101010", -298 => x"10101010", -299 => x"10101010", -300 => x"10101010", -301 => x"100a81ff", -302 => x"0672fc06", -303 => x"08fe8006", -304 => x"0772fc06", -305 => x"0c515181", -306 => x"050472fc", -307 => x"06081010", -308 => x"10101010", -309 => x"101081ff", -310 => x"0a0672fc", -311 => x"0608fe80", -312 => x"0a060772", -313 => x"fc060c51", -314 => x"51810504", -315 => x"72fc0608", -316 => x"87fc8080", -317 => x"0672fc06", -318 => x"705408f8", -319 => x"83ffff06", -320 => x"07720c51", -321 => x"51810504", -322 => x"72fc0608", -323 => x"0a101010", -324 => x"10101010", -325 => x"100a83fe", -326 => x"800672fc", -327 => x"0608fc81", -328 => x"ff060772", -329 => x"fc060c51", -330 => x"51810504", -331 => x"72fc0608", -332 => x"0a101010", -333 => x"10101010", -334 => x"10101010", -335 => x"10101010", -336 => x"100a81ff", -337 => x"0672fc06", -338 => x"08fe8006", -339 => x"0772fc06", -340 => x"0c515181", -341 => x"050472fc", -342 => x"06081010", -343 => x"10101010", -344 => x"10101010", -345 => x"10101010", -346 => x"101081ff", -347 => x"0a0672fc", -348 => x"0608fe80", -349 => x"0a060772", -350 => x"fc060c51", -351 => x"51810504", -352 => x"72fc0608", -353 => x"10101010", -354 => x"10101010", -355 => x"87fc8080", -356 => x"0672fc06", -357 => x"08f883ff", -358 => x"ff060772", -359 => x"fc060c51", -360 => x"51810504", -361 => x"72fc0608", -362 => x"83fe8006", -363 => x"72fc0670", -364 => x"5408fc81", -365 => x"ff060772", -366 => x"0c515181", -367 => x"050472fc", -368 => x"06080a10", -369 => x"10101010", -370 => x"1010100a", -371 => x"81ff0672", -372 => x"fc0608fe", -373 => x"80060772", -374 => x"fc060c51", -375 => x"51810504", -376 => x"72fc0608", -377 => x"10101010", -378 => x"10101010", -379 => x"10101010", -380 => x"10101010", -381 => x"10101010", -382 => x"10101010", -383 => x"81ff0a06", -384 => x"72fc0608", -385 => x"fe800a06", -386 => x"0772fc06", -387 => x"0c515181", -388 => x"050472fc", -389 => x"06081010", -390 => x"10101010", -391 => x"10101010", -392 => x"10101010", -393 => x"101087fc", -394 => x"80800672", -395 => x"fc0608f8", -396 => x"83ffff06", -397 => x"0772fc06", -398 => x"0c515181", -399 => x"050472fc", -400 => x"06081010", -401 => x"10101010", -402 => x"101083fe", -403 => x"800672fc", -404 => x"0608fc81", -405 => x"ff060772", -406 => x"fc060c51", -407 => x"51810504", -408 => x"72fc0608", -409 => x"81ff0672", -410 => x"fc067054", -411 => x"08fe8006", -412 => x"07720c51", -413 => x"51810504", -414 => x"72728072", -415 => x"8106ff05", -416 => x"09720605", -417 => x"71105272", -418 => x"0a100a53", -419 => x"728106ff", -420 => x"05097206", -421 => x"05711052", -422 => x"720a100a", -423 => x"53728106", -424 => x"ff050972", -425 => x"06057110", -426 => x"52720a10", -427 => x"0a537281", -428 => x"06ff0509", -429 => x"72060571", -430 => x"1052720a", -431 => x"100a5372", -432 => x"8106ff05", -433 => x"09720605", -434 => x"71105272", -435 => x"0a100a53", -436 => x"728106ff", -437 => x"05097206", -438 => x"05711052", -439 => x"720a100a", -440 => x"53728106", -441 => x"ff050972", -442 => x"06057110", -443 => x"52720a10", -444 => x"0a537281", -445 => x"06ff0509", -446 => x"72060571", -447 => x"1052720a", -448 => x"100a5372", -449 => x"83a13772", -450 => x"8106ff05", -451 => x"09720605", -452 => x"71105272", -453 => x"0a100a53", -454 => x"728106ff", -455 => x"05097206", -456 => x"05711052", -457 => x"720a100a", -458 => x"53728106", -459 => x"ff050972", -460 => x"06057110", -461 => x"52720a10", -462 => x"0a537281", -463 => x"06ff0509", -464 => x"72060571", -465 => x"1052720a", -466 => x"100a5372", -467 => x"8106ff05", -468 => x"09720605", -469 => x"71105272", -470 => x"0a100a53", -471 => x"728106ff", -472 => x"05097206", -473 => x"05711052", -474 => x"720a100a", -475 => x"53728106", -476 => x"ff050972", -477 => x"06057110", -478 => x"52720a10", -479 => x"0a537281", -480 => x"06ff0509", -481 => x"72060571", -482 => x"1052720a", -483 => x"100a5372", -484 => x"82953772", -485 => x"8106ff05", -486 => x"09720605", -487 => x"71105272", -488 => x"0a100a53", -489 => x"728106ff", -490 => x"05097206", -491 => x"05711052", -492 => x"720a100a", -493 => x"53728106", -494 => x"ff050972", -495 => x"06057110", -496 => x"52720a10", -497 => x"0a537281", -498 => x"06ff0509", -499 => x"72060571", -500 => x"1052720a", -501 => x"100a5372", -502 => x"8106ff05", -503 => x"09720605", -504 => x"71105272", -505 => x"0a100a53", -506 => x"728106ff", -507 => x"05097206", -508 => x"05711052", -509 => x"720a100a", -510 => x"53728106", -511 => x"ff050972", -512 => x"06057110", -513 => x"52720a10", -514 => x"0a537281", -515 => x"06ff0509", -516 => x"72060571", -517 => x"1052720a", -518 => x"100a5372", -519 => x"81893772", -520 => x"8106ff05", -521 => x"09720605", -522 => x"71105272", -523 => x"0a100a53", -524 => x"728106ff", -525 => x"05097206", -526 => x"05711052", -527 => x"720a100a", -528 => x"53728106", -529 => x"ff050972", -530 => x"06057110", -531 => x"52720a10", -532 => x"0a537281", -533 => x"06ff0509", -534 => x"72060571", -535 => x"1052720a", -536 => x"100a5372", -537 => x"8106ff05", -538 => x"09720605", -539 => x"71105272", -540 => x"0a100a53", -541 => x"728106ff", -542 => x"05097206", -543 => x"05711052", -544 => x"720a100a", -545 => x"53728106", -546 => x"ff050972", -547 => x"06057110", -548 => x"52720a10", -549 => x"0a537281", -550 => x"06ff0509", -551 => x"72060571", -552 => x"1052720a", -553 => x"100a5351", -554 => x"51535181", -555 => x"05043c04", -556 => x"70700b0b", -557 => x"819acc08", -558 => x"52841208", -559 => x"70810651", -560 => x"51700970", -561 => x"81050906", -562 => x"0a098106", -563 => x"ff0509e9", -564 => x"0bf70506", -565 => x"84010505", -566 => x"04710881", -567 => x"ff06800c", -568 => x"50500470", -569 => x"700b0b81", -570 => x"9acc0852", -571 => x"84120870", -572 => x"0a100a70", -573 => x"81065151", -574 => x"51700970", -575 => x"81050906", -576 => x"0a098106", -577 => x"ff0509e4", -578 => x"0bf70506", -579 => x"84010505", -580 => x"0473720c", -581 => x"50500481", -582 => x"8ad80809", -583 => x"70810509", -584 => x"060a8106", -585 => x"ff0509b0", -586 => x"0bf70506", -587 => x"84010505", -588 => x"04838080", -589 => x"0b0b0b81", -590 => x"9acc0c82", -591 => x"a0800b0b", -592 => x"0b819ad0", -593 => x"0c829080", -594 => x"0b819ae0", -595 => x"0c0b0b81", -596 => x"9ad40b81", -597 => x"9ae40c04", -598 => x"f8808080", -599 => x"a40b0b0b", -600 => x"819acc0c", -601 => x"f8808082", -602 => x"800b0b0b", -603 => x"819ad00c", -604 => x"f8808084", -605 => x"800b819a", -606 => x"e00cf880", -607 => x"8080940b", -608 => x"819ae40c", -609 => x"f8808080", -610 => x"9c0b819a", -611 => x"dc0cf880", -612 => x"8080a00b", -613 => x"819ae80c", -614 => x"04f23d0d", -615 => x"600b0b81", -616 => x"9ad00856", -617 => x"5d82750c", -618 => x"8059805a", -619 => x"800b8f3d", -620 => x"71101017", -621 => x"70085957", -622 => x"5d5b8076", -623 => x"81ff067c", -624 => x"832b5658", -625 => x"5276537b", -626 => x"519ede3f", -627 => x"7d7f7a72", -628 => x"077c7207", -629 => x"71716081", -630 => x"05415f5d", -631 => x"5b595755", -632 => x"7a8724ff", -633 => x"050980ce", -634 => x"0bf70506", -635 => x"84010505", -636 => x"040b0b81", -637 => x"9ad0087b", -638 => x"10101170", -639 => x"08585155", -640 => x"807681ff", -641 => x"067c832b", -642 => x"56585276", -643 => x"537b519e", -644 => x"983f7d7f", -645 => x"7a72077c", -646 => x"72077171", -647 => x"60810541", -648 => x"5f5d5b59", -649 => x"5755877b", -650 => x"25ff0509", -651 => x"c40bf705", -652 => x"06840105", -653 => x"0504767d", -654 => x"0c77841e", -655 => x"0c7c800c", -656 => x"903d0d04", -657 => x"7070819a", -658 => x"d8335170", -659 => x"09708105", -660 => x"09060a09", -661 => x"8106ff05", -662 => x"0980d60b", -663 => x"f7050684", -664 => x"01050504", -665 => x"818ae408", -666 => x"70085252", -667 => x"70097081", -668 => x"0509060a", -669 => x"8106ff05", -670 => x"09b10bf7", -671 => x"05068401", -672 => x"05050484", -673 => x"12818ae4", -674 => x"0c702d81", -675 => x"8ae40870", -676 => x"08525270", -677 => x"09708105", -678 => x"09060a09", -679 => x"8106ff05", -680 => x"09e10bf7", -681 => x"05068401", -682 => x"05050481", -683 => x"0b819ad8", -684 => x"34505004", -685 => x"04700b0b", -686 => x"819ac808", -687 => x"09708105", -688 => x"09060a81", -689 => x"06ff0509", -690 => x"a50bf705", -691 => x"06840105", -692 => x"05040b0b", -693 => x"0b0b8009", -694 => x"70810509", -695 => x"060a0981", -696 => x"06ff0509", -697 => x"8b0bf705", -698 => x"06840105", -699 => x"05045004", -700 => x"0b0b819a", -701 => x"c8510b0b", -702 => x"0bea853f", -703 => x"50040470", -704 => x"70028f05", -705 => x"33527109", -706 => x"81058a05", -707 => x"09708105", -708 => x"09060a81", -709 => x"06ff0509", -710 => x"910bf705", -711 => x"06840105", -712 => x"05047151", -713 => x"fbbd3f50", -714 => x"50048d51", -715 => x"fbb53f71", -716 => x"51fbb03f", -717 => x"505004cd", -718 => x"3d0db63d", -719 => x"70708405", -720 => x"520895ff", -721 => x"5d56a63d", -722 => x"5f5d8075", -723 => x"70810557", -724 => x"33765c55", -725 => x"59730981", -726 => x"05790509", -727 => x"70810509", -728 => x"060a8106", -729 => x"ff050981", -730 => x"ad0bf705", -731 => x"06840105", -732 => x"05048f3d", -733 => x"5c730981", -734 => x"05a50509", -735 => x"70810509", -736 => x"060a0981", -737 => x"06ff0509", -738 => x"819c0bf7", -739 => x"05068401", -740 => x"05050479", -741 => x"7081055b", -742 => x"33547309", -743 => x"810580e4", -744 => x"05097081", -745 => x"0509060a", -746 => x"8106ff05", -747 => x"0982ee0b", -748 => x"f7050684", -749 => x"01050504", -750 => x"7380e424", -751 => x"ff050981", -752 => x"900bf705", -753 => x"06840105", -754 => x"05047309", -755 => x"810580e3", -756 => x"05097081", -757 => x"0509060a", -758 => x"8106ff05", -759 => x"09bf0bf7", -760 => x"05068401", -761 => x"05050480", -762 => x"52a5517a", -763 => x"2d805273", -764 => x"517a2d82", -765 => x"19597970", -766 => x"81055b33", -767 => x"54730970", -768 => x"81050906", -769 => x"0a098106", -770 => x"ff0509fe", -771 => x"e80bf705", -772 => x"06840105", -773 => x"05047880", -774 => x"0cb53d0d", -775 => x"047c841e", -776 => x"83123356", -777 => x"5e578052", -778 => x"73517a2d", -779 => x"81197a70", -780 => x"81055c33", -781 => x"55597309", -782 => x"70810509", -783 => x"060a0981", -784 => x"06ff0509", -785 => x"feaf0bf7", -786 => x"05068401", -787 => x"050504c6", -788 => x"39730981", -789 => x"0580f305", -790 => x"09708105", -791 => x"09060a09", -792 => x"8106ff05", -793 => x"09ff800b", -794 => x"f7050684", -795 => x"01050504", -796 => x"7c841e71", -797 => x"08595e56", -798 => x"80773356", -799 => x"56740981", -800 => x"05760509", -801 => x"70810509", -802 => x"060a8106", -803 => x"ff0509aa", -804 => x"0bf70506", -805 => x"84010505", -806 => x"04811670", -807 => x"1870335a", -808 => x"55567709", -809 => x"70810509", -810 => x"060a0981", -811 => x"06ff0509", -812 => x"e80bf705", -813 => x"06840105", -814 => x"0504ff16", -815 => x"55807625", -816 => x"ff0509fe", -817 => x"b10bf705", -818 => x"06840105", -819 => x"05047670", -820 => x"81055833", -821 => x"58805277", -822 => x"517a2d81", -823 => x"1975ff17", -824 => x"57575980", -825 => x"7625ff05", -826 => x"09fe8b0b", -827 => x"f7050684", -828 => x"01050504", -829 => x"76708105", -830 => x"58335880", -831 => x"5277517a", -832 => x"2d811975", -833 => x"ff175757", -834 => x"59758024", -835 => x"ff0509ff", -836 => x"bd0bf705", -837 => x"06840105", -838 => x"0504fdda", -839 => x"397c841e", -840 => x"71087071", -841 => x"9f2c5953", -842 => x"595e5680", -843 => x"7524ff05", -844 => x"0981f80b", -845 => x"f7050684", -846 => x"01050504", -847 => x"757e7d58", -848 => x"59558057", -849 => x"74098105", -850 => x"77050970", -851 => x"81050906", -852 => x"0a098106", -853 => x"ff050980", -854 => x"f40bf705", -855 => x"06840105", -856 => x"0504b07c", -857 => x"3402b905", -858 => x"567b0981", -859 => x"05760509", -860 => x"70810509", -861 => x"060a8106", -862 => x"ff0509b3", -863 => x"0bf70506", -864 => x"84010505", -865 => x"04ff1656", -866 => x"75787081", -867 => x"055a3b81", -868 => x"17577b09", -869 => x"81057605", -870 => x"09708105", -871 => x"09060a09", -872 => x"8106ff05", -873 => x"09df0bf7", -874 => x"05068401", -875 => x"05050480", -876 => x"7834767e", -877 => x"ff125758", -878 => x"56758024", -879 => x"ff0509fe", -880 => x"8d0bf705", -881 => x"06840105", -882 => x"0504fcaa", -883 => x"398a7536", -884 => x"0b0b80fb", -885 => x"fc055473", -886 => x"76708105", -887 => x"583b8a75", -888 => x"35557409", -889 => x"70810509", -890 => x"060a8106", -891 => x"ff0509fe", -892 => x"f80bf705", -893 => x"06840105", -894 => x"05048a75", -895 => x"360b0b80", -896 => x"fbfc0554", -897 => x"73767081", -898 => x"05583b8a", -899 => x"75355574", -900 => x"09708105", -901 => x"09060a09", -902 => x"8106ff05", -903 => x"09ffae0b", -904 => x"f7050684", -905 => x"01050504", -906 => x"febf3974", -907 => x"527653b5", -908 => x"3dffb805", -909 => x"5195c73f", -910 => x"a43d0856", -911 => x"fdfe3970", -912 => x"80c10b81", -913 => x"e9983480", -914 => x"0b81eaf0", -915 => x"0c70800c", -916 => x"50047070", -917 => x"800b81e9", -918 => x"98335252", -919 => x"70098105", -920 => x"80c10509", -921 => x"70810509", -922 => x"060a8106", -923 => x"ff0509a0", -924 => x"0bf70506", -925 => x"84010505", -926 => x"047181ea", -927 => x"f0080781", -928 => x"eaf00c80", -929 => x"c20b81e9", -930 => x"9c347080", -931 => x"0c505004", -932 => x"810b81ea", -933 => x"f0080781", -934 => x"eaf00c80", -935 => x"c20b81e9", -936 => x"9c347080", -937 => x"0c505004", -938 => x"70707070", -939 => x"7570088a", -940 => x"05535381", -941 => x"e9983351", -942 => x"70098105", -943 => x"80c10509", -944 => x"70810509", -945 => x"060a8106", -946 => x"ff0509a9", -947 => x"0bf70506", -948 => x"84010505", -949 => x"04730970", -950 => x"81050906", -951 => x"0a098106", -952 => x"ff0509cf", -953 => x"0bf70506", -954 => x"84010505", -955 => x"0470800c", -956 => x"50505050", -957 => x"04ff1270", -958 => x"81e99408", -959 => x"31740c80", -960 => x"0c505050", -961 => x"5004fc3d", -962 => x"0d81e9a0", -963 => x"08557409", -964 => x"70810509", -965 => x"060a8106", -966 => x"ff050994", -967 => x"0bf70506", -968 => x"84010505", -969 => x"04767508", -970 => x"710c81e9", -971 => x"a0085654", -972 => x"8c155381", -973 => x"e9940852", -974 => x"8a5190ac", -975 => x"3f73800c", -976 => x"863d0d04", -977 => x"fb3d0d77", -978 => x"70085656", -979 => x"b05381e9", -980 => x"a0085274", -981 => x"51acb53f", -982 => x"850b8c17", -983 => x"0c850b8c", -984 => x"160c7508", -985 => x"750c81e9", -986 => x"a0085473", -987 => x"09708105", -988 => x"09060a81", -989 => x"06ff0509", -990 => x"920bf705", -991 => x"06840105", -992 => x"05047308", -993 => x"750c81e9", -994 => x"a008548c", -995 => x"145381e9", -996 => x"9408528a", -997 => x"518fd13f", -998 => x"84150809", -999 => x"70810509", -1000 => x"060a0981", -1001 => x"06ff0509", -1002 => x"b50bf705", -1003 => x"06840105", -1004 => x"0504860b", -1005 => x"8c160c88", -1006 => x"15528816", -1007 => x"08518dd3", -1008 => x"3f81e9a0", -1009 => x"08700876", -1010 => x"0c548c15", -1011 => x"7054548a", -1012 => x"52730851", -1013 => x"8f923f73", -1014 => x"800c873d", -1015 => x"0d047508", -1016 => x"54b05373", -1017 => x"527551ab", -1018 => x"a33f7380", -1019 => x"0c873d0d", -1020 => x"04e13d0d", -1021 => x"b05196c2", -1022 => x"3f800881", -1023 => x"e9900cb0", -1024 => x"5196b73f", -1025 => x"800881e9", -1026 => x"a00c81e9", -1027 => x"90088008", -1028 => x"0c800b80", -1029 => x"0884050c", -1030 => x"820b8008", -1031 => x"88050ca8", -1032 => x"0b80088c", -1033 => x"050c9f53", -1034 => x"0b0b80fc", -1035 => x"88528008", -1036 => x"900551aa", -1037 => x"d73f993d", -1038 => x"5c9f530b", -1039 => x"0b80fca8", -1040 => x"527b51aa", -1041 => x"c73f8a0b", -1042 => x"81a7d80c", -1043 => x"0b0b8186", -1044 => x"cc51f5e3", -1045 => x"3f0b0b80", -1046 => x"fcc851f5", -1047 => x"da3f0b0b", -1048 => x"8186cc51", -1049 => x"f5d13f81", -1050 => x"8aec0809", -1051 => x"70810509", -1052 => x"060a8106", -1053 => x"ff05098a", -1054 => x"ef0bf705", -1055 => x"06840105", -1056 => x"05040b0b", -1057 => x"80fcf851", -1058 => x"f5ad3f0b", -1059 => x"0b8186cc", -1060 => x"51f5a43f", -1061 => x"818ae808", -1062 => x"520b0b80", -1063 => x"fda451f5", -1064 => x"963f8051", -1065 => x"80c5a13f", -1066 => x"8008819a", -1067 => x"f80c810b", -1068 => x"923d5c58", -1069 => x"800b818a", -1070 => x"e80825ff", -1071 => x"05098492", -1072 => x"0bf70506", -1073 => x"84010505", -1074 => x"048e3d5d", -1075 => x"80c10b81", -1076 => x"e9983481", -1077 => x"0b81eaf0", -1078 => x"0c80c20b", -1079 => x"81e99c34", -1080 => x"825e835a", -1081 => x"9f530b0b", -1082 => x"80fdd452", -1083 => x"7a51a99c", -1084 => x"3f815f80", -1085 => x"7b537c52", -1086 => x"558eba3f", -1087 => x"80080981", -1088 => x"05750509", -1089 => x"70810509", -1090 => x"060a0981", -1091 => x"06ff0509", -1092 => x"8b0bf705", -1093 => x"06840105", -1094 => x"05048155", -1095 => x"7481eaf0", -1096 => x"0c7d7057", -1097 => x"55748325", -1098 => x"ff0509b4", -1099 => x"0bf70506", -1100 => x"84010505", -1101 => x"04741010", -1102 => x"15fd0540", -1103 => x"a13dffbc", -1104 => x"05538352", -1105 => x"75518ca0", -1106 => x"3f811e70", -1107 => x"5f705755", -1108 => x"837524ff", -1109 => x"0509de0b", -1110 => x"f7050684", -1111 => x"01050504", -1112 => x"7f547453", -1113 => x"819afc52", -1114 => x"81e9a851", -1115 => x"8c863f81", -1116 => x"e9a00870", -1117 => x"085757b0", -1118 => x"53765275", -1119 => x"51a88d3f", -1120 => x"850b8c18", -1121 => x"0c850b8c", -1122 => x"170c7608", -1123 => x"760c81e9", -1124 => x"a0085574", -1125 => x"09708105", -1126 => x"09060a81", -1127 => x"06ff0509", -1128 => x"920bf705", -1129 => x"06840105", -1130 => x"05047408", -1131 => x"760c81e9", -1132 => x"a008558c", -1133 => x"155381e9", -1134 => x"9408528a", -1135 => x"518ba93f", -1136 => x"84160809", -1137 => x"70810509", -1138 => x"060a0981", -1139 => x"06ff0509", -1140 => x"889f0bf7", -1141 => x"05068401", -1142 => x"05050486", -1143 => x"0b8c170c", -1144 => x"88165288", -1145 => x"17085189", -1146 => x"aa3f81e9", -1147 => x"a0087008", -1148 => x"770c578c", -1149 => x"16705455", -1150 => x"8a527408", -1151 => x"518ae93f", -1152 => x"80c10b81", -1153 => x"e99c3356", -1154 => x"56757526", -1155 => x"ff050980", -1156 => x"cc0bf705", -1157 => x"06840105", -1158 => x"050480c3", -1159 => x"5275518b", -1160 => x"d33f8008", -1161 => x"0981057f", -1162 => x"05097081", -1163 => x"0509060a", -1164 => x"8106ff05", -1165 => x"0987f50b", -1166 => x"f7050684", -1167 => x"01050504", -1168 => x"81167081", -1169 => x"ff0681e9", -1170 => x"9c335257", -1171 => x"55747627", -1172 => x"ff0509c6", -1173 => x"0bf70506", -1174 => x"84010505", -1175 => x"04797e29", -1176 => x"60707235", -1177 => x"70417272", -1178 => x"31707011", -1179 => x"11111111", -1180 => x"11517231", -1181 => x"5e538a05", -1182 => x"81e99833", -1183 => x"81e99408", -1184 => x"5a525258", -1185 => x"55760981", -1186 => x"0580c105", -1187 => x"09708105", -1188 => x"09060a81", -1189 => x"06ff0509", -1190 => x"87c10bf7", -1191 => x"05068401", -1192 => x"05050478", -1193 => x"09708105", -1194 => x"09060a09", -1195 => x"8106ff05", -1196 => x"09d30bf7", -1197 => x"05068401", -1198 => x"05050481", -1199 => x"1858818a", -1200 => x"e8087825", -1201 => x"ff0509fc", -1202 => x"830bf705", -1203 => x"06840105", -1204 => x"05048051", -1205 => x"80c0f13f", -1206 => x"800881e9", -1207 => x"8c0c0b0b", -1208 => x"80fdf451", -1209 => x"f0d13f0b", -1210 => x"0b8186cc", -1211 => x"51f0c83f", -1212 => x"0b0b80fe", -1213 => x"8451f0bf", -1214 => x"3f0b0b81", -1215 => x"86cc51f0", -1216 => x"b63f81e9", -1217 => x"9408520b", -1218 => x"0b80febc", -1219 => x"51f0a83f", -1220 => x"85520b0b", -1221 => x"80fed851", -1222 => x"f09d3f81", -1223 => x"eaf00852", -1224 => x"0b0b80fe", -1225 => x"f451f08f", -1226 => x"3f81520b", -1227 => x"0b80fed8", -1228 => x"51f0843f", -1229 => x"81e99833", -1230 => x"520b0b80", -1231 => x"ff9051ef", -1232 => x"f63f80c1", -1233 => x"520b0b80", -1234 => x"ffac51ef", -1235 => x"ea3f81e9", -1236 => x"9c33520b", -1237 => x"0b80ffc8", -1238 => x"51efdc3f", -1239 => x"80c2520b", -1240 => x"0b80ffac", -1241 => x"51efd03f", -1242 => x"81e9c808", -1243 => x"520b0b80", -1244 => x"ffe451ef", -1245 => x"c23f8752", -1246 => x"0b0b80fe", -1247 => x"d851efb7", -1248 => x"3f81a7d8", -1249 => x"08520b0b", -1250 => x"81808051", -1251 => x"efa93f0b", -1252 => x"0b81809c", -1253 => x"51efa03f", -1254 => x"0b0b8180", -1255 => x"c851ef97", -1256 => x"3f81e9a0", -1257 => x"08700853", -1258 => x"560b0b81", -1259 => x"80d451ef", -1260 => x"863f0b0b", -1261 => x"8180f051", -1262 => x"eefd3f81", -1263 => x"e9a00884", -1264 => x"1108535d", -1265 => x"0b0b8181", -1266 => x"a451eeeb", -1267 => x"3f80520b", -1268 => x"0b80fed8", -1269 => x"51eee03f", -1270 => x"81e9a008", -1271 => x"88110853", -1272 => x"580b0b81", -1273 => x"81c051ee", -1274 => x"ce3f8252", -1275 => x"0b0b80fe", -1276 => x"d851eec3", -1277 => x"3f81e9a0", -1278 => x"088c1108", -1279 => x"53590b0b", -1280 => x"8181dc51", -1281 => x"eeb13f91", -1282 => x"520b0b80", -1283 => x"fed851ee", -1284 => x"a63f81e9", -1285 => x"a0089005", -1286 => x"520b0b81", -1287 => x"81f851ee", -1288 => x"963f0b0b", -1289 => x"81829451", -1290 => x"ee8d3f0b", -1291 => x"0b8182cc", -1292 => x"51ee843f", -1293 => x"81e99008", -1294 => x"70085357", -1295 => x"0b0b8180", -1296 => x"d451edf3", -1297 => x"3f0b0b81", -1298 => x"82e051ed", -1299 => x"ea3f81e9", -1300 => x"90088411", -1301 => x"0853550b", -1302 => x"0b8181a4", -1303 => x"51edd83f", -1304 => x"80520b0b", -1305 => x"80fed851", -1306 => x"edcd3f81", -1307 => x"e9900888", -1308 => x"11085356", -1309 => x"0b0b8181", -1310 => x"c051edbb", -1311 => x"3f81520b", -1312 => x"0b80fed8", -1313 => x"51edb03f", -1314 => x"81e99008", -1315 => x"8c110853", -1316 => x"5d0b0b81", -1317 => x"81dc51ed", -1318 => x"9e3f9252", -1319 => x"0b0b80fe", -1320 => x"d851ed93", -1321 => x"3f81e990", -1322 => x"08900552", -1323 => x"0b0b8181", -1324 => x"f851ed83", -1325 => x"3f0b0b81", -1326 => x"829451ec", -1327 => x"fa3f7d52", -1328 => x"0b0b8183", -1329 => x"a051ecef", -1330 => x"3f85520b", -1331 => x"0b80fed8", -1332 => x"51ece43f", -1333 => x"79520b0b", -1334 => x"8183bc51", -1335 => x"ecd93f8d", -1336 => x"520b0b80", -1337 => x"fed851ec", -1338 => x"ce3f7f52", -1339 => x"0b0b8183", -1340 => x"d851ecc3", -1341 => x"3f87520b", -1342 => x"0b80fed8", -1343 => x"51ecb83f", -1344 => x"7e520b0b", -1345 => x"8183f451", -1346 => x"ecad3f81", -1347 => x"520b0b80", -1348 => x"fed851ec", -1349 => x"a23f7b52", -1350 => x"0b0b8184", -1351 => x"9051ec97", -1352 => x"3f0b0b81", -1353 => x"84ac51ec", -1354 => x"8e3f7a52", -1355 => x"0b0b8184", -1356 => x"e451ec83", -1357 => x"3f0b0b81", -1358 => x"858051eb", -1359 => x"fa3f0b0b", -1360 => x"8186cc51", -1361 => x"ebf13f81", -1362 => x"e98c0881", -1363 => x"9af80831", -1364 => x"70819af4", -1365 => x"0c520b0b", -1366 => x"8185b851", -1367 => x"ebd93f81", -1368 => x"9af40856", -1369 => x"817625ff", -1370 => x"0509819d", -1371 => x"0bf70506", -1372 => x"84010505", -1373 => x"04818ae8", -1374 => x"087077bd", -1375 => x"84c0290b", -1376 => x"35819aec", -1377 => x"0c767135", -1378 => x"819af00c", -1379 => x"768ddd29", -1380 => x"7187e829", -1381 => x"0b3581e9", -1382 => x"a40c5b0b", -1383 => x"0b8185c8", -1384 => x"51eb943f", -1385 => x"819aec08", -1386 => x"520b0b81", -1387 => x"85f851eb", -1388 => x"863f0b0b", -1389 => x"81868051", -1390 => x"eafd3f81", -1391 => x"9af00852", -1392 => x"0b0b8185", -1393 => x"f851eaef", -1394 => x"3f81e9a4", -1395 => x"08520b0b", -1396 => x"8186b051", -1397 => x"eae13f0b", -1398 => x"0b8186cc", -1399 => x"51ead83f", -1400 => x"800b800c", -1401 => x"a13d0d04", -1402 => x"0b0b8186", -1403 => x"d051f598", -1404 => x"39760856", -1405 => x"b0537552", -1406 => x"76519f90", -1407 => x"3f80c10b", -1408 => x"81e99c33", -1409 => x"5656f881", -1410 => x"390b0b81", -1411 => x"878051ea", -1412 => x"a63f0b0b", -1413 => x"8187b851", -1414 => x"ea9d3f0b", -1415 => x"0b8186cc", -1416 => x"51ea943f", -1417 => x"800b800c", -1418 => x"a13d0d04", -1419 => x"a13dffb8", -1420 => x"05528051", -1421 => x"80dd3f9f", -1422 => x"530b0b81", -1423 => x"87d8527a", -1424 => x"519ec93f", -1425 => x"777881e9", -1426 => x"940c8117", -1427 => x"7081ff06", -1428 => x"81e99c33", -1429 => x"5258565a", -1430 => x"f7f339ff", -1431 => x"15707731", -1432 => x"7e0c5980", -1433 => x"0b811959", -1434 => x"59818ae8", -1435 => x"087825ff", -1436 => x"0509f4d8", -1437 => x"0bf70506", -1438 => x"84010505", -1439 => x"04f8d339", -1440 => x"70707382", -1441 => x"32703070", -1442 => x"72078025", -1443 => x"800c5252", -1444 => x"50500470", -1445 => x"70707476", -1446 => x"71535452", -1447 => x"71098105", -1448 => x"82050970", -1449 => x"81050906", -1450 => x"0a8106ff", -1451 => x"05098b0b", -1452 => x"f7050684", -1453 => x"01050504", -1454 => x"83517109", -1455 => x"81058105", -1456 => x"09708105", -1457 => x"09060a81", -1458 => x"06ff0509", -1459 => x"80dd0bf7", -1460 => x"05068401", -1461 => x"05050481", -1462 => x"7226ff05", -1463 => x"0980e10b", -1464 => x"f7050684", -1465 => x"01050504", -1466 => x"71098105", -1467 => x"82050970", -1468 => x"81050906", -1469 => x"0a8106ff", -1470 => x"050980e2", -1471 => x"0bf70506", -1472 => x"84010505", -1473 => x"04710981", -1474 => x"05840509", -1475 => x"70810509", -1476 => x"060a8106", -1477 => x"ff0509bc", -1478 => x"0bf70506", -1479 => x"84010505", -1480 => x"0470730c", -1481 => x"70800c50", -1482 => x"50500480", -1483 => x"e40b81e9", -1484 => x"940825ff", -1485 => x"0509930b", -1486 => x"f7050684", -1487 => x"01050504", -1488 => x"80730c70", -1489 => x"800c5050", -1490 => x"50048373", -1491 => x"0c70800c", -1492 => x"50505004", -1493 => x"82730c70", -1494 => x"800c5050", -1495 => x"50048173", -1496 => x"0c70800c", -1497 => x"50505004", -1498 => x"70747414", -1499 => x"8205710c", -1500 => x"800c5004", -1501 => x"f73d0d7b", -1502 => x"7d7f6185", -1503 => x"1270822b", -1504 => x"75117074", -1505 => x"71708405", -1506 => x"530c5a5a", -1507 => x"5d5b760c", -1508 => x"7980f818", -1509 => x"0c798612", -1510 => x"5257585a", -1511 => x"5a767624", -1512 => x"ff0509ac", -1513 => x"0bf70506", -1514 => x"84010505", -1515 => x"0476b329", -1516 => x"822b7911", -1517 => x"51537673", -1518 => x"70840555", -1519 => x"0c811454", -1520 => x"757425ff", -1521 => x"0509ef0b", -1522 => x"f7050684", -1523 => x"01050504", -1524 => x"7681cc29", -1525 => x"19fc1108", -1526 => x"8105fc12", -1527 => x"0c7a1970", -1528 => x"089fa013", -1529 => x"0c585685", -1530 => x"0b81e994", -1531 => x"0c75800c", -1532 => x"8b3d0d04", -1533 => x"70707002", -1534 => x"93053351", -1535 => x"80028405", -1536 => x"97053354", -1537 => x"52700981", -1538 => x"05730509", -1539 => x"70810509", -1540 => x"060a8106", -1541 => x"ff050990", -1542 => x"0bf70506", -1543 => x"84010505", -1544 => x"0471800c", -1545 => x"50505004", -1546 => x"7081e998", -1547 => x"34810b80", -1548 => x"0c505050", -1549 => x"04f83d0d", -1550 => x"7a7c5956", -1551 => x"820b8319", -1552 => x"55557416", -1553 => x"70337533", -1554 => x"5b515372", -1555 => x"09810579", -1556 => x"05097081", -1557 => x"0509060a", -1558 => x"8106ff05", -1559 => x"0981860b", -1560 => x"f7050684", -1561 => x"01050504", -1562 => x"80c10b81", -1563 => x"16811656", -1564 => x"56578275", -1565 => x"25ff0509", -1566 => x"c90bf705", -1567 => x"06840105", -1568 => x"0504ffa9", -1569 => x"177081ff", -1570 => x"06555973", -1571 => x"8226ff05", -1572 => x"098b0bf7", -1573 => x"05068401", -1574 => x"05050487", -1575 => x"55815376", -1576 => x"09810580", -1577 => x"d2050970", -1578 => x"81050906", -1579 => x"0a8106ff", -1580 => x"0509ab0b", -1581 => x"f7050684", -1582 => x"01050504", -1583 => x"77527551", -1584 => x"9cb43f80", -1585 => x"53728008", -1586 => x"25ff0509", -1587 => x"910bf705", -1588 => x"06840105", -1589 => x"05048715", -1590 => x"81e9940c", -1591 => x"81537280", -1592 => x"0c8a3d0d", -1593 => x"047281e9", -1594 => x"98348275", -1595 => x"25ff0509", -1596 => x"fed00bf7", -1597 => x"05068401", -1598 => x"050504ff", -1599 => x"8539f93d", -1600 => x"0d797b7d", -1601 => x"54587259", -1602 => x"77307970", -1603 => x"30707207", -1604 => x"9f2a7371", -1605 => x"315a5259", -1606 => x"77795673", -1607 => x"0c537384", -1608 => x"130c5480", -1609 => x"0c893d0d", -1610 => x"04f93d0d", -1611 => x"797b7d7f", -1612 => x"56545254", -1613 => x"72097081", -1614 => x"0509060a", -1615 => x"8106ff05", -1616 => x"09b30bf7", -1617 => x"05068401", -1618 => x"05050470", -1619 => x"577158a0", -1620 => x"73315280", -1621 => x"7225ff05", -1622 => x"09a90bf7", -1623 => x"05068401", -1624 => x"05050477", -1625 => x"70742b57", -1626 => x"70732a78", -1627 => x"752b0756", -1628 => x"51747653", -1629 => x"5170740c", -1630 => x"7184150c", -1631 => x"73800c89", -1632 => x"3d0d0480", -1633 => x"56777230", -1634 => x"0b2b5574", -1635 => x"765351e5", -1636 => x"39fb3d0d", -1637 => x"77795555", -1638 => x"80567575", -1639 => x"24ff0509", -1640 => x"80d00bf7", -1641 => x"05068401", -1642 => x"05050480", -1643 => x"7424ff05", -1644 => x"09b70bf7", -1645 => x"05068401", -1646 => x"05050480", -1647 => x"53735274", -1648 => x"51819c3f", -1649 => x"80085475", -1650 => x"09708105", -1651 => x"09060a81", -1652 => x"06ff0509", -1653 => x"8d0bf705", -1654 => x"06840105", -1655 => x"05048008", -1656 => x"30547380", -1657 => x"0c873d0d", -1658 => x"04733076", -1659 => x"81325754", -1660 => x"ca397430", -1661 => x"55815673", -1662 => x"8025ff05", -1663 => x"09ffbc0b", -1664 => x"f7050684", -1665 => x"01050504", -1666 => x"e039fa3d", -1667 => x"0d787a57", -1668 => x"55805776", -1669 => x"7524ff05", -1670 => x"09be0bf7", -1671 => x"05068401", -1672 => x"05050475", -1673 => x"9f2c5481", -1674 => x"53757432", -1675 => x"74315274", -1676 => x"51ad3f80", -1677 => x"08547609", -1678 => x"70810509", -1679 => x"060a8106", -1680 => x"ff05098d", -1681 => x"0bf70506", -1682 => x"84010505", -1683 => x"04800830", -1684 => x"5473800c", -1685 => x"883d0d04", -1686 => x"74305581", -1687 => x"57c539fc", -1688 => x"3d0d7678", -1689 => x"53548153", -1690 => x"80747326", -1691 => x"52557209", -1692 => x"70810509", -1693 => x"060a8106", -1694 => x"ff050980", -1695 => x"d50bf705", -1696 => x"06840105", -1697 => x"05047009", -1698 => x"70810509", -1699 => x"060a8106", -1700 => x"ff050980", -1701 => x"ea0bf705", -1702 => x"06840105", -1703 => x"05048072", -1704 => x"24ff0509", -1705 => x"80d90bf7", -1706 => x"05068401", -1707 => x"05050471", -1708 => x"10731075", -1709 => x"72265354", -1710 => x"52720970", -1711 => x"81050906", -1712 => x"0a098106", -1713 => x"ff0509ff", -1714 => x"bd0bf705", -1715 => x"06840105", -1716 => x"05047351", -1717 => x"78097081", -1718 => x"0509060a", -1719 => x"098106ff", -1720 => x"05098b0b", -1721 => x"f7050684", -1722 => x"01050504", -1723 => x"74517080", -1724 => x"0c863d0d", -1725 => x"04720a10", -1726 => x"0a720a10", -1727 => x"0a535372", -1728 => x"09708105", -1729 => x"09060a81", -1730 => x"06ff0509", -1731 => x"c50bf705", -1732 => x"06840105", -1733 => x"05047174", -1734 => x"26ff0509", -1735 => x"d80bf705", -1736 => x"06840105", -1737 => x"05047372", -1738 => x"31757407", -1739 => x"740a100a", -1740 => x"740a100a", -1741 => x"55555654", -1742 => x"c6397070", -1743 => x"73528193", -1744 => x"b4085193", -1745 => x"3f505004", -1746 => x"70707352", -1747 => x"8193b408", -1748 => x"519bc43f", -1749 => x"505004f4", -1750 => x"3d0d7e60", -1751 => x"8b1170f8", -1752 => x"065b5555", -1753 => x"5d729626", -1754 => x"ff05098b", -1755 => x"0bf70506", -1756 => x"84010505", -1757 => x"04905880", -1758 => x"78247479", -1759 => x"26075580", -1760 => x"54740981", -1761 => x"05740509", -1762 => x"70810509", -1763 => x"060a0981", -1764 => x"06ff0509", -1765 => x"80f40bf7", -1766 => x"05068401", -1767 => x"0505047c", -1768 => x"5195f13f", -1769 => x"7783f726", -1770 => x"ff050980", -1771 => x"e40bf705", -1772 => x"06840105", -1773 => x"05047783", -1774 => x"2a701010", -1775 => x"10818bac", -1776 => x"058c1108", -1777 => x"58585475", -1778 => x"09810577", -1779 => x"05097081", -1780 => x"0509060a", -1781 => x"8106ff05", -1782 => x"0983b60b", -1783 => x"f7050684", -1784 => x"01050504", -1785 => x"841608fc", -1786 => x"068c1708", -1787 => x"88180871", -1788 => x"8c120c88", -1789 => x"120c5b76", -1790 => x"05841108", -1791 => x"81078412", -1792 => x"0c537c51", -1793 => x"958f3f88", -1794 => x"16547380", -1795 => x"0c8e3d0d", -1796 => x"0477892a", -1797 => x"78832a58", -1798 => x"54730970", -1799 => x"81050906", -1800 => x"0a8106ff", -1801 => x"05098180", -1802 => x"0bf70506", -1803 => x"84010505", -1804 => x"0477862a", -1805 => x"b8055784", -1806 => x"7427ff05", -1807 => x"0980e90b", -1808 => x"f7050684", -1809 => x"01050504", -1810 => x"80db1457", -1811 => x"947427ff", -1812 => x"050980d4", -1813 => x"0bf70506", -1814 => x"84010505", -1815 => x"04778c2a", -1816 => x"80ee0557", -1817 => x"80d47427", -1818 => x"ff0509bc", -1819 => x"0bf70506", -1820 => x"84010505", -1821 => x"04778f2a", -1822 => x"80f70557", -1823 => x"82d47427", -1824 => x"ff0509a4", -1825 => x"0bf70506", -1826 => x"84010505", -1827 => x"0477922a", -1828 => x"80fc0557", -1829 => x"8ad47427", -1830 => x"ff05098c", -1831 => x"0bf70506", -1832 => x"84010505", -1833 => x"0480fe57", -1834 => x"76101010", -1835 => x"818bac05", -1836 => x"8c110856", -1837 => x"53740981", -1838 => x"05730509", -1839 => x"70810509", -1840 => x"060a8106", -1841 => x"ff050980", -1842 => x"d70bf705", -1843 => x"06840105", -1844 => x"05048415", -1845 => x"08fc0670", -1846 => x"79315556", -1847 => x"738f24ff", -1848 => x"05098fb7", -1849 => x"0bf70506", -1850 => x"84010505", -1851 => x"04738025", -1852 => x"ff05098f", -1853 => x"ae0bf705", -1854 => x"06840105", -1855 => x"05048c15", -1856 => x"08557409", -1857 => x"81057305", -1858 => x"09708105", -1859 => x"09060a09", -1860 => x"8106ff05", -1861 => x"09ffbb0b", -1862 => x"f7050684", -1863 => x"01050504", -1864 => x"81175981", -1865 => x"8bbc0856", -1866 => x"75098105", -1867 => x"818bb405", -1868 => x"09708105", -1869 => x"09060a81", -1870 => x"06ff0509", -1871 => x"84ce0bf7", -1872 => x"05068401", -1873 => x"05050484", -1874 => x"1608fc06", -1875 => x"70793155", -1876 => x"55738f24", -1877 => x"ff050980", -1878 => x"e30bf705", -1879 => x"06840105", -1880 => x"0504818b", -1881 => x"b40b818b", -1882 => x"c00c818b", -1883 => x"b40b818b", -1884 => x"bc0c8074", -1885 => x"24ff0509", -1886 => x"80f80bf7", -1887 => x"05068401", -1888 => x"05050474", -1889 => x"16841108", -1890 => x"81078412", -1891 => x"0c53fcf2", -1892 => x"3988168c", -1893 => x"11085759", -1894 => x"75098105", -1895 => x"79050970", -1896 => x"81050906", -1897 => x"0a098106", -1898 => x"ff0509fc", -1899 => x"b70bf705", -1900 => x"06840105", -1901 => x"05048214", -1902 => x"59fee839", -1903 => x"77167881", -1904 => x"0784180c", -1905 => x"70818bc0", -1906 => x"0c70818b", -1907 => x"bc0c818b", -1908 => x"b40b8c12", -1909 => x"0c8c1108", -1910 => x"88120c74", -1911 => x"81078412", -1912 => x"0c740574", -1913 => x"710c5b7c", -1914 => x"5191aa3f", -1915 => x"881654fc", -1916 => x"993983ff", -1917 => x"7527ff05", -1918 => x"0985ff0b", -1919 => x"f7050684", -1920 => x"01050504", -1921 => x"74892a75", -1922 => x"832a5454", -1923 => x"73097081", -1924 => x"0509060a", -1925 => x"8106ff05", -1926 => x"0981800b", -1927 => x"f7050684", -1928 => x"01050504", -1929 => x"74862ab8", -1930 => x"05538474", -1931 => x"27ff0509", -1932 => x"80e90bf7", -1933 => x"05068401", -1934 => x"05050480", -1935 => x"db145394", -1936 => x"7427ff05", -1937 => x"0980d40b", -1938 => x"f7050684", -1939 => x"01050504", -1940 => x"748c2a80", -1941 => x"ee055380", -1942 => x"d47427ff", -1943 => x"0509bc0b", -1944 => x"f7050684", -1945 => x"01050504", -1946 => x"748f2a80", -1947 => x"f7055382", -1948 => x"d47427ff", -1949 => x"0509a40b", -1950 => x"f7050684", -1951 => x"01050504", -1952 => x"74922a80", -1953 => x"fc05538a", -1954 => x"d47427ff", -1955 => x"05098c0b", -1956 => x"f7050684", -1957 => x"01050504", -1958 => x"80fe5372", -1959 => x"10101081", -1960 => x"8bac0588", -1961 => x"11085557", -1962 => x"73098105", -1963 => x"77050970", -1964 => x"81050906", -1965 => x"0a8106ff", -1966 => x"05098aec", -1967 => x"0bf70506", -1968 => x"84010505", -1969 => x"04841408", -1970 => x"fc065b74", -1971 => x"7b27ff05", -1972 => x"09aa0bf7", -1973 => x"05068401", -1974 => x"05050488", -1975 => x"14085473", -1976 => x"09810577", -1977 => x"05097081", -1978 => x"0509060a", -1979 => x"098106ff", -1980 => x"0509d20b", -1981 => x"f7050684", -1982 => x"01050504", -1983 => x"8c140881", -1984 => x"8bac0b84", -1985 => x"0508718c", -1986 => x"190c7588", -1987 => x"190c7788", -1988 => x"130c5c57", -1989 => x"758c150c", -1990 => x"78538079", -1991 => x"24ff0509", -1992 => x"86860bf7", -1993 => x"05068401", -1994 => x"05050472", -1995 => x"822c8171", -1996 => x"2b565674", -1997 => x"7b26ff05", -1998 => x"0981a80b", -1999 => x"f7050684", -2000 => x"01050504", -2001 => x"7a750657", -2002 => x"76097081", -2003 => x"0509060a", -2004 => x"098106ff", -2005 => x"050983ee", -2006 => x"0bf70506", -2007 => x"84010505", -2008 => x"0478fc06", -2009 => x"84055974", -2010 => x"10707c06", -2011 => x"55557309", -2012 => x"70810509", -2013 => x"060a0981", -2014 => x"06ff0509", -2015 => x"83c80bf7", -2016 => x"05068401", -2017 => x"05050484", -2018 => x"1959dc39", -2019 => x"818bac0b", -2020 => x"84050879", -2021 => x"545b7880", -2022 => x"25ff0509", -2023 => x"ff8d0bf7", -2024 => x"05068401", -2025 => x"05050484", -2026 => x"ff397409", -2027 => x"7b067081", -2028 => x"8bac0b84", -2029 => x"050c5b74", -2030 => x"1055747b", -2031 => x"26ff0509", -2032 => x"a20bf705", -2033 => x"06840105", -2034 => x"05047409", -2035 => x"70810509", -2036 => x"060a0981", -2037 => x"06ff0509", -2038 => x"899c0bf7", -2039 => x"05068401", -2040 => x"05050481", -2041 => x"8bac0b88", -2042 => x"05087084", -2043 => x"1208fc06", -2044 => x"707b317b", -2045 => x"72268f72", -2046 => x"25075d57", -2047 => x"5c5c5578", -2048 => x"09708105", -2049 => x"09060a81", -2050 => x"06ff0509", -2051 => x"81c60bf7", -2052 => x"05068401", -2053 => x"05050479", -2054 => x"15818ba4", -2055 => x"08199011", -2056 => x"59545681", -2057 => x"8ba00809", -2058 => x"8105ff05", -2059 => x"09708105", -2060 => x"09060a81", -2061 => x"06ff0509", -2062 => x"900bf705", -2063 => x"06840105", -2064 => x"0504a08f", -2065 => x"13e08006", -2066 => x"5776527c", -2067 => x"518cc73f", -2068 => x"80085480", -2069 => x"08098105", -2070 => x"ff050970", -2071 => x"81050906", -2072 => x"0a8106ff", -2073 => x"0509ba0b", -2074 => x"f7050684", -2075 => x"01050504", -2076 => x"80087627", -2077 => x"ff050983", -2078 => x"e90bf705", -2079 => x"06840105", -2080 => x"05047409", -2081 => x"8105818b", -2082 => x"ac050970", -2083 => x"81050906", -2084 => x"0a8106ff", -2085 => x"050983ca", -2086 => x"0bf70506", -2087 => x"84010505", -2088 => x"04818bac", -2089 => x"0b880508", -2090 => x"55841508", -2091 => x"fc067079", -2092 => x"31797226", -2093 => x"8f722507", -2094 => x"5d555a7a", -2095 => x"09708105", -2096 => x"09060a09", -2097 => x"8106ff05", -2098 => x"0986d00b", -2099 => x"f7050684", -2100 => x"01050504", -2101 => x"77810784", -2102 => x"160c7715", -2103 => x"70818bac", -2104 => x"0b88050c", -2105 => x"74810784", -2106 => x"120c567c", -2107 => x"518ba63f", -2108 => x"88155473", -2109 => x"800c8e3d", -2110 => x"0d047483", -2111 => x"2a705454", -2112 => x"807424ff", -2113 => x"050982a6", -2114 => x"0bf70506", -2115 => x"84010505", -2116 => x"0472822c", -2117 => x"81712b81", -2118 => x"8bb00807", -2119 => x"70818bac", -2120 => x"0b84050c", -2121 => x"75101010", -2122 => x"818bac05", -2123 => x"88110871", -2124 => x"8c1b0c70", -2125 => x"881b0c79", -2126 => x"88130c57", -2127 => x"555c5575", -2128 => x"8c150cfb", -2129 => x"d3397879", -2130 => x"10101081", -2131 => x"8bac0570", -2132 => x"565b5c8c", -2133 => x"14085675", -2134 => x"09810574", -2135 => x"05097081", -2136 => x"0509060a", -2137 => x"8106ff05", -2138 => x"0980d70b", -2139 => x"f7050684", -2140 => x"01050504", -2141 => x"841608fc", -2142 => x"06707931", -2143 => x"5853768f", -2144 => x"24ff0509", -2145 => x"86c10bf7", -2146 => x"05068401", -2147 => x"05050476", -2148 => x"8025ff05", -2149 => x"0986f40b", -2150 => x"f7050684", -2151 => x"01050504", -2152 => x"8c160856", -2153 => x"75098105", -2154 => x"74050970", -2155 => x"81050906", -2156 => x"0a098106", -2157 => x"ff0509ff", -2158 => x"bb0bf705", -2159 => x"06840105", -2160 => x"05048814", -2161 => x"811a7083", -2162 => x"06555a54", -2163 => x"72097081", -2164 => x"0509060a", -2165 => x"098106ff", -2166 => x"0509fef7", -2167 => x"0bf70506", -2168 => x"84010505", -2169 => x"047b8306", -2170 => x"56750970", -2171 => x"81050906", -2172 => x"0a8106ff", -2173 => x"0509fbb2", -2174 => x"0bf70506", -2175 => x"84010505", -2176 => x"04ff1cf8", -2177 => x"1b5b5c88", -2178 => x"1a080981", -2179 => x"057a0509", -2180 => x"70810509", -2181 => x"060a8106", -2182 => x"ff0509c9", -2183 => x"0bf70506", -2184 => x"84010505", -2185 => x"04fb9039", -2186 => x"831953f9", -2187 => x"fe398314", -2188 => x"70822c81", -2189 => x"712b818b", -2190 => x"b0080770", -2191 => x"818bac0b", -2192 => x"84050c76", -2193 => x"10101081", -2194 => x"8bac0588", -2195 => x"1108718c", -2196 => x"1c0c7088", -2197 => x"1c0c7a88", -2198 => x"130c5853", -2199 => x"5d5653fd", -2200 => x"de39818a", -2201 => x"f0081759", -2202 => x"80080981", -2203 => x"05760509", -2204 => x"70810509", -2205 => x"060a8106", -2206 => x"ff050982", -2207 => x"870bf705", -2208 => x"06840105", -2209 => x"0504818b", -2210 => x"a0080981", -2211 => x"05ff0509", -2212 => x"70810509", -2213 => x"060a8106", -2214 => x"ff050985", -2215 => x"db0bf705", -2216 => x"06840105", -2217 => x"05047376", -2218 => x"3119818a", -2219 => x"f00c7387", -2220 => x"06705653", -2221 => x"72097081", -2222 => x"0509060a", -2223 => x"8106ff05", -2224 => x"09900bf7", -2225 => x"05068401", -2226 => x"05050488", -2227 => x"73317015", -2228 => x"55557614", -2229 => x"9fff06a0", -2230 => x"80713116", -2231 => x"70547e53", -2232 => x"515387b2", -2233 => x"3f800856", -2234 => x"80080981", -2235 => x"05ff0509", -2236 => x"70810509", -2237 => x"060a8106", -2238 => x"ff050982", -2239 => x"970bf705", -2240 => x"06840105", -2241 => x"0504818a", -2242 => x"f0081370", -2243 => x"818af00c", -2244 => x"7475818b", -2245 => x"ac0b8805", -2246 => x"0c777631", -2247 => x"15810755", -2248 => x"56597a09", -2249 => x"8105818b", -2250 => x"ac050970", -2251 => x"81050906", -2252 => x"0a8106ff", -2253 => x"050984cd", -2254 => x"0bf70506", -2255 => x"84010505", -2256 => x"04798f26", -2257 => x"ff050983", -2258 => x"e60bf705", -2259 => x"06840105", -2260 => x"0504810b", -2261 => x"84150c84", -2262 => x"1508fc06", -2263 => x"70793179", -2264 => x"72268f72", -2265 => x"25075d55", -2266 => x"5a7a0970", -2267 => x"81050906", -2268 => x"0a8106ff", -2269 => x"0509fadc", -2270 => x"0bf70506", -2271 => x"84010505", -2272 => x"04819839", -2273 => x"80089fff", -2274 => x"06557409", -2275 => x"70810509", -2276 => x"060a0981", -2277 => x"06ff0509", -2278 => x"fdec0bf7", -2279 => x"05068401", -2280 => x"05050478", -2281 => x"818af00c", -2282 => x"818bac0b", -2283 => x"8805087a", -2284 => x"18810784", -2285 => x"120c5581", -2286 => x"8b9c0879", -2287 => x"27ff0509", -2288 => x"8e0bf705", -2289 => x"06840105", -2290 => x"05047881", -2291 => x"8b9c0c81", -2292 => x"8b980879", -2293 => x"27ff0509", -2294 => x"f9cf0bf7", -2295 => x"05068401", -2296 => x"05050478", -2297 => x"818b980c", -2298 => x"841508fc", -2299 => x"06707931", -2300 => x"7972268f", -2301 => x"7225075d", -2302 => x"555a7a09", -2303 => x"70810509", -2304 => x"060a8106", -2305 => x"ff0509f9", -2306 => x"cb0bf705", -2307 => x"06840105", -2308 => x"05048839", -2309 => x"80745753", -2310 => x"fdec397c", -2311 => x"5184f63f", -2312 => x"800b800c", -2313 => x"8e3d0d04", -2314 => x"807324ff", -2315 => x"0509ad0b", -2316 => x"f7050684", -2317 => x"01050504", -2318 => x"72822c81", -2319 => x"712b818b", -2320 => x"b0080770", -2321 => x"818bac0b", -2322 => x"84050c5c", -2323 => x"5a768c17", -2324 => x"0c738817", -2325 => x"0c758818", -2326 => x"0cf5b939", -2327 => x"83137082", -2328 => x"2c81712b", -2329 => x"818bb008", -2330 => x"0770818b", -2331 => x"ac0b8405", -2332 => x"0c5d5b53", -2333 => x"d8397a75", -2334 => x"065c7b09", -2335 => x"70810509", -2336 => x"060a0981", -2337 => x"06ff0509", -2338 => x"f9bc0bf7", -2339 => x"05068401", -2340 => x"05050484", -2341 => x"19751056", -2342 => x"59dc39ff", -2343 => x"17810559", -2344 => x"f181398c", -2345 => x"15088816", -2346 => x"08718c12", -2347 => x"0c88120c", -2348 => x"59751584", -2349 => x"11088107", -2350 => x"84120c58", -2351 => x"7c5183d5", -2352 => x"3f881554", -2353 => x"f8ad3977", -2354 => x"16788107", -2355 => x"84180c8c", -2356 => x"17088818", -2357 => x"08718c12", -2358 => x"0c88120c", -2359 => x"5c70818b", -2360 => x"c00c7081", -2361 => x"8bbc0c81", -2362 => x"8bb40b8c", -2363 => x"120c8c11", -2364 => x"0888120c", -2365 => x"77810784", -2366 => x"120c7705", -2367 => x"77710c55", -2368 => x"7c518391", -2369 => x"3f881654", -2370 => x"ee803972", -2371 => x"16841108", -2372 => x"81078412", -2373 => x"0c588c16", -2374 => x"08881708", -2375 => x"718c120c", -2376 => x"88120c57", -2377 => x"7c5182ed", -2378 => x"3f881654", -2379 => x"eddc3972", -2380 => x"84150cf4", -2381 => x"1af80670", -2382 => x"841d0881", -2383 => x"0607841d", -2384 => x"0c701c55", -2385 => x"56850b84", -2386 => x"150c850b", -2387 => x"88150c8f", -2388 => x"7627ff05", -2389 => x"09fce00b", -2390 => x"f7050684", -2391 => x"01050504", -2392 => x"881b527c", -2393 => x"5187b03f", -2394 => x"818bac0b", -2395 => x"88050881", -2396 => x"8af0085a", -2397 => x"55fcc039", -2398 => x"78818af0", -2399 => x"0c73818b", -2400 => x"a00cfaaa", -2401 => x"39728415", -2402 => x"0cfcac39", -2403 => x"fb3d0d77", -2404 => x"707a7c58", -2405 => x"5553568f", -2406 => x"7527ff05", -2407 => x"0981a40b", -2408 => x"f7050684", -2409 => x"01050504", -2410 => x"72760783", -2411 => x"06517009", -2412 => x"70810509", -2413 => x"060a0981", -2414 => x"06ff0509", -2415 => x"81850bf7", -2416 => x"05068401", -2417 => x"05050475", -2418 => x"73525470", -2419 => x"70840552", -2420 => x"08747084", -2421 => x"05560c73", -2422 => x"71708405", -2423 => x"53087170", -2424 => x"8405530c", -2425 => x"71708405", -2426 => x"53087170", -2427 => x"8405530c", -2428 => x"71708405", -2429 => x"53087170", -2430 => x"8405530c", -2431 => x"f0165654", -2432 => x"748f26ff", -2433 => x"0509c40b", -2434 => x"f7050684", -2435 => x"01050504", -2436 => x"837527ff", -2437 => x"0509a80b", -2438 => x"f7050684", -2439 => x"01050504", -2440 => x"70708405", -2441 => x"52087470", -2442 => x"8405560c", -2443 => x"fc155574", -2444 => x"8326ff05", -2445 => x"09ea0bf7", -2446 => x"05068401", -2447 => x"05050473", -2448 => x"715452ff", -2449 => x"15517009", -2450 => x"8105ff05", -2451 => x"09708105", -2452 => x"09060a81", -2453 => x"06ff0509", -2454 => x"b40bf705", -2455 => x"06840105", -2456 => x"05047270", -2457 => x"81055472", -2458 => x"70810554", -2459 => x"3bff1151", -2460 => x"70098105", -2461 => x"ff050970", -2462 => x"81050906", -2463 => x"0a098106", -2464 => x"ff0509de", -2465 => x"0bf70506", -2466 => x"84010505", -2467 => x"0475800c", -2468 => x"873d0d04", -2469 => x"04047070", -2470 => x"7070800b", -2471 => x"81eaf40c", -2472 => x"76518cc1", -2473 => x"3f800853", -2474 => x"80080981", -2475 => x"05ff0509", -2476 => x"70810509", -2477 => x"060a8106", -2478 => x"ff050991", -2479 => x"0bf70506", -2480 => x"84010505", -2481 => x"0472800c", -2482 => x"50505050", -2483 => x"0481eaf4", -2484 => x"08547309", -2485 => x"70810509", -2486 => x"060a8106", -2487 => x"ff0509e5", -2488 => x"0bf70506", -2489 => x"84010505", -2490 => x"04757471", -2491 => x"0c527280", -2492 => x"0c505050", -2493 => x"5004fb3d", -2494 => x"0d777970", -2495 => x"72078306", -2496 => x"53545270", -2497 => x"09708105", -2498 => x"09060a09", -2499 => x"8106ff05", -2500 => x"09b20bf7", -2501 => x"05068401", -2502 => x"05050471", -2503 => x"73730854", -2504 => x"56547109", -2505 => x"81057308", -2506 => x"05097081", -2507 => x"0509060a", -2508 => x"8106ff05", -2509 => x"0981890b", -2510 => x"f7050684", -2511 => x"01050504", -2512 => x"73755452", -2513 => x"71337081", -2514 => x"ff065254", -2515 => x"70097081", -2516 => x"0509060a", -2517 => x"8106ff05", -2518 => x"0980cf0b", -2519 => x"f7050684", -2520 => x"01050504", -2521 => x"72335570", -2522 => x"09810575", -2523 => x"05097081", -2524 => x"0509060a", -2525 => x"098106ff", -2526 => x"0509b20b", -2527 => x"f7050684", -2528 => x"01050504", -2529 => x"81128114", -2530 => x"71337081", -2531 => x"ff065456", -2532 => x"54527009", -2533 => x"70810509", -2534 => x"060a0981", -2535 => x"06ff0509", -2536 => x"c30bf705", -2537 => x"06840105", -2538 => x"05047233", -2539 => x"557381ff", -2540 => x"067581ff", -2541 => x"06717131", -2542 => x"800c5552", -2543 => x"873d0d04", -2544 => x"7109f7fb", -2545 => x"fdff1306", -2546 => x"f8848281", -2547 => x"80065271", -2548 => x"09708105", -2549 => x"09060a09", -2550 => x"8106ff05", -2551 => x"09b70bf7", -2552 => x"05068401", -2553 => x"05050484", -2554 => x"14841671", -2555 => x"08545654", -2556 => x"71098105", -2557 => x"75080509", -2558 => x"70810509", -2559 => x"060a8106", -2560 => x"ff0509ff", -2561 => x"bb0bf705", -2562 => x"06840105", -2563 => x"05047375", -2564 => x"5452feb0", -2565 => x"39800b80", -2566 => x"0c873d0d", -2567 => x"04fb3d0d", -2568 => x"77705256", -2569 => x"fcee3f81", -2570 => x"8bac0b88", -2571 => x"05088411", -2572 => x"08fc0670", -2573 => x"7b319fef", -2574 => x"05e08006", -2575 => x"e0800552", -2576 => x"5555a080", -2577 => x"7524ff05", -2578 => x"09b30bf7", -2579 => x"05068401", -2580 => x"05050480", -2581 => x"527551fc", -2582 => x"bd3f818b", -2583 => x"b4081453", -2584 => x"72098105", -2585 => x"80080509", -2586 => x"70810509", -2587 => x"060a8106", -2588 => x"ff050997", -2589 => x"0bf70506", -2590 => x"84010505", -2591 => x"047551fc", -2592 => x"943f8053", -2593 => x"72800c87", -2594 => x"3d0d0474", -2595 => x"30527551", -2596 => x"fc843f80", -2597 => x"08098105", -2598 => x"ff050970", -2599 => x"81050906", -2600 => x"0a8106ff", -2601 => x"0509b00b", -2602 => x"f7050684", -2603 => x"01050504", -2604 => x"818bac0b", -2605 => x"88050874", -2606 => x"76318107", -2607 => x"84120c53", -2608 => x"818af008", -2609 => x"7531818a", -2610 => x"f00c7551", -2611 => x"fbc73f81", -2612 => x"0b800c87", -2613 => x"3d0d0480", -2614 => x"527551fb", -2615 => x"b93f818b", -2616 => x"ac0b8805", -2617 => x"08800871", -2618 => x"3154548f", -2619 => x"7325ff05", -2620 => x"09ff8a0b", -2621 => x"f7050684", -2622 => x"01050504", -2623 => x"8008818b", -2624 => x"a0083181", -2625 => x"8af00c72", -2626 => x"81078415", -2627 => x"0c7551fb", -2628 => x"843f8053", -2629 => x"feee39f7", -2630 => x"3d0d7b7d", -2631 => x"545a7209", -2632 => x"70810509", -2633 => x"060a8106", -2634 => x"ff050984", -2635 => x"9e0bf705", -2636 => x"06840105", -2637 => x"05047951", -2638 => x"fada3ff8", -2639 => x"13841108", -2640 => x"70fe0670", -2641 => x"13841108", -2642 => x"fc065c57", -2643 => x"58545781", -2644 => x"8bb40809", -2645 => x"81057405", -2646 => x"09708105", -2647 => x"09060a81", -2648 => x"06ff0509", -2649 => x"85840bf7", -2650 => x"05068401", -2651 => x"05050477", -2652 => x"84150c80", -2653 => x"73810656", -2654 => x"59740981", -2655 => x"05790509", -2656 => x"70810509", -2657 => x"060a8106", -2658 => x"ff050983", -2659 => x"c20bf705", -2660 => x"06840105", -2661 => x"05047714", -2662 => x"84110881", -2663 => x"06565374", -2664 => x"09708105", -2665 => x"09060a09", -2666 => x"8106ff05", -2667 => x"0980d40b", -2668 => x"f7050684", -2669 => x"01050504", -2670 => x"77165678", -2671 => x"09708105", -2672 => x"09060a09", -2673 => x"8106ff05", -2674 => x"0983bf0b", -2675 => x"f7050684", -2676 => x"01050504", -2677 => x"88140855", -2678 => x"74098105", -2679 => x"818bb405", -2680 => x"09708105", -2681 => x"09060a81", -2682 => x"06ff0509", -2683 => x"84e60bf7", -2684 => x"05068401", -2685 => x"0505048c", -2686 => x"1408708c", -2687 => x"170c7588", -2688 => x"120c5875", -2689 => x"81078418", -2690 => x"0c751776", -2691 => x"710c5478", -2692 => x"09708105", -2693 => x"09060a09", -2694 => x"8106ff05", -2695 => x"0982a70b", -2696 => x"f7050684", -2697 => x"01050504", -2698 => x"83ff7627", -2699 => x"ff050982", -2700 => x"ea0bf705", -2701 => x"06840105", -2702 => x"05047589", -2703 => x"2a76832a", -2704 => x"54547309", -2705 => x"70810509", -2706 => x"060a8106", -2707 => x"ff050981", -2708 => x"800bf705", -2709 => x"06840105", -2710 => x"05047586", -2711 => x"2ab80553", -2712 => x"847427ff", -2713 => x"050980e9", -2714 => x"0bf70506", -2715 => x"84010505", -2716 => x"0480db14", -2717 => x"53947427", -2718 => x"ff050980", -2719 => x"d40bf705", -2720 => x"06840105", -2721 => x"0504758c", -2722 => x"2a80ee05", -2723 => x"5380d474", -2724 => x"27ff0509", -2725 => x"bc0bf705", -2726 => x"06840105", -2727 => x"0504758f", -2728 => x"2a80f705", -2729 => x"5382d474", -2730 => x"27ff0509", -2731 => x"a40bf705", -2732 => x"06840105", -2733 => x"05047592", -2734 => x"2a80fc05", -2735 => x"538ad474", -2736 => x"27ff0509", -2737 => x"8c0bf705", -2738 => x"06840105", -2739 => x"050480fe", -2740 => x"53721010", -2741 => x"10818bac", -2742 => x"05881108", -2743 => x"55557309", -2744 => x"81057505", -2745 => x"09708105", -2746 => x"09060a81", -2747 => x"06ff0509", -2748 => x"83a90bf7", -2749 => x"05068401", -2750 => x"05050484", -2751 => x"1408fc06", -2752 => x"59757927", -2753 => x"ff0509aa", -2754 => x"0bf70506", -2755 => x"84010505", -2756 => x"04881408", -2757 => x"54730981", -2758 => x"05750509", -2759 => x"70810509", -2760 => x"060a0981", -2761 => x"06ff0509", -2762 => x"d20bf705", -2763 => x"06840105", -2764 => x"05048c14", -2765 => x"08708c19", -2766 => x"0c748819", -2767 => x"0c778812", -2768 => x"0c55768c", -2769 => x"150c7951", -2770 => x"f6cb3f8b", -2771 => x"3d0d0476", -2772 => x"08777131", -2773 => x"58760588", -2774 => x"18085656", -2775 => x"74098105", -2776 => x"818bb405", -2777 => x"09708105", -2778 => x"09060a81", -2779 => x"06ff0509", -2780 => x"80f30bf7", -2781 => x"05068401", -2782 => x"0505048c", -2783 => x"1708708c", -2784 => x"170c7588", -2785 => x"120c53fc", -2786 => x"8d398814", -2787 => x"088c1508", -2788 => x"708c130c", -2789 => x"5988190c", -2790 => x"fce93975", -2791 => x"832a7054", -2792 => x"54807424", -2793 => x"ff050981", -2794 => x"c00bf705", -2795 => x"06840105", -2796 => x"05047282", -2797 => x"2c81712b", -2798 => x"818bb008", -2799 => x"07818bac", -2800 => x"0b84050c", -2801 => x"74101010", -2802 => x"818bac05", -2803 => x"88110871", -2804 => x"8c1b0c70", -2805 => x"881b0c79", -2806 => x"88130c56", -2807 => x"5a55768c", -2808 => x"150cfee2", -2809 => x"398159fb", -2810 => x"ad397716", -2811 => x"73810654", -2812 => x"55720970", -2813 => x"81050906", -2814 => x"0a098106", -2815 => x"ff0509a0", -2816 => x"0bf70506", -2817 => x"84010505", -2818 => x"04760877", -2819 => x"71315875", -2820 => x"058c1808", -2821 => x"88190871", -2822 => x"8c120c88", -2823 => x"120c5555", -2824 => x"74810784", -2825 => x"180c7681", -2826 => x"8bac0b88", -2827 => x"050c818b", -2828 => x"a8087526", -2829 => x"ff0509fe", -2830 => x"8d0bf705", -2831 => x"06840105", -2832 => x"0504818b", -2833 => x"a4085279", -2834 => x"51f7d23f", -2835 => x"7951f4c5", -2836 => x"3ffdf839", -2837 => x"81778c17", -2838 => x"0c778817", -2839 => x"0c758c19", -2840 => x"0c758819", -2841 => x"0c59fb9b", -2842 => x"39831470", -2843 => x"822c8171", -2844 => x"2b818bb0", -2845 => x"0807818b", -2846 => x"ac0b8405", -2847 => x"0c751010", -2848 => x"10818bac", -2849 => x"05881108", -2850 => x"718c1c0c", -2851 => x"70881c0c", -2852 => x"7a88130c", -2853 => x"575b5653", -2854 => x"fec43980", -2855 => x"7324ff05", -2856 => x"09ab0bf7", -2857 => x"05068401", -2858 => x"05050472", -2859 => x"822c8171", -2860 => x"2b818bb0", -2861 => x"0807818b", -2862 => x"ac0b8405", -2863 => x"0c58748c", -2864 => x"180c7388", -2865 => x"180c7688", -2866 => x"160cfcf6", -2867 => x"39831370", -2868 => x"822c8171", -2869 => x"2b818bb0", -2870 => x"0807818b", -2871 => x"ac0b8405", -2872 => x"0c5953da", -2873 => x"39707070", -2874 => x"81eaf808", -2875 => x"51700970", -2876 => x"81050906", -2877 => x"0a098106", -2878 => x"ff050992", -2879 => x"0bf70506", -2880 => x"84010505", -2881 => x"0481eb80", -2882 => x"7081eaf8", -2883 => x"0c517411", -2884 => x"52ff5371", -2885 => x"87fb8080", -2886 => x"26ff0509", -2887 => x"900bf705", -2888 => x"06840105", -2889 => x"05047181", -2890 => x"eaf80c70", -2891 => x"5372800c", -2892 => x"50505004", -2893 => x"70707070", -2894 => x"800b818a", -2895 => x"dc085454", -2896 => x"72098105", -2897 => x"81050970", -2898 => x"81050906", -2899 => x"0a8106ff", -2900 => x"0509a50b", -2901 => x"f7050684", -2902 => x"01050504", -2903 => x"7381eafc", -2904 => x"0cffb7b3", -2905 => x"3fffad98", -2906 => x"3f819ab4", -2907 => x"528151c5", -2908 => x"803f8008", -2909 => x"518cbe3f", -2910 => x"7281eafc", -2911 => x"0cffb797", -2912 => x"3fffacfc", -2913 => x"3f819ab4", -2914 => x"528151c4", -2915 => x"e43f8008", -2916 => x"518ca23f", -2917 => x"00ff3900", -2918 => x"ff39f53d", -2919 => x"0d7e6081", -2920 => x"eafc0870", -2921 => x"5b585b5b", -2922 => x"75097081", -2923 => x"0509060a", -2924 => x"098106ff", -2925 => x"050980fb", -2926 => x"0bf70506", -2927 => x"84010505", -2928 => x"04777a25", -2929 => x"ff050980", -2930 => x"cc0bf705", -2931 => x"06840105", -2932 => x"0504771b", -2933 => x"70337081", -2934 => x"ff065858", -2935 => x"59750981", -2936 => x"058a0509", -2937 => x"70810509", -2938 => x"060a8106", -2939 => x"ff0509ac", -2940 => x"0bf70506", -2941 => x"84010505", -2942 => x"047681ff", -2943 => x"0651ffb5", -2944 => x"e23f8118", -2945 => x"58797824", -2946 => x"ff0509c6", -2947 => x"0bf70506", -2948 => x"84010505", -2949 => x"0479800c", -2950 => x"8d3d0d04", -2951 => x"8d51ffb5", -2952 => x"c23f7833", -2953 => x"7081ff06", -2954 => x"5257ffb5", -2955 => x"b63f8118", -2956 => x"58d33979", -2957 => x"557a547d", -2958 => x"5385528d", -2959 => x"3dfc0551", -2960 => x"ffb4eb3f", -2961 => x"8008568a", -2962 => x"e53f7b80", -2963 => x"080c7580", -2964 => x"0c8d3d0d", -2965 => x"04f63d0d", -2966 => x"7d7f81ea", -2967 => x"fc08705a", -2968 => x"585a5a75", -2969 => x"09708105", -2970 => x"09060a09", -2971 => x"8106ff05", -2972 => x"0981930b", -2973 => x"f7050684", -2974 => x"01050504", -2975 => x"767925ff", -2976 => x"050980f4", -2977 => x"0bf70506", -2978 => x"84010505", -2979 => x"04761a58", -2980 => x"ffb49d3f", -2981 => x"80087834", -2982 => x"800b8008", -2983 => x"81ff0657", -2984 => x"58750981", -2985 => x"058a0509", -2986 => x"70810509", -2987 => x"060a8106", -2988 => x"ff050980", -2989 => x"cc0bf705", -2990 => x"06840105", -2991 => x"0504758d", -2992 => x"32703070", -2993 => x"80257a07", -2994 => x"51515675", -2995 => x"09708105", -2996 => x"09060a09", -2997 => x"8106ff05", -2998 => x"0980cd0b", -2999 => x"f7050684", -3000 => x"01050504", -3001 => x"81175778", -3002 => x"7724ff05", -3003 => x"09ff9e0b", -3004 => x"f7050684", -3005 => x"01050504", -3006 => x"76567580", -3007 => x"0c8c3d0d", -3008 => x"048158ff", -3009 => x"b9397855", -3010 => x"79547c53", -3011 => x"84528c3d", -3012 => x"fc0551ff", -3013 => x"b3983f80", -3014 => x"08568992", -3015 => x"3f7a8008", -3016 => x"0c75800c", -3017 => x"8c3d0d04", -3018 => x"811756ce", -3019 => x"39f93d0d", -3020 => x"795781ea", -3021 => x"fc080970", -3022 => x"81050906", -3023 => x"0a8106ff", -3024 => x"0509b50b", -3025 => x"f7050684", -3026 => x"01050504", -3027 => x"76518d88", -3028 => x"3f7b567a", -3029 => x"55800881", -3030 => x"05547653", -3031 => x"8252893d", -3032 => x"fc0551ff", -3033 => x"b2c83f80", -3034 => x"085788c2", -3035 => x"3f778008", -3036 => x"0c76800c", -3037 => x"893d0d04", -3038 => x"88b43f85", -3039 => x"0b80080c", -3040 => x"ff0b800c", -3041 => x"893d0d04", -3042 => x"fb3d0d81", -3043 => x"eafc0870", -3044 => x"56547309", -3045 => x"70810509", -3046 => x"060a0981", -3047 => x"06ff0509", -3048 => x"900bf705", -3049 => x"06840105", -3050 => x"05047480", -3051 => x"0c873d0d", -3052 => x"04775383", -3053 => x"52873dfc", -3054 => x"0551ffb1", -3055 => x"f13f8008", -3056 => x"5487eb3f", -3057 => x"7580080c", -3058 => x"73800c87", -3059 => x"3d0d04ff", -3060 => x"0b800c04", -3061 => x"fb3d0d77", -3062 => x"5581eafc", -3063 => x"08097081", -3064 => x"0509060a", -3065 => x"8106ff05", -3066 => x"09b10bf7", -3067 => x"05068401", -3068 => x"05050474", -3069 => x"518be13f", -3070 => x"80088105", -3071 => x"54745387", -3072 => x"52873dfc", -3073 => x"0551ffb1", -3074 => x"a53f8008", -3075 => x"55879f3f", -3076 => x"7580080c", -3077 => x"74800c87", -3078 => x"3d0d0487", -3079 => x"913f850b", -3080 => x"80080cff", -3081 => x"0b800c87", -3082 => x"3d0d04fa", -3083 => x"3d0d81ea", -3084 => x"fc080970", -3085 => x"81050906", -3086 => x"0a8106ff", -3087 => x"0509ab0b", -3088 => x"f7050684", -3089 => x"01050504", -3090 => x"7a557954", -3091 => x"78538652", -3092 => x"883dfc05", -3093 => x"51ffb0d6", -3094 => x"3f800856", -3095 => x"86d03f76", -3096 => x"80080c75", -3097 => x"800c883d", -3098 => x"0d0486c2", -3099 => x"3f9d0b80", -3100 => x"080cff0b", -3101 => x"800c883d", -3102 => x"0d04f73d", -3103 => x"0d7b7d5b", -3104 => x"59bc5380", -3105 => x"52795188", -3106 => x"cd3f8070", -3107 => x"56579856", -3108 => x"74197033", -3109 => x"70782b79", -3110 => x"078118f8", -3111 => x"1a5a5859", -3112 => x"55588475", -3113 => x"24ff0509", -3114 => x"e70bf705", -3115 => x"06840105", -3116 => x"0504767a", -3117 => x"23841958", -3118 => x"80705657", -3119 => x"98567418", -3120 => x"70337078", -3121 => x"2b790781", -3122 => x"18f81a5a", -3123 => x"58595154", -3124 => x"847524ff", -3125 => x"0509e70b", -3126 => x"f7050684", -3127 => x"01050504", -3128 => x"76821b23", -3129 => x"88195880", -3130 => x"70565798", -3131 => x"56741870", -3132 => x"3370782b", -3133 => x"79078118", -3134 => x"f81a5a58", -3135 => x"59515484", -3136 => x"7524ff05", -3137 => x"09e70bf7", -3138 => x"05068401", -3139 => x"05050476", -3140 => x"841b0c8c", -3141 => x"19588070", -3142 => x"56579856", -3143 => x"74187033", -3144 => x"70782b79", -3145 => x"078118f8", -3146 => x"1a5a5859", -3147 => x"51548475", -3148 => x"24ff0509", -3149 => x"e70bf705", -3150 => x"06840105", -3151 => x"05047688", -3152 => x"1b239019", -3153 => x"58807056", -3154 => x"57985674", -3155 => x"18703370", -3156 => x"782b7907", -3157 => x"8118f81a", -3158 => x"5a585951", -3159 => x"54847524", -3160 => x"ff0509e7", -3161 => x"0bf70506", -3162 => x"84010505", -3163 => x"04768a1b", -3164 => x"23941958", -3165 => x"80705657", -3166 => x"98567418", -3167 => x"70337078", -3168 => x"2b790781", -3169 => x"18f81a5a", -3170 => x"58595154", -3171 => x"847524ff", -3172 => x"0509e70b", -3173 => x"f7050684", -3174 => x"01050504", -3175 => x"768c1b23", -3176 => x"98195880", -3177 => x"70565798", -3178 => x"56741870", -3179 => x"3370782b", -3180 => x"79078118", -3181 => x"f81a5a58", -3182 => x"59515484", -3183 => x"7524ff05", -3184 => x"09e70bf7", -3185 => x"05068401", -3186 => x"05050476", -3187 => x"8e1b239c", -3188 => x"19588070", -3189 => x"5657b856", -3190 => x"74187033", -3191 => x"70782b79", -3192 => x"078118f8", -3193 => x"1a5a5859", -3194 => x"5a548875", -3195 => x"24ff0509", -3196 => x"e70bf705", -3197 => x"06840105", -3198 => x"05047690", -3199 => x"1b0c8b3d", -3200 => x"0d04e93d", -3201 => x"0d6a81ea", -3202 => x"fc085757", -3203 => x"75097081", -3204 => x"0509060a", -3205 => x"098106ff", -3206 => x"05099b0b", -3207 => x"f7050684", -3208 => x"01050504", -3209 => x"80c0800b", -3210 => x"84180c75", -3211 => x"ac180c75", -3212 => x"800c993d", -3213 => x"0d04893d", -3214 => x"70556a54", -3215 => x"558a5299", -3216 => x"3dffbc05", -3217 => x"51fface6", -3218 => x"3f800877", -3219 => x"53755256", -3220 => x"fca83f82", -3221 => x"d93f7780", -3222 => x"080c7580", -3223 => x"0c993d0d", -3224 => x"04e93d0d", -3225 => x"695781ea", -3226 => x"fc080970", -3227 => x"81050906", -3228 => x"0a8106ff", -3229 => x"0509be0b", -3230 => x"f7050684", -3231 => x"01050504", -3232 => x"765186d4", -3233 => x"3f893d70", -3234 => x"56800881", -3235 => x"05557754", -3236 => x"568f5299", -3237 => x"3dffbc05", -3238 => x"51ffac92", -3239 => x"3f80086b", -3240 => x"53765257", -3241 => x"fbd43f82", -3242 => x"853f7780", -3243 => x"080c7680", -3244 => x"0c993d0d", -3245 => x"0481f73f", -3246 => x"850b8008", -3247 => x"0cff0b80", -3248 => x"0c993d0d", -3249 => x"04fc3d0d", -3250 => x"815481ea", -3251 => x"fc080970", -3252 => x"81050906", -3253 => x"0a098106", -3254 => x"ff050990", -3255 => x"0bf70506", -3256 => x"84010505", -3257 => x"0473800c", -3258 => x"863d0d04", -3259 => x"765397b9", -3260 => x"52863dfc", -3261 => x"0551ffab", -3262 => x"b53f8008", -3263 => x"5481af3f", -3264 => x"7480080c", -3265 => x"73800c86", -3266 => x"3d0d04f4", -3267 => x"3d0d7e81", -3268 => x"9ae00870", -3269 => x"0881ff06", -3270 => x"913df805", -3271 => x"54515959", -3272 => x"ffacf63f", -3273 => x"77578054", -3274 => x"76557b7d", -3275 => x"58527653", -3276 => x"8e3df005", -3277 => x"5186e23f", -3278 => x"797b5879", -3279 => x"0c76841a", -3280 => x"0c78800c", -3281 => x"8e3d0d04", -3282 => x"f43d0d7e", -3283 => x"819ae008", -3284 => x"70087081", -3285 => x"ff06923d", -3286 => x"f8055551", -3287 => x"5a5759ff", -3288 => x"acb73f77", -3289 => x"57800b8b", -3290 => x"3d595476", -3291 => x"557b7d58", -3292 => x"52765377", -3293 => x"5186a23f", -3294 => x"8056bd84", -3295 => x"c0765555", -3296 => x"797b5852", -3297 => x"76537751", -3298 => x"868f3f7a", -3299 => x"57780970", -3300 => x"81050906", -3301 => x"0a8106ff", -3302 => x"05098c0b", -3303 => x"f7050684", -3304 => x"01050504", -3305 => x"76790c76", -3306 => x"800c8e3d", -3307 => x"0d048193", -3308 => x"b408800c", -3309 => x"04f73d0d", -3310 => x"7b8193b4", -3311 => x"0882c811", -3312 => x"085a545a", -3313 => x"77097081", -3314 => x"0509060a", -3315 => x"8106ff05", -3316 => x"0981ac0b", -3317 => x"f7050684", -3318 => x"01050504", -3319 => x"81881884", -3320 => x"1908ff05", -3321 => x"81712b59", -3322 => x"55598074", -3323 => x"24ff0509", -3324 => x"81d20bf7", -3325 => x"05068401", -3326 => x"05050480", -3327 => x"7424ff05", -3328 => x"0980db0b", -3329 => x"f7050684", -3330 => x"01050504", -3331 => x"73822b78", -3332 => x"11880556", -3333 => x"56818019", -3334 => x"08770653", -3335 => x"72097081", -3336 => x"0509060a", -3337 => x"8106ff05", -3338 => x"0980f30b", -3339 => x"f7050684", -3340 => x"01050504", -3341 => x"78167008", -3342 => x"53537951", -3343 => x"74085372", -3344 => x"2dff14fc", -3345 => x"17fc1779", -3346 => x"812c5a57", -3347 => x"57547380", -3348 => x"25ff0509", -3349 => x"c00bf705", -3350 => x"06840105", -3351 => x"05047708", -3352 => x"58770970", -3353 => x"81050906", -3354 => x"0a098106", -3355 => x"ff0509fe", -3356 => x"eb0bf705", -3357 => x"06840105", -3358 => x"05048193", -3359 => x"b40853bc", -3360 => x"13080970", -3361 => x"81050906", -3362 => x"0a098106", -3363 => x"ff0509b9", -3364 => x"0bf70506", -3365 => x"84010505", -3366 => x"047951f1", -3367 => x"f73f7408", -3368 => x"53722dff", -3369 => x"14fc17fc", -3370 => x"1779812c", -3371 => x"5a575754", -3372 => x"738025ff", -3373 => x"0509fedd", -3374 => x"0bf70506", -3375 => x"84010505", -3376 => x"04ff9b39", -3377 => x"8057feb3", -3378 => x"397251bc", -3379 => x"13085473", -3380 => x"2d7951f1", -3381 => x"bf3ffb3d", -3382 => x"0d777a71", -3383 => x"028c05a3", -3384 => x"05335854", -3385 => x"54568373", -3386 => x"27ff0509", -3387 => x"819d0bf7", -3388 => x"05068401", -3389 => x"05050475", -3390 => x"83065170", -3391 => x"09708105", -3392 => x"09060a09", -3393 => x"8106ff05", -3394 => x"0981800b", -3395 => x"f7050684", -3396 => x"01050504", -3397 => x"74882b75", -3398 => x"07707190", -3399 => x"2b075551", -3400 => x"8f7327ff", -3401 => x"0509ba0b", -3402 => x"f7050684", -3403 => x"01050504", -3404 => x"73727084", -3405 => x"05540c71", -3406 => x"74717084", -3407 => x"05530c74", -3408 => x"71708405", -3409 => x"530c7471", -3410 => x"70840553", -3411 => x"0cf01454", -3412 => x"52728f26", -3413 => x"ff0509d8", -3414 => x"0bf70506", -3415 => x"84010505", -3416 => x"04837327", -3417 => x"ff0509a3", -3418 => x"0bf70506", -3419 => x"84010505", -3420 => x"04737270", -3421 => x"8405540c", -3422 => x"fc135372", -3423 => x"8326ff05", -3424 => x"09ef0bf7", -3425 => x"05068401", -3426 => x"050504ff", -3427 => x"13517009", -3428 => x"8105ff05", -3429 => x"09708105", -3430 => x"09060a81", -3431 => x"06ff0509", -3432 => x"b00bf705", -3433 => x"06840105", -3434 => x"05047472", -3435 => x"70810554", -3436 => x"34ff1151", -3437 => x"70098105", -3438 => x"ff050970", -3439 => x"81050906", -3440 => x"0a098106", -3441 => x"ff0509e2", -3442 => x"0bf70506", -3443 => x"84010505", -3444 => x"0475800c", -3445 => x"873d0d04", -3446 => x"70707070", -3447 => x"75707183", -3448 => x"06535552", -3449 => x"70097081", -3450 => x"0509060a", -3451 => x"098106ff", -3452 => x"050980e3", -3453 => x"0bf70506", -3454 => x"84010505", -3455 => x"04717008", -3456 => x"7009f7fb", -3457 => x"fdff1206", -3458 => x"f8848281", -3459 => x"80065452", -3460 => x"53710970", -3461 => x"81050906", -3462 => x"0a098106", -3463 => x"ff0509b5", -3464 => x"0bf70506", -3465 => x"84010505", -3466 => x"04841370", -3467 => x"087009f7", -3468 => x"fbfdff12", -3469 => x"06f88482", -3470 => x"81800654", -3471 => x"52537109", -3472 => x"70810509", -3473 => x"060a8106", -3474 => x"ff0509dd", -3475 => x"0bf70506", -3476 => x"84010505", -3477 => x"04725271", -3478 => x"33537209", -3479 => x"70810509", -3480 => x"060a8106", -3481 => x"ff0509a7", -3482 => x"0bf70506", -3483 => x"84010505", -3484 => x"04811270", -3485 => x"33545272", -3486 => x"09708105", -3487 => x"09060a09", -3488 => x"8106ff05", -3489 => x"09eb0bf7", -3490 => x"05068401", -3491 => x"05050471", -3492 => x"7431800c", -3493 => x"50505050", -3494 => x"04e43d0d", -3495 => x"6ea13d08", -3496 => x"a33d0859", -3497 => x"575f8076", -3498 => x"4d774ea3", -3499 => x"3d08a53d", -3500 => x"08574b75", -3501 => x"4c5e7d6c", -3502 => x"24ff0509", -3503 => x"8b860bf7", -3504 => x"05068401", -3505 => x"05050480", -3506 => x"6a24ff05", -3507 => x"098b9b0b", -3508 => x"f7050684", -3509 => x"01050504", -3510 => x"696b5856", -3511 => x"6b6d5d46", -3512 => x"7b477544", -3513 => x"76456464", -3514 => x"68685c5c", -3515 => x"56567409", -3516 => x"70810509", -3517 => x"060a0981", -3518 => x"06ff0509", -3519 => x"82ee0bf7", -3520 => x"05068401", -3521 => x"05050478", -3522 => x"7627ff05", -3523 => x"09848f0b", -3524 => x"f7050684", -3525 => x"01050504", -3526 => x"7581ff26", -3527 => x"832b5583", -3528 => x"ffff7627", -3529 => x"ff05099f", -3530 => x"0bf70506", -3531 => x"84010505", -3532 => x"049055fe", -3533 => x"800a7627", -3534 => x"ff05098b", -3535 => x"0bf70506", -3536 => x"84010505", -3537 => x"04985575", -3538 => x"752a8188", -3539 => x"88057033", -3540 => x"a0773171", -3541 => x"31575557", -3542 => x"74097081", -3543 => x"0509060a", -3544 => x"8106ff05", -3545 => x"099d0bf7", -3546 => x"05068401", -3547 => x"05050475", -3548 => x"752ba076", -3549 => x"317a772b", -3550 => x"7c722a07", -3551 => x"7c782b5d", -3552 => x"5b595675", -3553 => x"902a7683", -3554 => x"ffff0671", -3555 => x"547a5359", -3556 => x"578c803f", -3557 => x"80085b8b", -3558 => x"e93f8008", -3559 => x"80087929", -3560 => x"7c902b7c", -3561 => x"902a0756", -3562 => x"56597375", -3563 => x"27ff0509", -3564 => x"b20bf705", -3565 => x"06840105", -3566 => x"05048008", -3567 => x"ff057615", -3568 => x"55597574", -3569 => x"26ff0509", -3570 => x"9a0bf705", -3571 => x"06840105", -3572 => x"05047474", -3573 => x"26ff0509", -3574 => x"8b9f0bf7", -3575 => x"05068401", -3576 => x"05050476", -3577 => x"52737531", -3578 => x"518ba83f", -3579 => x"8008558b", -3580 => x"913f8008", -3581 => x"80087929", -3582 => x"7b83ffff", -3583 => x"0677902b", -3584 => x"07565957", -3585 => x"737827ff", -3586 => x"0509a90b", -3587 => x"f7050684", -3588 => x"01050504", -3589 => x"8008ff05", -3590 => x"76155557", -3591 => x"757426ff", -3592 => x"0509910b", -3593 => x"f7050684", -3594 => x"01050504", -3595 => x"77742677", -3596 => x"71315856", -3597 => x"78902b77", -3598 => x"0758805b", -3599 => x"7a407741", -3600 => x"7f615654", -3601 => x"7d097081", -3602 => x"0509060a", -3603 => x"098106ff", -3604 => x"050981ac", -3605 => x"0bf70506", -3606 => x"84010505", -3607 => x"04737f0c", -3608 => x"747f8405", -3609 => x"0c7e800c", -3610 => x"9e3d0d04", -3611 => x"80705c58", -3612 => x"747926ff", -3613 => x"0509c50b", -3614 => x"f7050684", -3615 => x"01050504", -3616 => x"7481ff26", -3617 => x"832b5774", -3618 => x"83ffff26", -3619 => x"ff050983", -3620 => x"e90bf705", -3621 => x"06840105", -3622 => x"05047477", -3623 => x"2a818888", -3624 => x"057033a0", -3625 => x"79317131", -3626 => x"595c5d76", -3627 => x"09708105", -3628 => x"09060a09", -3629 => x"8106ff05", -3630 => x"0983ff0b", -3631 => x"f7050684", -3632 => x"01050504", -3633 => x"76547479", -3634 => x"27ff0509", -3635 => x"8b0bf705", -3636 => x"06840105", -3637 => x"05048154", -3638 => x"79762774", -3639 => x"07598158", -3640 => x"78097081", -3641 => x"0509060a", -3642 => x"098106ff", -3643 => x"0509feca", -3644 => x"0bf70506", -3645 => x"84010505", -3646 => x"04765880", -3647 => x"5bfebd39", -3648 => x"73527453", -3649 => x"9e3de805", -3650 => x"51ffbff2", -3651 => x"3f676956", -3652 => x"7f0c747f", -3653 => x"84050c7e", -3654 => x"800c9e3d", -3655 => x"0d047509", -3656 => x"70810509", -3657 => x"060a8106", -3658 => x"ff050982", -3659 => x"c00bf705", -3660 => x"06840105", -3661 => x"05047581", -3662 => x"ff26832b", -3663 => x"5583ffff", -3664 => x"7627ff05", -3665 => x"099f0bf7", -3666 => x"05068401", -3667 => x"05050490", -3668 => x"55fe800a", -3669 => x"7627ff05", -3670 => x"098b0bf7", -3671 => x"05068401", -3672 => x"05050498", -3673 => x"5575752a", -3674 => x"81888805", -3675 => x"7033a077", -3676 => x"31713157", -3677 => x"5e547409", -3678 => x"70810509", -3679 => x"060a0981", -3680 => x"06ff0509", -3681 => x"86810bf7", -3682 => x"05068401", -3683 => x"05050478", -3684 => x"76315481", -3685 => x"76902a77", -3686 => x"83ffff06", -3687 => x"5f5d5b7b", -3688 => x"52735187", -3689 => x"ee3f8008", -3690 => x"5787d73f", -3691 => x"80088008", -3692 => x"7e297890", -3693 => x"2b7c902a", -3694 => x"07565659", -3695 => x"737527ff", -3696 => x"0509b20b", -3697 => x"f7050684", -3698 => x"01050504", -3699 => x"8008ff05", -3700 => x"76155559", -3701 => x"757426ff", -3702 => x"05099a0b", -3703 => x"f7050684", -3704 => x"01050504", -3705 => x"747426ff", -3706 => x"05098784", -3707 => x"0bf70506", -3708 => x"84010505", -3709 => x"047b5273", -3710 => x"75315187", -3711 => x"963f8008", -3712 => x"5586ff3f", -3713 => x"80088008", -3714 => x"7e297b83", -3715 => x"ffff0677", -3716 => x"902b0756", -3717 => x"59577378", -3718 => x"27ff0509", -3719 => x"a90bf705", -3720 => x"06840105", -3721 => x"05048008", -3722 => x"ff057615", -3723 => x"55577574", -3724 => x"26ff0509", -3725 => x"910bf705", -3726 => x"06840105", -3727 => x"05047774", -3728 => x"26777131", -3729 => x"585a7890", -3730 => x"2b77077b", -3731 => x"41417f61", -3732 => x"56547d09", -3733 => x"70810509", -3734 => x"060a8106", -3735 => x"ff0509fb", -3736 => x"fc0bf705", -3737 => x"06840105", -3738 => x"0504fd94", -3739 => x"39755281", -3740 => x"51868f3f", -3741 => x"800856fd", -3742 => x"bd399057", -3743 => x"fe800a75", -3744 => x"27ff0509", -3745 => x"fc940bf7", -3746 => x"05068401", -3747 => x"05050498", -3748 => x"75712a81", -3749 => x"88880570", -3750 => x"33a07331", -3751 => x"7131535d", -3752 => x"5e577609", -3753 => x"70810509", -3754 => x"060a8106", -3755 => x"ff0509fc", -3756 => x"930bf705", -3757 => x"06840105", -3758 => x"0504a077", -3759 => x"3175782b", -3760 => x"77722a07", -3761 => x"77792b7b", -3762 => x"7a2b7d74", -3763 => x"2a077d7b", -3764 => x"2b73902a", -3765 => x"7483ffff", -3766 => x"0671597f", -3767 => x"772a585e", -3768 => x"5c415f58", -3769 => x"5c5485ab", -3770 => x"3f800854", -3771 => x"85943f80", -3772 => x"08800879", -3773 => x"2975902b", -3774 => x"7e902a07", -3775 => x"56565973", -3776 => x"7527ff05", -3777 => x"09b70bf7", -3778 => x"05068401", -3779 => x"05050480", -3780 => x"08ff057b", -3781 => x"1555597a", -3782 => x"7426ff05", -3783 => x"099f0bf7", -3784 => x"05068401", -3785 => x"05050473", -3786 => x"7527ff05", -3787 => x"098f0bf7", -3788 => x"05068401", -3789 => x"050504ff", -3790 => x"197b1555", -3791 => x"59765273", -3792 => x"75315184", -3793 => x"ce3f8008", -3794 => x"5584b73f", -3795 => x"80088008", -3796 => x"79297d83", -3797 => x"ffff0677", -3798 => x"902b0756", -3799 => x"59577378", -3800 => x"27ff0509", -3801 => x"b70bf705", -3802 => x"06840105", -3803 => x"05048008", -3804 => x"ff057b15", -3805 => x"55577a74", -3806 => x"26ff0509", -3807 => x"9f0bf705", -3808 => x"06840105", -3809 => x"05047378", -3810 => x"27ff0509", -3811 => x"8f0bf705", -3812 => x"06840105", -3813 => x"0504ff17", -3814 => x"7b155557", -3815 => x"73783179", -3816 => x"902b7807", -3817 => x"7083ffff", -3818 => x"0671902a", -3819 => x"7983ffff", -3820 => x"067a902a", -3821 => x"73722973", -3822 => x"73297473", -3823 => x"29767429", -3824 => x"73902a05", -3825 => x"72055755", -3826 => x"435f5b58", -3827 => x"5a57595a", -3828 => x"747c27ff", -3829 => x"05098e0b", -3830 => x"f7050684", -3831 => x"01050504", -3832 => x"84808017", -3833 => x"5774902a", -3834 => x"177983ff", -3835 => x"ff067684", -3836 => x"80802905", -3837 => x"5757767a", -3838 => x"26ff0509", -3839 => x"bf0bf705", -3840 => x"06840105", -3841 => x"0504767a", -3842 => x"32703070", -3843 => x"72078025", -3844 => x"565a5b7c", -3845 => x"7627ff05", -3846 => x"09f89f0b", -3847 => x"f7050684", -3848 => x"01050504", -3849 => x"73097081", -3850 => x"0509060a", -3851 => x"8106ff05", -3852 => x"09f8870b", -3853 => x"f7050684", -3854 => x"01050504", -3855 => x"ff185880", -3856 => x"5bf7f939", -3857 => x"ff765377", -3858 => x"549f3de8", -3859 => x"05525eff", -3860 => x"b9ac3f67", -3861 => x"69574c75", -3862 => x"4d698025", -3863 => x"ff0509f4", -3864 => x"f70bf705", -3865 => x"06840105", -3866 => x"05047d09", -3867 => x"6a6c5c53", -3868 => x"7a549f3d", -3869 => x"e805525e", -3870 => x"ffb9833f", -3871 => x"6769714c", -3872 => x"704d5856", -3873 => x"f4d639a0", -3874 => x"75317676", -3875 => x"2b7a772b", -3876 => x"7c732a07", -3877 => x"7c782b72", -3878 => x"902a7383", -3879 => x"ffff0671", -3880 => x"587e762a", -3881 => x"5742405d", -3882 => x"5d575881", -3883 => x"e63f8008", -3884 => x"5781cf3f", -3885 => x"80088008", -3886 => x"7e297890", -3887 => x"2b7d902a", -3888 => x"07565659", -3889 => x"737527ff", -3890 => x"0509b70b", -3891 => x"f7050684", -3892 => x"01050504", -3893 => x"8008ff05", -3894 => x"76155559", -3895 => x"757426ff", -3896 => x"05099f0b", -3897 => x"f7050684", -3898 => x"01050504", -3899 => x"737527ff", -3900 => x"05098f0b", -3901 => x"f7050684", -3902 => x"01050504", -3903 => x"ff197615", -3904 => x"55597b52", -3905 => x"73753151", -3906 => x"81893f80", -3907 => x"085580f2", -3908 => x"3f800880", -3909 => x"087e297c", -3910 => x"83ffff06", -3911 => x"7078902b", -3912 => x"07515658", -3913 => x"58737727", -3914 => x"ff0509b7", -3915 => x"0bf70506", -3916 => x"84010505", -3917 => x"048008ff", -3918 => x"05761555", -3919 => x"58757426", -3920 => x"ff05099f", -3921 => x"0bf70506", -3922 => x"84010505", -3923 => x"04737727", -3924 => x"ff05098f", -3925 => x"0bf70506", -3926 => x"84010505", -3927 => x"04ff1876", -3928 => x"15555878", -3929 => x"902b7807", -3930 => x"74783155", -3931 => x"5bf8b039", -3932 => x"ff197615", -3933 => x"5559f8fd", -3934 => x"39ff1976", -3935 => x"155559f4", -3936 => x"e2397070", -3937 => x"70805375", -3938 => x"527451ff", -3939 => x"b9d13f50", -3940 => x"50500470", -3941 => x"70708153", -3942 => x"75527451", -3943 => x"ffb9c03f", -3944 => x"50505004", -3945 => x"7070819a", -3946 => x"bc0bfc05", -3947 => x"70085252", -3948 => x"70098105", -3949 => x"ff050970", -3950 => x"81050906", -3951 => x"0a8106ff", -3952 => x"0509ae0b", -3953 => x"f7050684", -3954 => x"01050504", -3955 => x"702dfc12", -3956 => x"70085252", -3957 => x"70098105", -3958 => x"ff050970", -3959 => x"81050906", -3960 => x"0a098106", -3961 => x"ff0509e4", -3962 => x"0bf70506", -3963 => x"84010505", -3964 => x"04505004", -3965 => x"04ff98cc", -3966 => x"3f040000", -3967 => x"30313233", -3968 => x"34353637", -3969 => x"38390000", -3970 => x"44485259", -3971 => x"53544f4e", -3972 => x"45205052", -3973 => x"4f475241", -3974 => x"4d2c2053", -3975 => x"4f4d4520", -3976 => x"53545249", -3977 => x"4e470000", -3978 => x"44485259", -3979 => x"53544f4e", -3980 => x"45205052", -3981 => x"4f475241", -3982 => x"4d2c2031", -3983 => x"27535420", -3984 => x"53545249", -3985 => x"4e470000", -3986 => x"44687279", -3987 => x"73746f6e", -3988 => x"65204265", -3989 => x"6e63686d", -3990 => x"61726b2c", -3991 => x"20566572", -3992 => x"73696f6e", -3993 => x"20322e31", -3994 => x"20284c61", -3995 => x"6e677561", -3996 => x"67653a20", -3997 => x"43290a00", -3998 => x"50726f67", -3999 => x"72616d20", -4000 => x"636f6d70", -4001 => x"696c6564", -4002 => x"20776974", -4003 => x"68202772", -4004 => x"65676973", -4005 => x"74657227", -4006 => x"20617474", -4007 => x"72696275", -4008 => x"74650a00", -4009 => x"45786563", -4010 => x"7574696f", -4011 => x"6e207374", -4012 => x"61727473", -4013 => x"2c202564", -4014 => x"2072756e", -4015 => x"73207468", -4016 => x"726f7567", -4017 => x"68204468", -4018 => x"72797374", -4019 => x"6f6e650a", -4020 => x"00000000", -4021 => x"44485259", -4022 => x"53544f4e", -4023 => x"45205052", -4024 => x"4f475241", -4025 => x"4d2c2032", -4026 => x"274e4420", -4027 => x"53545249", -4028 => x"4e470000", -4029 => x"45786563", -4030 => x"7574696f", -4031 => x"6e20656e", -4032 => x"64730a00", -4033 => x"46696e61", -4034 => x"6c207661", -4035 => x"6c756573", -4036 => x"206f6620", -4037 => x"74686520", -4038 => x"76617269", -4039 => x"61626c65", -4040 => x"73207573", -4041 => x"65642069", -4042 => x"6e207468", -4043 => x"65206265", -4044 => x"6e63686d", -4045 => x"61726b3a", -4046 => x"0a000000", -4047 => x"496e745f", -4048 => x"476c6f62", -4049 => x"3a202020", -4050 => x"20202020", -4051 => x"20202020", -4052 => x"2025640a", -4053 => x"00000000", -4054 => x"20202020", -4055 => x"20202020", -4056 => x"73686f75", -4057 => x"6c642062", -4058 => x"653a2020", -4059 => x"2025640a", -4060 => x"00000000", -4061 => x"426f6f6c", -4062 => x"5f476c6f", -4063 => x"623a2020", -4064 => x"20202020", -4065 => x"20202020", -4066 => x"2025640a", -4067 => x"00000000", -4068 => x"43685f31", -4069 => x"5f476c6f", -4070 => x"623a2020", -4071 => x"20202020", -4072 => x"20202020", -4073 => x"2025630a", -4074 => x"00000000", -4075 => x"20202020", -4076 => x"20202020", -4077 => x"73686f75", -4078 => x"6c642062", -4079 => x"653a2020", -4080 => x"2025630a", -4081 => x"00000000", -4082 => x"43685f32", -4083 => x"5f476c6f", -4084 => x"623a2020", -4085 => x"20202020", -4086 => x"20202020", -4087 => x"2025630a", -4088 => x"00000000", -4089 => x"4172725f", -4090 => x"315f476c", -4091 => x"6f625b38", -4092 => x"5d3a2020", -4093 => x"20202020", -4094 => x"2025640a", -4095 => x"00000000", -4096 => x"4172725f", -4097 => x"325f476c", -4098 => x"6f625b38", -4099 => x"5d5b375d", -4100 => x"3a202020", -4101 => x"2025640a", -4102 => x"00000000", -4103 => x"20202020", -4104 => x"20202020", -4105 => x"73686f75", -4106 => x"6c642062", -4107 => x"653a2020", -4108 => x"204e756d", -4109 => x"6265725f", -4110 => x"4f665f52", -4111 => x"756e7320", -4112 => x"2b203130", -4113 => x"0a000000", -4114 => x"5074725f", -4115 => x"476c6f62", -4116 => x"2d3e0a00", -4117 => x"20205074", -4118 => x"725f436f", -4119 => x"6d703a20", -4120 => x"20202020", -4121 => x"20202020", -4122 => x"2025640a", -4123 => x"00000000", -4124 => x"20202020", -4125 => x"20202020", -4126 => x"73686f75", -4127 => x"6c642062", -4128 => x"653a2020", -4129 => x"2028696d", -4130 => x"706c656d", -4131 => x"656e7461", -4132 => x"74696f6e", -4133 => x"2d646570", -4134 => x"656e6465", -4135 => x"6e74290a", -4136 => x"00000000", -4137 => x"20204469", -4138 => x"7363723a", -4139 => x"20202020", -4140 => x"20202020", -4141 => x"20202020", -4142 => x"2025640a", -4143 => x"00000000", -4144 => x"2020456e", -4145 => x"756d5f43", -4146 => x"6f6d703a", -4147 => x"20202020", -4148 => x"20202020", -4149 => x"2025640a", -4150 => x"00000000", -4151 => x"2020496e", -4152 => x"745f436f", -4153 => x"6d703a20", -4154 => x"20202020", -4155 => x"20202020", -4156 => x"2025640a", -4157 => x"00000000", -4158 => x"20205374", -4159 => x"725f436f", -4160 => x"6d703a20", -4161 => x"20202020", -4162 => x"20202020", -4163 => x"2025730a", -4164 => x"00000000", -4165 => x"20202020", -4166 => x"20202020", -4167 => x"73686f75", -4168 => x"6c642062", -4169 => x"653a2020", -4170 => x"20444852", -4171 => x"5953544f", -4172 => x"4e452050", -4173 => x"524f4752", -4174 => x"414d2c20", -4175 => x"534f4d45", -4176 => x"20535452", -4177 => x"494e470a", -4178 => x"00000000", -4179 => x"4e657874", -4180 => x"5f507472", -4181 => x"5f476c6f", -4182 => x"622d3e0a", -4183 => x"00000000", -4184 => x"20202020", -4185 => x"20202020", -4186 => x"73686f75", -4187 => x"6c642062", -4188 => x"653a2020", -4189 => x"2028696d", -4190 => x"706c656d", -4191 => x"656e7461", -4192 => x"74696f6e", -4193 => x"2d646570", -4194 => x"656e6465", -4195 => x"6e74292c", -4196 => x"2073616d", -4197 => x"65206173", -4198 => x"2061626f", -4199 => x"76650a00", -4200 => x"496e745f", -4201 => x"315f4c6f", -4202 => x"633a2020", -4203 => x"20202020", -4204 => x"20202020", -4205 => x"2025640a", -4206 => x"00000000", -4207 => x"496e745f", -4208 => x"325f4c6f", -4209 => x"633a2020", -4210 => x"20202020", -4211 => x"20202020", -4212 => x"2025640a", -4213 => x"00000000", -4214 => x"496e745f", -4215 => x"335f4c6f", -4216 => x"633a2020", -4217 => x"20202020", -4218 => x"20202020", -4219 => x"2025640a", -4220 => x"00000000", -4221 => x"456e756d", -4222 => x"5f4c6f63", -4223 => x"3a202020", -4224 => x"20202020", -4225 => x"20202020", -4226 => x"2025640a", -4227 => x"00000000", -4228 => x"5374725f", -4229 => x"315f4c6f", -4230 => x"633a2020", -4231 => x"20202020", -4232 => x"20202020", -4233 => x"2025730a", -4234 => x"00000000", -4235 => x"20202020", -4236 => x"20202020", -4237 => x"73686f75", -4238 => x"6c642062", -4239 => x"653a2020", -4240 => x"20444852", -4241 => x"5953544f", -4242 => x"4e452050", -4243 => x"524f4752", -4244 => x"414d2c20", -4245 => x"31275354", -4246 => x"20535452", -4247 => x"494e470a", -4248 => x"00000000", -4249 => x"5374725f", -4250 => x"325f4c6f", -4251 => x"633a2020", -4252 => x"20202020", -4253 => x"20202020", -4254 => x"2025730a", -4255 => x"00000000", -4256 => x"20202020", -4257 => x"20202020", -4258 => x"73686f75", -4259 => x"6c642062", -4260 => x"653a2020", -4261 => x"20444852", -4262 => x"5953544f", -4263 => x"4e452050", -4264 => x"524f4752", -4265 => x"414d2c20", -4266 => x"32274e44", -4267 => x"20535452", -4268 => x"494e470a", -4269 => x"00000000", -4270 => x"55736572", -4271 => x"2074696d", -4272 => x"653a2025", -4273 => x"640a0000", -4274 => x"4d696372", -4275 => x"6f736563", -4276 => x"6f6e6473", -4277 => x"20666f72", -4278 => x"206f6e65", -4279 => x"2072756e", -4280 => x"20746872", -4281 => x"6f756768", -4282 => x"20446872", -4283 => x"7973746f", -4284 => x"6e653a20", -4285 => x"00000000", -4286 => x"2564200a", -4287 => x"00000000", -4288 => x"44687279", -4289 => x"73746f6e", -4290 => x"65732070", -4291 => x"65722053", -4292 => x"65636f6e", -4293 => x"643a2020", -4294 => x"20202020", -4295 => x"20202020", -4296 => x"20202020", -4297 => x"20202020", -4298 => x"20202020", -4299 => x"00000000", -4300 => x"56415820", -4301 => x"4d495053", -4302 => x"20726174", -4303 => x"696e6720", -4304 => x"2a203130", -4305 => x"3030203d", -4306 => x"20256420", -4307 => x"0a000000", -4308 => x"50726f67", -4309 => x"72616d20", -4310 => x"636f6d70", -4311 => x"696c6564", -4312 => x"20776974", -4313 => x"686f7574", -4314 => x"20277265", -4315 => x"67697374", -4316 => x"65722720", -4317 => x"61747472", -4318 => x"69627574", -4319 => x"650a0000", -4320 => x"4d656173", -4321 => x"75726564", -4322 => x"2074696d", -4323 => x"6520746f", -4324 => x"6f20736d", -4325 => x"616c6c20", -4326 => x"746f206f", -4327 => x"62746169", -4328 => x"6e206d65", -4329 => x"616e696e", -4330 => x"6766756c", -4331 => x"20726573", -4332 => x"756c7473", -4333 => x"0a000000", -4334 => x"506c6561", -4335 => x"73652069", -4336 => x"6e637265", -4337 => x"61736520", -4338 => x"6e756d62", -4339 => x"6572206f", -4340 => x"66207275", -4341 => x"6e730a00", -4342 => x"44485259", -4343 => x"53544f4e", -4344 => x"45205052", -4345 => x"4f475241", -4346 => x"4d2c2033", -4347 => x"27524420", -4348 => x"53545249", -4349 => x"4e470000", -4350 => x"43000000", -4351 => x"64756d6d", -4352 => x"792e6578", -4353 => x"65000000", -4354 => x"00010202", -4355 => x"03030303", -4356 => x"04040404", -4357 => x"04040404", -4358 => x"05050505", -4359 => x"05050505", -4360 => x"05050505", -4361 => x"05050505", -4362 => x"06060606", -4363 => x"06060606", -4364 => x"06060606", -4365 => x"06060606", -4366 => x"06060606", -4367 => x"06060606", -4368 => x"06060606", -4369 => x"06060606", -4370 => x"07070707", -4371 => x"07070707", -4372 => x"07070707", -4373 => x"07070707", -4374 => x"07070707", -4375 => x"07070707", -4376 => x"07070707", -4377 => x"07070707", -4378 => x"07070707", -4379 => x"07070707", -4380 => x"07070707", -4381 => x"07070707", -4382 => x"07070707", -4383 => x"07070707", -4384 => x"07070707", -4385 => x"07070707", -4386 => x"08080808", -4387 => x"08080808", -4388 => x"08080808", -4389 => x"08080808", -4390 => x"08080808", -4391 => x"08080808", -4392 => x"08080808", -4393 => x"08080808", -4394 => x"08080808", -4395 => x"08080808", -4396 => x"08080808", -4397 => x"08080808", -4398 => x"08080808", -4399 => x"08080808", -4400 => x"08080808", -4401 => x"08080808", -4402 => x"08080808", -4403 => x"08080808", -4404 => x"08080808", -4405 => x"08080808", -4406 => x"08080808", -4407 => x"08080808", -4408 => x"08080808", -4409 => x"08080808", -4410 => x"08080808", -4411 => x"08080808", -4412 => x"08080808", -4413 => x"08080808", -4414 => x"08080808", -4415 => x"08080808", -4416 => x"08080808", -4417 => x"08080808", -4418 => x"00ffffff", -4419 => x"ff00ffff", -4420 => x"ffff00ff", -4421 => x"ffffff00", -4422 => x"0000042c", -4423 => x"00000446", -4424 => x"0000046c", -4425 => x"00000498", -4426 => x"000004ca", -4427 => x"000004ec", -4428 => x"00000508", -4429 => x"0000052c", -4430 => x"00000556", -4431 => x"00000580", -4432 => x"000005a4", -4433 => x"000005be", -4434 => x"000005e0", -4435 => x"00000612", -4436 => x"0000063e", -4437 => x"00000660", -4438 => x"00000000", -4439 => x"00000000", -4440 => x"00000000", -4441 => x"00004d44", -4442 => x"0000c350", -4443 => x"00000000", -4444 => x"00000000", -4445 => x"00000000", -4446 => x"00000000", -4447 => x"00000000", -4448 => x"00000000", -4449 => x"00000000", -4450 => x"00000000", -4451 => x"00000000", -4452 => x"00000000", -4453 => x"00000000", -4454 => x"00000000", -4455 => x"00000000", -4456 => x"ffffffff", -4457 => x"00000000", -4458 => x"00020000", -4459 => x"00000000", -4460 => x"00000000", -4461 => x"000045ac", -4462 => x"000045ac", -4463 => x"000045b4", -4464 => x"000045b4", -4465 => x"000045bc", -4466 => x"000045bc", -4467 => x"000045c4", -4468 => x"000045c4", -4469 => x"000045cc", -4470 => x"000045cc", -4471 => x"000045d4", -4472 => x"000045d4", -4473 => x"000045dc", -4474 => x"000045dc", -4475 => x"000045e4", -4476 => x"000045e4", -4477 => x"000045ec", -4478 => x"000045ec", -4479 => x"000045f4", -4480 => x"000045f4", -4481 => x"000045fc", -4482 => x"000045fc", -4483 => x"00004604", -4484 => x"00004604", -4485 => x"0000460c", -4486 => x"0000460c", -4487 => x"00004614", -4488 => x"00004614", -4489 => x"0000461c", -4490 => x"0000461c", -4491 => x"00004624", -4492 => x"00004624", -4493 => x"0000462c", -4494 => x"0000462c", -4495 => x"00004634", -4496 => x"00004634", -4497 => x"0000463c", -4498 => x"0000463c", -4499 => x"00004644", -4500 => x"00004644", -4501 => x"0000464c", -4502 => x"0000464c", -4503 => x"00004654", -4504 => x"00004654", -4505 => x"0000465c", -4506 => x"0000465c", -4507 => x"00004664", -4508 => x"00004664", -4509 => x"0000466c", -4510 => x"0000466c", -4511 => x"00004674", -4512 => x"00004674", -4513 => x"0000467c", -4514 => x"0000467c", -4515 => x"00004684", -4516 => x"00004684", -4517 => x"0000468c", -4518 => x"0000468c", -4519 => x"00004694", -4520 => x"00004694", -4521 => x"0000469c", -4522 => x"0000469c", -4523 => x"000046a4", -4524 => x"000046a4", -4525 => x"000046ac", -4526 => x"000046ac", -4527 => x"000046b4", -4528 => x"000046b4", -4529 => x"000046bc", -4530 => x"000046bc", -4531 => x"000046c4", -4532 => x"000046c4", -4533 => x"000046cc", -4534 => x"000046cc", -4535 => x"000046d4", -4536 => x"000046d4", -4537 => x"000046dc", -4538 => x"000046dc", -4539 => x"000046e4", -4540 => x"000046e4", -4541 => x"000046ec", -4542 => x"000046ec", -4543 => x"000046f4", -4544 => x"000046f4", -4545 => x"000046fc", -4546 => x"000046fc", -4547 => x"00004704", -4548 => x"00004704", -4549 => x"0000470c", -4550 => x"0000470c", -4551 => x"00004714", -4552 => x"00004714", -4553 => x"0000471c", -4554 => x"0000471c", -4555 => x"00004724", -4556 => x"00004724", -4557 => x"0000472c", -4558 => x"0000472c", -4559 => x"00004734", -4560 => x"00004734", -4561 => x"0000473c", -4562 => x"0000473c", -4563 => x"00004744", -4564 => x"00004744", -4565 => x"0000474c", -4566 => x"0000474c", -4567 => x"00004754", -4568 => x"00004754", -4569 => x"0000475c", -4570 => x"0000475c", -4571 => x"00004764", -4572 => x"00004764", -4573 => x"0000476c", -4574 => x"0000476c", -4575 => x"00004774", -4576 => x"00004774", -4577 => x"0000477c", -4578 => x"0000477c", -4579 => x"00004784", -4580 => x"00004784", -4581 => x"0000478c", -4582 => x"0000478c", -4583 => x"00004794", -4584 => x"00004794", -4585 => x"0000479c", -4586 => x"0000479c", -4587 => x"000047a4", -4588 => x"000047a4", -4589 => x"000047ac", -4590 => x"000047ac", -4591 => x"000047b4", -4592 => x"000047b4", -4593 => x"000047bc", -4594 => x"000047bc", -4595 => x"000047c4", -4596 => x"000047c4", -4597 => x"000047cc", -4598 => x"000047cc", -4599 => x"000047d4", -4600 => x"000047d4", -4601 => x"000047dc", -4602 => x"000047dc", -4603 => x"000047e4", -4604 => x"000047e4", -4605 => x"000047ec", -4606 => x"000047ec", -4607 => x"000047f4", -4608 => x"000047f4", -4609 => x"000047fc", -4610 => x"000047fc", -4611 => x"00004804", -4612 => x"00004804", -4613 => x"0000480c", -4614 => x"0000480c", -4615 => x"00004814", -4616 => x"00004814", -4617 => x"0000481c", -4618 => x"0000481c", -4619 => x"00004824", -4620 => x"00004824", -4621 => x"0000482c", -4622 => x"0000482c", -4623 => x"00004834", -4624 => x"00004834", -4625 => x"0000483c", -4626 => x"0000483c", -4627 => x"00004844", -4628 => x"00004844", -4629 => x"0000484c", -4630 => x"0000484c", -4631 => x"00004854", -4632 => x"00004854", -4633 => x"0000485c", -4634 => x"0000485c", -4635 => x"00004864", -4636 => x"00004864", -4637 => x"0000486c", -4638 => x"0000486c", -4639 => x"00004874", -4640 => x"00004874", -4641 => x"0000487c", -4642 => x"0000487c", -4643 => x"00004884", -4644 => x"00004884", -4645 => x"0000488c", -4646 => x"0000488c", -4647 => x"00004894", -4648 => x"00004894", -4649 => x"0000489c", -4650 => x"0000489c", -4651 => x"000048a4", -4652 => x"000048a4", -4653 => x"000048ac", -4654 => x"000048ac", -4655 => x"000048b4", -4656 => x"000048b4", -4657 => x"000048bc", -4658 => x"000048bc", -4659 => x"000048c4", -4660 => x"000048c4", -4661 => x"000048cc", -4662 => x"000048cc", -4663 => x"000048d4", -4664 => x"000048d4", -4665 => x"000048dc", -4666 => x"000048dc", -4667 => x"000048e4", -4668 => x"000048e4", -4669 => x"000048ec", -4670 => x"000048ec", -4671 => x"000048f4", -4672 => x"000048f4", -4673 => x"000048fc", -4674 => x"000048fc", -4675 => x"00004904", -4676 => x"00004904", -4677 => x"0000490c", -4678 => x"0000490c", -4679 => x"00004914", -4680 => x"00004914", -4681 => x"0000491c", -4682 => x"0000491c", -4683 => x"00004924", -4684 => x"00004924", -4685 => x"0000492c", -4686 => x"0000492c", -4687 => x"00004934", -4688 => x"00004934", -4689 => x"0000493c", -4690 => x"0000493c", -4691 => x"00004944", -4692 => x"00004944", -4693 => x"0000494c", -4694 => x"0000494c", -4695 => x"00004954", -4696 => x"00004954", -4697 => x"0000495c", -4698 => x"0000495c", -4699 => x"00004964", -4700 => x"00004964", -4701 => x"0000496c", -4702 => x"0000496c", -4703 => x"00004974", -4704 => x"00004974", -4705 => x"0000497c", -4706 => x"0000497c", -4707 => x"00004984", -4708 => x"00004984", -4709 => x"0000498c", -4710 => x"0000498c", -4711 => x"00004994", -4712 => x"00004994", -4713 => x"0000499c", -4714 => x"0000499c", -4715 => x"000049a4", -4716 => x"000049a4", -4717 => x"000049b8", -4718 => x"00000000", -4719 => x"00004c20", -4720 => x"00004c7c", -4721 => x"00004cd8", -4722 => x"00000000", -4723 => x"00000000", -4724 => x"00000000", -4725 => x"00000000", -4726 => x"00000000", -4727 => x"00000000", -4728 => x"00000000", -4729 => x"00000000", -4730 => x"00000000", -4731 => x"000043f8", -4732 => x"00000000", -4733 => x"00000000", -4734 => x"00000000", -4735 => x"00000000", -4736 => x"00000000", -4737 => x"00000000", -4738 => x"00000000", -4739 => x"00000000", -4740 => x"00000000", -4741 => x"00000000", -4742 => x"00000000", -4743 => x"00000000", -4744 => x"00000000", -4745 => x"00000000", -4746 => x"00000000", -4747 => x"00000000", -4748 => x"00000000", -4749 => x"00000000", -4750 => x"00000000", -4751 => x"00000000", -4752 => x"00000000", -4753 => x"00000000", -4754 => x"00000000", -4755 => x"00000000", -4756 => x"00000000", -4757 => x"00000000", -4758 => x"00000000", -4759 => x"00000000", -4760 => x"00000001", -4761 => x"330eabcd", -4762 => x"1234e66d", -4763 => x"deec0005", -4764 => x"000b0000", -4765 => x"00000000", -4766 => x"00000000", -4767 => x"00000000", -4768 => x"00000000", -4769 => x"00000000", -4770 => x"00000000", -4771 => x"00000000", -4772 => x"00000000", -4773 => x"00000000", -4774 => x"00000000", -4775 => x"00000000", -4776 => x"00000000", -4777 => x"00000000", -4778 => x"00000000", -4779 => x"00000000", -4780 => x"00000000", -4781 => x"00000000", -4782 => x"00000000", -4783 => x"00000000", -4784 => x"00000000", -4785 => x"00000000", -4786 => x"00000000", -4787 => x"00000000", -4788 => x"00000000", -4789 => x"00000000", -4790 => x"00000000", -4791 => x"00000000", -4792 => x"00000000", -4793 => x"00000000", -4794 => x"00000000", -4795 => x"00000000", -4796 => x"00000000", -4797 => x"00000000", -4798 => x"00000000", -4799 => x"00000000", -4800 => x"00000000", -4801 => x"00000000", -4802 => x"00000000", -4803 => x"00000000", -4804 => x"00000000", -4805 => x"00000000", -4806 => x"00000000", -4807 => x"00000000", -4808 => x"00000000", -4809 => x"00000000", -4810 => x"00000000", -4811 => x"00000000", -4812 => x"00000000", -4813 => x"00000000", -4814 => x"00000000", -4815 => x"00000000", -4816 => x"00000000", -4817 => x"00000000", -4818 => x"00000000", -4819 => x"00000000", -4820 => x"00000000", -4821 => x"00000000", -4822 => x"00000000", -4823 => x"00000000", -4824 => x"00000000", -4825 => x"00000000", -4826 => x"00000000", -4827 => x"00000000", -4828 => x"00000000", -4829 => x"00000000", -4830 => x"00000000", -4831 => x"00000000", -4832 => x"00000000", -4833 => x"00000000", -4834 => x"00000000", -4835 => x"00000000", -4836 => x"00000000", -4837 => x"00000000", -4838 => x"00000000", -4839 => x"00000000", -4840 => x"00000000", -4841 => x"00000000", -4842 => x"00000000", -4843 => x"00000000", -4844 => x"00000000", -4845 => x"00000000", -4846 => x"00000000", -4847 => x"00000000", -4848 => x"00000000", -4849 => x"00000000", -4850 => x"00000000", -4851 => x"00000000", -4852 => x"00000000", -4853 => x"00000000", -4854 => x"00000000", -4855 => x"00000000", -4856 => x"00000000", -4857 => x"00000000", -4858 => x"00000000", -4859 => x"00000000", -4860 => x"00000000", -4861 => x"00000000", -4862 => x"00000000", -4863 => x"00000000", -4864 => x"00000000", -4865 => x"00000000", -4866 => x"00000000", -4867 => x"00000000", -4868 => x"00000000", -4869 => x"00000000", -4870 => x"00000000", -4871 => x"00000000", -4872 => x"00000000", -4873 => x"00000000", -4874 => x"00000000", -4875 => x"00000000", -4876 => x"00000000", -4877 => x"00000000", -4878 => x"00000000", -4879 => x"00000000", -4880 => x"00000000", -4881 => x"00000000", -4882 => x"00000000", -4883 => x"00000000", -4884 => x"00000000", -4885 => x"00000000", -4886 => x"00000000", -4887 => x"00000000", -4888 => x"00000000", -4889 => x"00000000", -4890 => x"00000000", -4891 => x"00000000", -4892 => x"00000000", -4893 => x"00000000", -4894 => x"00000000", -4895 => x"00000000", -4896 => x"00000000", -4897 => x"00000000", -4898 => x"00000000", -4899 => x"00000000", -4900 => x"00000000", -4901 => x"00000000", -4902 => x"00000000", -4903 => x"00000000", -4904 => x"00000000", -4905 => x"00000000", -4906 => x"00000000", -4907 => x"00000000", -4908 => x"00000000", -4909 => x"00000000", -4910 => x"00000000", -4911 => x"00000000", -4912 => x"00000000", -4913 => x"00000000", -4914 => x"00000000", -4915 => x"00000000", -4916 => x"00000000", -4917 => x"00000000", -4918 => x"00000000", -4919 => x"00000000", -4920 => x"00000000", -4921 => x"00000000", -4922 => x"00000000", -4923 => x"00000000", -4924 => x"00000000", -4925 => x"00000000", -4926 => x"00000000", -4927 => x"00000000", -4928 => x"00000000", -4929 => x"00000000", -4930 => x"00000000", -4931 => x"00000000", -4932 => x"00000000", -4933 => x"00000000", -4934 => x"00000000", -4935 => x"00000000", -4936 => x"00000000", -4937 => x"00000000", -4938 => x"00000000", -4939 => x"00000000", -4940 => x"00000000", -4941 => x"000043fc", -4942 => x"ffffffff", -4943 => x"00000000", -4944 => x"ffffffff", -4945 => x"00000000", - others => x"00000000" -); - -attribute syn_ramstyle : string; -attribute syn_ramstyle of ram : signal is "no_rw_check" ; - -begin - -process (clk) -begin - if (clk'event and clk = '1') then - if (memAWriteEnable = '1') then - ram(conv_integer(memAAddr)) <= memAWrite; - memARead <= memAWrite; - else - memARead <= ram(conv_integer(memAAddr)); - end if; - end if; -end process; - -process (clk) -begin - if (clk'event and clk = '1') then - if (memBWriteEnable = '1') then - ram(conv_integer(memBAddr)) <= memBWrite; - memBRead <= memBWrite; - else - memBRead <= ram(conv_integer(memBAddr)); - end if; - end if; -end process; - - - - -end dualport_ram_arch; diff --git a/zpu/hdl/zpu3/src/helloworld_ram.vhd b/zpu/hdl/zpu3/src/helloworld_ram.vhd deleted file mode 100644 index 2e1d35d..0000000 --- a/zpu/hdl/zpu3/src/helloworld_ram.vhd +++ /dev/null @@ -1,3345 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_unsigned.all;
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-
-entity dualport_ram is
-port (clk : in std_logic;
- memAWriteEnable : in std_logic;
- memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memAWrite : in std_logic_vector(wordSize-1 downto 0);
- memARead : out std_logic_vector(wordSize-1 downto 0);
- memBWriteEnable : in std_logic;
- memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memBWrite : in std_logic_vector(wordSize-1 downto 0);
- memBRead : out std_logic_vector(wordSize-1 downto 0));
-end dualport_ram;
-
-architecture dualport_ram_arch of dualport_ram is
-
-
-type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
-
-shared variable ram : ram_type :=
-(
-0 => x"800b0b0b",
-1 => x"0b0b8070",
-2 => x"0b0b80d6",
-3 => x"f00c3a0b",
-4 => x"0b80cd92",
-5 => x"04000000",
-6 => x"00000000",
-7 => x"00000000",
-8 => x"80088408",
-9 => x"88080b0b",
-10 => x"80cde02d",
-11 => x"880c840c",
-12 => x"800c0400",
-13 => x"00000000",
-14 => x"00000000",
-15 => x"00000000",
-16 => x"71fd0608",
-17 => x"72830609",
-18 => x"81058205",
-19 => x"832b0b2a",
-20 => x"83ffff06",
-21 => x"52040000",
-22 => x"00000000",
-23 => x"00000000",
-24 => x"71fd0608",
-25 => x"83ffff73",
-26 => x"83060981",
-27 => x"05820583",
-28 => x"2b0b2b09",
-29 => x"067383ff",
-30 => x"ff0b0b0b",
-31 => x"0b83a504",
-32 => x"72098105",
-33 => x"72057373",
-34 => x"09060906",
-35 => x"73097306",
-36 => x"070a8106",
-37 => x"53510400",
-38 => x"00000000",
-39 => x"00000000",
-40 => x"72722473",
-41 => x"732e0753",
-42 => x"51040000",
-43 => x"00000000",
-44 => x"00000000",
-45 => x"00000000",
-46 => x"00000000",
-47 => x"00000000",
-48 => x"71737109",
-49 => x"71068106",
-50 => x"30720a10",
-51 => x"0a720a10",
-52 => x"0a31050a",
-53 => x"81065151",
-54 => x"53510400",
-55 => x"00000000",
-56 => x"72722673",
-57 => x"732e0753",
-58 => x"51040000",
-59 => x"00000000",
-60 => x"00000000",
-61 => x"00000000",
-62 => x"00000000",
-63 => x"00000000",
-64 => x"00000000",
-65 => x"00000000",
-66 => x"00000000",
-67 => x"00000000",
-68 => x"00000000",
-69 => x"00000000",
-70 => x"00000000",
-71 => x"00000000",
-72 => x"72728072",
-73 => x"8106ff05",
-74 => x"09720605",
-75 => x"71105272",
-76 => x"0a100a53",
-77 => x"72ed3851",
-78 => x"51535104",
-79 => x"00000000",
-80 => x"720a722b",
-81 => x"0a535104",
-82 => x"00000000",
-83 => x"00000000",
-84 => x"00000000",
-85 => x"00000000",
-86 => x"00000000",
-87 => x"00000000",
-88 => x"72729f06",
-89 => x"0981050b",
-90 => x"0b0b88a7",
-91 => x"05040000",
-92 => x"00000000",
-93 => x"00000000",
-94 => x"00000000",
-95 => x"00000000",
-96 => x"72722aff",
-97 => x"739f062a",
-98 => x"0974090a",
-99 => x"8106ff05",
-100 => x"06075351",
-101 => x"04000000",
-102 => x"00000000",
-103 => x"00000000",
-104 => x"71715351",
-105 => x"04067383",
-106 => x"06098105",
-107 => x"8205832b",
-108 => x"0b2b0772",
-109 => x"fc060c51",
-110 => x"51040000",
-111 => x"00000000",
-112 => x"72098105",
-113 => x"72050970",
-114 => x"81050906",
-115 => x"0a810653",
-116 => x"51040000",
-117 => x"00000000",
-118 => x"00000000",
-119 => x"00000000",
-120 => x"72098105",
-121 => x"72050970",
-122 => x"81050906",
-123 => x"0a098106",
-124 => x"53510400",
-125 => x"00000000",
-126 => x"00000000",
-127 => x"00000000",
-128 => x"71098105",
-129 => x"52040000",
-130 => x"00000000",
-131 => x"00000000",
-132 => x"00000000",
-133 => x"00000000",
-134 => x"00000000",
-135 => x"00000000",
-136 => x"72720981",
-137 => x"05055351",
-138 => x"04098105",
-139 => x"83051010",
-140 => x"102b0772",
-141 => x"fc060c51",
-142 => x"51040000",
-143 => x"00000000",
-144 => x"72097206",
-145 => x"73730906",
-146 => x"07535104",
-147 => x"00000000",
-148 => x"00000000",
-149 => x"00000000",
-150 => x"00000000",
-151 => x"00000000",
-152 => x"71fc0608",
-153 => x"72830609",
-154 => x"81058305",
-155 => x"1010102a",
-156 => x"81ff0652",
-157 => x"04000000",
-158 => x"00000000",
-159 => x"00000000",
-160 => x"71fc0608",
-161 => x"0b0b80d6",
-162 => x"dc738306",
-163 => x"10100508",
-164 => x"067381ff",
-165 => x"06738306",
-166 => x"0b0b0b84",
-167 => x"a9040000",
-168 => x"80088408",
-169 => x"88087575",
-170 => x"0b0b0b8e",
-171 => x"fd2d5050",
-172 => x"80085688",
-173 => x"0c840c80",
-174 => x"0c510400",
-175 => x"00000000",
-176 => x"80088408",
-177 => x"88087575",
-178 => x"0b0b0b90",
-179 => x"af2d5050",
-180 => x"80085688",
-181 => x"0c840c80",
-182 => x"0c510400",
-183 => x"00000000",
-184 => x"72097081",
-185 => x"0509060a",
-186 => x"8106ff05",
-187 => x"70547106",
-188 => x"73097274",
-189 => x"05ff0506",
-190 => x"07535050",
-191 => x"04000000",
-192 => x"72097081",
-193 => x"0509060a",
-194 => x"098106ff",
-195 => x"05705471",
-196 => x"06730972",
-197 => x"7405ff05",
-198 => x"06075350",
-199 => x"50040000",
-200 => x"05ff0504",
-201 => x"00000000",
-202 => x"00000000",
-203 => x"00000000",
-204 => x"00000000",
-205 => x"00000000",
-206 => x"00000000",
-207 => x"00000000",
-208 => x"810b0b0b",
-209 => x"80d6ec0c",
-210 => x"51040000",
-211 => x"00000000",
-212 => x"00000000",
-213 => x"00000000",
-214 => x"00000000",
-215 => x"00000000",
-216 => x"71810552",
-217 => x"04000000",
-218 => x"00000000",
-219 => x"00000000",
-220 => x"00000000",
-221 => x"00000000",
-222 => x"00000000",
-223 => x"00000000",
-224 => x"00000000",
-225 => x"00000000",
-226 => x"00000000",
-227 => x"00000000",
-228 => x"00000000",
-229 => x"00000000",
-230 => x"00000000",
-231 => x"00000000",
-232 => x"02840572",
-233 => x"10100552",
-234 => x"04000000",
-235 => x"00000000",
-236 => x"00000000",
-237 => x"00000000",
-238 => x"00000000",
-239 => x"00000000",
-240 => x"00000000",
-241 => x"00000000",
-242 => x"00000000",
-243 => x"00000000",
-244 => x"00000000",
-245 => x"00000000",
-246 => x"00000000",
-247 => x"00000000",
-248 => x"717105ff",
-249 => x"05715351",
-250 => x"04000000",
-251 => x"00000000",
-252 => x"00000000",
-253 => x"00000000",
-254 => x"00000000",
-255 => x"00000000",
-256 => x"839f3f80",
-257 => x"cdf83f04",
-258 => x"10101010",
-259 => x"10101010",
-260 => x"10101010",
-261 => x"10101010",
-262 => x"10101010",
-263 => x"10101010",
-264 => x"10101010",
-265 => x"10101053",
-266 => x"51043c04",
-267 => x"70700b0b",
-268 => x"80e6d808",
-269 => x"52841208",
-270 => x"70810651",
-271 => x"5170f638",
-272 => x"710881ff",
-273 => x"06800c50",
-274 => x"50047070",
-275 => x"0b0b80e6",
-276 => x"d8085284",
-277 => x"1208700a",
-278 => x"100a7081",
-279 => x"06515151",
-280 => x"70f13873",
-281 => x"720c5050",
-282 => x"0480d6ec",
-283 => x"08802ea8",
-284 => x"38838080",
-285 => x"0b0b0b80",
-286 => x"e6d80c82",
-287 => x"a0800b0b",
-288 => x"0b80e6dc",
-289 => x"0c829080",
-290 => x"0b80e6ec",
-291 => x"0c0b0b80",
-292 => x"e6e00b80",
-293 => x"e6f00c04",
-294 => x"f8808080",
-295 => x"a40b0b0b",
-296 => x"80e6d80c",
-297 => x"f8808082",
-298 => x"800b0b0b",
-299 => x"80e6dc0c",
-300 => x"f8808084",
-301 => x"800b80e6",
-302 => x"ec0cf880",
-303 => x"8080940b",
-304 => x"80e6f00c",
-305 => x"f8808080",
-306 => x"9c0b80e6",
-307 => x"e80cf880",
-308 => x"8080a00b",
-309 => x"80e6f40c",
-310 => x"04f23d0d",
-311 => x"600b0b80",
-312 => x"e6dc0856",
-313 => x"5d82750c",
-314 => x"8059805a",
-315 => x"800b8f3d",
-316 => x"71101017",
-317 => x"70085a57",
-318 => x"5d5b8077",
-319 => x"81ff067c",
-320 => x"832b5658",
-321 => x"5276537b",
-322 => x"5182fc3f",
-323 => x"7d7f7a72",
-324 => x"077c7207",
-325 => x"71716081",
-326 => x"05415f5d",
-327 => x"5b595755",
-328 => x"7a8724bb",
-329 => x"380b0b80",
-330 => x"e6dc087b",
-331 => x"10101170",
-332 => x"08595155",
-333 => x"807781ff",
-334 => x"067c832b",
-335 => x"56585276",
-336 => x"537b5182",
-337 => x"c23f7d7f",
-338 => x"7a72077c",
-339 => x"72077171",
-340 => x"60810541",
-341 => x"5f5d5b59",
-342 => x"5755877b",
-343 => x"25c73876",
-344 => x"7d0c7784",
-345 => x"1e0c7c80",
-346 => x"0c903d0d",
-347 => x"04707080",
-348 => x"e6e43351",
-349 => x"70a73880",
-350 => x"d6f80870",
-351 => x"08525270",
-352 => x"802e9438",
-353 => x"841280d6",
-354 => x"f80c702d",
-355 => x"80d6f808",
-356 => x"70085252",
-357 => x"70ee3881",
-358 => x"0b80e6e4",
-359 => x"34505004",
-360 => x"04700b0b",
-361 => x"80e6d408",
-362 => x"802e8e38",
-363 => x"0b0b0b0b",
-364 => x"800b802e",
-365 => x"09810683",
-366 => x"3850040b",
-367 => x"0b80e6d4",
-368 => x"510b0b0b",
-369 => x"f4ba3f50",
-370 => x"04048c08",
-371 => x"028c0c70",
-372 => x"70707080",
-373 => x"0b8c08fc",
-374 => x"050c8c08",
-375 => x"fc050889",
-376 => x"24818e38",
-377 => x"0b0b80d6",
-378 => x"a85188f3",
-379 => x"3f0b0b80",
-380 => x"d6b85188",
-381 => x"ea3ffc0b",
-382 => x"80e6f80c",
-383 => x"80e6f808",
-384 => x"812c5372",
-385 => x"fe2e8438",
-386 => x"86f13f8a",
-387 => x"0b80e6fc",
-388 => x"0c80e6fc",
-389 => x"0880e6f8",
-390 => x"08295372",
-391 => x"d82e8438",
-392 => x"86d93f8a",
-393 => x"0b80e6f8",
-394 => x"0c84e2ad",
-395 => x"800b80e6",
-396 => x"fc0c80e6",
-397 => x"fc0880e6",
-398 => x"f8082953",
-399 => x"72afd7c2",
-400 => x"802e8438",
-401 => x"86b53f81",
-402 => x"0a0b80e6",
-403 => x"f80cff0b",
-404 => x"80e6fc0c",
-405 => x"80e6fc08",
-406 => x"80e6f808",
-407 => x"25843886",
-408 => x"9a3f8c08",
-409 => x"fc050881",
-410 => x"058c08fc",
-411 => x"050cfeea",
-412 => x"398c08fc",
-413 => x"05088a2e",
-414 => x"843885ff",
-415 => x"3f72800c",
-416 => x"50505050",
-417 => x"8c0c048c",
-418 => x"08028c0c",
-419 => x"f53d0d8c",
-420 => x"08940508",
-421 => x"9d388c08",
-422 => x"8c05088c",
-423 => x"08900508",
-424 => x"8c088805",
-425 => x"08585654",
-426 => x"73760c74",
-427 => x"84170c81",
-428 => x"bf39800b",
-429 => x"8c08f005",
-430 => x"0c800b8c",
-431 => x"08f4050c",
-432 => x"8c088c05",
-433 => x"088c0890",
-434 => x"05085654",
-435 => x"738c08f0",
-436 => x"050c748c",
-437 => x"08f4050c",
-438 => x"8c08f805",
-439 => x"8c08f005",
-440 => x"56568870",
-441 => x"54755376",
-442 => x"5254859a",
-443 => x"3fa00b8c",
-444 => x"08940508",
-445 => x"318c08ec",
-446 => x"050c8c08",
-447 => x"ec050880",
-448 => x"249d3880",
-449 => x"0b8c08f4",
-450 => x"050c8c08",
-451 => x"ec050830",
-452 => x"8c08fc05",
-453 => x"08712b8c",
-454 => x"08f0050c",
-455 => x"54b9398c",
-456 => x"08fc0508",
-457 => x"8c08ec05",
-458 => x"082a8c08",
-459 => x"e8050c8c",
-460 => x"08fc0508",
-461 => x"8c089405",
-462 => x"082b8c08",
-463 => x"f4050c8c",
-464 => x"08f80508",
-465 => x"8c089405",
-466 => x"082b708c",
-467 => x"08e80508",
-468 => x"078c08f0",
-469 => x"050c548c",
-470 => x"08f00508",
-471 => x"8c08f405",
-472 => x"088c0888",
-473 => x"05085856",
-474 => x"5473760c",
-475 => x"7484170c",
-476 => x"8c088805",
-477 => x"08800c8d",
-478 => x"3d0d8c0c",
-479 => x"048c0802",
-480 => x"8c0cf93d",
-481 => x"0d800b8c",
-482 => x"08fc050c",
-483 => x"8c088805",
-484 => x"088025ab",
-485 => x"388c0888",
-486 => x"0508308c",
-487 => x"0888050c",
-488 => x"800b8c08",
-489 => x"f4050c8c",
-490 => x"08fc0508",
-491 => x"8838810b",
-492 => x"8c08f405",
-493 => x"0c8c08f4",
-494 => x"05088c08",
-495 => x"fc050c8c",
-496 => x"088c0508",
-497 => x"8025ab38",
-498 => x"8c088c05",
-499 => x"08308c08",
-500 => x"8c050c80",
-501 => x"0b8c08f0",
-502 => x"050c8c08",
-503 => x"fc050888",
-504 => x"38810b8c",
-505 => x"08f0050c",
-506 => x"8c08f005",
-507 => x"088c08fc",
-508 => x"050c8053",
-509 => x"8c088c05",
-510 => x"08528c08",
-511 => x"88050851",
-512 => x"81a73f80",
-513 => x"08708c08",
-514 => x"f8050c54",
-515 => x"8c08fc05",
-516 => x"08802e8c",
-517 => x"388c08f8",
-518 => x"0508308c",
-519 => x"08f8050c",
-520 => x"8c08f805",
-521 => x"0870800c",
-522 => x"54893d0d",
-523 => x"8c0c048c",
-524 => x"08028c0c",
-525 => x"fb3d0d80",
-526 => x"0b8c08fc",
-527 => x"050c8c08",
-528 => x"88050880",
-529 => x"2593388c",
-530 => x"08880508",
-531 => x"308c0888",
-532 => x"050c810b",
-533 => x"8c08fc05",
-534 => x"0c8c088c",
-535 => x"05088025",
-536 => x"8c388c08",
-537 => x"8c050830",
-538 => x"8c088c05",
-539 => x"0c81538c",
-540 => x"088c0508",
-541 => x"528c0888",
-542 => x"050851ad",
-543 => x"3f800870",
-544 => x"8c08f805",
-545 => x"0c548c08",
-546 => x"fc050880",
-547 => x"2e8c388c",
-548 => x"08f80508",
-549 => x"308c08f8",
-550 => x"050c8c08",
-551 => x"f8050870",
-552 => x"800c5487",
-553 => x"3d0d8c0c",
-554 => x"048c0802",
-555 => x"8c0c7070",
-556 => x"7070810b",
-557 => x"8c08fc05",
-558 => x"0c800b8c",
-559 => x"08f8050c",
-560 => x"8c088c05",
-561 => x"088c0888",
-562 => x"050827ac",
-563 => x"388c08fc",
-564 => x"0508802e",
-565 => x"a338800b",
-566 => x"8c088c05",
-567 => x"08249938",
-568 => x"8c088c05",
-569 => x"08108c08",
-570 => x"8c050c8c",
-571 => x"08fc0508",
-572 => x"108c08fc",
-573 => x"050cc939",
-574 => x"8c08fc05",
-575 => x"08802e80",
-576 => x"c9388c08",
-577 => x"8c05088c",
-578 => x"08880508",
-579 => x"26a1388c",
-580 => x"08880508",
-581 => x"8c088c05",
-582 => x"08318c08",
-583 => x"88050c8c",
-584 => x"08f80508",
-585 => x"8c08fc05",
-586 => x"08078c08",
-587 => x"f8050c8c",
-588 => x"08fc0508",
-589 => x"812a8c08",
-590 => x"fc050c8c",
-591 => x"088c0508",
-592 => x"812a8c08",
-593 => x"8c050cff",
-594 => x"af398c08",
-595 => x"90050880",
-596 => x"2e8f388c",
-597 => x"08880508",
-598 => x"708c08f4",
-599 => x"050c518d",
-600 => x"398c08f8",
-601 => x"0508708c",
-602 => x"08f4050c",
-603 => x"518c08f4",
-604 => x"0508800c",
-605 => x"50505050",
-606 => x"8c0c0470",
-607 => x"865184ea",
-608 => x"3f8151ba",
-609 => x"d83ffc3d",
-610 => x"0d767079",
-611 => x"7b555555",
-612 => x"558f7227",
-613 => x"8c387275",
-614 => x"07830651",
-615 => x"70802ea7",
-616 => x"38ff1252",
-617 => x"71ff2e98",
-618 => x"38727081",
-619 => x"05543374",
-620 => x"70810556",
-621 => x"34ff1252",
-622 => x"71ff2e09",
-623 => x"8106ea38",
-624 => x"74800c86",
-625 => x"3d0d0474",
-626 => x"51727084",
-627 => x"05540871",
-628 => x"70840553",
-629 => x"0c727084",
-630 => x"05540871",
-631 => x"70840553",
-632 => x"0c727084",
-633 => x"05540871",
-634 => x"70840553",
-635 => x"0c727084",
-636 => x"05540871",
-637 => x"70840553",
-638 => x"0cf01252",
-639 => x"718f26c9",
-640 => x"38837227",
-641 => x"95387270",
-642 => x"84055408",
-643 => x"71708405",
-644 => x"530cfc12",
-645 => x"52718326",
-646 => x"ed387054",
-647 => x"ff8339f7",
-648 => x"3d0d7c70",
-649 => x"525384b8",
-650 => x"3f725480",
-651 => x"085580d6",
-652 => x"c8568157",
-653 => x"80088105",
-654 => x"5a8b3de4",
-655 => x"11595382",
-656 => x"59f41352",
-657 => x"7b881108",
-658 => x"525384f5",
-659 => x"3f800830",
-660 => x"70800807",
-661 => x"9f2c8a07",
-662 => x"800c538b",
-663 => x"3d0d0470",
-664 => x"70735280",
-665 => x"d6fc0851",
-666 => x"ffb53f50",
-667 => x"50047070",
-668 => x"70707553",
-669 => x"84d81308",
-670 => x"802e8b38",
-671 => x"80537280",
-672 => x"0c505050",
-673 => x"50048180",
-674 => x"5272518a",
-675 => x"9b3f8008",
-676 => x"84d8140c",
-677 => x"ff538008",
-678 => x"802ee338",
-679 => x"8008549f",
-680 => x"53807470",
-681 => x"8405560c",
-682 => x"ff135380",
-683 => x"7324cd38",
-684 => x"80747084",
-685 => x"05560cff",
-686 => x"13537280",
-687 => x"25e338ff",
-688 => x"bb397070",
-689 => x"70707577",
-690 => x"55539f74",
-691 => x"278e3896",
-692 => x"730cff52",
-693 => x"71800c50",
-694 => x"50505004",
-695 => x"84d81308",
-696 => x"5271802e",
-697 => x"94387310",
-698 => x"10127008",
-699 => x"79720c51",
-700 => x"5271800c",
-701 => x"50505050",
-702 => x"047251fe",
-703 => x"f13fff52",
-704 => x"8008d138",
-705 => x"84d81308",
-706 => x"74101011",
-707 => x"70087a72",
-708 => x"0c515152",
-709 => x"dc39f93d",
-710 => x"0d797b58",
-711 => x"56769f26",
-712 => x"80e83884",
-713 => x"d8160854",
-714 => x"73802eaa",
-715 => x"38761010",
-716 => x"14700855",
-717 => x"5573802e",
-718 => x"ba388058",
-719 => x"73812e8f",
-720 => x"3873ff2e",
-721 => x"a3388075",
-722 => x"0c765173",
-723 => x"2d805877",
-724 => x"800c893d",
-725 => x"0d047551",
-726 => x"fe943fff",
-727 => x"588008ef",
-728 => x"3884d816",
-729 => x"0854c639",
-730 => x"96760c81",
-731 => x"0b800c89",
-732 => x"3d0d0475",
-733 => x"5181e53f",
-734 => x"76538008",
-735 => x"52755181",
-736 => x"a53f8008",
-737 => x"800c893d",
-738 => x"0d049676",
-739 => x"0cff0b80",
-740 => x"0c893d0d",
-741 => x"04fc3d0d",
-742 => x"76785653",
-743 => x"ff54749f",
-744 => x"26b13884",
-745 => x"d8130852",
-746 => x"71802eae",
-747 => x"38741010",
-748 => x"12700853",
-749 => x"53815471",
-750 => x"802e9838",
-751 => x"825471ff",
-752 => x"2e913883",
-753 => x"5471812e",
-754 => x"8a388073",
-755 => x"0c745171",
-756 => x"2d805473",
-757 => x"800c863d",
-758 => x"0d047251",
-759 => x"fd903f80",
-760 => x"08f13884",
-761 => x"d8130852",
-762 => x"c4397070",
-763 => x"735280d6",
-764 => x"fc0851fe",
-765 => x"a13f5050",
-766 => x"04707070",
-767 => x"75537452",
-768 => x"80d6fc08",
-769 => x"51fdbb3f",
-770 => x"50505004",
-771 => x"7080d6fc",
-772 => x"0851fcda",
-773 => x"3f500470",
-774 => x"70735280",
-775 => x"d6fc0851",
-776 => x"fef33f50",
-777 => x"5004fc3d",
-778 => x"0d800b80",
-779 => x"e7800c78",
-780 => x"527751b4",
-781 => x"9b3f8008",
-782 => x"548008ff",
-783 => x"2e883873",
-784 => x"800c863d",
-785 => x"0d0480e7",
-786 => x"80085574",
-787 => x"802ef038",
-788 => x"7675710c",
-789 => x"5373800c",
-790 => x"863d0d04",
-791 => x"b3ed3f04",
-792 => x"70707070",
-793 => x"75707183",
-794 => x"06535552",
-795 => x"70b83871",
-796 => x"70087009",
-797 => x"f7fbfdff",
-798 => x"120670f8",
-799 => x"84828180",
-800 => x"06515152",
-801 => x"53709d38",
-802 => x"84137008",
-803 => x"7009f7fb",
-804 => x"fdff1206",
-805 => x"70f88482",
-806 => x"81800651",
-807 => x"51525370",
-808 => x"802ee538",
-809 => x"72527133",
-810 => x"5170802e",
-811 => x"8a388112",
-812 => x"70335252",
-813 => x"70f83871",
-814 => x"7431800c",
-815 => x"50505050",
-816 => x"04f23d0d",
-817 => x"60628811",
-818 => x"08705757",
-819 => x"5f5a7480",
-820 => x"2e819038",
-821 => x"8c1a2270",
-822 => x"832a8132",
-823 => x"70810651",
-824 => x"55587386",
-825 => x"38901a08",
-826 => x"91387951",
-827 => x"9cd03fff",
-828 => x"54800880",
-829 => x"ee388c1a",
-830 => x"22587d08",
-831 => x"57807883",
-832 => x"ffff0670",
-833 => x"0a100a70",
-834 => x"81065156",
-835 => x"57557375",
-836 => x"2e80d738",
-837 => x"74903876",
-838 => x"08841808",
-839 => x"88195956",
-840 => x"5974802e",
-841 => x"f2387454",
-842 => x"88807527",
-843 => x"84388880",
-844 => x"54735378",
-845 => x"529c1a08",
-846 => x"51a41a08",
-847 => x"54732d80",
-848 => x"0b800825",
-849 => x"82e63880",
-850 => x"08197580",
-851 => x"08317f88",
-852 => x"05088008",
-853 => x"31706188",
-854 => x"050c5656",
-855 => x"5973ffb4",
-856 => x"38805473",
-857 => x"800c903d",
-858 => x"0d047581",
-859 => x"32708106",
-860 => x"76415154",
-861 => x"73802e81",
-862 => x"c1387490",
-863 => x"38760884",
-864 => x"18088819",
-865 => x"59565974",
-866 => x"802ef238",
-867 => x"881a0878",
-868 => x"83ffff06",
-869 => x"70892a70",
-870 => x"81065156",
-871 => x"59567380",
-872 => x"2e82fa38",
-873 => x"7575278d",
-874 => x"3877872a",
-875 => x"70810651",
-876 => x"547382b5",
-877 => x"38747627",
-878 => x"83387456",
-879 => x"75537852",
-880 => x"79085190",
-881 => x"f83f881a",
-882 => x"08763188",
-883 => x"1b0c7908",
-884 => x"167a0c74",
-885 => x"56751975",
-886 => x"77317f88",
-887 => x"05087831",
-888 => x"70618805",
-889 => x"0c565659",
-890 => x"73802efe",
-891 => x"f4388c1a",
-892 => x"2258ff86",
-893 => x"39777854",
-894 => x"79537b52",
-895 => x"5690be3f",
-896 => x"881a0878",
-897 => x"31881b0c",
-898 => x"7908187a",
-899 => x"0c7c7631",
-900 => x"5d7c8e38",
-901 => x"79519c8a",
-902 => x"3f800881",
-903 => x"8f388008",
-904 => x"5f751975",
-905 => x"77317f88",
-906 => x"05087831",
-907 => x"70618805",
-908 => x"0c565659",
-909 => x"73802efe",
-910 => x"a8387481",
-911 => x"83387608",
-912 => x"84180888",
-913 => x"19595659",
-914 => x"74802ef2",
-915 => x"3874538a",
-916 => x"5278518e",
-917 => x"c93f8008",
-918 => x"79318105",
-919 => x"5d800884",
-920 => x"3881155d",
-921 => x"815f7c58",
-922 => x"747d2783",
-923 => x"38745894",
-924 => x"1a08881b",
-925 => x"0811575c",
-926 => x"807a085c",
-927 => x"54901a08",
-928 => x"7b278338",
-929 => x"81547578",
-930 => x"25843873",
-931 => x"ba387b78",
-932 => x"24fee238",
-933 => x"7b537852",
-934 => x"9c1a0851",
-935 => x"a41a0854",
-936 => x"732d8008",
-937 => x"56800880",
-938 => x"24fee238",
-939 => x"8c1a2280",
-940 => x"c0075473",
-941 => x"8c1b23ff",
-942 => x"5473800c",
-943 => x"903d0d04",
-944 => x"7effa338",
-945 => x"ff873975",
-946 => x"5378527a",
-947 => x"518eee3f",
-948 => x"7908167a",
-949 => x"0c79519a",
-950 => x"c93f8008",
-951 => x"cf387c76",
-952 => x"315d7cfe",
-953 => x"bc38feac",
-954 => x"39901a08",
-955 => x"7a087131",
-956 => x"76117056",
-957 => x"5a575280",
-958 => x"d6fc0851",
-959 => x"90843f80",
-960 => x"08802eff",
-961 => x"a7388008",
-962 => x"901b0c80",
-963 => x"08167a0c",
-964 => x"77941b0c",
-965 => x"74881b0c",
-966 => x"7456fd99",
-967 => x"39790858",
-968 => x"901a0878",
-969 => x"27833881",
-970 => x"54757527",
-971 => x"843873b3",
-972 => x"38941a08",
-973 => x"56757526",
-974 => x"80d33875",
-975 => x"5378529c",
-976 => x"1a0851a4",
-977 => x"1a085473",
-978 => x"2d800856",
-979 => x"80088024",
-980 => x"fd83388c",
-981 => x"1a2280c0",
-982 => x"0754738c",
-983 => x"1b23ff54",
-984 => x"fed73975",
-985 => x"53785277",
-986 => x"518dd23f",
-987 => x"7908167a",
-988 => x"0c795199",
-989 => x"ad3f8008",
-990 => x"802efcd9",
-991 => x"388c1a22",
-992 => x"80c00754",
-993 => x"738c1b23",
-994 => x"ff54fead",
-995 => x"39747554",
-996 => x"79537852",
-997 => x"568da63f",
-998 => x"881a0875",
-999 => x"31881b0c",
-1000 => x"7908157a",
-1001 => x"0cfcae39",
-1002 => x"f33d0d7f",
-1003 => x"618b1170",
-1004 => x"f8065c55",
-1005 => x"555e7296",
-1006 => x"26833890",
-1007 => x"59807924",
-1008 => x"747a2607",
-1009 => x"53805472",
-1010 => x"742e0981",
-1011 => x"0680cb38",
-1012 => x"7d518eac",
-1013 => x"3f7883f7",
-1014 => x"2680c638",
-1015 => x"78832a70",
-1016 => x"10101080",
-1017 => x"deb8058c",
-1018 => x"11085959",
-1019 => x"5a76782e",
-1020 => x"83b03884",
-1021 => x"1708fc06",
-1022 => x"568c1708",
-1023 => x"88180871",
-1024 => x"8c120c88",
-1025 => x"120c5875",
-1026 => x"17841108",
-1027 => x"81078412",
-1028 => x"0c537d51",
-1029 => x"8deb3f88",
-1030 => x"17547380",
-1031 => x"0c8f3d0d",
-1032 => x"0478892a",
-1033 => x"79832a5b",
-1034 => x"5372802e",
-1035 => x"bf387886",
-1036 => x"2ab8055a",
-1037 => x"847327b4",
-1038 => x"3880db13",
-1039 => x"5a947327",
-1040 => x"ab38788c",
-1041 => x"2a80ee05",
-1042 => x"5a80d473",
-1043 => x"279e3878",
-1044 => x"8f2a80f7",
-1045 => x"055a82d4",
-1046 => x"73279138",
-1047 => x"78922a80",
-1048 => x"fc055a8a",
-1049 => x"d4732784",
-1050 => x"3880fe5a",
-1051 => x"79101010",
-1052 => x"80deb805",
-1053 => x"8c110858",
-1054 => x"5576752e",
-1055 => x"a3388417",
-1056 => x"08fc0670",
-1057 => x"7a315556",
-1058 => x"738f2488",
-1059 => x"d5387380",
-1060 => x"25fee638",
-1061 => x"8c170857",
-1062 => x"76752e09",
-1063 => x"8106df38",
-1064 => x"811a5a80",
-1065 => x"dec80857",
-1066 => x"7680dec0",
-1067 => x"2e82c038",
-1068 => x"841708fc",
-1069 => x"06707a31",
-1070 => x"5556738f",
-1071 => x"2481f938",
-1072 => x"80dec00b",
-1073 => x"80decc0c",
-1074 => x"80dec00b",
-1075 => x"80dec80c",
-1076 => x"738025fe",
-1077 => x"b23883ff",
-1078 => x"762783df",
-1079 => x"3875892a",
-1080 => x"76832a55",
-1081 => x"5372802e",
-1082 => x"bf387586",
-1083 => x"2ab80554",
-1084 => x"847327b4",
-1085 => x"3880db13",
-1086 => x"54947327",
-1087 => x"ab38758c",
-1088 => x"2a80ee05",
-1089 => x"5480d473",
-1090 => x"279e3875",
-1091 => x"8f2a80f7",
-1092 => x"055482d4",
-1093 => x"73279138",
-1094 => x"75922a80",
-1095 => x"fc05548a",
-1096 => x"d4732784",
-1097 => x"3880fe54",
-1098 => x"73101010",
-1099 => x"80deb805",
-1100 => x"88110856",
-1101 => x"5874782e",
-1102 => x"86cf3884",
-1103 => x"1508fc06",
-1104 => x"53757327",
-1105 => x"8d388815",
-1106 => x"08557478",
-1107 => x"2e098106",
-1108 => x"ea388c15",
-1109 => x"0880deb8",
-1110 => x"0b840508",
-1111 => x"718c1a0c",
-1112 => x"76881a0c",
-1113 => x"7888130c",
-1114 => x"788c180c",
-1115 => x"5d587953",
-1116 => x"807a2483",
-1117 => x"e6387282",
-1118 => x"2c81712b",
-1119 => x"5c537a7c",
-1120 => x"26819838",
-1121 => x"7b7b0653",
-1122 => x"7282f138",
-1123 => x"79fc0684",
-1124 => x"055a7a10",
-1125 => x"707d0654",
-1126 => x"5b7282e0",
-1127 => x"38841a5a",
-1128 => x"f1398817",
-1129 => x"8c110858",
-1130 => x"5876782e",
-1131 => x"098106fc",
-1132 => x"c238821a",
-1133 => x"5afdec39",
-1134 => x"78177981",
-1135 => x"0784190c",
-1136 => x"7080decc",
-1137 => x"0c7080de",
-1138 => x"c80c80de",
-1139 => x"c00b8c12",
-1140 => x"0c8c1108",
-1141 => x"88120c74",
-1142 => x"81078412",
-1143 => x"0c741175",
-1144 => x"710c5153",
-1145 => x"7d518a99",
-1146 => x"3f881754",
-1147 => x"fcac3980",
-1148 => x"deb80b84",
-1149 => x"05087a54",
-1150 => x"5c798025",
-1151 => x"fef83882",
-1152 => x"da397a09",
-1153 => x"7c067080",
-1154 => x"deb80b84",
-1155 => x"050c5c7a",
-1156 => x"105b7a7c",
-1157 => x"2685387a",
-1158 => x"85b83880",
-1159 => x"deb80b88",
-1160 => x"05087084",
-1161 => x"1208fc06",
-1162 => x"707c317c",
-1163 => x"72268f72",
-1164 => x"25075757",
-1165 => x"5c5d5572",
-1166 => x"802e80db",
-1167 => x"38797a16",
-1168 => x"80deb008",
-1169 => x"1b90115a",
-1170 => x"55575b80",
-1171 => x"deac08ff",
-1172 => x"2e8838a0",
-1173 => x"8f13e080",
-1174 => x"06577652",
-1175 => x"7d5191a7",
-1176 => x"3f800854",
-1177 => x"8008ff2e",
-1178 => x"90388008",
-1179 => x"76278299",
-1180 => x"387480de",
-1181 => x"b82e8291",
-1182 => x"3880deb8",
-1183 => x"0b880508",
-1184 => x"55841508",
-1185 => x"fc06707a",
-1186 => x"317a7226",
-1187 => x"8f722507",
-1188 => x"52555372",
-1189 => x"83e63874",
-1190 => x"79810784",
-1191 => x"170c7916",
-1192 => x"7080deb8",
-1193 => x"0b88050c",
-1194 => x"75810784",
-1195 => x"120c547e",
-1196 => x"525788cd",
-1197 => x"3f881754",
-1198 => x"fae03975",
-1199 => x"832a7054",
-1200 => x"54807424",
-1201 => x"819b3872",
-1202 => x"822c8171",
-1203 => x"2b80debc",
-1204 => x"08077080",
-1205 => x"deb80b84",
-1206 => x"050c7510",
-1207 => x"101080de",
-1208 => x"b8058811",
-1209 => x"08585a5d",
-1210 => x"53778c18",
-1211 => x"0c748818",
-1212 => x"0c768819",
-1213 => x"0c768c16",
-1214 => x"0cfcf339",
-1215 => x"797a1010",
-1216 => x"1080deb8",
-1217 => x"05705759",
-1218 => x"5d8c1508",
-1219 => x"5776752e",
-1220 => x"a3388417",
-1221 => x"08fc0670",
-1222 => x"7a315556",
-1223 => x"738f2483",
-1224 => x"ca387380",
-1225 => x"25848138",
-1226 => x"8c170857",
-1227 => x"76752e09",
-1228 => x"8106df38",
-1229 => x"8815811b",
-1230 => x"70830655",
-1231 => x"5b5572c9",
-1232 => x"387c8306",
-1233 => x"5372802e",
-1234 => x"fdb838ff",
-1235 => x"1df81959",
-1236 => x"5d881808",
-1237 => x"782eea38",
-1238 => x"fdb53983",
-1239 => x"1a53fc96",
-1240 => x"39831470",
-1241 => x"822c8171",
-1242 => x"2b80debc",
-1243 => x"08077080",
-1244 => x"deb80b84",
-1245 => x"050c7610",
-1246 => x"101080de",
-1247 => x"b8058811",
-1248 => x"08595b5e",
-1249 => x"5153fee1",
-1250 => x"3980ddfc",
-1251 => x"08175880",
-1252 => x"08762e81",
-1253 => x"8d3880de",
-1254 => x"ac08ff2e",
-1255 => x"83ec3873",
-1256 => x"76311880",
-1257 => x"ddfc0c73",
-1258 => x"87067057",
-1259 => x"5372802e",
-1260 => x"88388873",
-1261 => x"31701555",
-1262 => x"5676149f",
-1263 => x"ff06a080",
-1264 => x"71311770",
-1265 => x"547f5357",
-1266 => x"538ebc3f",
-1267 => x"80085380",
-1268 => x"08ff2e81",
-1269 => x"a03880dd",
-1270 => x"fc081670",
-1271 => x"80ddfc0c",
-1272 => x"747580de",
-1273 => x"b80b8805",
-1274 => x"0c747631",
-1275 => x"18708107",
-1276 => x"51555658",
-1277 => x"7b80deb8",
-1278 => x"2e839c38",
-1279 => x"798f2682",
-1280 => x"cb38810b",
-1281 => x"84150c84",
-1282 => x"1508fc06",
-1283 => x"707a317a",
-1284 => x"72268f72",
-1285 => x"25075255",
-1286 => x"5372802e",
-1287 => x"fcf93880",
-1288 => x"db398008",
-1289 => x"9fff0653",
-1290 => x"72feeb38",
-1291 => x"7780ddfc",
-1292 => x"0c80deb8",
-1293 => x"0b880508",
-1294 => x"7b188107",
-1295 => x"84120c55",
-1296 => x"80dea808",
-1297 => x"78278638",
-1298 => x"7780dea8",
-1299 => x"0c80dea4",
-1300 => x"087827fc",
-1301 => x"ac387780",
-1302 => x"dea40c84",
-1303 => x"1508fc06",
-1304 => x"707a317a",
-1305 => x"72268f72",
-1306 => x"25075255",
-1307 => x"5372802e",
-1308 => x"fca53888",
-1309 => x"39807454",
-1310 => x"56fedb39",
-1311 => x"7d518581",
-1312 => x"3f800b80",
-1313 => x"0c8f3d0d",
-1314 => x"04735380",
-1315 => x"7424a938",
-1316 => x"72822c81",
-1317 => x"712b80de",
-1318 => x"bc080770",
-1319 => x"80deb80b",
-1320 => x"84050c5d",
-1321 => x"53778c18",
-1322 => x"0c748818",
-1323 => x"0c768819",
-1324 => x"0c768c16",
-1325 => x"0cf9b739",
-1326 => x"83147082",
-1327 => x"2c81712b",
-1328 => x"80debc08",
-1329 => x"077080de",
-1330 => x"b80b8405",
-1331 => x"0c5e5153",
-1332 => x"d4397b7b",
-1333 => x"065372fc",
-1334 => x"a338841a",
-1335 => x"7b105c5a",
-1336 => x"f139ff1a",
-1337 => x"8111515a",
-1338 => x"f7b93978",
-1339 => x"17798107",
-1340 => x"84190c8c",
-1341 => x"18088819",
-1342 => x"08718c12",
-1343 => x"0c88120c",
-1344 => x"597080de",
-1345 => x"cc0c7080",
-1346 => x"dec80c80",
-1347 => x"dec00b8c",
-1348 => x"120c8c11",
-1349 => x"0888120c",
-1350 => x"74810784",
-1351 => x"120c7411",
-1352 => x"75710c51",
-1353 => x"53f9bd39",
-1354 => x"75178411",
-1355 => x"08810784",
-1356 => x"120c538c",
-1357 => x"17088818",
-1358 => x"08718c12",
-1359 => x"0c88120c",
-1360 => x"587d5183",
-1361 => x"bc3f8817",
-1362 => x"54f5cf39",
-1363 => x"7284150c",
-1364 => x"f41af806",
-1365 => x"70841e08",
-1366 => x"81060784",
-1367 => x"1e0c701d",
-1368 => x"545b850b",
-1369 => x"84140c85",
-1370 => x"0b88140c",
-1371 => x"8f7b27fd",
-1372 => x"cf38881c",
-1373 => x"527d5193",
-1374 => x"e73f80de",
-1375 => x"b80b8805",
-1376 => x"0880ddfc",
-1377 => x"085955fd",
-1378 => x"b7397780",
-1379 => x"ddfc0c73",
-1380 => x"80deac0c",
-1381 => x"fc913972",
-1382 => x"84150cfd",
-1383 => x"a339fa3d",
-1384 => x"0d7a7902",
-1385 => x"8805a705",
-1386 => x"33565253",
-1387 => x"8373278a",
-1388 => x"38708306",
-1389 => x"5271802e",
-1390 => x"a838ff13",
-1391 => x"5372ff2e",
-1392 => x"97387033",
-1393 => x"5273722e",
-1394 => x"91388111",
-1395 => x"ff145451",
-1396 => x"72ff2e09",
-1397 => x"8106eb38",
-1398 => x"80517080",
-1399 => x"0c883d0d",
-1400 => x"04707257",
-1401 => x"55835175",
-1402 => x"82802914",
-1403 => x"ff125256",
-1404 => x"708025f3",
-1405 => x"38837327",
-1406 => x"bf387408",
-1407 => x"76327009",
-1408 => x"f7fbfdff",
-1409 => x"120670f8",
-1410 => x"84828180",
-1411 => x"06515151",
-1412 => x"70802e99",
-1413 => x"38745180",
-1414 => x"52703357",
-1415 => x"73772eff",
-1416 => x"b9388111",
-1417 => x"81135351",
-1418 => x"837227ed",
-1419 => x"38fc1384",
-1420 => x"16565372",
-1421 => x"8326c338",
-1422 => x"7451fefe",
-1423 => x"39fa3d0d",
-1424 => x"787a7c72",
-1425 => x"72725757",
-1426 => x"57595656",
-1427 => x"747627b2",
-1428 => x"38761551",
-1429 => x"757127aa",
-1430 => x"38707717",
-1431 => x"ff145455",
-1432 => x"5371ff2e",
-1433 => x"9638ff14",
-1434 => x"ff145454",
-1435 => x"72337434",
-1436 => x"ff125271",
-1437 => x"ff2e0981",
-1438 => x"06ec3875",
-1439 => x"800c883d",
-1440 => x"0d04768f",
-1441 => x"269738ff",
-1442 => x"125271ff",
-1443 => x"2eed3872",
-1444 => x"70810554",
-1445 => x"33747081",
-1446 => x"055634eb",
-1447 => x"39747607",
-1448 => x"83065170",
-1449 => x"e2387575",
-1450 => x"54517270",
-1451 => x"84055408",
-1452 => x"71708405",
-1453 => x"530c7270",
-1454 => x"84055408",
-1455 => x"71708405",
-1456 => x"530c7270",
-1457 => x"84055408",
-1458 => x"71708405",
-1459 => x"530c7270",
-1460 => x"84055408",
-1461 => x"71708405",
-1462 => x"530cf012",
-1463 => x"52718f26",
-1464 => x"c9388372",
-1465 => x"27953872",
-1466 => x"70840554",
-1467 => x"08717084",
-1468 => x"05530cfc",
-1469 => x"12527183",
-1470 => x"26ed3870",
-1471 => x"54ff8839",
-1472 => x"0404ef3d",
-1473 => x"0d636567",
-1474 => x"405d427b",
-1475 => x"802e84f9",
-1476 => x"386151ec",
-1477 => x"3ff81c70",
-1478 => x"84120870",
-1479 => x"fc067062",
-1480 => x"8b0570f8",
-1481 => x"06415945",
-1482 => x"5b5c4157",
-1483 => x"96742782",
-1484 => x"c338807b",
-1485 => x"247e7c26",
-1486 => x"07598054",
-1487 => x"78742e09",
-1488 => x"810682a9",
-1489 => x"38777b25",
-1490 => x"81fc3877",
-1491 => x"1780deb8",
-1492 => x"0b880508",
-1493 => x"5e567c76",
-1494 => x"2e84bd38",
-1495 => x"84160870",
-1496 => x"fe061784",
-1497 => x"11088106",
-1498 => x"51555573",
-1499 => x"828b3874",
-1500 => x"fc06597c",
-1501 => x"762e84dd",
-1502 => x"3877195f",
-1503 => x"7e7b2581",
-1504 => x"fd387981",
-1505 => x"06547382",
-1506 => x"bf387677",
-1507 => x"08318411",
-1508 => x"08fc0656",
-1509 => x"5a75802e",
-1510 => x"91387c76",
-1511 => x"2e84ea38",
-1512 => x"74191859",
-1513 => x"787b2584",
-1514 => x"89387980",
-1515 => x"2e829938",
-1516 => x"7715567a",
-1517 => x"76248290",
-1518 => x"388c1a08",
-1519 => x"881b0871",
-1520 => x"8c120c88",
-1521 => x"120c5579",
-1522 => x"76595788",
-1523 => x"1761fc05",
-1524 => x"575975a4",
-1525 => x"2685ef38",
-1526 => x"7b795555",
-1527 => x"93762780",
-1528 => x"c9387b70",
-1529 => x"84055d08",
-1530 => x"7c56790c",
-1531 => x"74708405",
-1532 => x"56088c18",
-1533 => x"0c901754",
-1534 => x"9b7627ae",
-1535 => x"38747084",
-1536 => x"05560874",
-1537 => x"0c747084",
-1538 => x"05560894",
-1539 => x"180c9817",
-1540 => x"54a37627",
-1541 => x"95387470",
-1542 => x"84055608",
-1543 => x"740c7470",
-1544 => x"84055608",
-1545 => x"9c180ca0",
-1546 => x"17547470",
-1547 => x"84055608",
-1548 => x"74708405",
-1549 => x"560c7470",
-1550 => x"84055608",
-1551 => x"74708405",
-1552 => x"560c7408",
-1553 => x"740c777b",
-1554 => x"3156758f",
-1555 => x"2680c938",
-1556 => x"84170881",
-1557 => x"06780784",
-1558 => x"180c7717",
-1559 => x"84110881",
-1560 => x"0784120c",
-1561 => x"546151fd",
-1562 => x"983f8817",
-1563 => x"5473800c",
-1564 => x"933d0d04",
-1565 => x"905bfdba",
-1566 => x"397856fe",
-1567 => x"85398c16",
-1568 => x"08881708",
-1569 => x"718c120c",
-1570 => x"88120c55",
-1571 => x"7e707c31",
-1572 => x"57588f76",
-1573 => x"27ffb938",
-1574 => x"7a178418",
-1575 => x"0881067c",
-1576 => x"0784190c",
-1577 => x"76810784",
-1578 => x"120c7611",
-1579 => x"84110881",
-1580 => x"0784120c",
-1581 => x"55880552",
-1582 => x"61518da4",
-1583 => x"3f6151fc",
-1584 => x"c03f8817",
-1585 => x"54ffa639",
-1586 => x"7d526151",
-1587 => x"edda3f80",
-1588 => x"08598008",
-1589 => x"802e81a3",
-1590 => x"388008f8",
-1591 => x"05608405",
-1592 => x"08fe0661",
-1593 => x"05555776",
-1594 => x"742e83e6",
-1595 => x"38fc1856",
-1596 => x"75a42681",
-1597 => x"aa387b80",
-1598 => x"08555593",
-1599 => x"762780d8",
-1600 => x"38747084",
-1601 => x"05560880",
-1602 => x"08708405",
-1603 => x"800c0c80",
-1604 => x"08757084",
-1605 => x"05570871",
-1606 => x"70840553",
-1607 => x"0c549b76",
-1608 => x"27b63874",
-1609 => x"70840556",
-1610 => x"08747084",
-1611 => x"05560c74",
-1612 => x"70840556",
-1613 => x"08747084",
-1614 => x"05560ca3",
-1615 => x"76279938",
-1616 => x"74708405",
-1617 => x"56087470",
-1618 => x"8405560c",
-1619 => x"74708405",
-1620 => x"56087470",
-1621 => x"8405560c",
-1622 => x"74708405",
-1623 => x"56087470",
-1624 => x"8405560c",
-1625 => x"74708405",
-1626 => x"56087470",
-1627 => x"8405560c",
-1628 => x"7408740c",
-1629 => x"7b526151",
-1630 => x"8be63f61",
-1631 => x"51fb823f",
-1632 => x"78547380",
-1633 => x"0c933d0d",
-1634 => x"047d5261",
-1635 => x"51ec993f",
-1636 => x"8008800c",
-1637 => x"933d0d04",
-1638 => x"84160855",
-1639 => x"fbd13975",
-1640 => x"537b5280",
-1641 => x"0851dfde",
-1642 => x"3f7b5261",
-1643 => x"518bb13f",
-1644 => x"ca398c16",
-1645 => x"08881708",
-1646 => x"718c120c",
-1647 => x"88120c55",
-1648 => x"8c1a0888",
-1649 => x"1b08718c",
-1650 => x"120c8812",
-1651 => x"0c557979",
-1652 => x"5957fbf7",
-1653 => x"39771990",
-1654 => x"1c555573",
-1655 => x"7524fba2",
-1656 => x"387a1770",
-1657 => x"80deb80b",
-1658 => x"88050c75",
-1659 => x"7c318107",
-1660 => x"84120c5d",
-1661 => x"84170881",
-1662 => x"067b0784",
-1663 => x"180c6151",
-1664 => x"f9ff3f88",
-1665 => x"1754fce5",
-1666 => x"39741918",
-1667 => x"901c555d",
-1668 => x"737d24fb",
-1669 => x"95388c1a",
-1670 => x"08881b08",
-1671 => x"718c120c",
-1672 => x"88120c55",
-1673 => x"881a61fc",
-1674 => x"05575975",
-1675 => x"a42681ae",
-1676 => x"387b7955",
-1677 => x"55937627",
-1678 => x"80c9387b",
-1679 => x"7084055d",
-1680 => x"087c5679",
-1681 => x"0c747084",
-1682 => x"0556088c",
-1683 => x"1b0c901a",
-1684 => x"549b7627",
-1685 => x"ae387470",
-1686 => x"84055608",
-1687 => x"740c7470",
-1688 => x"84055608",
-1689 => x"941b0c98",
-1690 => x"1a54a376",
-1691 => x"27953874",
-1692 => x"70840556",
-1693 => x"08740c74",
-1694 => x"70840556",
-1695 => x"089c1b0c",
-1696 => x"a01a5474",
-1697 => x"70840556",
-1698 => x"08747084",
-1699 => x"05560c74",
-1700 => x"70840556",
-1701 => x"08747084",
-1702 => x"05560c74",
-1703 => x"08740c7a",
-1704 => x"1a7080de",
-1705 => x"b80b8805",
-1706 => x"0c7d7c31",
-1707 => x"81078412",
-1708 => x"0c54841a",
-1709 => x"0881067b",
-1710 => x"07841b0c",
-1711 => x"6151f8c1",
-1712 => x"3f7854fd",
-1713 => x"bd397553",
-1714 => x"7b527851",
-1715 => x"ddb83ffa",
-1716 => x"f5398417",
-1717 => x"08fc0618",
-1718 => x"605858fa",
-1719 => x"e9397553",
-1720 => x"7b527851",
-1721 => x"dda03f7a",
-1722 => x"1a7080de",
-1723 => x"b80b8805",
-1724 => x"0c7d7c31",
-1725 => x"81078412",
-1726 => x"0c54841a",
-1727 => x"0881067b",
-1728 => x"07841b0c",
-1729 => x"ffb63970",
-1730 => x"70707080",
-1731 => x"0b80e780",
-1732 => x"0c765196",
-1733 => x"cc3f8008",
-1734 => x"538008ff",
-1735 => x"2e893872",
-1736 => x"800c5050",
-1737 => x"50500480",
-1738 => x"e7800854",
-1739 => x"73802eef",
-1740 => x"38757471",
-1741 => x"0c527280",
-1742 => x"0c505050",
-1743 => x"5004fa3d",
-1744 => x"0d7880d6",
-1745 => x"fc085455",
-1746 => x"b8130880",
-1747 => x"2e81b638",
-1748 => x"8c152270",
-1749 => x"83ffff06",
-1750 => x"70832a81",
-1751 => x"32708106",
-1752 => x"51555556",
-1753 => x"72802e80",
-1754 => x"dc387384",
-1755 => x"2a813281",
-1756 => x"0657ff53",
-1757 => x"7680f738",
-1758 => x"73822a70",
-1759 => x"81065153",
-1760 => x"72802eb9",
-1761 => x"38b01508",
-1762 => x"5473802e",
-1763 => x"9c3880c0",
-1764 => x"15537373",
-1765 => x"2e8f3873",
-1766 => x"5280d6fc",
-1767 => x"085187c0",
-1768 => x"3f8c1522",
-1769 => x"5676b016",
-1770 => x"0c75db06",
-1771 => x"53728c16",
-1772 => x"23800b84",
-1773 => x"160c9015",
-1774 => x"08750c72",
-1775 => x"56758807",
-1776 => x"53728c16",
-1777 => x"23901508",
-1778 => x"802e80c1",
-1779 => x"388c1522",
-1780 => x"70810655",
-1781 => x"53739e38",
-1782 => x"720a100a",
-1783 => x"70810651",
-1784 => x"53728538",
-1785 => x"94150854",
-1786 => x"7388160c",
-1787 => x"80537280",
-1788 => x"0c883d0d",
-1789 => x"04800b88",
-1790 => x"160c9415",
-1791 => x"08309816",
-1792 => x"0c8053ea",
-1793 => x"39725182",
-1794 => x"f73ffec4",
-1795 => x"3974518c",
-1796 => x"de3f8c15",
-1797 => x"22708106",
-1798 => x"55537380",
-1799 => x"2effb938",
-1800 => x"d439f83d",
-1801 => x"0d7a5877",
-1802 => x"802e8199",
-1803 => x"3880d6fc",
-1804 => x"0854b814",
-1805 => x"08802e80",
-1806 => x"ed388c18",
-1807 => x"2270902b",
-1808 => x"70902c70",
-1809 => x"832a8132",
-1810 => x"81065c51",
-1811 => x"57547880",
-1812 => x"cd389018",
-1813 => x"08577680",
-1814 => x"2e80c338",
-1815 => x"77087731",
-1816 => x"77790c76",
-1817 => x"83067a58",
-1818 => x"55557385",
-1819 => x"38941808",
-1820 => x"56758819",
-1821 => x"0c807525",
-1822 => x"a5387453",
-1823 => x"76529c18",
-1824 => x"0851a418",
-1825 => x"0854732d",
-1826 => x"800b8008",
-1827 => x"2580c938",
-1828 => x"80081775",
-1829 => x"80083156",
-1830 => x"57748024",
-1831 => x"dd38800b",
-1832 => x"800c8a3d",
-1833 => x"0d047351",
-1834 => x"81d63f8c",
-1835 => x"18227090",
-1836 => x"2b70902c",
-1837 => x"70832a81",
-1838 => x"3281065c",
-1839 => x"51575478",
-1840 => x"dd38ff8e",
-1841 => x"39b8a252",
-1842 => x"80d6fc08",
-1843 => x"5189e73f",
-1844 => x"8008800c",
-1845 => x"8a3d0d04",
-1846 => x"8c182280",
-1847 => x"c0075473",
-1848 => x"8c1923ff",
-1849 => x"0b800c8a",
-1850 => x"3d0d0470",
-1851 => x"72518071",
-1852 => x"0c800b84",
-1853 => x"120c800b",
-1854 => x"88120c02",
-1855 => x"8e05228c",
-1856 => x"12230292",
-1857 => x"05228e12",
-1858 => x"23800b90",
-1859 => x"120c800b",
-1860 => x"94120c80",
-1861 => x"0b98120c",
-1862 => x"709c120c",
-1863 => x"80c8810b",
-1864 => x"a0120c80",
-1865 => x"c8cd0ba4",
-1866 => x"120c80c9",
-1867 => x"c90ba812",
-1868 => x"0c80ca9a",
-1869 => x"0bac120c",
-1870 => x"5004fa3d",
-1871 => x"0d797080",
-1872 => x"dc298c11",
-1873 => x"547a5356",
-1874 => x"57e4dd3f",
-1875 => x"80088008",
-1876 => x"55568008",
-1877 => x"802ea238",
-1878 => x"80088c05",
-1879 => x"54800b80",
-1880 => x"080c7680",
-1881 => x"0884050c",
-1882 => x"73800888",
-1883 => x"050c7453",
-1884 => x"80527351",
-1885 => x"8bfc3f75",
-1886 => x"5473800c",
-1887 => x"883d0d04",
-1888 => x"fc3d0d76",
-1889 => x"bd930bbc",
-1890 => x"120c5581",
-1891 => x"0bb8160c",
-1892 => x"800b84dc",
-1893 => x"160c830b",
-1894 => x"84e0160c",
-1895 => x"84e81584",
-1896 => x"e4160c74",
-1897 => x"54805384",
-1898 => x"52841508",
-1899 => x"51febc3f",
-1900 => x"74548153",
-1901 => x"89528815",
-1902 => x"0851feaf",
-1903 => x"3f745482",
-1904 => x"538a528c",
-1905 => x"150851fe",
-1906 => x"a23f863d",
-1907 => x"0d04f93d",
-1908 => x"0d7980d6",
-1909 => x"fc085457",
-1910 => x"b8130880",
-1911 => x"2e80c838",
-1912 => x"84dc1356",
-1913 => x"88160884",
-1914 => x"1708ff05",
-1915 => x"55558074",
-1916 => x"249f388c",
-1917 => x"15227090",
-1918 => x"2b70902c",
-1919 => x"51545872",
-1920 => x"802e80ca",
-1921 => x"3880dc15",
-1922 => x"ff155555",
-1923 => x"738025e3",
-1924 => x"38750853",
-1925 => x"72802e9f",
-1926 => x"38725688",
-1927 => x"16088417",
-1928 => x"08ff0555",
-1929 => x"55c83972",
-1930 => x"51fed53f",
-1931 => x"80d6fc08",
-1932 => x"84dc0556",
-1933 => x"ffae3984",
-1934 => x"527651fd",
-1935 => x"fd3f8008",
-1936 => x"760c8008",
-1937 => x"802e80c0",
-1938 => x"38800856",
-1939 => x"ce39810b",
-1940 => x"8c162372",
-1941 => x"750c7288",
-1942 => x"160c7284",
-1943 => x"160c7290",
-1944 => x"160c7294",
-1945 => x"160c7298",
-1946 => x"160cff0b",
-1947 => x"8e162372",
-1948 => x"b0160c72",
-1949 => x"b4160c72",
-1950 => x"80c4160c",
-1951 => x"7280c816",
-1952 => x"0c74800c",
-1953 => x"893d0d04",
-1954 => x"8c770c80",
-1955 => x"0b800c89",
-1956 => x"3d0d0470",
-1957 => x"70b8a252",
-1958 => x"7351869a",
-1959 => x"3f505004",
-1960 => x"7080d6fc",
-1961 => x"0851ec3f",
-1962 => x"5004fb3d",
-1963 => x"0d777052",
-1964 => x"56f0cd3f",
-1965 => x"80deb80b",
-1966 => x"88050884",
-1967 => x"1108fc06",
-1968 => x"707b319f",
-1969 => x"ef05e080",
-1970 => x"06e08005",
-1971 => x"565653a0",
-1972 => x"80742494",
-1973 => x"38805275",
-1974 => x"51f8ac3f",
-1975 => x"80dec008",
-1976 => x"15537280",
-1977 => x"082e8f38",
-1978 => x"7551f095",
-1979 => x"3f805372",
-1980 => x"800c873d",
-1981 => x"0d047330",
-1982 => x"527551f8",
-1983 => x"8a3f8008",
-1984 => x"ff2ea838",
-1985 => x"80deb80b",
-1986 => x"88050875",
-1987 => x"75318107",
-1988 => x"84120c53",
-1989 => x"80ddfc08",
-1990 => x"743180dd",
-1991 => x"fc0c7551",
-1992 => x"efdf3f81",
-1993 => x"0b800c87",
-1994 => x"3d0d0480",
-1995 => x"527551f7",
-1996 => x"d63f80de",
-1997 => x"b80b8805",
-1998 => x"08800871",
-1999 => x"3156538f",
-2000 => x"7525ffa4",
-2001 => x"38800880",
-2002 => x"deac0831",
-2003 => x"80ddfc0c",
-2004 => x"74810784",
-2005 => x"140c7551",
-2006 => x"efa73f80",
-2007 => x"53ff9039",
-2008 => x"f63d0d7c",
-2009 => x"7e545b72",
-2010 => x"802e8283",
-2011 => x"387a51ef",
-2012 => x"8f3ff813",
-2013 => x"84110870",
-2014 => x"fe067013",
-2015 => x"841108fc",
-2016 => x"065d5859",
-2017 => x"545880de",
-2018 => x"c008752e",
-2019 => x"82de3878",
-2020 => x"84160c80",
-2021 => x"73810654",
-2022 => x"5a727a2e",
-2023 => x"81d53878",
-2024 => x"15841108",
-2025 => x"81065153",
-2026 => x"72a03878",
-2027 => x"17577981",
-2028 => x"e6388815",
-2029 => x"08537280",
-2030 => x"dec02e82",
-2031 => x"f9388c15",
-2032 => x"08708c15",
-2033 => x"0c738812",
-2034 => x"0c567681",
-2035 => x"0784190c",
-2036 => x"76187771",
-2037 => x"0c537981",
-2038 => x"913883ff",
-2039 => x"772781c8",
-2040 => x"3876892a",
-2041 => x"77832a56",
-2042 => x"5372802e",
-2043 => x"bf387686",
-2044 => x"2ab80555",
-2045 => x"847327b4",
-2046 => x"3880db13",
-2047 => x"55947327",
-2048 => x"ab38768c",
-2049 => x"2a80ee05",
-2050 => x"5580d473",
-2051 => x"279e3876",
-2052 => x"8f2a80f7",
-2053 => x"055582d4",
-2054 => x"73279138",
-2055 => x"76922a80",
-2056 => x"fc05558a",
-2057 => x"d4732784",
-2058 => x"3880fe55",
-2059 => x"74101010",
-2060 => x"80deb805",
-2061 => x"88110855",
-2062 => x"5673762e",
-2063 => x"82b33884",
-2064 => x"1408fc06",
-2065 => x"53767327",
-2066 => x"8d388814",
-2067 => x"08547376",
-2068 => x"2e098106",
-2069 => x"ea388c14",
-2070 => x"08708c1a",
-2071 => x"0c74881a",
-2072 => x"0c788812",
-2073 => x"0c56778c",
-2074 => x"150c7a51",
-2075 => x"ed933f8c",
-2076 => x"3d0d0477",
-2077 => x"08787131",
-2078 => x"59770588",
-2079 => x"19085457",
-2080 => x"7280dec0",
-2081 => x"2e80e038",
-2082 => x"8c180870",
-2083 => x"8c150c73",
-2084 => x"88120c56",
-2085 => x"fe893988",
-2086 => x"15088c16",
-2087 => x"08708c13",
-2088 => x"0c578817",
-2089 => x"0cfea339",
-2090 => x"76832a70",
-2091 => x"54558075",
-2092 => x"24819838",
-2093 => x"72822c81",
-2094 => x"712b80de",
-2095 => x"bc080780",
-2096 => x"deb80b84",
-2097 => x"050c5374",
-2098 => x"10101080",
-2099 => x"deb80588",
-2100 => x"11085556",
-2101 => x"758c190c",
-2102 => x"7388190c",
-2103 => x"7788170c",
-2104 => x"778c150c",
-2105 => x"ff843981",
-2106 => x"5afdb439",
-2107 => x"78177381",
-2108 => x"06545772",
-2109 => x"98387708",
-2110 => x"78713159",
-2111 => x"77058c19",
-2112 => x"08881a08",
-2113 => x"718c120c",
-2114 => x"88120c57",
-2115 => x"57768107",
-2116 => x"84190c77",
-2117 => x"80deb80b",
-2118 => x"88050c80",
-2119 => x"deb40877",
-2120 => x"26fec738",
-2121 => x"80deb008",
-2122 => x"527a51fa",
-2123 => x"fd3f7a51",
-2124 => x"ebcf3ffe",
-2125 => x"ba398178",
-2126 => x"8c150c78",
-2127 => x"88150c73",
-2128 => x"8c1a0c73",
-2129 => x"881a0c5a",
-2130 => x"fd803983",
-2131 => x"1570822c",
-2132 => x"81712b80",
-2133 => x"debc0807",
-2134 => x"80deb80b",
-2135 => x"84050c51",
-2136 => x"53741010",
-2137 => x"1080deb8",
-2138 => x"05881108",
-2139 => x"5556fee4",
-2140 => x"39745380",
-2141 => x"7524a738",
-2142 => x"72822c81",
-2143 => x"712b80de",
-2144 => x"bc080780",
-2145 => x"deb80b84",
-2146 => x"050c5375",
-2147 => x"8c190c73",
-2148 => x"88190c77",
-2149 => x"88170c77",
-2150 => x"8c150cfd",
-2151 => x"cd398315",
-2152 => x"70822c81",
-2153 => x"712b80de",
-2154 => x"bc080780",
-2155 => x"deb80b84",
-2156 => x"050c5153",
-2157 => x"d639f93d",
-2158 => x"0d797b58",
-2159 => x"53800b80",
-2160 => x"d6fc0853",
-2161 => x"5672722e",
-2162 => x"80c03884",
-2163 => x"dc135574",
-2164 => x"762eb738",
-2165 => x"88150884",
-2166 => x"1608ff05",
-2167 => x"54548073",
-2168 => x"249d388c",
-2169 => x"14227090",
-2170 => x"2b70902c",
-2171 => x"51535871",
-2172 => x"80d83880",
-2173 => x"dc14ff14",
-2174 => x"54547280",
-2175 => x"25e53874",
-2176 => x"085574d0",
-2177 => x"3880d6fc",
-2178 => x"085284dc",
-2179 => x"12557480",
-2180 => x"2eb13888",
-2181 => x"15088416",
-2182 => x"08ff0554",
-2183 => x"54807324",
-2184 => x"9c388c14",
-2185 => x"2270902b",
-2186 => x"70902c51",
-2187 => x"535871ad",
-2188 => x"3880dc14",
-2189 => x"ff145454",
-2190 => x"728025e6",
-2191 => x"38740855",
-2192 => x"74d13875",
-2193 => x"800c893d",
-2194 => x"0d047351",
-2195 => x"762d7580",
-2196 => x"080780dc",
-2197 => x"15ff1555",
-2198 => x"5556ff9e",
-2199 => x"39735176",
-2200 => x"2d758008",
-2201 => x"0780dc15",
-2202 => x"ff155555",
-2203 => x"56ca39ea",
-2204 => x"3d0d688c",
-2205 => x"1122700a",
-2206 => x"100a8106",
-2207 => x"57585674",
-2208 => x"80e4388e",
-2209 => x"16227090",
-2210 => x"2b70902c",
-2211 => x"51555880",
-2212 => x"7424b138",
-2213 => x"983dc405",
-2214 => x"53735280",
-2215 => x"d6fc0851",
-2216 => x"86833f80",
-2217 => x"0b800824",
-2218 => x"97387983",
-2219 => x"e0800654",
-2220 => x"7380c080",
-2221 => x"2e818f38",
-2222 => x"73828080",
-2223 => x"2e819138",
-2224 => x"8c162257",
-2225 => x"76908007",
-2226 => x"54738c17",
-2227 => x"23888052",
-2228 => x"80d6fc08",
-2229 => x"51d9d13f",
-2230 => x"80089d38",
-2231 => x"8c162282",
-2232 => x"0754738c",
-2233 => x"172380c3",
-2234 => x"1670770c",
-2235 => x"90170c81",
-2236 => x"0b94170c",
-2237 => x"983d0d04",
-2238 => x"80d6fc08",
-2239 => x"bd930bbc",
-2240 => x"120c548c",
-2241 => x"16228180",
-2242 => x"0754738c",
-2243 => x"17238008",
-2244 => x"760c8008",
-2245 => x"90170c88",
-2246 => x"800b9417",
-2247 => x"0c74802e",
-2248 => x"d3388e16",
-2249 => x"2270902b",
-2250 => x"70902c53",
-2251 => x"55588df3",
-2252 => x"3f800880",
-2253 => x"2effbd38",
-2254 => x"8c162281",
-2255 => x"0754738c",
-2256 => x"1723983d",
-2257 => x"0d04810b",
-2258 => x"8c172258",
-2259 => x"55fef539",
-2260 => x"a8160880",
-2261 => x"c9c92e09",
-2262 => x"8106fee4",
-2263 => x"388c1622",
-2264 => x"88800754",
-2265 => x"738c1723",
-2266 => x"88800b80",
-2267 => x"cc170cfe",
-2268 => x"dc39fc3d",
-2269 => x"0d767971",
-2270 => x"028c059f",
-2271 => x"05335755",
-2272 => x"53558372",
-2273 => x"278a3874",
-2274 => x"83065170",
-2275 => x"802ea238",
-2276 => x"ff125271",
-2277 => x"ff2e9338",
-2278 => x"73737081",
-2279 => x"055534ff",
-2280 => x"125271ff",
-2281 => x"2e098106",
-2282 => x"ef387480",
-2283 => x"0c863d0d",
-2284 => x"04747488",
-2285 => x"2b750770",
-2286 => x"71902b07",
-2287 => x"5154518f",
-2288 => x"7227a538",
-2289 => x"72717084",
-2290 => x"05530c72",
-2291 => x"71708405",
-2292 => x"530c7271",
-2293 => x"70840553",
-2294 => x"0c727170",
-2295 => x"8405530c",
-2296 => x"f0125271",
-2297 => x"8f26dd38",
-2298 => x"83722790",
-2299 => x"38727170",
-2300 => x"8405530c",
-2301 => x"fc125271",
-2302 => x"8326f238",
-2303 => x"7053ff90",
-2304 => x"39f93d0d",
-2305 => x"797c557b",
-2306 => x"548e1122",
-2307 => x"70902b70",
-2308 => x"902c5557",
-2309 => x"80d6fc08",
-2310 => x"53585683",
-2311 => x"f63f8008",
-2312 => x"57800b80",
-2313 => x"08249338",
-2314 => x"80d01608",
-2315 => x"80080580",
-2316 => x"d0170c76",
-2317 => x"800c893d",
-2318 => x"0d048c16",
-2319 => x"2283dfff",
-2320 => x"0655748c",
-2321 => x"17237680",
-2322 => x"0c893d0d",
-2323 => x"04fa3d0d",
-2324 => x"788c1122",
-2325 => x"70882a70",
-2326 => x"81065157",
-2327 => x"585674a9",
-2328 => x"388c1622",
-2329 => x"83dfff06",
-2330 => x"55748c17",
-2331 => x"237a5479",
-2332 => x"538e1622",
-2333 => x"70902b70",
-2334 => x"902c5456",
-2335 => x"80d6fc08",
-2336 => x"525681b2",
-2337 => x"3f883d0d",
-2338 => x"04825480",
-2339 => x"538e1622",
-2340 => x"70902b70",
-2341 => x"902c5456",
-2342 => x"80d6fc08",
-2343 => x"525782bb",
-2344 => x"3f8c1622",
-2345 => x"83dfff06",
-2346 => x"55748c17",
-2347 => x"237a5479",
-2348 => x"538e1622",
-2349 => x"70902b70",
-2350 => x"902c5456",
-2351 => x"80d6fc08",
-2352 => x"525680f2",
-2353 => x"3f883d0d",
-2354 => x"04f93d0d",
-2355 => x"797c557b",
-2356 => x"548e1122",
-2357 => x"70902b70",
-2358 => x"902c5557",
-2359 => x"80d6fc08",
-2360 => x"53585681",
-2361 => x"f63f8008",
-2362 => x"578008ff",
-2363 => x"2e99388c",
-2364 => x"1622a080",
-2365 => x"0755748c",
-2366 => x"17238008",
-2367 => x"80d0170c",
-2368 => x"76800c89",
-2369 => x"3d0d048c",
-2370 => x"162283df",
-2371 => x"ff065574",
-2372 => x"8c172376",
-2373 => x"800c893d",
-2374 => x"0d047070",
-2375 => x"70748e11",
-2376 => x"2270902b",
-2377 => x"70902c55",
-2378 => x"51515380",
-2379 => x"d6fc0851",
-2380 => x"bd3f5050",
-2381 => x"5004fb3d",
-2382 => x"0d800b80",
-2383 => x"e7800c7a",
-2384 => x"53795278",
-2385 => x"51839c3f",
-2386 => x"80085580",
-2387 => x"08ff2e88",
-2388 => x"3874800c",
-2389 => x"873d0d04",
-2390 => x"80e78008",
-2391 => x"5675802e",
-2392 => x"f0387776",
-2393 => x"710c5474",
-2394 => x"800c873d",
-2395 => x"0d047070",
-2396 => x"7070800b",
-2397 => x"80e7800c",
-2398 => x"765185a4",
-2399 => x"3f800853",
-2400 => x"8008ff2e",
-2401 => x"89387280",
-2402 => x"0c505050",
-2403 => x"500480e7",
-2404 => x"80085473",
-2405 => x"802eef38",
-2406 => x"7574710c",
-2407 => x"5272800c",
-2408 => x"50505050",
-2409 => x"04fc3d0d",
-2410 => x"800b80e7",
-2411 => x"800c7852",
-2412 => x"775187d4",
-2413 => x"3f800854",
-2414 => x"8008ff2e",
-2415 => x"88387380",
-2416 => x"0c863d0d",
-2417 => x"0480e780",
-2418 => x"08557480",
-2419 => x"2ef03876",
-2420 => x"75710c53",
-2421 => x"73800c86",
-2422 => x"3d0d04fb",
-2423 => x"3d0d800b",
-2424 => x"80e7800c",
-2425 => x"7a537952",
-2426 => x"785185b0",
-2427 => x"3f800855",
-2428 => x"8008ff2e",
-2429 => x"88387480",
-2430 => x"0c873d0d",
-2431 => x"0480e780",
-2432 => x"08567580",
-2433 => x"2ef03877",
-2434 => x"76710c54",
-2435 => x"74800c87",
-2436 => x"3d0d04fb",
-2437 => x"3d0d800b",
-2438 => x"80e7800c",
-2439 => x"7a537952",
-2440 => x"785182b7",
-2441 => x"3f800855",
-2442 => x"8008ff2e",
-2443 => x"88387480",
-2444 => x"0c873d0d",
-2445 => x"0480e780",
-2446 => x"08567580",
-2447 => x"2ef03877",
-2448 => x"76710c54",
-2449 => x"74800c87",
-2450 => x"3d0d0481",
-2451 => x"0b800c04",
-2452 => x"7072812e",
-2453 => x"8738800b",
-2454 => x"800c5004",
-2455 => x"735180fd",
-2456 => x"3f707070",
-2457 => x"80e78408",
-2458 => x"51708a38",
-2459 => x"80e78c70",
-2460 => x"80e7840c",
-2461 => x"51707512",
-2462 => x"5252ff53",
-2463 => x"7087fb80",
-2464 => x"80268838",
-2465 => x"7080e784",
-2466 => x"0c715372",
-2467 => x"800c5050",
-2468 => x"50047070",
-2469 => x"7070800b",
-2470 => x"80d6f008",
-2471 => x"54547281",
-2472 => x"2e9e3873",
-2473 => x"80e7880c",
-2474 => x"ffbbbe3f",
-2475 => x"ffbad13f",
-2476 => x"80e6c052",
-2477 => x"8151ffbe",
-2478 => x"913f8008",
-2479 => x"51879b3f",
-2480 => x"7280e788",
-2481 => x"0cffbba1",
-2482 => x"3fffbab4",
-2483 => x"3f80e6c0",
-2484 => x"528151ff",
-2485 => x"bdf43f80",
-2486 => x"085186fe",
-2487 => x"3f00ff39",
-2488 => x"00ff39f5",
-2489 => x"3d0d7e60",
-2490 => x"80e78808",
-2491 => x"705b585b",
-2492 => x"5b7580c5",
-2493 => x"38777a25",
-2494 => x"a238771b",
-2495 => x"70337081",
-2496 => x"ff065858",
-2497 => x"59758a2e",
-2498 => x"99387681",
-2499 => x"ff0651ff",
-2500 => x"bab83f81",
-2501 => x"18587978",
-2502 => x"24e03879",
-2503 => x"800c8d3d",
-2504 => x"0d048d51",
-2505 => x"ffbaa33f",
-2506 => x"78337081",
-2507 => x"ff065257",
-2508 => x"ffba973f",
-2509 => x"811858de",
-2510 => x"3979557a",
-2511 => x"547d5385",
-2512 => x"528d3dfc",
-2513 => x"0551ffb9",
-2514 => x"e13f8008",
-2515 => x"5686843f",
-2516 => x"7b80080c",
-2517 => x"75800c8d",
-2518 => x"3d0d04f6",
-2519 => x"3d0d7d7f",
-2520 => x"80e78808",
-2521 => x"705a585a",
-2522 => x"5a7580c4",
-2523 => x"38767925",
-2524 => x"b238761a",
-2525 => x"56ffb9b4",
-2526 => x"3f800876",
-2527 => x"34800b80",
-2528 => x"0881ff06",
-2529 => x"5758758a",
-2530 => x"2ea23875",
-2531 => x"8d327030",
-2532 => x"7080257a",
-2533 => x"07515156",
-2534 => x"75b83881",
-2535 => x"17577877",
-2536 => x"24d03876",
-2537 => x"5675800c",
-2538 => x"8c3d0d04",
-2539 => x"8158dc39",
-2540 => x"78557954",
-2541 => x"7c538452",
-2542 => x"8c3dfc05",
-2543 => x"51ffb8ea",
-2544 => x"3f800856",
-2545 => x"858d3f7a",
-2546 => x"80080c75",
-2547 => x"800c8c3d",
-2548 => x"0d048117",
-2549 => x"56cf39f9",
-2550 => x"3d0d7957",
-2551 => x"80e78808",
-2552 => x"802ead38",
-2553 => x"7651c8f8",
-2554 => x"3f7b567a",
-2555 => x"55800881",
-2556 => x"05547653",
-2557 => x"8252893d",
-2558 => x"fc0551ff",
-2559 => x"b8ac3f80",
-2560 => x"085784cf",
-2561 => x"3f778008",
-2562 => x"0c76800c",
-2563 => x"893d0d04",
-2564 => x"84c13f85",
-2565 => x"0b80080c",
-2566 => x"ff0b800c",
-2567 => x"893d0d04",
-2568 => x"fb3d0d80",
-2569 => x"e7880870",
-2570 => x"56547388",
-2571 => x"3874800c",
-2572 => x"873d0d04",
-2573 => x"77538352",
-2574 => x"873dfc05",
-2575 => x"51ffb7ea",
-2576 => x"3f800854",
-2577 => x"848d3f75",
-2578 => x"80080c73",
-2579 => x"800c873d",
-2580 => x"0d04ff0b",
-2581 => x"800c04fb",
-2582 => x"3d0d7755",
-2583 => x"80e78808",
-2584 => x"802ea938",
-2585 => x"7451c7f8",
-2586 => x"3f800881",
-2587 => x"05547453",
-2588 => x"8752873d",
-2589 => x"fc0551ff",
-2590 => x"b7b03f80",
-2591 => x"085583d3",
-2592 => x"3f758008",
-2593 => x"0c74800c",
-2594 => x"873d0d04",
-2595 => x"83c53f85",
-2596 => x"0b80080c",
-2597 => x"ff0b800c",
-2598 => x"873d0d04",
-2599 => x"fa3d0d80",
-2600 => x"e7880880",
-2601 => x"2ea3387a",
-2602 => x"55795478",
-2603 => x"53865288",
-2604 => x"3dfc0551",
-2605 => x"ffb6f33f",
-2606 => x"80085683",
-2607 => x"963f7680",
-2608 => x"080c7580",
-2609 => x"0c883d0d",
-2610 => x"0483883f",
-2611 => x"9d0b8008",
-2612 => x"0cff0b80",
-2613 => x"0c883d0d",
-2614 => x"04fb3d0d",
-2615 => x"77795656",
-2616 => x"80705454",
-2617 => x"7375259f",
-2618 => x"38741010",
-2619 => x"10f80552",
-2620 => x"72167033",
-2621 => x"70742b76",
-2622 => x"078116f8",
-2623 => x"16565656",
-2624 => x"51517473",
-2625 => x"24ea3873",
-2626 => x"800c873d",
-2627 => x"0d04fc3d",
-2628 => x"0d767855",
-2629 => x"55bc5380",
-2630 => x"527351f4",
-2631 => x"d53f8452",
-2632 => x"7451ffb5",
-2633 => x"3f800874",
-2634 => x"23845284",
-2635 => x"1551ffa9",
-2636 => x"3f800882",
-2637 => x"15238452",
-2638 => x"881551ff",
-2639 => x"9c3f8008",
-2640 => x"84150c84",
-2641 => x"528c1551",
-2642 => x"ff8f3f80",
-2643 => x"08881523",
-2644 => x"84529015",
-2645 => x"51ff823f",
-2646 => x"80088a15",
-2647 => x"23845294",
-2648 => x"1551fef5",
-2649 => x"3f80088c",
-2650 => x"15238452",
-2651 => x"981551fe",
-2652 => x"e83f8008",
-2653 => x"8e152388",
-2654 => x"529c1551",
-2655 => x"fedb3f80",
-2656 => x"0890150c",
-2657 => x"863d0d04",
-2658 => x"e93d0d6a",
-2659 => x"80e78808",
-2660 => x"57577593",
-2661 => x"3880c080",
-2662 => x"0b84180c",
-2663 => x"75ac180c",
-2664 => x"75800c99",
-2665 => x"3d0d0489",
-2666 => x"3d70556a",
-2667 => x"54558a52",
-2668 => x"993dffbc",
-2669 => x"0551ffb4",
-2670 => x"f13f8008",
-2671 => x"77537552",
-2672 => x"56fecb3f",
-2673 => x"818d3f77",
-2674 => x"80080c75",
-2675 => x"800c993d",
-2676 => x"0d04e93d",
-2677 => x"0d695780",
-2678 => x"e7880880",
-2679 => x"2eb63876",
-2680 => x"51c4fd3f",
-2681 => x"893d7056",
-2682 => x"80088105",
-2683 => x"55775456",
-2684 => x"8f52993d",
-2685 => x"ffbc0551",
-2686 => x"ffb4af3f",
-2687 => x"80086b53",
-2688 => x"765257fe",
-2689 => x"893f80cb",
-2690 => x"3f778008",
-2691 => x"0c76800c",
-2692 => x"993d0d04",
-2693 => x"be3f850b",
-2694 => x"80080cff",
-2695 => x"0b800c99",
-2696 => x"3d0d04fc",
-2697 => x"3d0d8154",
-2698 => x"80e78808",
-2699 => x"88387380",
-2700 => x"0c863d0d",
-2701 => x"04765397",
-2702 => x"b952863d",
-2703 => x"fc0551ff",
-2704 => x"b3e83f80",
-2705 => x"08548c3f",
-2706 => x"7480080c",
-2707 => x"73800c86",
-2708 => x"3d0d0480",
-2709 => x"d6fc0880",
-2710 => x"0c04f73d",
-2711 => x"0d7b80d6",
-2712 => x"fc0882c8",
-2713 => x"11085a54",
-2714 => x"5a77802e",
-2715 => x"80da3881",
-2716 => x"88188419",
-2717 => x"08ff0581",
-2718 => x"712b5955",
-2719 => x"59807424",
-2720 => x"80ea3880",
-2721 => x"7424b538",
-2722 => x"73822b78",
-2723 => x"11880556",
-2724 => x"56818019",
-2725 => x"08770653",
-2726 => x"72802eb6",
-2727 => x"38781670",
-2728 => x"08535379",
-2729 => x"51740853",
-2730 => x"722dff14",
-2731 => x"fc17fc17",
-2732 => x"79812c5a",
-2733 => x"57575473",
-2734 => x"8025d638",
-2735 => x"77085877",
-2736 => x"ffad3880",
-2737 => x"d6fc0853",
-2738 => x"bc1308a5",
-2739 => x"387951f8",
-2740 => x"8c3f7408",
-2741 => x"53722dff",
-2742 => x"14fc17fc",
-2743 => x"1779812c",
-2744 => x"5a575754",
-2745 => x"738025ff",
-2746 => x"a838d139",
-2747 => x"8057ff93",
-2748 => x"397251bc",
-2749 => x"13085372",
-2750 => x"2d7951f7",
-2751 => x"e03f7070",
-2752 => x"80e6c80b",
-2753 => x"fc057008",
-2754 => x"525270ff",
-2755 => x"2e913870",
-2756 => x"2dfc1270",
-2757 => x"08525270",
-2758 => x"ff2e0981",
-2759 => x"06f13850",
-2760 => x"500404ff",
-2761 => x"b4c73f04",
-2762 => x"48656c6c",
-2763 => x"6f20776f",
-2764 => x"726c6420",
-2765 => x"310a0000",
-2766 => x"48656c6c",
-2767 => x"6f20776f",
-2768 => x"726c6420",
-2769 => x"320a0000",
-2770 => x"0a000000",
-2771 => x"43000000",
-2772 => x"64756d6d",
-2773 => x"792e6578",
-2774 => x"65000000",
-2775 => x"00ffffff",
-2776 => x"ff00ffff",
-2777 => x"ffff00ff",
-2778 => x"ffffff00",
-2779 => x"00000000",
-2780 => x"00000000",
-2781 => x"00000000",
-2782 => x"00003350",
-2783 => x"00002b80",
-2784 => x"00000000",
-2785 => x"00002de8",
-2786 => x"00002e44",
-2787 => x"00002ea0",
-2788 => x"00000000",
-2789 => x"00000000",
-2790 => x"00000000",
-2791 => x"00000000",
-2792 => x"00000000",
-2793 => x"00000000",
-2794 => x"00000000",
-2795 => x"00000000",
-2796 => x"00000000",
-2797 => x"00002b4c",
-2798 => x"00000000",
-2799 => x"00000000",
-2800 => x"00000000",
-2801 => x"00000000",
-2802 => x"00000000",
-2803 => x"00000000",
-2804 => x"00000000",
-2805 => x"00000000",
-2806 => x"00000000",
-2807 => x"00000000",
-2808 => x"00000000",
-2809 => x"00000000",
-2810 => x"00000000",
-2811 => x"00000000",
-2812 => x"00000000",
-2813 => x"00000000",
-2814 => x"00000000",
-2815 => x"00000000",
-2816 => x"00000000",
-2817 => x"00000000",
-2818 => x"00000000",
-2819 => x"00000000",
-2820 => x"00000000",
-2821 => x"00000000",
-2822 => x"00000000",
-2823 => x"00000000",
-2824 => x"00000000",
-2825 => x"00000000",
-2826 => x"00000001",
-2827 => x"330eabcd",
-2828 => x"1234e66d",
-2829 => x"deec0005",
-2830 => x"000b0000",
-2831 => x"00000000",
-2832 => x"00000000",
-2833 => x"00000000",
-2834 => x"00000000",
-2835 => x"00000000",
-2836 => x"00000000",
-2837 => x"00000000",
-2838 => x"00000000",
-2839 => x"00000000",
-2840 => x"00000000",
-2841 => x"00000000",
-2842 => x"00000000",
-2843 => x"00000000",
-2844 => x"00000000",
-2845 => x"00000000",
-2846 => x"00000000",
-2847 => x"00000000",
-2848 => x"00000000",
-2849 => x"00000000",
-2850 => x"00000000",
-2851 => x"00000000",
-2852 => x"00000000",
-2853 => x"00000000",
-2854 => x"00000000",
-2855 => x"00000000",
-2856 => x"00000000",
-2857 => x"00000000",
-2858 => x"00000000",
-2859 => x"00000000",
-2860 => x"00000000",
-2861 => x"00000000",
-2862 => x"00000000",
-2863 => x"00000000",
-2864 => x"00000000",
-2865 => x"00000000",
-2866 => x"00000000",
-2867 => x"00000000",
-2868 => x"00000000",
-2869 => x"00000000",
-2870 => x"00000000",
-2871 => x"00000000",
-2872 => x"00000000",
-2873 => x"00000000",
-2874 => x"00000000",
-2875 => x"00000000",
-2876 => x"00000000",
-2877 => x"00000000",
-2878 => x"00000000",
-2879 => x"00000000",
-2880 => x"00000000",
-2881 => x"00000000",
-2882 => x"00000000",
-2883 => x"00000000",
-2884 => x"00000000",
-2885 => x"00000000",
-2886 => x"00000000",
-2887 => x"00000000",
-2888 => x"00000000",
-2889 => x"00000000",
-2890 => x"00000000",
-2891 => x"00000000",
-2892 => x"00000000",
-2893 => x"00000000",
-2894 => x"00000000",
-2895 => x"00000000",
-2896 => x"00000000",
-2897 => x"00000000",
-2898 => x"00000000",
-2899 => x"00000000",
-2900 => x"00000000",
-2901 => x"00000000",
-2902 => x"00000000",
-2903 => x"00000000",
-2904 => x"00000000",
-2905 => x"00000000",
-2906 => x"00000000",
-2907 => x"00000000",
-2908 => x"00000000",
-2909 => x"00000000",
-2910 => x"00000000",
-2911 => x"00000000",
-2912 => x"00000000",
-2913 => x"00000000",
-2914 => x"00000000",
-2915 => x"00000000",
-2916 => x"00000000",
-2917 => x"00000000",
-2918 => x"00000000",
-2919 => x"00000000",
-2920 => x"00000000",
-2921 => x"00000000",
-2922 => x"00000000",
-2923 => x"00000000",
-2924 => x"00000000",
-2925 => x"00000000",
-2926 => x"00000000",
-2927 => x"00000000",
-2928 => x"00000000",
-2929 => x"00000000",
-2930 => x"00000000",
-2931 => x"00000000",
-2932 => x"00000000",
-2933 => x"00000000",
-2934 => x"00000000",
-2935 => x"00000000",
-2936 => x"00000000",
-2937 => x"00000000",
-2938 => x"00000000",
-2939 => x"00000000",
-2940 => x"00000000",
-2941 => x"00000000",
-2942 => x"00000000",
-2943 => x"00000000",
-2944 => x"00000000",
-2945 => x"00000000",
-2946 => x"00000000",
-2947 => x"00000000",
-2948 => x"00000000",
-2949 => x"00000000",
-2950 => x"00000000",
-2951 => x"00000000",
-2952 => x"00000000",
-2953 => x"00000000",
-2954 => x"00000000",
-2955 => x"00000000",
-2956 => x"00000000",
-2957 => x"00000000",
-2958 => x"00000000",
-2959 => x"00000000",
-2960 => x"00000000",
-2961 => x"00000000",
-2962 => x"00000000",
-2963 => x"00000000",
-2964 => x"00000000",
-2965 => x"00000000",
-2966 => x"00000000",
-2967 => x"00000000",
-2968 => x"00000000",
-2969 => x"00000000",
-2970 => x"00000000",
-2971 => x"00000000",
-2972 => x"00000000",
-2973 => x"00000000",
-2974 => x"00000000",
-2975 => x"00000000",
-2976 => x"00000000",
-2977 => x"00000000",
-2978 => x"00000000",
-2979 => x"00000000",
-2980 => x"00000000",
-2981 => x"00000000",
-2982 => x"00000000",
-2983 => x"00000000",
-2984 => x"00000000",
-2985 => x"00000000",
-2986 => x"00000000",
-2987 => x"00000000",
-2988 => x"00000000",
-2989 => x"00000000",
-2990 => x"00000000",
-2991 => x"00000000",
-2992 => x"00000000",
-2993 => x"00000000",
-2994 => x"00000000",
-2995 => x"00000000",
-2996 => x"00000000",
-2997 => x"00000000",
-2998 => x"00000000",
-2999 => x"00000000",
-3000 => x"00000000",
-3001 => x"00000000",
-3002 => x"00000000",
-3003 => x"00000000",
-3004 => x"00000000",
-3005 => x"00000000",
-3006 => x"00000000",
-3007 => x"00000000",
-3008 => x"00000000",
-3009 => x"00000000",
-3010 => x"00000000",
-3011 => x"00000000",
-3012 => x"00000000",
-3013 => x"00000000",
-3014 => x"00000000",
-3015 => x"00000000",
-3016 => x"00000000",
-3017 => x"00000000",
-3018 => x"00000000",
-3019 => x"ffffffff",
-3020 => x"00000000",
-3021 => x"00020000",
-3022 => x"00000000",
-3023 => x"00000000",
-3024 => x"00002f38",
-3025 => x"00002f38",
-3026 => x"00002f40",
-3027 => x"00002f40",
-3028 => x"00002f48",
-3029 => x"00002f48",
-3030 => x"00002f50",
-3031 => x"00002f50",
-3032 => x"00002f58",
-3033 => x"00002f58",
-3034 => x"00002f60",
-3035 => x"00002f60",
-3036 => x"00002f68",
-3037 => x"00002f68",
-3038 => x"00002f70",
-3039 => x"00002f70",
-3040 => x"00002f78",
-3041 => x"00002f78",
-3042 => x"00002f80",
-3043 => x"00002f80",
-3044 => x"00002f88",
-3045 => x"00002f88",
-3046 => x"00002f90",
-3047 => x"00002f90",
-3048 => x"00002f98",
-3049 => x"00002f98",
-3050 => x"00002fa0",
-3051 => x"00002fa0",
-3052 => x"00002fa8",
-3053 => x"00002fa8",
-3054 => x"00002fb0",
-3055 => x"00002fb0",
-3056 => x"00002fb8",
-3057 => x"00002fb8",
-3058 => x"00002fc0",
-3059 => x"00002fc0",
-3060 => x"00002fc8",
-3061 => x"00002fc8",
-3062 => x"00002fd0",
-3063 => x"00002fd0",
-3064 => x"00002fd8",
-3065 => x"00002fd8",
-3066 => x"00002fe0",
-3067 => x"00002fe0",
-3068 => x"00002fe8",
-3069 => x"00002fe8",
-3070 => x"00002ff0",
-3071 => x"00002ff0",
-3072 => x"00002ff8",
-3073 => x"00002ff8",
-3074 => x"00003000",
-3075 => x"00003000",
-3076 => x"00003008",
-3077 => x"00003008",
-3078 => x"00003010",
-3079 => x"00003010",
-3080 => x"00003018",
-3081 => x"00003018",
-3082 => x"00003020",
-3083 => x"00003020",
-3084 => x"00003028",
-3085 => x"00003028",
-3086 => x"00003030",
-3087 => x"00003030",
-3088 => x"00003038",
-3089 => x"00003038",
-3090 => x"00003040",
-3091 => x"00003040",
-3092 => x"00003048",
-3093 => x"00003048",
-3094 => x"00003050",
-3095 => x"00003050",
-3096 => x"00003058",
-3097 => x"00003058",
-3098 => x"00003060",
-3099 => x"00003060",
-3100 => x"00003068",
-3101 => x"00003068",
-3102 => x"00003070",
-3103 => x"00003070",
-3104 => x"00003078",
-3105 => x"00003078",
-3106 => x"00003080",
-3107 => x"00003080",
-3108 => x"00003088",
-3109 => x"00003088",
-3110 => x"00003090",
-3111 => x"00003090",
-3112 => x"00003098",
-3113 => x"00003098",
-3114 => x"000030a0",
-3115 => x"000030a0",
-3116 => x"000030a8",
-3117 => x"000030a8",
-3118 => x"000030b0",
-3119 => x"000030b0",
-3120 => x"000030b8",
-3121 => x"000030b8",
-3122 => x"000030c0",
-3123 => x"000030c0",
-3124 => x"000030c8",
-3125 => x"000030c8",
-3126 => x"000030d0",
-3127 => x"000030d0",
-3128 => x"000030d8",
-3129 => x"000030d8",
-3130 => x"000030e0",
-3131 => x"000030e0",
-3132 => x"000030e8",
-3133 => x"000030e8",
-3134 => x"000030f0",
-3135 => x"000030f0",
-3136 => x"000030f8",
-3137 => x"000030f8",
-3138 => x"00003100",
-3139 => x"00003100",
-3140 => x"00003108",
-3141 => x"00003108",
-3142 => x"00003110",
-3143 => x"00003110",
-3144 => x"00003118",
-3145 => x"00003118",
-3146 => x"00003120",
-3147 => x"00003120",
-3148 => x"00003128",
-3149 => x"00003128",
-3150 => x"00003130",
-3151 => x"00003130",
-3152 => x"00003138",
-3153 => x"00003138",
-3154 => x"00003140",
-3155 => x"00003140",
-3156 => x"00003148",
-3157 => x"00003148",
-3158 => x"00003150",
-3159 => x"00003150",
-3160 => x"00003158",
-3161 => x"00003158",
-3162 => x"00003160",
-3163 => x"00003160",
-3164 => x"00003168",
-3165 => x"00003168",
-3166 => x"00003170",
-3167 => x"00003170",
-3168 => x"00003178",
-3169 => x"00003178",
-3170 => x"00003180",
-3171 => x"00003180",
-3172 => x"00003188",
-3173 => x"00003188",
-3174 => x"00003190",
-3175 => x"00003190",
-3176 => x"00003198",
-3177 => x"00003198",
-3178 => x"000031a0",
-3179 => x"000031a0",
-3180 => x"000031a8",
-3181 => x"000031a8",
-3182 => x"000031b0",
-3183 => x"000031b0",
-3184 => x"000031b8",
-3185 => x"000031b8",
-3186 => x"000031c0",
-3187 => x"000031c0",
-3188 => x"000031c8",
-3189 => x"000031c8",
-3190 => x"000031d0",
-3191 => x"000031d0",
-3192 => x"000031d8",
-3193 => x"000031d8",
-3194 => x"000031e0",
-3195 => x"000031e0",
-3196 => x"000031e8",
-3197 => x"000031e8",
-3198 => x"000031f0",
-3199 => x"000031f0",
-3200 => x"000031f8",
-3201 => x"000031f8",
-3202 => x"00003200",
-3203 => x"00003200",
-3204 => x"00003208",
-3205 => x"00003208",
-3206 => x"00003210",
-3207 => x"00003210",
-3208 => x"00003218",
-3209 => x"00003218",
-3210 => x"00003220",
-3211 => x"00003220",
-3212 => x"00003228",
-3213 => x"00003228",
-3214 => x"00003230",
-3215 => x"00003230",
-3216 => x"00003238",
-3217 => x"00003238",
-3218 => x"00003240",
-3219 => x"00003240",
-3220 => x"00003248",
-3221 => x"00003248",
-3222 => x"00003250",
-3223 => x"00003250",
-3224 => x"00003258",
-3225 => x"00003258",
-3226 => x"00003260",
-3227 => x"00003260",
-3228 => x"00003268",
-3229 => x"00003268",
-3230 => x"00003270",
-3231 => x"00003270",
-3232 => x"00003278",
-3233 => x"00003278",
-3234 => x"00003280",
-3235 => x"00003280",
-3236 => x"00003288",
-3237 => x"00003288",
-3238 => x"00003290",
-3239 => x"00003290",
-3240 => x"00003298",
-3241 => x"00003298",
-3242 => x"000032a0",
-3243 => x"000032a0",
-3244 => x"000032a8",
-3245 => x"000032a8",
-3246 => x"000032b0",
-3247 => x"000032b0",
-3248 => x"000032b8",
-3249 => x"000032b8",
-3250 => x"000032c0",
-3251 => x"000032c0",
-3252 => x"000032c8",
-3253 => x"000032c8",
-3254 => x"000032d0",
-3255 => x"000032d0",
-3256 => x"000032d8",
-3257 => x"000032d8",
-3258 => x"000032e0",
-3259 => x"000032e0",
-3260 => x"000032e8",
-3261 => x"000032e8",
-3262 => x"000032f0",
-3263 => x"000032f0",
-3264 => x"000032f8",
-3265 => x"000032f8",
-3266 => x"00003300",
-3267 => x"00003300",
-3268 => x"00003308",
-3269 => x"00003308",
-3270 => x"00003310",
-3271 => x"00003310",
-3272 => x"00003318",
-3273 => x"00003318",
-3274 => x"00003320",
-3275 => x"00003320",
-3276 => x"00003328",
-3277 => x"00003328",
-3278 => x"00003330",
-3279 => x"00003330",
-3280 => x"00002b50",
-3281 => x"ffffffff",
-3282 => x"00000000",
-3283 => x"ffffffff",
-3284 => x"00000000",
- others => x"00000000"
-);
-
-begin
-
-process (clk)
-begin
- if (clk'event and clk = '1') then
- if (memAWriteEnable = '1') then
- ram(conv_integer(memAAddr)) := memAWrite;
- memARead <= memAWrite;
- else
- memARead <= ram(conv_integer(memAAddr));
- end if;
- end if;
-end process;
-
-process (clk)
-begin
- if (clk'event and clk = '1') then
- if (memBWriteEnable = '1') then
- ram(conv_integer(memBAddr)) := memBWrite;
- memBRead <= memBWrite;
- else
- memBRead <= ram(conv_integer(memBAddr));
- end if;
- end if;
-end process;
-
-
-
-
-end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/ic300.bitgen b/zpu/hdl/zpu3/src/ic300.bitgen deleted file mode 100644 index 1095099..0000000 --- a/zpu/hdl/zpu3/src/ic300.bitgen +++ /dev/null @@ -1,27 +0,0 @@ --g DebugBitstream:No
--g Binary:yes
--g CRC:Enable
--g ConfigRate:50
--g CclkPin:Pullnone
--g M0Pin:Pullnone
--g M1Pin:Pullnone
--g M2Pin:Pullnone
--g ProgPin:PullUp
--g DonePin:Pullnone
--g TckPin:Pullnone
--g TdiPin:Pullnone
--g TdoPin:Pullnone
--g TmsPin:Pullnone
--g UnusedPin:Pullnone
--g UserID:0xFFFFFFFF
--g DCMShutDown:Disable
--g DCIUpdateMode:AsRequired
--g StartUpClk:CClk
--g DONE_cycle:4
--g GTS_cycle:5
--g GWE_cycle:6
--g LCK_cycle:NoWait
--g Security:Level1
--g DonePipe:No
--g DriveDone:Yes
-
diff --git a/zpu/hdl/zpu3/src/ic300.lso b/zpu/hdl/zpu3/src/ic300.lso deleted file mode 100644 index 22de730..0000000 --- a/zpu/hdl/zpu3/src/ic300.lso +++ /dev/null @@ -1 +0,0 @@ -work
diff --git a/zpu/hdl/zpu3/src/ic300.ucf b/zpu/hdl/zpu3/src/ic300.ucf deleted file mode 100644 index e11357f..0000000 --- a/zpu/hdl/zpu3/src/ic300.ucf +++ /dev/null @@ -1,146 +0,0 @@ -# clock inputs
-net "cpu_clk_p" loc = "R9" | iostandard=LVTTL;
-
-# input pins
-net "cpu_a_p(0)" loc = "N15" | iostandard=LVTTL;
-net "cpu_a_p(1)" loc = "P16" | iostandard=LVTTL;
-net "cpu_a_p(2)" loc = "P13" | iostandard=LVTTL;
-net "cpu_a_p(3)" loc = "N16" | iostandard=LVTTL;
-net "cpu_a_p(4)" loc = "P15" | iostandard=LVTTL;
-net "cpu_a_p(5)" loc = "R11" | iostandard=LVTTL;
-net "cpu_a_p(6)" loc = "T14" | iostandard=LVTTL;
-net "cpu_a_p(7)" loc = "R16" | iostandard=LVTTL;
-net "cpu_a_p(8)" loc = "P14" | iostandard=LVTTL;
-net "cpu_a_p(9)" loc = "T13" | iostandard=LVTTL;
-net "cpu_a_p(10)" loc = "R13" | iostandard=LVTTL;
-net "cpu_a_p(11)" loc = "P7" | iostandard=LVTTL;
-net "cpu_a_p(12)" loc = "N12" | iostandard=LVTTL;
-net "cpu_a_p(13)" loc = "R12" | iostandard=LVTTL;
-net "cpu_a_p(14)" loc = "L13" | iostandard=LVTTL;
-net "cpu_a_p(15)" loc = "K12" | iostandard=LVTTL;
-net "cpu_a_p(16)" loc = "K15" | iostandard=LVTTL;
-net "cpu_a_p(17)" loc = "T10" | iostandard=LVTTL;
-net "cpu_a_p(18)" loc = "T9" | iostandard=LVTTL;
-net "cpu_a_p(19)" loc = "N10" | iostandard=LVTTL;
-net "cpu_a_p(20)" loc = "T8" | iostandard=LVTTL;
-net "cpu_wr_n_p(0)" loc = "L15" | iostandard=LVTTL;
-net "cpu_wr_n_p(1)" loc = "N14" | iostandard=LVTTL;
-net "cpu_oe_n_p" loc = "T12" | iostandard=LVTTL;
-net "cpu_cs_n_p(1)" loc = "R3" | iostandard=LVTTL;
-net "cpu_cs_n_p(2)" loc = "M16" | iostandard=LVTTL;
-net "cpu_cs_n_p(3)" loc = "P11" | iostandard=LVTTL;
-
-#net "sdr_clk_fb_p" loc = "B8" | iostandard=SSTL2_I;
-
-# output pins
-net "cpu_fiq_p" loc = "K16" | iostandard=LVTTL;
-net "cpu_irq_p(0)" loc = "M14" | iostandard=LVTTL;
-net "cpu_irq_p(1)" loc = "J16" | iostandard=LVTTL;
-net "cpu_wait_n_p" loc = "M15" | iostandard=LVTTL;
-
-#net "sdr_clk_p" loc = "D8" | iostandard=SSTL2_I | FAST;
-#net "sdr_clk_n_p" loc = "F5" | iostandard=SSTL2_I | FAST;
-#net "cke_q_p" loc = "F4" | iostandard=SSTL2_I | FAST;
-#net "cs_qn_p" loc = "M2" | iostandard=SSTL2_I | FAST | PULLUP;
-#net "ras_qn_p" loc = "J2" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
-#net "cas_qn_p" loc = "M3" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
-#net "we_qn_p" loc = "K4" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
-#net "dm_q_p(0)" loc = "L4" | iostandard=SSTL2_I | FAST;
-#net "dm_q_p(1)" loc = "E4" | iostandard=SSTL2_I | FAST;
-#net "dqs_q_p(0)" loc = "L3" | iostandard=SSTL2_I | FAST;
-#net "dqs_q_p(1)" loc = "D3" | iostandard=SSTL2_I | FAST;
-#net "ba_q_p(0)" loc = "M1" | iostandard=SSTL2_I | FAST;
-#net "ba_q_p(1)" loc = "J3" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(0)" loc = "J4" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(1)" loc = "N2" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(2)" loc = "H4" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(3)" loc = "P2" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(4)" loc = "E7" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(5)" loc = "G4" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(6)" loc = "D7" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(7)" loc = "G5" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(8)" loc = "C7" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(9)" loc = "F3" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(10)" loc = "N3" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(11)" loc = "E6" | iostandard=SSTL2_I | FAST;
-#net "sdr_a_p(12)" loc = "D6" | iostandard=SSTL2_I | FAST;
-
-# bidirectional pins
-net "cpu_d_p(0)" loc = "M11" | iostandard=LVTTL;
-net "cpu_d_p(1)" loc = "N11" | iostandard=LVTTL;
-net "cpu_d_p(2)" loc = "P10" | iostandard=LVTTL;
-net "cpu_d_p(3)" loc = "R10" | iostandard=LVTTL;
-net "cpu_d_p(4)" loc = "T7" | iostandard=LVTTL;
-net "cpu_d_p(5)" loc = "R7" | iostandard=LVTTL;
-net "cpu_d_p(6)" loc = "N6" | iostandard=LVTTL;
-net "cpu_d_p(7)" loc = "M6" | iostandard=LVTTL;
-net "cpu_d_p(8)" loc = "K13" | iostandard=LVTTL;
-net "cpu_d_p(9)" loc = "M10" | iostandard=LVTTL;
-net "cpu_d_p(10)" loc = "L12" | iostandard=LVTTL;
-net "cpu_d_p(11)" loc = "M13" | iostandard=LVTTL;
-net "cpu_d_p(12)" loc = "K14" | iostandard=LVTTL;
-net "cpu_d_p(13)" loc = "L14" | iostandard=LVTTL;
-net "cpu_d_p(14)" loc = "J13" | iostandard=LVTTL;
-net "cpu_d_p(15)" loc = "J14" | iostandard=LVTTL;
-
-#net "sdr_d_p(0)" loc = "G1" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(1)" loc = "H3" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(2)" loc = "G3" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(3)" loc = "K2" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(4)" loc = "F2" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(5)" loc = "L2" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(6)" loc = "E1" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(7)" loc = "M4" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(8)" loc = "C6" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(9)" loc = "E2" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(10)" loc = "C2" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(11)" loc = "D1" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(12)" loc = "B7" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(13)" loc = "D2" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(14)" loc = "B6" | iostandard=SSTL2_I | NODELAY | FAST;
-#net "sdr_d_p(15)" loc = "B5" | iostandard=SSTL2_I | NODELAY | FAST;
-
-# TIMING
-# Create timing names
-NET "cpu_clk_p" TNM_NET = "cpu_clk_p";
-NET "sdr_clk_fb_p" TNM_NET = "sdr_clk_fb_p";
-#NET "cpu_clk" TNM_NET = "cpu_clk";
-#NET "cpu_clk_2x" TNM_NET = "cpu_clk_2x";
-#NET "cpu_clk_4x" TNM_NET = "cpu_clk_4x";
-#NET "ddr_in_clk" TNM_NET = "ddr_in_clk";
-#NET "ddr_in_clk_2x" TNM_NET = "ddr_in_clk_2x";
-
-## Create timing
-
-# Periode timing
-TIMESPEC "TS_cpu_clk" = PERIOD "cpu_clk_p" 15.6 ns HIGH 50 %;
-#TIMESPEC "TS_sdr_clk_fb_p" = PERIOD "sdr_clk_fb_p" 7.8 ns HIGH 50 %;
-
-# Clock domain crossing timing
-#TIMESPEC "TS_cpu1_to_cpu2" = FROM "cpu_clk" TO "cpu_clk_2x" 7.8 ns;
-#TIMESPEC "TS_cpu1_to_cpu4" = FROM "cpu_clk" TO "cpu_clk_4x" 3.9 ns;
-#TIMESPEC "TS_cpu1_to_ddr2" = FROM "cpu_clk" TO "ddr_in_clk" 7.8 ns;
-#TIMESPEC "TS_cpu1_to_ddr2_2x" = FROM "cpu_clk" TO "ddr_in_clk_2x" 3.9 ns;
-
-#TIMESPEC "TS_cpu2_to_cpu1" = FROM "cpu_clk_2x" TO "cpu_clk" 7.8 ns;
-#TIMESPEC "TS_cpu2_to_cpu4" = FROM "cpu_clk_2x" TO "cpu_clk_4x" 3.9 ns;
-#TIMESPEC "TS_cpu2_to_ddr2" = FROM "cpu_clk_2x" TO "ddr_in_clk" 7.8 ns;
-#TIMESPEC "TS_cpu2_to_ddr_2x" = FROM "cpu_clk_2x" TO "ddr_in_clk_2x" 3.9 ns;
-
-#TIMESPEC "TS_cpu4_to_cpu1" = FROM "cpu_clk_4x" TO "cpu_clk" 3.9 ns;
-#TIMESPEC "TS_cpu4_to_cpu2" = FROM "cpu_clk_4x" TO "cpu_clk_2x" 3.9 ns;
-#TIMESPEC "TS_cpu4_to_ddr2" = FROM "cpu_clk_4x" TO "ddr_in_clk" 3.9 ns;
-#TIMESPEC "TS_cpu4_to_ddr2_2x" = FROM "cpu_clk_4x" TO "ddr_in_clk_2x" 3.9 ns;
-
-#TIMESPEC "TS_ddr2_to_cpu1" = FROM "ddr_in_clk" TO "cpu_clk" 7.8 ns;
-#TIMESPEC "TS_ddr2_to_cpu2" = FROM "ddr_in_clk" TO "cpu_clk_2x" 7.8 ns;
-#TIMESPEC "TS_ddr2_to_cpu4" = FROM "ddr_in_clk" TO "cpu_clk_4x" 3.9 ns;
-#TIMESPEC "TS_ddr2_to_ddr2_2x" = FROM "ddr_in_clk" TO "ddr_in_clk_2x" 3.9 ns;
-
-#TIMESPEC "TS_ddr2_2x_to_cpu1" = FROM "ddr_in_clk_2x" TO "cpu_clk" 3.9 ns;
-#TIMESPEC "TS_ddr2_2x_to_cpu2" = FROM "ddr_in_clk_2x" TO "cpu_clk_2x" 3.9 ns;
-#TIMESPEC "TS_ddr2_2x_to_cpu4" = FROM "ddr_in_clk_2x" TO "cpu_clk_4x" 3.9 ns;
-#TIMESPEC "TS_ddr2_2x_to_ddr2" = FROM "ddr_in_clk_2x" TO "ddr_in_clk" 3.9 ns;
-
-
-
diff --git a/zpu/hdl/zpu3/src/ic300.vhd b/zpu/hdl/zpu3/src/ic300.vhd deleted file mode 100644 index a1b4f41..0000000 --- a/zpu/hdl/zpu3/src/ic300.vhd +++ /dev/null @@ -1,144 +0,0 @@ ---------------------------------------------------------------------------------
--- Company: Zylin AS
--- Engineer: Tore Ramsland
---
--- Create Date: 21:47:41 07/03/05
--- Design Name: ic300
--- Module Name: ic300 - behave
--- Project Name: eCosBoard
--- Target Device: XC3S400400-FG256
--- Tool versions: 7.1i
--- Description: Top level
---
--- Dependencies:
---
--- Revision:
--- 2005-07-11 Updated to test FPGA
---
---------------------------------------------------------------------------------
-library IEEE;
-use IEEE.STD_LOGIC_1164.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-library UNISIM;
-use UNISIM.VComponents.all;
-
-library zylin;
-use zylin.arm7.all;
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-
-library work;
-use work.phi_config.all;
-use work.ic300pkg.all;
-
-entity ic300 is
- generic(
- simulate_io_time : boolean := false);
- port ( -- Clock inputs
- cpu_clk_p : in std_logic;
-
- -- CPU interface signals
- cpu_a_p : in std_logic_vector(20 downto 0);
- cpu_wr_n_p : in std_logic_vector(1 downto 0);
- cpu_cs_n_p : in std_logic_vector(3 downto 1);
- cpu_oe_n_p : in std_logic;
- cpu_d_p : inout std_logic_vector(15 downto 0);
- cpu_irq_p : out std_logic_vector(1 downto 0);
- cpu_fiq_p : out std_logic;
- cpu_wait_n_p : out std_logic;
-
- -- DDR SDRAM Signals
- sdr_clk_p : out std_logic; -- ddr_sdram_clock
- sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
- cke_q_p : out std_logic; -- clock enable
- cs_qn_p : out std_logic; -- /chip select
- ras_qn_p : inout std_logic; -- /ras
- cas_qn_p : inout std_logic; -- /cas
- we_qn_p : inout std_logic; -- /write enable
- dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
- dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
- ba_q_p : out std_logic_vector(1 downto 0); -- bank select
- sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
- sdr_d_p : inout std_logic_vector(15 downto 0); -- bidir data bus
- sdr_clk_fb_p : in std_logic -- DDR clock feedback
- );
-end ic300;
-
-architecture behave of ic300 is
-
-signal cpu_we : std_logic_vector(1 downto 0); -- Write signal for lower(0) and upper(1) 8 data bits
-signal cpu_re : std_logic; -- Read enable signal for all 16 bits
-signal areset : std_logic; -- Asyncronous active high reset (for initialization)
-signal areset_dummy : std_logic;
-
--- Clock module signals
-signal clk_status : std_logic_vector(2 downto 0); -- DLL lock status (from 3 DLL's)
-signal cpu_clk : std_logic; -- 64 MHz CPU clk
-signal cpu_clk_2x : std_logic; -- 128 MHz CPU clk (in phase with 64 MHz)
-signal cpu_clk_4x : std_logic; -- 256 MHz CPU clk (in phase with 64 MHz)
-signal ddr_in_clk : std_logic; -- 128 MHz clock from DDR SDRAM
-signal ddr_in_clk_2x : std_logic; -- 256 MHz clock from DDR SDRAM
- -- NOTE! Phase relation to 64 MHz clock unknown
-
--- Internal CPU interface signals
-signal cpu_din : std_logic_vector(15 downto 0); -- 16-bit data from CPU
-signal cpu_dout : std_logic_vector(15 downto 0); -- 16-bit data to CPU
-signal cpu_a : std_logic_vector(20 downto 0); -- 21-bit address from CPU
-
-begin
-
--- areset <= '0';
- areset_dummy <= '0';
-
- global_init_reset:
- rocbuf port map(I=>areset_dummy,O=>areset);
-
- allclocks:
- clocks port map(
- areset => areset,
- cpu_clk_p => cpu_clk_p,
- cpu_clk => cpu_clk,
- cpu_clk_2x => cpu_clk_2x,
- cpu_clk_4x => cpu_clk_4x,
- sdr_clk_fb_p => sdr_clk_fb_p,
- ddr_in_clk => ddr_in_clk,
- ddr_in_clk_2x => ddr_in_clk_2x,
- locked => clk_status);
-
- arm7cpu:
- arm7wb generic map (simulate_io_time => simulate_io_time)
- port map(
- areset => areset,
- cpu_clk => cpu_clk,
- cpu_clk_2x => cpu_clk_2x,
- cpu_a_p => cpu_a_p,
- cpu_wr_n_p => cpu_wr_n_p,
- cpu_cs_n_p => cpu_cs_n_p,
- cpu_oe_n_p => cpu_oe_n_p,
- cpu_d_p => cpu_d_p,
- cpu_irq_p => cpu_irq_p,
- cpu_fiq_p => cpu_fiq_p,
- cpu_wait_n_p => cpu_wait_n_p,
- cpu_din => cpu_din,
- cpu_a => cpu_a,
- cpu_we => cpu_we,
- cpu_re => cpu_re,
- cpu_dout => cpu_dout);
-
-
- cpu_fpga_regs:
- zpuio port map(
- areset => areset,
- cpu_clk => cpu_clk,
- clk_status => clk_status,
- cpu_din => cpu_din,
- cpu_a => cpu_a,
- cpu_we => cpu_we,
- cpu_re => cpu_re,
- cpu_dout => cpu_dout);
-
-
-end behave;
diff --git a/zpu/hdl/zpu3/src/ic300_config.vhd b/zpu/hdl/zpu3/src/ic300_config.vhd deleted file mode 100644 index 9d3f939..0000000 --- a/zpu/hdl/zpu3/src/ic300_config.vhd +++ /dev/null @@ -1,20 +0,0 @@ -library IEEE;
-use IEEE.STD_LOGIC_1164.all;
-
-package phi_config is
-
- constant Fpga_Global_Base : std_logic_vector(19 downto 17) := "000"; -- 0x0280....
- constant Clock_Stat_Reg_Addr : std_logic_vector(3 downto 1) := "000"; -- 0x....0000
- constant Testreg32_Lower_Addr : std_logic_vector(3 downto 1) := "110"; -- 0x....000C
- constant Testreg32_Upper_Addr : std_logic_vector(3 downto 1) := "111"; -- 0x....000E
-
- constant Fpga_DDR_Ctrl_Base : std_logic_vector(19 downto 17) := "111"; -- 0x028E....
- constant DDR_Ctrl_Reg_Addr : std_logic_vector(3 downto 1) := "000"; -- 0x....0000
- constant DDR_Mode_Reg_Addr : std_logic_vector(3 downto 1) := "001"; -- 0x....0002
-
- -- These are temporary test registers only!
- constant DDR_Data_Reg_Addr : std_logic_vector(3 downto 1) := "100"; -- 0x....0008
- constant DDR_Addr_Reg_Addr : std_logic_vector(3 downto 1) := "101"; -- 0x....000A
- constant DDR_Req_Reg_Addr : std_logic_vector(3 downto 1) := "110"; -- 0x....000C
-
-end phi_config;
diff --git a/zpu/hdl/zpu3/src/ic300pkg.vhd b/zpu/hdl/zpu3/src/ic300pkg.vhd deleted file mode 100644 index 13da306..0000000 --- a/zpu/hdl/zpu3/src/ic300pkg.vhd +++ /dev/null @@ -1,88 +0,0 @@ -library IEEE;
-use IEEE.STD_LOGIC_1164.all;
-
-package ic300pkg is
-
- component ic300 is
- port ( -- Clock inputs
- cpu_clk_p : in std_logic;
-
- -- CPU interface signals
- cpu_a_p : in std_logic_vector(20 downto 0);
- cpu_wr_n_p : in std_logic_vector(1 downto 0);
- cpu_cs_n_p : in std_logic_vector(3 downto 1);
- cpu_oe_n_p : in std_logic;
- cpu_d_p : inout std_logic_vector(15 downto 0);
- cpu_irq_p : out std_logic_vector(1 downto 0);
- cpu_fiq_p : out std_logic;
- cpu_wait_n_p : out std_logic;
-
- -- DDR SDRAM Signals
- sdr_clk_p : out std_logic; -- ddr_sdram_clock
- sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
- cke_q_p : out std_logic; -- clock enable
- cs_qn_p : out std_logic; -- /chip select
- ras_qn_p : inout std_logic; -- /ras
- cas_qn_p : inout std_logic; -- /cas
- we_qn_p : inout std_logic; -- /write enable
- dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
- dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
- ba_q_p : out std_logic_vector(1 downto 0); -- bank select
- sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
- sdr_d_p : inout std_logic_vector(15 downto 0); -- bidir data bus
- sdr_clk_fb_p : in std_logic -- DDR clock feedback
- );
- end component;
-
- component clocks is
- port ( areset : in std_logic;
- cpu_clk_p : in std_logic;
- sdr_clk_fb_p : in std_logic;
- cpu_clk : out std_logic;
- cpu_clk_2x : out std_logic;
- cpu_clk_4x : out std_logic;
- ddr_in_clk : out std_logic;
- ddr_in_clk_2x : out std_logic;
- locked : out std_logic_vector(2 downto 0));
- end component;
-
- component cpu_regs is
- port ( areset : in std_logic;
- cpu_clk : in std_logic;
- clk_status : in std_logic_vector(2 downto 0);
- cpu_din : in std_logic_vector(15 downto 0);
- cpu_a : in std_logic_vector(20 downto 0);
- cpu_we : in std_logic_vector(1 downto 0);
- cpu_re : in std_logic;
- cpu_dout : inout std_logic_vector(15 downto 0));
- end component;
-
- component ddr_bridge is
- port ( areset : in std_logic;
- cpu_clk : in std_logic;
- cpu_clk_2x : in std_logic;
- cpu_clk_4x : in std_logic;
- ddr_in_clk : in std_logic;
- ddr_in_clk_2x : in std_logic;
-
- cpu_we : in std_logic_vector(1 downto 0);
- cpu_re : in std_logic;
- cpu_din : in std_logic_vector(15 downto 0);
- cpu_a : in std_logic_vector(20 downto 0);
- cpu_dout : inout std_logic_vector(15 downto 0);
-
- sdr_clk_p : out std_logic; -- ddr_sdram_clock
- sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
- cke_q_p : out std_logic; -- clock enable
- cs_qn_p : out std_logic; -- /chip select
- ras_qn_p : inout std_logic; -- /ras
- cas_qn_p : inout std_logic; -- /cas
- we_qn_p : inout std_logic; -- /write enable
- dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
- dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
- ba_q_p : out std_logic_vector(1 downto 0); -- bank select
- sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
- sdr_d_p : inout std_logic_vector(15 downto 0)); -- bidir data bus
- end component;
-
-end ic300pkg;
diff --git a/zpu/hdl/zpu3/src/io.vhd b/zpu/hdl/zpu3/src/io.vhd deleted file mode 100644 index 6b50ca1..0000000 --- a/zpu/hdl/zpu3/src/io.vhd +++ /dev/null @@ -1,95 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-use std.textio.all;
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-use zylin.txt_util.all;
-
-entity zpu_io is
- generic (
- log_file: string := "log.txt"
- );
- port(
- clk : in std_logic;
- areset : in std_logic;
- busy : out std_logic;
- writeEnable : in std_logic;
- readEnable : in std_logic;
- write : in std_logic_vector(7 downto 0);
- read : out std_logic_vector(7 downto 0);
- addr : in std_logic_vector(maxAddrBit downto minAddrBit)
- );
-end zpu_io;
-
-
-architecture behave of zpu_io is
-
-
-
-signal timer_read : std_logic_vector(7 downto 0);
---signal timer_write : std_logic_vector(7 downto 0);
-signal timer_we : std_logic;
-
-file l_file : TEXT open write_mode is log_file;
-
-begin
-
-
- timerinst: timer port map (
- clk => clk,
- areset => areset,
- we => timer_we,
- din => write,
- adr => addr(4 downto 2),
- dout => timer_read);
-
-
- process(areset, clk)
- begin
- if (areset = '1') then
- timer_we <= '0';
- busy <= '1';
- elsif (clk'event and clk = '1') then
- busy <= '1';
- timer_we <= '0';
- if writeEnable = '1' then
- -- external interface
- if addr=x"1000" then
- -- Write to UART
- -- report "" & character'image(conv_integer(memBint)) severity note;
- print(l_file, character'val(conv_integer(write)));
- busy <= '0';
- elsif addr(12)='1' then
- timer_we <= '1';
- busy <= '0';
- else
- report "Illegal IO write" severity failure;
- end if;
-
- end if;
- if (readEnable = '1') then
- if addr=x"1001" then
- read <= (0=>'1', others => '0'); -- recieve empty
- busy <= '0';
- elsif addr(12)='1' then
- read <= timer_read;
- busy <= '0';
- elsif addr(11)='1' then
- read <= ZPU_Frequency;
- busy <= '0';
- else
- report "Illegal IO read" severity failure;
- end if;
- else
- read <= (others => '1');
- end if;
- end if;
- end process;
-
-
-end behave;
-
diff --git a/zpu/hdl/zpu3/src/log.txt b/zpu/hdl/zpu3/src/log.txt deleted file mode 100644 index 5557b06..0000000 --- a/zpu/hdl/zpu3/src/log.txt +++ /dev/null @@ -1,156 +0,0 @@ - - - -D -h -r -y -s -t -o -n -e - -B -e -n -c -h -m -a -r -k -, - -V -e -r -s -i -o -n - -2 -. -1 - -( -L -a -n -g -u -a -g -e -: - -C -) - - - - - - -P -r -o -g -r -a -m - -c -o -m -p -i -l -e -d - -w -i -t -h -o -u -t - -' -r -e -g -i -s -t -e -r -' - -a -t -t -r -i -b -u -t -e - - - - - - -E -x -e -c -u -t -i -o -n - -s -t -a -r -t -s -, - -2 -0 -0 -0 -0 -0 - -r -u -n -s - -t -h -r -o -u -g -h - -D -h -r -y -s -t -o -n -e - - - diff --git a/zpu/hdl/zpu3/src/niltrace.vhd b/zpu/hdl/zpu3/src/niltrace.vhd deleted file mode 100644 index 40fc1ca..0000000 --- a/zpu/hdl/zpu3/src/niltrace.vhd +++ /dev/null @@ -1,26 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-use std.textio.all;
-use work.zpu_config.all;
-
-
-entity trace is
- port(
- clk : in std_logic;
- begin_inst : in std_logic;
- pc : in std_logic_vector(maxAddrBit downto 0);
- opcode : in std_logic_vector(7 downto 0);
- sp : in std_logic_vector(maxAddrBit downto 2);
- memA : in std_logic_vector(wordSize-1 downto 0);
- busy : in std_logic);
-end trace;
-
-
-architecture behave of trace is
-
-begin
-
-end behave;
-
diff --git a/zpu/hdl/zpu3/src/sim_fpga_top.vhd b/zpu/hdl/zpu3/src/sim_fpga_top.vhd deleted file mode 100644 index 3044606..0000000 --- a/zpu/hdl/zpu3/src/sim_fpga_top.vhd +++ /dev/null @@ -1,127 +0,0 @@ --------------------------------------------------------------------------------- --- Company: --- Engineer: --- --- Create Date: 20:15:31 04/14/05 --- Design Name: --- Module Name: fpga_top - behave --- Project Name: --- Target Device: --- Tool versions: --- Description: --- --- Dependencies: --- --- Revision: --- Revision 0.01 - File Created --- Additional Comments: --- --------------------------------------------------------------------------------- -library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.STD_LOGIC_ARITH.ALL; -use IEEE.STD_LOGIC_UNSIGNED.ALL; - ----- Uncomment the following library declaration if instantiating ----- any Xilinx primitives in this code. -library UNISIM; -use UNISIM.VComponents.all; - -library zylin; -use zylin.zpu_config.all; -use zylin.zpupkg.all; - -entity fpga_top is -end fpga_top; - -architecture behave of fpga_top is - - -signal clk : std_logic; - -signal areset : std_logic; - - -component zpu_top is - Port ( clk : in std_logic; - areset : in std_logic; - io_busy : in std_logic; - io_read : in std_logic_vector(7 downto 0); - io_write : out std_logic_vector(7 downto 0); - io_addr : out std_logic_vector(maxAddrBit downto minAddrBit); - io_writeEnable : out std_logic; - io_readEnable : out std_logic; - interrupt : in std_logic; - break : out std_logic); -end component; - - -component zpu_io is - generic ( - log_file: string := "log.txt" - ); - port( - clk : in std_logic; - areset : in std_logic; - busy : out std_logic; - writeEnable : in std_logic; - readEnable : in std_logic; - write : in std_logic_vector(7 downto 0); - read : out std_logic_vector(7 downto 0); - addr : in std_logic_vector(maxAddrBit downto minAddrBit) - ); -end component; - - - -signal io_busy : std_logic; -signal io_read : std_logic_vector(7 downto 0); -signal io_write : std_logic_vector(7 downto 0); -signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit); -signal io_writeEnable : std_logic; -signal io_readEnable : std_logic; - -signal break : std_logic; - -begin - poweronreset: roc port map (O => areset); - - - - zpu: zpu_top port map ( - clk => clk , - areset => areset, - io_busy => io_busy, - io_read => io_read, - io_write => io_write, - io_addr => io_addr, - io_writeEnable => io_writeEnable, - io_readEnable => io_readEnable, - interrupt => '0', - break => break); - - - ioMap: zpu_io port map ( - clk => clk, - areset => areset, - busy => io_busy, - writeEnable => io_writeEnable, - readEnable => io_readEnable, - write => io_write, - read => io_read, - addr => io_addr - ); - - - - -- wiggle the clock @ 100MHz - clock : PROCESS - begin - clk <= '0'; - wait for 5 ns; - clk <= '1'; - wait for 5 ns; - end PROCESS clock; - - -end behave; diff --git a/zpu/hdl/zpu3/src/status.txt b/zpu/hdl/zpu3/src/status.txt deleted file mode 100644 index df8773a..0000000 --- a/zpu/hdl/zpu3/src/status.txt +++ /dev/null @@ -1,67 +0,0 @@ -- Make LOADSP/STORESP/ADDSP/PUSHPC & OR emulated => From 444 => 428 LUT. - A pitiful saving in return for destroying performance. -- If I reduce datapath to 8(which is useless) => 197 LUT. - -Bare bones version of ZPU3: - -- remove NOP, PUSHPC, STORESP, LOADSP, ADDSP and OR instructions. This requires - modification to the GCC toolchain and will result in a fairly significant - code increase. We should still do better than ARM though. -- reduce datapath to 16 bits. This will reduce stack usage, which is good. -- 4kBytes of RAM. - - [exec] ========================================================================= - [exec] Device utilization summary: - [exec] --------------------------- - [exec] Selected Device : 3s400ft256-4 - [exec] Number of Slices: 167 out of 3584 4% - [exec] Number of Slice Flip Flops: 126 out of 7168 1% - [exec] Number of 4 input LUTs: 288 out of 7168 4% - [exec] Number of bonded IOBs: 49 out of 173 28% - [exec] Number of BRAMs: 1 out of 16 6% - [exec] Number of GCLKs: 1 out of 8 12% - [exec] ========================================================================= - - - - -Measurements: - -- Removing PUSHPC(which is possible) reduces usage by 2 LUT's. -- I tried to introduce the instructions as seperate states at the top level, - but did not succeed in reducing LUT count. This might be an avenue to - pursue if asynchronous(?) ROM's could replace logic. -- 550 LUT @ 76MHz. 32 bit datapath & 8 bit instructions. Added seperate decode - stage. -- Tried to move memAControl into decoded opcode. Usage went up to 594 from 550. - -- using 16 bit opcodes to encode signals directly. 466 LUT's. -- w/2kBytes 32 RAM & 32 bit opcodes. 415 LUT's. -- 16 bit opcode, 16 bit datapath and 1kbyte RAM. 292 LUT's. - -- 725 LUT's @ 63MHz - Minimum period: 15.909ns{1} (Maximum frequency: 62.858MHz) -- removed addsp, loadsp & storesp. => 670 LUT's. -- removed all pushes & pops to sp. => 638 LUT's. -- removed OR instruction. => 672 LUT's. -- on the second cycle an ADD is done regardless => 713 LUT's. -- using others => 'x' for e.g. pushsp. 713 => 703. -- switching from lots of prioritized if() for decoding instruction to a case - statement. 713 => 631. -- Using ZPU1's memory scheme instead of inferred memory. 713 => 715, i.e. no - difference. -- Removing AddSP. 715 => 704 LUT's. -- Add COMPARE. 715 => 743 LUT's. -- Slight reorganization of binary operand & NOP 715 => 704. -- STORE only pops 1 (which can be fixed in the assembler). 704 => 701. -- Remove NOP. NOP is only used to clear idim_flag. Use NOT instead. -- Removing FLIP. 681 => 646. Using a different way to generate the FLIP, - 681 => 679. -- Add a seperate memory system for code? -- Use IDIM_FLAG to cache value before IM and make add single cycle. - -- by expanding the opcode to 32 bits, encoding everything in the opcode & - using case statements. 713 => 433 LUT. -- 32 bit opcode w/encoded state & 16 bit datapath. => 325 LUT -- by using 512 byte RAM, 16 bit datapath and 32 bit instructions => 285. - diff --git a/zpu/hdl/zpu3/src/testlut.vhd b/zpu/hdl/zpu3/src/testlut.vhd deleted file mode 100644 index fcc8fde..0000000 --- a/zpu/hdl/zpu3/src/testlut.vhd +++ /dev/null @@ -1,106 +0,0 @@ --- Company: Zylin AS
---
--- Hooks up the ZPU to physical pads to ensure that it is not optimized to
--- oblivion. This is purely to have something to measure LUT usage against.
---
-library IEEE;
-use IEEE.STD_LOGIC_1164.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-
-entity ic300 is
- port ( -- Clock inputs
- cpu_clk_p : in std_logic;
-
- -- CPU interface signals
- cpu_a_p : in std_logic_vector(20 downto 0);
- cpu_wr_n_p : in std_logic_vector(1 downto 0);
- cpu_cs_n_p : in std_logic_vector(3 downto 1);
- cpu_oe_n_p : in std_logic;
- cpu_d_p : out std_logic_vector(15 downto 0);
- cpu_irq_p : out std_logic_vector(1 downto 0);
- cpu_fiq_p : out std_logic;
- cpu_wait_n_p : out std_logic;
-
- sdr_clk_fb_p : in std_logic -- DDR clock feedback
- );
-end ic300;
-
-architecture behave of ic300 is
-
-
-signal io_busy : std_logic;
-signal io_read : std_logic_vector(7 downto 0);
-signal io_write : std_logic_vector(7 downto 0);
-signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
-signal io_writeEnable : std_logic;
-signal io_readEnable : std_logic;
-
-
-signal cpu_we : std_logic_vector(1 downto 0);
-signal cpu_re : std_logic;
-signal areset : std_logic;
-
--- Clock module signals
-signal clk_status : std_logic_vector(2 downto 0);
-signal cpu_clk : std_logic;
-signal cpu_clk_2x : std_logic;
-signal cpu_clk_4x : std_logic;
-signal ddr_in_clk : std_logic;
-
-
--- Internal CPU interface signals
-signal cpu_din : std_logic_vector(15 downto 0);
-signal cpu_dout : std_logic_vector(15 downto 0);
-signal cpu_a : std_logic_vector(20 downto 0);
-
-signal dummy : std_logic_vector(maxAddrBit downto minAddrBit+5);
-
-begin
-
- areset <= '0'; -- MUST BE CHANGED TO SOMETHING CORRECT
-
--- cpu_d_p <= (others => '0');
- cpu_irq_p <= (others => '0');
- cpu_fiq_p <= '0';
- cpu_wait_n_p <= '0';
-
- cpu_d_p(15 downto 15) <= (others => '0');
-
- -- delay signals going out/in w/1 clk so the
- -- ZPU does not have to drive those pins.
- --
- -- these registers can be placed close to the ZPU and these
- -- registers then have a full clock to drive the pins.
- process(cpu_clk_p, areset)
- begin
- if (cpu_clk_p'event and cpu_clk_p = '1') then
- cpu_d_p(0) <= io_writeEnable;
- cpu_d_p(1) <= io_readEnable;
- cpu_d_p(9 downto 2) <= io_write;
- io_read <= cpu_a_p(7 downto 0);
- -- 32 read/write registers is plenty realisitic for a minimal size
- -- soft-CPU
- cpu_d_p(14 downto 10) <= io_addr(minAddrBit+4 downto minAddrBit);
- end if;
- end process;
-
-
- zpu: zpu_top port map (
- clk => cpu_clk_p ,
- areset => areset,
- io_busy => '0',
- io_writeEnable => io_writeEnable,
- io_readEnable => io_readEnable,
- io_write => io_write,
- io_read => io_read,
- io_addr => io_addr,
- interrupt => '0'
- );
-
-
-
-end behave;
diff --git a/zpu/hdl/zpu3/src/timer.vhd b/zpu/hdl/zpu3/src/timer.vhd deleted file mode 100644 index 65836f0..0000000 --- a/zpu/hdl/zpu3/src/timer.vhd +++ /dev/null @@ -1,157 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-entity timer is
- port(
- clk : in std_logic;
- areset : in std_logic;
- we : in std_logic;
- din : in std_logic_vector(7 downto 0);
- adr : in std_logic_vector(2 downto 0);
- dout : out std_logic_vector(7 downto 0));
-end timer;
-
-
-architecture behave of timer is
-
-signal sample : std_logic;
-signal reset : std_logic;
-
-signal c : std_logic_vector(1 to 7);
-
-signal cnt : std_logic_vector(63 downto 0);
-signal cnt_smp : std_logic_vector(63 downto 0);
-
-begin
-
- reset <= '1' when (we = '1' and din(0) = '1') else '0';
- sample <= '1' when (we = '1' and din(1) = '1') else '0';
-
- process(clk, areset) -- Carry generation
- begin
- if areset = '1' then
- c <= "0000000";
- elsif (clk'event and clk = '1') then
- if reset = '1' then
- c <= "0000000";
- else
- if cnt(7 downto 0) = "11111110" then
- c(1) <= '1';
- else
- c(1) <= '0';
- end if;
- if cnt(15 downto 8) = "11111111" then
- c(2) <= '1';
- else
- c(2) <= '0';
- end if;
- if cnt(23 downto 16) = "11111111" and c(2) = '1' then
- c(3) <= '1';
- else
- c(3) <= '0';
- end if;
- if cnt(31 downto 24) = "11111111" and c(3) = '1' then
- c(4) <= '1';
- else
- c(4) <= '0';
- end if;
- if cnt(39 downto 32) = "11111111" and c(4) = '1' then
- c(5) <= '1';
- else
- c(5) <= '0';
- end if;
- if cnt(47 downto 40) = "11111111" and c(5) = '1' then
- c(6) <= '1';
- else
- c(6) <= '0';
- end if;
- if cnt(55 downto 48) = "11111111" and c(6) = '1' then
- c(7) <= '1';
- else
- c(7) <= '0';
- end if;
- end if;
- end if;
- end process;
-
- process(clk, areset)
- begin
- if areset = '1' then
- cnt <= (others=>'0');
- elsif (clk'event and clk = '1') then
- if reset = '1' then
- cnt <= (others=>'0');
- else
- cnt(7 downto 0) <= cnt(7 downto 0) + '1';
- if c(1) = '1' then
- cnt(15 downto 8) <= cnt(15 downto 8) + '1';
- else
- cnt(15 downto 8) <= cnt(15 downto 8);
- end if;
- if c(2) = '1' and c(1) = '1' then
- cnt(23 downto 16) <= cnt(23 downto 16) + '1';
- else
- cnt(23 downto 16) <= cnt(23 downto 16);
- end if;
- if c(3) = '1' and c(1) = '1' then
- cnt(31 downto 24) <= cnt(31 downto 24) + '1';
- else
- cnt(31 downto 24) <= cnt(31 downto 24);
- end if;
- if c(4) = '1' and c(1) = '1' then
- cnt(39 downto 32) <= cnt(39 downto 32) + '1';
- else
- cnt(39 downto 32) <= cnt(39 downto 32);
- end if;
- if c(5) = '1' and c(1) = '1' then
- cnt(47 downto 40) <= cnt(47 downto 40) + '1';
- else
- cnt(47 downto 40) <= cnt(47 downto 40);
- end if;
- if c(6) = '1' and c(1) = '1' then
- cnt(55 downto 48) <= cnt(55 downto 48) + '1';
- else
- cnt(55 downto 48) <= cnt(55 downto 48);
- end if;
- if c(7) = '1' and c(1) = '1' then
- cnt(63 downto 56) <= cnt(63 downto 56) + '1';
- else
- cnt(63 downto 56) <= cnt(63 downto 56);
- end if;
- end if;
- end if;
- end process;
-
- process(clk, areset)
- begin
- if areset = '1' then
- cnt_smp <= (others=>'0');
- elsif (clk'event and clk = '1') then
- if reset = '1' then
- cnt_smp <= (others=>'0');
- elsif sample = '1' then
- cnt_smp <= cnt;
- else
- cnt_smp <= cnt_smp;
- end if;
- end if;
- end process;
-
- process(cnt_smp, adr)
- begin
- case adr is
- when "000" => dout <= cnt_smp(7 downto 0);
- when "001" => dout <= cnt_smp(15 downto 8);
- when "010" => dout <= cnt_smp(23 downto 16);
- when "011" => dout <= cnt_smp(31 downto 24);
- when "100" => dout <= cnt_smp(39 downto 32);
- when "101" => dout <= cnt_smp(47 downto 40);
- when "110" => dout <= cnt_smp(55 downto 48);
- when others => dout <= cnt_smp(63 downto 56);
- end case;
- end process;
-
-
-end behave;
-
diff --git a/zpu/hdl/zpu3/src/trace.vhd b/zpu/hdl/zpu3/src/trace.vhd deleted file mode 100644 index 81eb448..0000000 --- a/zpu/hdl/zpu3/src/trace.vhd +++ /dev/null @@ -1,80 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
---use IEEE.STD_LOGIC_ARITH.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-use std.textio.all;
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-use zylin.txt_util.all;
-
-
-entity trace is
- generic (
- log_file: string := "trace.txt"
- );
- port(
- clk : in std_logic;
- begin_inst : in std_logic;
- pc : in std_logic_vector(maxAddrBit downto 0);
- opcode : in std_logic_vector(7 downto 0);
- sp : in std_logic_vector(maxAddrBit downto 2);
- memA : in std_logic_vector(wordSize-1 downto 0);
- memB : in std_logic_vector(wordSize-1 downto 0);
- busy : in std_logic
- );
-end trace;
-
-
-architecture behave of trace is
-
-
-file l_file : TEXT open write_mode is log_file;
-
-
-begin
-
-
--- write data and control information to a file
-
-receive_data: process
-
-variable l: line;
-variable t : std_logic_vector(wordSize-1 downto 0);
-variable t2 : std_logic_vector(maxAddrBit downto 0);
-
-
-
-begin
-
- t:= (others => '0');
- t2:= (others => '0');
-
- -- print header for the logfile
- print(l_file, "#pc,opcode,sp,top_of_stack ");
- print(l_file, "#----------");
- print(l_file, " ");
-
- wait until clk = '1';
- wait until clk = '0';
-
- while true loop
-
- if begin_inst = '1' then
- t(maxAddrBit downto 2):=sp;
- t2:=pc;
- print(l_file, "0x" & hstr(t2) & " 0x" & hstr(opcode) & " 0x" & hstr(t) & " 0x" & hstr(memA) & " 0x" & hstr(memB));
- end if;
-
- wait until clk = '0';
-
- end loop;
-
- end process receive_data;
-
-
-
-end behave;
-
diff --git a/zpu/hdl/zpu3/src/txt_util.vhd b/zpu/hdl/zpu3/src/txt_util.vhd deleted file mode 100644 index d42303b..0000000 --- a/zpu/hdl/zpu3/src/txt_util.vhd +++ /dev/null @@ -1,586 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use std.textio.all;
-
-
-package txt_util is
-
- -- prints a message to the screen
- procedure print(text: string);
-
- -- prints the message when active
- -- useful for debug switches
- procedure print(active: boolean; text: string);
-
- -- converts std_logic into a character
- function chr(sl: std_logic) return character;
-
- -- converts std_logic into a string (1 to 1)
- function str(sl: std_logic) return string;
-
- -- converts std_logic_vector into a string (binary base)
- function str(slv: std_logic_vector) return string;
-
- -- converts boolean into a string
- function str(b: boolean) return string;
-
- -- converts an integer into a single character
- -- (can also be used for hex conversion and other bases)
- function chr(int: integer) return character;
-
- -- converts integer into string using specified base
- function str(int: integer; base: integer) return string;
-
- -- converts integer to string, using base 10
- function str(int: integer) return string;
-
- -- convert std_logic_vector into a string in hex format
- function hstr(slv: std_logic_vector) return string;
-
-
- -- functions to manipulate strings
- -----------------------------------
-
- -- convert a character to upper case
- function to_upper(c: character) return character;
-
- -- convert a character to lower case
- function to_lower(c: character) return character;
-
- -- convert a string to upper case
- function to_upper(s: string) return string;
-
- -- convert a string to lower case
- function to_lower(s: string) return string;
-
-
-
- -- functions to convert strings into other formats
- --------------------------------------------------
-
- -- converts a character into std_logic
- function to_std_logic(c: character) return std_logic;
-
- -- converts a string into std_logic_vector
- function to_std_logic_vector(s: string) return std_logic_vector;
-
-
-
- -- file I/O
- -----------
-
- -- read variable length string from input file
- procedure str_read(file in_file: TEXT;
- res_string: out string);
-
- -- print string to a file and start new line
- procedure print(file out_file: TEXT;
- new_string: in string);
-
- -- print character to a file and start new line
- procedure print(file out_file: TEXT;
- char: in character);
-
-end txt_util;
-
-
-
-
-package body txt_util is
-
-
-
-
- -- prints text to the screen
-
- procedure print(text: string) is
- variable msg_line: line;
- begin
- write(msg_line, text);
- writeline(output, msg_line);
- end print;
-
-
-
-
- -- prints text to the screen when active
-
- procedure print(active: boolean; text: string) is
- begin
- if active then
- print(text);
- end if;
- end print;
-
-
- -- converts std_logic into a character
-
- function chr(sl: std_logic) return character is
- variable c: character;
- begin
- case sl is
- when 'U' => c:= 'U';
- when 'X' => c:= 'X';
- when '0' => c:= '0';
- when '1' => c:= '1';
- when 'Z' => c:= 'Z';
- when 'W' => c:= 'W';
- when 'L' => c:= 'L';
- when 'H' => c:= 'H';
- when '-' => c:= '-';
- end case;
- return c;
- end chr;
-
-
-
- -- converts std_logic into a string (1 to 1)
-
- function str(sl: std_logic) return string is
- variable s: string(1 to 1);
- begin
- s(1) := chr(sl);
- return s;
- end str;
-
-
-
- -- converts std_logic_vector into a string (binary base)
- -- (this also takes care of the fact that the range of
- -- a string is natural while a std_logic_vector may
- -- have an integer range)
-
- function str(slv: std_logic_vector) return string is
- variable result : string (1 to slv'length);
- variable r : integer;
- begin
- r := 1;
- for i in slv'range loop
- result(r) := chr(slv(i));
- r := r + 1;
- end loop;
- return result;
- end str;
-
-
- function str(b: boolean) return string is
-
- begin
- if b then
- return "true";
- else
- return "false";
- end if;
- end str;
-
-
- -- converts an integer into a character
- -- for 0 to 9 the obvious mapping is used, higher
- -- values are mapped to the characters A-Z
- -- (this is usefull for systems with base > 10)
- -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)
-
- function chr(int: integer) return character is
- variable c: character;
- begin
- case int is
- when 0 => c := '0';
- when 1 => c := '1';
- when 2 => c := '2';
- when 3 => c := '3';
- when 4 => c := '4';
- when 5 => c := '5';
- when 6 => c := '6';
- when 7 => c := '7';
- when 8 => c := '8';
- when 9 => c := '9';
- when 10 => c := 'A';
- when 11 => c := 'B';
- when 12 => c := 'C';
- when 13 => c := 'D';
- when 14 => c := 'E';
- when 15 => c := 'F';
- when 16 => c := 'G';
- when 17 => c := 'H';
- when 18 => c := 'I';
- when 19 => c := 'J';
- when 20 => c := 'K';
- when 21 => c := 'L';
- when 22 => c := 'M';
- when 23 => c := 'N';
- when 24 => c := 'O';
- when 25 => c := 'P';
- when 26 => c := 'Q';
- when 27 => c := 'R';
- when 28 => c := 'S';
- when 29 => c := 'T';
- when 30 => c := 'U';
- when 31 => c := 'V';
- when 32 => c := 'W';
- when 33 => c := 'X';
- when 34 => c := 'Y';
- when 35 => c := 'Z';
- when others => c := '?';
- end case;
- return c;
- end chr;
-
-
-
- -- convert integer to string using specified base
- -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)
-
- function str(int: integer; base: integer) return string is
-
- variable temp: string(1 to 10);
- variable num: integer;
- variable abs_int: integer;
- variable len: integer := 1;
- variable power: integer := 1;
-
- begin
-
- -- bug fix for negative numbers
- abs_int := abs(int);
-
- num := abs_int;
-
- while num >= base loop -- Determine how many
- len := len + 1; -- characters required
- num := num / base; -- to represent the
- end loop ; -- number.
-
- for i in len downto 1 loop -- Convert the number to
- temp(i) := chr(abs_int/power mod base); -- a string starting
- power := power * base; -- with the right hand
- end loop ; -- side.
-
- -- return result and add sign if required
- if int < 0 then
- return '-'& temp(1 to len);
- else
- return temp(1 to len);
- end if;
-
- end str;
-
-
- -- convert integer to string, using base 10
- function str(int: integer) return string is
-
- begin
-
- return str(int, 10) ;
-
- end str;
-
-
-
- -- converts a std_logic_vector into a hex string.
- function hstr(slv: std_logic_vector) return string is
- variable hexlen: integer;
- variable longslv : std_logic_vector(67 downto 0) := (others => '0');
- variable hex : string(1 to 16);
- variable fourbit : std_logic_vector(3 downto 0);
- begin
- hexlen := (slv'left+1)/4;
- if (slv'left+1) mod 4 /= 0 then
- hexlen := hexlen + 1;
- end if;
- longslv(slv'left downto 0) := slv;
- for i in (hexlen -1) downto 0 loop
- fourbit := longslv(((i*4)+3) downto (i*4));
- case fourbit is
- when "0000" => hex(hexlen -I) := '0';
- when "0001" => hex(hexlen -I) := '1';
- when "0010" => hex(hexlen -I) := '2';
- when "0011" => hex(hexlen -I) := '3';
- when "0100" => hex(hexlen -I) := '4';
- when "0101" => hex(hexlen -I) := '5';
- when "0110" => hex(hexlen -I) := '6';
- when "0111" => hex(hexlen -I) := '7';
- when "1000" => hex(hexlen -I) := '8';
- when "1001" => hex(hexlen -I) := '9';
- when "1010" => hex(hexlen -I) := 'A';
- when "1011" => hex(hexlen -I) := 'B';
- when "1100" => hex(hexlen -I) := 'C';
- when "1101" => hex(hexlen -I) := 'D';
- when "1110" => hex(hexlen -I) := 'E';
- when "1111" => hex(hexlen -I) := 'F';
- when "ZZZZ" => hex(hexlen -I) := 'z';
- when "UUUU" => hex(hexlen -I) := 'u';
- when "XXXX" => hex(hexlen -I) := 'x';
- when others => hex(hexlen -I) := '?';
- end case;
- end loop;
- return hex(1 to hexlen);
- end hstr;
-
-
-
- -- functions to manipulate strings
- -----------------------------------
-
-
- -- convert a character to upper case
-
- function to_upper(c: character) return character is
-
- variable u: character;
-
- begin
-
- case c is
- when 'a' => u := 'A';
- when 'b' => u := 'B';
- when 'c' => u := 'C';
- when 'd' => u := 'D';
- when 'e' => u := 'E';
- when 'f' => u := 'F';
- when 'g' => u := 'G';
- when 'h' => u := 'H';
- when 'i' => u := 'I';
- when 'j' => u := 'J';
- when 'k' => u := 'K';
- when 'l' => u := 'L';
- when 'm' => u := 'M';
- when 'n' => u := 'N';
- when 'o' => u := 'O';
- when 'p' => u := 'P';
- when 'q' => u := 'Q';
- when 'r' => u := 'R';
- when 's' => u := 'S';
- when 't' => u := 'T';
- when 'u' => u := 'U';
- when 'v' => u := 'V';
- when 'w' => u := 'W';
- when 'x' => u := 'X';
- when 'y' => u := 'Y';
- when 'z' => u := 'Z';
- when others => u := c;
- end case;
-
- return u;
-
- end to_upper;
-
-
- -- convert a character to lower case
-
- function to_lower(c: character) return character is
-
- variable l: character;
-
- begin
-
- case c is
- when 'A' => l := 'a';
- when 'B' => l := 'b';
- when 'C' => l := 'c';
- when 'D' => l := 'd';
- when 'E' => l := 'e';
- when 'F' => l := 'f';
- when 'G' => l := 'g';
- when 'H' => l := 'h';
- when 'I' => l := 'i';
- when 'J' => l := 'j';
- when 'K' => l := 'k';
- when 'L' => l := 'l';
- when 'M' => l := 'm';
- when 'N' => l := 'n';
- when 'O' => l := 'o';
- when 'P' => l := 'p';
- when 'Q' => l := 'q';
- when 'R' => l := 'r';
- when 'S' => l := 's';
- when 'T' => l := 't';
- when 'U' => l := 'u';
- when 'V' => l := 'v';
- when 'W' => l := 'w';
- when 'X' => l := 'x';
- when 'Y' => l := 'y';
- when 'Z' => l := 'z';
- when others => l := c;
- end case;
-
- return l;
-
- end to_lower;
-
-
-
- -- convert a string to upper case
-
- function to_upper(s: string) return string is
-
- variable uppercase: string (s'range);
-
- begin
-
- for i in s'range loop
- uppercase(i):= to_upper(s(i));
- end loop;
- return uppercase;
-
- end to_upper;
-
-
-
- -- convert a string to lower case
-
- function to_lower(s: string) return string is
-
- variable lowercase: string (s'range);
-
- begin
-
- for i in s'range loop
- lowercase(i):= to_lower(s(i));
- end loop;
- return lowercase;
-
- end to_lower;
-
-
-
--- functions to convert strings into other types
-
-
--- converts a character into a std_logic
-
-function to_std_logic(c: character) return std_logic is
- variable sl: std_logic;
- begin
- case c is
- when 'U' =>
- sl := 'U';
- when 'X' =>
- sl := 'X';
- when '0' =>
- sl := '0';
- when '1' =>
- sl := '1';
- when 'Z' =>
- sl := 'Z';
- when 'W' =>
- sl := 'W';
- when 'L' =>
- sl := 'L';
- when 'H' =>
- sl := 'H';
- when '-' =>
- sl := '-';
- when others =>
- sl := 'X';
- end case;
- return sl;
- end to_std_logic;
-
-
--- converts a string into std_logic_vector
-
-function to_std_logic_vector(s: string) return std_logic_vector is
- variable slv: std_logic_vector(s'high-s'low downto 0);
- variable k: integer;
-begin
- k := s'high-s'low;
- for i in s'range loop
- slv(k) := to_std_logic(s(i));
- k := k - 1;
- end loop;
- return slv;
-end to_std_logic_vector;
-
-
-
-
-
-
-----------------
--- file I/O --
-----------------
-
-
-
--- read variable length string from input file
-
-procedure str_read(file in_file: TEXT;
- res_string: out string) is
-
- variable l: line;
- variable c: character;
- variable is_string: boolean;
-
- begin
-
- readline(in_file, l);
- -- clear the contents of the result string
- for i in res_string'range loop
- res_string(i) := ' ';
- end loop;
- -- read all characters of the line, up to the length
- -- of the results string
- for i in res_string'range loop
- read(l, c, is_string);
- res_string(i) := c;
- if not is_string then -- found end of line
- exit;
- end if;
- end loop;
-
-end str_read;
-
-
--- print string to a file
-procedure print(file out_file: TEXT;
- new_string: in string) is
-
- variable l: line;
-
- begin
-
- write(l, new_string);
- writeline(out_file, l);
-
-end print;
-
-
--- print character to a file and start new line
-procedure print(file out_file: TEXT;
- char: in character) is
-
- variable l: line;
-
- begin
-
- write(l, char);
- writeline(out_file, l);
-
-end print;
-
-
-
--- appends contents of a string to a file until line feed occurs
--- (LF is considered to be the end of the string)
-
-procedure str_write(file out_file: TEXT;
- new_string: in string) is
- begin
-
- for i in new_string'range loop
- print(out_file, new_string(i));
- if new_string(i) = LF then -- end of string
- exit;
- end if;
- end loop;
-
-end str_write;
-
-
-
-
-end txt_util;
-
-
-
-
diff --git a/zpu/hdl/zpu3/src/xilinx_dualport.vhd b/zpu/hdl/zpu3/src/xilinx_dualport.vhd deleted file mode 100644 index 0e6edc9..0000000 --- a/zpu/hdl/zpu3/src/xilinx_dualport.vhd +++ /dev/null @@ -1,1482 +0,0 @@ ---------------------------------------------------------------------------------
--- Company:
--- Engineer:
---
--- Create Date: 11:47:36 03/22/05
--- Design Name:
--- Module Name: mem_sys - behave
--- Project Name:
--- Target Device:
--- Tool versions:
--- Description:
---
--- Dependencies:
---
--- Revision:
--- Revision 0.01 - File Created
--- Additional Comments:
---
---------------------------------------------------------------------------------
-library IEEE;
-use IEEE.STD_LOGIC_1164.ALL;
-use IEEE.STD_LOGIC_ARITH.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
----- Uncomment the following library declaration if instantiating
----- any Xilinx primitives in this code.
-library UNISIM;
-use UNISIM.VComponents.all;
-library zylin;
-use zylin.zpu_config.all;
-
-entity dualport_ram is
-port (clk : in std_logic;
- memAWriteEnable : in std_logic;
- memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memAWrite : in std_logic_vector(wordSize-1 downto 0);
- memARead : out std_logic_vector(wordSize-1 downto 0);
- memBWriteEnable : in std_logic;
- memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memBWrite : in std_logic_vector(wordSize-1 downto 0);
- memBRead : out std_logic_vector(wordSize-1 downto 0));
-end dualport_ram;
-
-architecture dualport_ram_arch of dualport_ram is
-
-
-signal low : std_logic;
-signal high : std_logic;
-signal re : std_logic;
-
-begin
-
- high <= '1';
- low <= '0';
- re <= '1';
-
-
- ZPU_RAM0 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"01A100E100010001003600770002006D000F0000000F06AD000302940008003C",
- INIT_01 => X"7D4000000741F68100C800030000377935990003000300030003002A00150001",
- INIT_02 => X"0007584101010C3D55555555370000000092800000001490000000066A594EBB",
- INIT_03 => X"0009015555932D564C093A4024055555564CB555593C1569EA90C00000007000",
- INIT_04 => X"BF8AA55961BE2A956586C40A4CB00932C00024A80000024C9569C893C0024E90",
- INIT_05 => X"18A1251E2A956586F8AA55961BF8AA55961BE2A956586FE2A956586F8AA55961",
- INIT_06 => X"51349D53764E258A2043E21BE5645DE5C4FC00E0100430C140E4665595558750",
- INIT_07 => X"47B1656A855555D435575A815D077558E475559E755715A1C364945042425555",
- INIT_08 => X"5555F123348C17657C405070D5E745A518B58DD5555F55551D5506F00D707B15",
- INIT_09 => X"C141C74DD5137120D51C0715094CC4F01006A8131DD91531B913118944815155",
- INIT_0A => X"5E559655003D3549550D458C5994A04D476568D05B0F45451D143E53D0F2CD6B",
- INIT_0B => X"4D1E1C5D3474C5C5A1E1C5D34787171C44DC7844D3451D37974D164DD55DD555",
- INIT_0C => X"2074532E4C3A5074DE129D074D1137134477D546C01D374DD348774DE15D3717",
- INIT_0D => X"875650117671948CB05545A5A2615074889149341D04D4956F843575543E1A19",
- INIT_0E => X"F804036D9753106651D5140E6905C158D8979404C7459123540DD9955A43F563",
- INIT_0F => X"7958D037C3557056405549520F96E88622775767141BA3755D1418E1BE234480",
- INIT_10 => X"294A1C405ACCC3705D5599D55037776149584D8F98F98F98FDD00D904D205421",
- INIT_11 => X"74710D5C26798346751441DD555BE179544D8F98F98F98FDD00D910DC3D357C3",
- INIT_12 => X"605D5570051840119D04C0DC3755B61D7951D9A9522D995D51D5BB106B90F7C0",
- INIT_13 => X"D81BC3646611D695A02D1A9419695D695422C40110C0F85D6F899E4D0D555BC3",
- INIT_14 => X"28531104D5F01EDD204141807555735D38346423303676407555545F6B945696",
- INIT_15 => X"5212D7645155503146685C599546660676E81041C85D570DCE1B07116F116021",
- INIT_16 => X"5F9D03530F840406A5725910604E420D910DD521D6170F9AF0F940D91836445D",
- INIT_17 => X"83E03E03C03414D5D5F5D9BE7550DD55775514A145E5405657024C3664F3059C",
- INIT_18 => X"444C7584143756C431049D594DC444FD19CE181427555124440155503F58E14D",
- INIT_19 => X"D54521B201810644D895159C568F40C6C85503E135203FCF555151102C7343CC",
- INIT_1A => X"5A95904431351D93820C4D1AA2C7FD0CD95555311185802971639A1755607515",
- INIT_1B => X"E7D41815C826057201815C826057201815C806057209815C82741C75D1BF4336",
- INIT_1C => X"41BD443664E14155000C4191440445305B46A8D40443A3E115495503116861C3",
- INIT_1D => X"A1520F9C10F850FC18DB80D4777F1D5757195241D35F9754D755DD35F40D9D99",
- INIT_1E => X"65E6A10F206870F0557411545536F0D5FA1765C8D5443E658956E52727558D14",
- INIT_1F => X"DDD2151D31A956A0400F03FC754175510FD4A34252E0DC4076A5EC66A10FB312",
- INIT_20 => X"77C1676610FBD310C3C3CC76F05C9FF20755DC17ECE5451D3472D9D215D34C40",
- INIT_21 => X"55556189C508B6C3F0F0FF1D9F4561676610F207A5EF52D7957CC0F8800F7726",
- INIT_22 => X"8890203480C224080B251D4352F126920C8CF13E00C15A16445A44DA4F105554",
- INIT_23 => X"0F203CF4495240B82923890203080E20B8809249524080C2C0B490210C803203",
- INIT_24 => X"854F25C74C20400C1030000B24838A6F858A08E24080F2823890203C80D203C8",
- INIT_25 => X"00000C000000001F75D5D74FC0000000000000003FFFFFFFEAAA95438104DA47",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000154000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(1 downto 0), -- Port A 2-bit Data Output
- DOB => memBRead(1 downto 0), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(1 downto 0), -- Port A 2-bit Data Input
- DIB => memBWrite(1 downto 0), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => low, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM1 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"01510111000100020061006B0000004000100002001005510001059A00360064",
- INIT_01 => X"40300000064005640380001E0001543802180002000200010002000500110005",
- INIT_02 => X"000653709D19C24E555555552400000000920000000024000000000162843876",
- INIT_03 => X"0000CC55555DC1557EC5DC00033155555577055555D315607655000000007000",
- INIT_04 => X"74818211417206084505C705770000F940000398000001765560745D30017700",
- INIT_05 => X"165081C206084505C8182114174818211417206084505D206084505C81821141",
- INIT_06 => X"51200592163801450816D095E0044564ADB5C58C82606080118051A1162881C8",
- INIT_07 => X"550175554516163566505D44014118AA4818516C185014519662131830201616",
- INIT_08 => X"96140906D01981608AF43685992015DA5245D45628675859062835B511755017",
- INIT_09 => X"6000B8F861B22CE39C0EC602ED202FC596B59458405845C55118595694001162",
- INIT_0A => X"55A58300016D31668D5941040556516111611710005B4D4545716E190280595B",
- INIT_0B => X"C968C00BA5BE80B2C68C00B65A3002C1BC8BA32CBE70C3EA02C9CAC89C59458A",
- INIT_0C => X"0B1A0D6164EC408F8A047008D9CB622E2D19546CB32362C8BE8312FACC4BA202",
- INIT_0D => X"4455CCCC1601143B2E45916976DC147401104104059F14685B456418596D1171",
- INIT_0E => X"B4B55655D7453C5DA01654441070416015693378C475DC495A0458256156D15F",
- INIT_0F => X"468751645665865943F040105B8164446641416011165018A11454D15D007415",
- INIT_10 => X"8175134656FB96434615446289641B554684057595597595D066598611165695",
- INIT_11 => X"18A6599B55F856501AD764059656556684017495497495C066598559C91D555D",
- INIT_12 => X"5346166005EB404406411356518A35554684656685DD4686446112185F85B684",
- INIT_13 => X"D555D6601585546854151468D5568546895EB4044115B4595F454E12599655D6",
- INIT_14 => X"335D511B5557C55D467C504218A4E119C7135101456604AE1A05A1555F861668",
- INIT_15 => X"91101161116169E0F5D448156855955595171C7110462859E41D55815FD556C1",
- INIT_16 => X"153011465B440F059A495550560474598A50591544045B8105B8459841662905",
- INIT_17 => X"16E16C16C16514546104654E051C0615418A9450651A1155A1B165662D1D417D",
- INIT_18 => X"700111F690095D6159A445904D270024D7D3C3B711855915976D62896C56D165",
- INIT_19 => X"62A10F7C5B0C0557D468857E5149D00170C316D15CCD6EC558AD0441D72116D2",
- INIT_1A => X"97681F4400824581000023D4516DE3E2517161920D8D38057557861185921514",
- INIT_1B => X"E152154484F551212D544846551210954484D551212154484515A45C3B78F895",
- INIT_1C => X"457E256626804961925697473A0E2C44D0F51470F47849C431468400D048CD56",
- INIT_1D => X"51105B8C05B445B315555C05417946285153C440619C2166018A4619C8598151",
- INIT_1E => X"4595955BA2EA0761584405655975B59920519556E9056E0566859A4581645C14",
- INIT_1F => X"9055965A909455530D5B16F1185118A55B15520D55159076C55AF455155B50B6",
- INIT_20 => X"8085515155B6E90616D6E0146830806841851156724A0EC620DD04559653A415",
- INIT_21 => X"75858C001F40514145B5B40507C305515155BA2D93E496D5695545B4605B9418",
- INIT_22 => X"0810203080F20408032DA18003C200E266D1C15050400CF788038803844E58A1",
- INIT_23 => X"0F203CCF4CF040B12103010203480F208C80A24CF04080D0C03C1023BC82F203",
- INIT_24 => X"0600F6CFD04155043040000C38832340070840C04080F2103010203C803203C8",
- INIT_25 => X"0A000C00000020061C7185CFEAAAAAAAAAAAAAAA95555555555555540B080387",
- INIT_26 => X"0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A",
- INIT_27 => X"313A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A",
- INIT_28 => X"00000000000000000000000000000000000000000001F0000000000000030000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(3 downto 2), -- Port A 2-bit Data Output
- DOB => memBRead(3 downto 2), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(3 downto 2), -- Port A 2-bit Data Input
- DIB => memBWrite(3 downto 2), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM2 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"0008000800000000000000010001002A000200000002000800000080000800C6",
- INIT_01 => X"023AAAAAA028A040002A0000000002B000000000000000000000000000080000",
- INIT_02 => X"AAA00B000020000C0000000002AAAAAAAA082AAAAAAA828AAAAAAAA008223032",
- INIT_03 => X"AAA8CC000000E0000CC00E2AA33000000003800000030008300C2AAAAAAA3AAA",
- INIT_04 => X"3C2828002830A0A000A0C020038AA8F02AAAA302AAAAA8000008300032A8038A",
- INIT_05 => X"820800C0A0A000A0C282800283C2828002830A0A000A0F0A0A000A0C28280028",
- INIT_06 => X"00000C00303000208600C841C0008C028AB00806C170000010000C0080002A30",
- INIT_07 => X"8AB83808200000C000020C2000023002A830001E300380080002A00230100000",
- INIT_08 => X"0000C00C00322300330800E0008020C088C0E280000B0003CC0020F08038AB83",
- INIT_09 => X"40001DA0C0200401080400000CD880A23C00C23008C00A3B20303010102C8000",
- INIT_0A => X"0000002AEC0C70000A0093220A8008C0230028EE00032A008CA00C230004F00B",
- INIT_0B => X"9030420240C820130704202C1C108041C900C10A2CD04E0C00B34C80380E4000",
- INIT_0C => X"8E32028C080030DA0244070DA342C0BC26AA40880A36C0A020D1008304020040",
- INIT_0D => X"20A0303230280000AC0020A828028A20220000000C2080000B200030000C82C2",
- INIT_0E => X"323200204380C300000080880B80A80B83008D037820E3A00008C0400000C203",
- INIT_0F => X"00004800400008012C2000000300820808A323008D800A30008083C81C801000",
- INIT_10 => X"8030808000C0002F8C0008C0000230000002200882883881C8CB0002FA000000",
- INIT_11 => X"3080000A8030002A3220A08C0002800002200882883881C8CB000200C1200170",
- INIT_12 => X"2F8C000AB0282A0A8CAFA006230000040008C8300080100408C08A820B003028",
- INIT_13 => X"0002C0020208400002C8C1020800040002C282A0A800320003203C02000000C0",
- INIT_14 => X"28002208005C2A840002A08A3009090828820E0900000A823200200507004300",
- INIT_15 => X"0880A3000000020F00420E030000A080A0208208828C00000821810007080322",
- INIT_16 => X"85002D080320300040088382000800000008C080E0AA0300E030A0000000008C",
- INIT_17 => X"80C00C00C0010088C088C83C00028C002300800820000200013834000010B03C",
- INIT_18 => X"0A20108A00290E4080038C088C00A20081C12810A30000E0A0A000000C02C804",
- INIT_19 => X"C000020C0223C020C300000C002300C20882C0C813280FEF0008C0A8280900C0",
- INIT_1A => X"8200000030428C0E008C100108E0CC084020000ABA882800380702E300026028",
- INIT_1B => X"C0CE4280A240A02890280A240A02890280A200A02880280A2230228824330210",
- INIT_1C => X"081C8000008000008C00C204DC280368800042CE0002C1C0A0000383A00E0280",
- INIT_1D => X"0880030E803200308281822223088C00020082C0C08C630003008C08CA000000",
- INIT_1E => X"00206003248C882E00238008023030008EB33021D0D00C002020400323020E80",
- INIT_1F => X"08CA008A00888008AE0300F230223002030008AE02A00808A040812060030823",
- INIT_20 => X"88B0060A0032E00880C0C8322821A22AA3020D83B00D808C182E28CA00878020",
- INIT_21 => X"20000C003280A28E2030320C8B8220060A003248C6EA80C3003820302403026A",
- INIT_22 => X"C2BA0AAC2AA0AE82A93AAEABA2A0B110EAAFA3EFEE8ABBAAC2C442444F300000",
- INIT_23 => X"A90AA4BABAAAE82F04946BA0AAC2AA0AC82AE0BAAAE82AB24E5ABA09E42B90AA",
- INIT_24 => X"AA8FAAAAACFBBEE8BED8AAA9EC0AEEBECAC1251AE82A905946BA0AA42AA0AA42",
- INIT_25 => X"FAA00C000000700562A2FC8FC00000000000000000000000000000000E02C44E",
- INIT_26 => X"FAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500F",
- INIT_27 => X"0D25500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500F",
- INIT_28 => X"0000000000000000000000000000000000000000000080000000000000020000",
- INIT_29 => X"00000000000000000CF000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(5 downto 4), -- Port A 2-bit Data Output
- DOB => memBRead(5 downto 4), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(5 downto 4), -- Port A 2-bit Data Input
- DIB => memBWrite(5 downto 4), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM3 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"00040044000000020008000200020115000500020005000400020000000C0089",
- INIT_01 => X"2975555550165082031500000000017218820002000200020002002000040000",
- INIT_02 => X"5550070B0150281C000000008155555555849555555561555555555404117230",
- INIT_03 => X"5555EE000000D8000CE00D9557B8000000036000000B80053000555555553555",
- INIT_04 => X"31141484143450521050E090036555F0955557015555540000053200B9540365",
- INIT_05 => X"4305181450521050D1414841431141484143450521050C450521050D14148414",
- INIT_06 => X"088A0C0830B088305988C583C9824C914136660AEABA8A2AAA2A08084081160A",
- INIT_07 => X"1544300C14808010800A0C1694A932055632082D3208420448095991A8684080",
- INIT_08 => X"008210800A02130B030A8092006990C04620C540821702028C8290F568315443",
- INIT_09 => X"9AB92A20C8084AAB01A820AB082640D53AA081A164C265B750A1702032124808",
- INIT_0A => X"08016955148DF82021207E5595420685930996D9952351204C588C926A2FC00B",
- INIT_0B => X"20E9A590C3A2192A9E9A590C3A6964A7A312A6830CEBA08A6433AA21310CA020",
- INIT_0C => X"6E31A15036890AA312FD78AA33A084ACBE61820106E8843108A6A4229A90C4A4",
- INIT_0D => X"11510AC9309402005C20185021614512190A28A28CF042020F108232008C45C4",
- INIT_0E => X"31214814832100080940422454855404420142448520CC9E00A4C2C40808D90B",
- INIT_0F => X"20268482C800150257062188232541244453130942420532044203C43C593612",
- INIT_10 => X"7830466802C008134C8064C8208132082025942102102103D4C6202525980008",
- INIT_11 => X"3241200540B2481531105A4C0002082025942102102103D4C6202520FB5002B0",
- INIT_12 => X"134C801D711635AD4C525809932060882024C4202648202924C855430F223516",
- INIT_13 => X"8282C80B91A8820265040201042028202691635AD44231040B103C99200003C8",
- INIT_14 => X"9600999400AC154C98015A653207468C14C808871080914131A01A0A0F24C301",
- INIT_15 => X"044853098808030C00C111820210C16080C44104654C8220949E86A80B240B19",
- INIT_16 => X"4B46A224231280A0801E421B0AA401202064C048D1552324123252026480814C",
- INIT_17 => X"48E88E88E8828204C864C42C90814C8053204205108099080A743C809070883D",
- INIT_18 => X"0596A8858AA60CAA58004C066C60594203DB16B053201012505808208D03C468",
- INIT_19 => X"C818807D4458A0C2C202603D081702E6862888C460988FDF02089AD4164688C6",
- INIT_1A => X"420200A2B99B4C29286E640205F1CC088844081F49601684300F25132009D084",
- INIT_1B => X"C9C2831215A0C4856831215A0C4856831215A0C485683121593251515C730222",
- INIT_1C => X"203D4080904A20086864E4682C918096010081C30A0292C6442020EBD9160148",
- INIT_1D => X"0548232D623112344203115113204C82084015E8C94D930063204C94D5202448",
- INIT_1E => X"1080842348196501021064050170B2005553108554208C902010C06313012D42",
- INIT_1F => X"04C500542A464205692388F93219320523420569084206041080560084234606",
- INIT_20 => X"660408084234C2A548C8D63106851905632142433C9D654C965D54C5005B0A92",
- INIT_21 => X"00201E21706259615232358C576854080842348195C541C3003112361A235591",
- INIT_22 => X"005000100050140005055541515105505555514554414515441544554002020A",
- INIT_23 => X"0500145455514015051545000140050014001055514000514054500114005001",
- INIT_24 => X"4545554554515544005000055401555541414551400050515450001400500140",
- INIT_25 => X"FFF00C000000501394E93A4FC000000000000000000000000000000005041545",
- INIT_26 => X"FFFFFFFAAAAAAAA5555555500000000FFFFFFFFAAAAAAAA5555555500000000F",
- INIT_27 => X"093FFFFAAAAAAAA5555555500000000FFFFFFFFAAAAAAAA5555555500000000F",
- INIT_28 => X"0000000000000000000000000000000000000000000070000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(7 downto 6), -- Port A 2-bit Data Output
- DOB => memBRead(7 downto 6), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(7 downto 6), -- Port A 2-bit Data Input
- DIB => memBWrite(7 downto 6), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM4 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"02550195000200030077007600030359001E0003001C09DD000307EA00000064",
- INIT_01 => X"706555555755A365027600130001222837780003000300030003001600120005",
- INIT_02 => X"555709831042087800000000D355555554DA5555555536355555554D5AA46DF7",
- INIT_03 => X"5541AA00002A2800AC82A25506A8000000A8A00002A200018329555555559555",
- INIT_04 => X"A6956586F8AA55961BE2AAACA89541B85555060D555554AAC001822A2154A895",
- INIT_05 => X"15564C3A55961BE2A956586F8A6956586F8AA55961BE29A55961BE2A956586F8",
- INIT_06 => X"C4DD0F9C3E254D554C5A94D4A3500F07C1D00B5C330CF3C3F3CC5544DD52494A",
- INIT_07 => X"E1B5D755571D97818E76755CE71835646436755036461D5558E13248A5555D99",
- INIT_08 => X"DD953042010B03E0024CD486B931E7579D27491D5550765A0D55154409D21B5D",
- INIT_09 => X"4424F150D91D3714CDB070020425D4601515551100F8018994D19555114041D5",
- INIT_0A => X"75543554959F55D556679190489D554403E0072C4060DE140F41BA11D6E44451",
- INIT_0B => X"6845704D611544DC545704D5111C1371144C1DC79E5C71E113697174D0747754",
- INIT_0C => X"38344823553107174E413471697193C477905D84C7455344DE19D378574D9313",
- INIT_0D => X"55DD48483E1B310505675CCD58860351454104100F441D5552558C3655B95098",
- INIT_0E => X"65111AF8DD1AD055541D1D54F08F41D115509285CE0754B47450F82DDB5B6556",
- INIT_0F => X"D550499F18E4B076DA4214846A8499649843C3E382555435685D9495496C3106",
- INIT_10 => X"4DD55C3555001BD40D9110D5558C3701D5515951951D5114D0D2678221658145",
- INIT_11 => X"340D6B9445289AC434711C0F9F15CDD5515951951D5114D0D2678267C4950175",
- INIT_12 => X"F40D912D604235CD0D221D444356E005D550D1555381555500D97D875686A420",
- INIT_13 => X"80549BE357DF5D553D7DD55A1DD555D557D4336CD746A5475E5D6A216391175A",
- INIT_14 => X"010501F5405D40C8D5940C1435580D3849CE5740B18E1910340745C556881D5B",
- INIT_15 => X"9B4603E049D9C0084555521555D5710555774D34040D536B8421F9D453441141",
- INIT_16 => X"041175106E554455555F9551036500638510F943D169668356285678818E340F",
- INIT_17 => X"D8F98F98F98FDD00D920DD6A08440D9103545D563755637555C621AE0505C164",
- INIT_18 => X"1157D3918169757BC8590F9710611503950440C103644653210DD555BE179544",
- INIT_19 => X"D54C433594B0854455550145755140154527D89514BD8B95754C1CD64F0D1906",
- INIT_1A => X"5551405045830F8D75D16D155464110C4D99D918486C8049DD528503667CD750",
- INIT_1B => X"A3429553102554C409553102554C409553102554C4095531003C972139044313",
- INIT_1C => X"D151519E005111D94414170D204D0484CA4555500503216C59D5301C3526441B",
- INIT_1D => X"57046685066556A495D5DD4103D10D51773591C0DE4C83E503570DE4CD6B889D",
- INIT_1E => X"1775776F4CCF97A4766261D877D536396DC347407021AA255525558D03E7055D",
- INIT_1F => X"30F31DBD15BBDD56706F9BF83648357C6F5D547377B6FD0855545F35776F3A33",
- INIT_20 => X"8837575776B0C15859D9843C816FE39A4366411D28401C0D41F3E0FB1D9F4566",
- INIT_21 => X"07670D146590C32F1676610FF31267545776B40CCCCFC89D59D5A6E8DC6F2CDF",
- INIT_22 => X"CC30300C00300C000C320499A95208E1C4535A2755E92DCB882389238A427556",
- INIT_23 => X"000002951C50C080313003030BC02D003400811C50C002CB87E43003F803E300",
- INIT_24 => X"5841550C544F955C0740000C380831B1C14C8C00C0C023330030300800D00000",
- INIT_25 => X"FFF00C000000F01400FFEAB3C0000000000000003FFFFFFFEAAA9543850823A8",
- INIT_26 => X"555555555555555555555555555555500000000000000000000000000000000F",
- INIT_27 => X"3A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5",
- INIT_28 => X"00000000000000000000000000000000000000000000B0000000000000020000",
- INIT_29 => X"00000000000000000CE000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(9 downto 8), -- Port A 2-bit Data Output
- DOB => memBRead(9 downto 8), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(9 downto 8), -- Port A 2-bit Data Input
- DIB => memBWrite(9 downto 8), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM5 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"0028016800040002006B00A40002002500150002001500200002078500620060",
- INIT_01 => X"090555555A16501F0555001E00011554543400020002000200020008001C0004",
- INIT_02 => X"555A082282D08E55000000009355555555841555555561455555555058510938",
- INIT_03 => X"5564320000C598030D3C595590C80000031660000C58C0246FC1555555550555",
- INIT_04 => X"12084505C8182114172040DF165564345555903D55555715C0246FC58D571655",
- INIT_05 => X"96296A48211417206084505C81A084505C8182114172058211417206084505C8",
- INIT_06 => X"E18B5B896D1CD962A7546A5450CF5B71580861C4E138618E91B8586205916041",
- INIT_07 => X"17146758A54584656E0B18A04CF16646C1660945661A862854D183703F0F0588",
- INIT_08 => X"0582C0F063C156D030459915F861A18480718705961516185996751FBC617146",
- INIT_09 => X"378E9CA59823E272012C64BB400C144101558A49B5B4BD50710945615F380059",
- INIT_0A => X"1852855419554461645F509EE3462926D6D2F546F1595CCC5B756511B2343155",
- INIT_0B => X"B7702AFAD5CB6C8B1702AFAD9C0AB629CBD9C4BA28082E8CBEA02C8E801A1166",
- INIT_0C => X"0166AC531C4502C8D941902C80263E735D40066BA5723A8DA8CCBEA322DAFEBE",
- INIT_0D => X"A01240416D1107E5A19151016694527B3730C30C5B44061651A15D6601668510",
- INIT_0E => X"DA01D4D9861C12585D05065D2811A8519615D0104661940514C5B41453955451",
- INIT_0F => X"6168095D15E114149C58BE2F5542950D5956D6D080162966440614694692E3C5",
- INIT_10 => X"40628441544996DA5988A599654D643461695D65165D65D45596534A07012D74",
- INIT_11 => X"668D5784B55457D16459CA5B8496B061695D65165D65D4559653465304D4BC14",
- INIT_12 => X"CA5985D59F72958459207121566453606155996169016161A5985D5559451715",
- INIT_13 => X"4D5555D195940616913116116061606165B7295844555A2759A175215B85D555",
- INIT_14 => X"70B417352F056B6A715694656668C4C6756858D0D14D121D66E164A05D440611",
- INIT_15 => X"80ACD6D20058E080458A141616C58D8595B41041C55991577DC058B25D774D57",
- INIT_16 => X"A01F145855A314C58515165132DC89574495B80B0855514715545534054D025B",
- INIT_17 => X"17495497495C066598559D45356659889666462941859D185867416D14046975",
- INIT_18 => X"99524CDD7720192513505B84634995CA1454710996622409D9C0596565546840",
- INIT_19 => X"996DF895A74805A21616894518A86430CC0D5568440545001645484671C4D444",
- INIT_1A => X"561B22C94D195B472D1345162807D10000A4582043DF16F464514116627A61A5",
- INIT_1B => X"5100966998A59A662966998A59A662966998A59A66296699896E9892E1FC400C",
- INIT_1C => X"6545195D1AC85458697806A50148143DF1458A102C00D046646190140D247717",
- INIT_1D => X"280F5144451A15D51616D05456C1599118412815927256E196655927215B4460",
- INIT_1E => X"11858751486456951621685817855578511641A9DF0165016105845C16E02E06",
- INIT_1F => X"35B8051B0CB846294559D7456619664659462A441B75B441C587E5058759A619",
- INIT_20 => X"641759587598E0C15454556E8BAA56A5566140865C12B2596B3255B40507C305",
- INIT_21 => X"C1632BBD073618665515155B50B647595875948676CA8846106405D4D05DA420",
- INIT_22 => X"C030003C40F10C040D284715799040C1155498499FE9FDA30103010304C41658",
- INIT_23 => X"0D1036025D60C0F617D18300080422103440125D60C0420B00C4301190424003",
- INIT_24 => X"D0456C31905419FC4108000C300999F50245F460C000C14D1830003040D10344",
- INIT_25 => X"AAA00C000000002AAA555573EAAAAAAAAAAAAAAA955555555555555407010320",
- INIT_26 => X"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA",
- INIT_27 => X"003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
- INIT_28 => X"0000000000000000000000000000000000000000000060000000000000020000",
- INIT_29 => X"00000000000000000CE000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(11 downto 10), -- Port A 2-bit Data Output
- DOB => memBRead(11 downto 10), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(11 downto 10), -- Port A 2-bit Data Input
- DIB => memBWrite(11 downto 10), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM6 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"00000000000000000001000200000000000200000002008800000300000000B0",
- INIT_01 => X"202000000800080A010000000000080202B20000000000000000000200000000",
- INIT_02 => X"0008A20300A00C02AAAAAAAA0B00000000020000000000000000000002002830",
- INIT_03 => X"0000B8AAAAC002AB2CBC000002E2AAAAAB000AAAAC0EEA800FC8000000000000",
- INIT_04 => X"84A000A0C2828002830A22CF000000B00000023C00000300EA800FC0EC030000",
- INIT_05 => X"000003028002830A0A000A0C284A000A0C2828002830A328002830A0A000A0C2",
- INIT_06 => X"3C0003000CA33000040300400B38030004028238020082002600000C8C080000",
- INIT_07 => X"8A08CB00028C0A803C31300EA08000208000200800208C0003C8380232828C02",
- INIT_08 => X"8C000B04881380C8800F0400B03803020093020C000A30280000202224C0A08C",
- INIT_09 => X"003914C000B6C0E02C000003000820C882A00080003200900D800800B802D8C0",
- INIT_0A => X"30003002B808C8C004033000800C020000C802409E0608CE03080080A00C0302",
- INIT_0B => X"C0D00083034C08010D100830340028034CB3403C3000030420C004DA00322302",
- INIT_0C => X"E0002A07384C004DB0C22004D00B6894C2820CAE22D364D8304820C120932820",
- INIT_0D => X"00E002C00C811C0028A3282C08228A2400CB2CB203C08C0000002C0008000200",
- INIT_0E => X"000E80CACC0B80002A0C0C80280088C20008800A22B32C0E30803220CB808800",
- INIT_0F => X"C002283E00C289320830C830042028000200C0C8200000002A8C80000022BC30",
- INIT_10 => X"88C0020880BB82C800080000003C02F8C0000C08408008008002032202088038",
- INIT_11 => X"022C0B02300202C0000020030A00B8C0000C0840800800800203220B08800010",
- INIT_12 => X"C8000A04800A12240020200280022F80C000000001080000200000010020A080",
- INIT_13 => X"BE8081C90A260C0010BA8008A8C000C00100A122401000030C0030880F0A0080",
- INIT_14 => X"0A00822000040020688002080028208008480200401C8A80002302800C200C08",
- INIT_15 => X"00A000C8D8C0C0800000028000E00C20200082082000080B202050200E020802",
- INIT_16 => X"000218020C02208000050088F8834C0F2A20300FB400002380C20072201CA803",
- INIT_17 => X"00882883881C8CB000200C008880000800028C00230002300003203C81004038",
- INIT_18 => X"000008428210320A080A03020820002200880A80000202B92028C00028000022",
- INIT_19 => X"00890210803420210000280A30001020B8C8C200000C1800302F82430A2083B2",
- INIT_1A => X"0000D0B68823032CC0A208000200000C20A8C0E000830008C800228000B06320",
- INIT_1B => X"0820808E8CA023A12808E84A023A12808E84A023A12808E8480C0B8AE0040304",
- INIT_1C => X"C808003C8233A0C00C30080800009008320000000B83A00828C0082808800001",
- INIT_1D => X"00B00820E0C000A08080022200C6000A322860C0083880C000020083800F2028",
- INIT_1E => X"E320230E188022AA300E24C13380203035000332ED0C20800080020E80C03C8C",
- INIT_1F => X"70320C8A08388C003602C18800000022028C00363330F3888002A2E0230A2220",
- INIT_20 => X"2263020230E1E0880182800C92308AAA0000384C8C202300C23220320C8B8220",
- INIT_21 => X"E303800A0100820A0060A003082303020230E18800DAB48C08C8B0E0C80202AA",
- INIT_22 => X"4AAA2AA4AAA2AA8AAB2AEEEAE2A12512CFEFA2FAAA8F2AA2C59444944F803000",
- INIT_23 => X"A32A8CAAABAAA8EF04892AA3AC4AB02AD0AAC2ABAAA8AB12CF7EAA2B4CA932AA",
- INIT_24 => X"AE8EEAAFA8FBFAA8AE94AAAAAC8FABAA8A81224AA8EA305892AA3A8CAAB2A8CA",
- INIT_25 => X"00000C000000100000000033C00000000000000000000000000000000A04944E",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"1500000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"00000000000000000000000000000000000000000000A0000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(13 downto 12), -- Port A 2-bit Data Output
- DOB => memBRead(13 downto 12), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(13 downto 12), -- Port A 2-bit Data Input
- DIB => memBWrite(13 downto 12), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM7 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"028200020002000000020081000001800000000000000A4600000320002A00CA",
- INIT_01 => X"905000000C800680020000080000444101710000000000000000001100000002",
- INIT_02 => X"000C51A6981A9A015555555587000000002140000000081000000006010850B2",
- INIT_03 => X"0001745555E001579D7E000005D15555578005555E0DD5410FE400000000A000",
- INIT_04 => X"4C521050D1414841434519CF80000172000005BC00000380D5410FE0DC038000",
- INIT_05 => X"00800311484143450521050D148521050D1414841434521484143450521050D1",
- INIT_06 => X"B21023208C60000808020082040823582DA15A0A0A828A202A0202024C040620",
- INIT_07 => X"5454C702054C25583CB23201564080111480B02080B14C8202C4451530504C29",
- INIT_08 => X"4C2CD70F843F88C6782C0E40B2442321A663258C008530942000508418C9454C",
- INIT_09 => X"90332AA202A8C4867C420A02E68152956550205C02310276425C64087C4124C0",
- INIT_0A => X"320900014031E4C8090F7980048C817008C409D4390C4DAD23442049465EBE08",
- INIT_0B => X"A6EA40229BAA42128EA40229BA900843AA22A93A69924E9A08A64AA22E319301",
- INIT_0C => X"1080551FB198A8AA21E92A8AA64A88A82A6D8C6B22EA88A329A508A694328808",
- INIT_0D => X"091921E08C46AC38145316580551649C4024924923E24C8008083C80A4202506",
- INIT_0E => X"809103D78C9C4802118C8C50462554C94085486515E31E1D32123198C7831708",
- INIT_0F => X"C805903D82C942314421C0700C1514904108C8C518408080114C42002005E000",
- INIT_10 => X"64C82514423FC3D4202E1200002C8134C8000C048048048202080B1484546834",
- INIT_11 => X"81380F25708102D882181023258074C8000C048048048202080B140BA642AAA2",
- INIT_12 => X"D42025987905A11A208844A948010368C80200080368080812025822081080C0",
- INIT_13 => X"0D4202C615198C803475408494C808C802D05A11A220C0A30C0830540B258202",
- INIT_14 => X"45A24450AAA8001ED44005148016322E0482011A9C2C554C8013056A0C128C84",
- INIT_15 => X"267108C424C2CAA22020854080D02C10102165961120040B501AB6060C09A404",
- INIT_16 => X"2A80668308085210208B405C3410A90B1512326F49010C17408110F1542C5423",
- INIT_17 => X"42102102103D4C6202520C204660202E08014C80932001320243982C52A28031",
- INIT_18 => X"800422C160763185560523251E58003082160568080B914B1814C00020820259",
- INIT_19 => X"00470222620A101A808054213206208A2193C202621C225A301FD1A305320225",
- INIT_1A => X"408028096013231C01580480818028AE6674C292201F5104C60814480A709312",
- INIT_1B => X"05A8405D4A5017529405D4A5017529405D4A5017529405D4A48D445D900A2B99",
- INIT_1C => X"C421882C5F0098C24E6697488A6D6201F520208A80EBD91434C81A9690E40082",
- INIT_1D => X"81700C11108080C14040851988D92005316491C20534C8C808012053440F1254",
- INIT_1E => X"1310130866891415309108C2332080B255482315568030580850212D48C9BC4C",
- INIT_1F => X"B2358C41A1714C810908C22080848011084C81093370B4E690215110130841A2",
- INIT_20 => X"119301013086DA150202108D206544150809068C5E980520407852358C576850",
- INIT_21 => X"D30B40018241451440808423460613010130866895E50E4C84C54086C6085545",
- INIT_22 => X"4410101440510404051545555151455155455154554145554515451540283001",
- INIT_23 => X"0510145455504015151141010144051054405055504040514154101054415101",
- INIT_24 => X"5445551554515554415400041401555541454450404051511410101440510144",
- INIT_25 => X"55500C000000D00000000033C000000000000000000000000000000005051544",
- INIT_26 => X"5555555555555555555555555555555555555555555555555555555555555555",
- INIT_27 => X"1515555555555555555555555555555555555555555555555555555555555555",
- INIT_28 => X"00000000000000000000000000000000000000000000E0000000000000010000",
- INIT_29 => X"00000000000000000CD000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(15 downto 14), -- Port A 2-bit Data Output
- DOB => memBRead(15 downto 14), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(15 downto 14), -- Port A 2-bit Data Input
- DIB => memBWrite(15 downto 14), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM8 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"015502550005000300F6005200030357002A0003002A066500030BDD001C000F",
- INIT_01 => X"793000000D4EC7C70123002F0001191522250003000300030003003D00060009",
- INIT_02 => X"000D601010C040A555555554DA00000001DCC000000077600000001645953DFD",
- INIT_03 => X"0024C9555693855A7CB92A00932555555A4E15556932D564899E00000000A000",
- INIT_04 => X"5D961BE2A956586F8AA567064E0024F0000093A4000002405564CB932C024A80",
- INIT_05 => X"5D510E56586F8AA55961BE2A955961BE2A956586F8AA566586F8AA55961BE2A9",
- INIT_06 => X"A2CD6E8D995445D50415505D54486DAC86F2014401004100D90F76420F951317",
- INIT_07 => X"1510D0756C0F85016A08356D69D1AE7545BE09D1BE090D551595211564540F86",
- INIT_08 => X"0F805644C511DB9595044165E874C364C783450F96543E146F9B074370D9510D",
- INIT_09 => X"D0059716B8C5137DC0372001534D13641227546416A51443126409D9590120F9",
- INIT_0A => X"36560854A95A40D9CF52944C950D51909A94912C5C5517E569C5555639E4D274",
- INIT_0B => X"1C5D34787171C74DC5D34787174D1531714974D1874D34571E113716083403E4",
- INIT_0C => X"11BC45059E74587172579D87113C5A54D9100D71F15C56148574D215D3785A1E",
- INIT_0D => X"57101951A951691C0443C079D85206791520820865500D917555498E15555D43",
- INIT_0E => X"5643D4020DC94C76460F0D54FD2FB0F89D9E0713B48365143E566570FDD56475",
- INIT_0F => X"D9515D4955A1203DB50398E455555344471A9996A41D51BE6B0D1D51D5B6B105",
- INIT_10 => X"10D5514C5D3FD4116B8D1639C1459E40D9C401D0DD3DD2DD36BE5659440CD400",
- INIT_11 => X"9F7C5E85475555A1AF08416284DD00D9F401D01D31D21D36BE56595B07104410",
- INIT_12 => X"016B86C4001110346B344830DAE76470D916F1D9C089D9C816783811755571F1",
- INIT_13 => X"905DD595B4040D9C0A341D9FD0D9C0D98D1111034FC55553757DD5545E865D17",
- INIT_14 => X"11907484261415500C0179A5BE6373A31C467445C5596D8D8C03C3F0755C0D9D",
- INIT_15 => X"83E4589420F845D51755749D9C37408777410410826F9657E7434002771C0034",
- INIT_16 => X"354053475556521764441D2BC0A4815E5456A851083F555955557525B559536A",
- INIT_17 => X"951951D5114D0D2678263DD55BD1678D58E60D5903659436431C1549535241DD",
- INIT_18 => X"44003B04E4403403010B6681900440719D0110345BE343C85440F9715CDD5515",
- INIT_19 => X"7986431374C5975D9D99B9D835502D49FC805555310551403E56034C107395E0",
- INIT_1A => X"9D9120C85C8066553413241D5C5014B168B0F8D350CD1D40D275549BE1100366",
- INIT_1B => X"54B49D071CE741C739D071CE741C739D071C2741C739D071CD815C8654051858",
- INIT_1C => X"D1D145596B4080F8C1518D8456E6310CD53754060C2C353430D91D85BC110115",
- INIT_1D => X"5264555525557571DDDD84001BD76B9437189636B0241BA01AE46B024D525D40",
- INIT_1E => X"0377485474C5E3903E3400F03FC755E86D59C3478B415575D96767055BA26C0D",
- INIT_1F => X"E6A10F207A310D5D0455154D8E21AE7F540D550437D5EC0C6767EA6748574D31",
- INIT_20 => X"EF2D7675C576C499D515DDAD233DBA2F18E0360D814C1E67410C66A10FB31265",
- INIT_21 => X"03E10116505841CC7565776BFB332B767485444C49EF430D90DD1554E856A57E",
- INIT_22 => X"060010B042F18004022C024D1C0C8C024C88055CCD9726B03330313015D43E70",
- INIT_23 => X"2E10B94C860800712F77200103040C105040C086080040C8029A0013B84AE10B",
- INIT_24 => X"7D02A0C02689FCD84294002EC00712EB68CBDDC80042C2F7720010B040210B84",
- INIT_25 => X"00008C00000000000000003CC0000000000000003FFFFFFFEAAA954349323032",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000C20000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(17 downto 16), -- Port A 2-bit Data Output
- DOB => memBRead(17 downto 16), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(17 downto 16), -- Port A 2-bit Data Input
- DIB => memBWrite(17 downto 16), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM9 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"009600160000000600E4009200060557000C0006000C02960006039300FA003A",
- INIT_01 => X"B5D000000581E4BC081000060000110A155A0006000600060006004200740002",
- INIT_02 => X"000959D19C274612555555558600000001AD000000006B60000000120541D009",
- INIT_03 => X"00176555560F45581050E6005D955555583D155560F955579000000000002000",
- INIT_04 => X"811417206084505C818201B03D00174C00005DC0000000331557D00F94003980",
- INIT_05 => X"05904844505C8182114172060811417206084505C818204505C8182114172060",
- INIT_06 => X"00B95D4956847059025610062B41597E299E04403812086A800816305B801AB3",
- INIT_07 => X"16159116405B452D7501664AC09D5E01854D00657D01599654685565C7F75B44",
- INIT_08 => X"5B405444511054691C433355D45496618696555B86456D155784919B25916159",
- INIT_09 => X"970A02C57472B208C4E68B5073F10827B8D166E7551A574890E7B45841D905B8",
- INIT_0A => X"6608B8000D640598E4514E75D5599B9D54695D15555904C55955628C08C3901A",
- INIT_0B => X"C00B65A3002C1BE880B25A3002E96FA02CB02E9C30CB670268CB22CAE16696E1",
- INIT_0C => X"356F85644232302C85304B02CBE7201284D6591C100B20C8302FA0CCBEB32C68",
- INIT_0D => X"5A1BF03D468501103796DC24564AC421C50C30C3550C59841859454D1161632D",
- INIT_0E => X"85D4D448590820161C5B595667C5A5B00581FCE8121643C16C95DA45B0D65418",
- INIT_0F => X"985951471451596F6CB8120458A153154515546A2F45996E0059061061011525",
- INIT_10 => X"659969F546555451534615B81D455DA5981400574554574665B551AAF5F542E5",
- INIT_11 => X"6E55514D618A545D4CF26151450565984400574554574665B151AA555CD50306",
- INIT_12 => X"615B4500879C03135F4F516357E04A6598053058E04058E495F4D4C818A5A16D",
- INIT_13 => X"2B06D5689712598E0D3485815598E5986439C031312585AA184862965D454615",
- INIT_14 => X"5C56557980C2D511356D69554E245A019110147CD1668D555F16CD6E18AD5981",
- INIT_15 => X"4547156A05B44C709165B5058C4155014151861854578151255C0A1E1890E155",
- INIT_16 => X"2C2148055859485162900507A804095DA5159403033C58A4458A051A45469451",
- INIT_17 => X"D65165D65D4559653465B062850D534657E159901662056619D03156BAC41061",
- INIT_18 => X"B40CA027558966CDB0B5594581EB405406459A4355D1A9405265B84963061695",
- INIT_19 => X"B88C400052E3616445894869665813035A621616A3C160716E0031309D5A160E",
- INIT_1A => X"85810003DF1055A137F7C24592C0B0534655B4753E2568459918A017D1809655",
- INIT_1B => X"2ABF45A916115A458456916115A458456916D15A4584569161554844B32CD4D2",
- INIT_1C => X"90665146A34835B4405B2243F45997E25841667C00140D3415982F3F5F100D16",
- INIT_1D => X"914458A14585B58D0505057316525381649A743537DD175394E25B7DD251A445",
- INIT_1E => X"564156596A42E5216D10D5B16F1195145157D6798BF562805801602E55501859",
- INIT_1F => X"55955BA2D8F159910159565D4D217E105A5995016785D8328160E61156594E90",
- INIT_20 => X"ED891416A5952D91D6561D652197FA6617D2065983117557579455155B50B645",
- INIT_21 => X"96D1C15CCF5965D07595875966192514156597A438065D59859925A5D55A7182",
- INIT_22 => X"86601098427198040F00102D2065F4638C0066147C25890194D197D1A48D6E32",
- INIT_23 => X"2F10BD01DBE980D133F4660103040C10F04001DBE98040CF435E60123048C109",
- INIT_24 => X"41CC71F0461277C043200020184454DCA90C7D198042D31F466010B440F10BC4",
- INIT_25 => X"00000C00000000000000003CEAAAAAAAAAAAAAAA95555555555555540D14D180",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000B70000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(19 downto 18), -- Port A 2-bit Data Output
- DOB => memBRead(19 downto 18), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(19 downto 18), -- Port A 2-bit Data Input
- DIB => memBWrite(19 downto 18), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM10 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"00000000000200000042000800000003000A0000000A00000000038300200000",
- INIT_01 => X"300AAAAAA020C232008800040000088008000000000000000000000800020000",
- INIT_02 => X"AAA00002000008000000000000AAAAAAA8042AAAAAAA010AAAAAAA8020080088",
- INIT_03 => X"AA800000008F00020208C0AA00000000023C000008F00000088CAAAAAAAA0AAA",
- INIT_04 => X"0002830A0A000A0C282820323C2A800CAAAA00E2AAAAAA330000C88F02AA302A",
- INIT_05 => X"8C0800000A0C2828002830A0A0002830A0A000A0C2828000A0C2828002830A0A",
- INIT_06 => X"00300020200000C0A1000A0C000002088CA200005C130CB400003000030080C3",
- INIT_07 => X"020002302E0320083088002282802C00880C88C83C880000C000083000800320",
- INIT_08 => X"0322C80CE030C20033203A80C2CB0000E00022030A800C830F0A2321A0082000",
- INIT_09 => X"020C00407253203845C00010EF0EF6002003008C60406000008C08C000200030",
- INIT_0A => X"000003AAA80820008C020809000002318101802138028CC00E20000838403030",
- INIT_0B => X"4202C0C108040C8010241C108090720804C0093413A20D00B042004C0C0000C0",
- INIT_0C => X"802D008C8E130004D020800042893401283000252C01344D1008344020C13030",
- INIT_0D => X"008A4000100000328380C228C82C20A028000000063200023000082C800000C0",
- INIT_0E => X"02A8408800BCD830040300828028A0328C009022AA0000000EA0800030C08030",
- INIT_0F => X"00A0000A0008280C031A0E8000000B8020C18000808C083C0A000C08C0A20800",
- INIT_10 => X"000000808C9540880F24C0F0A0183C8000A2A0C78C78C68C90B000080080A800",
- INIT_11 => X"0C100020230080883C080804208C8000A2A0C78C78C68C90B00008020822A882",
- INIT_12 => X"880720A2880288820F00008800C0A800008070C0C0A8C0C140320BE030002868",
- INIT_13 => X"A00C000080A0000C0A120C004000C000880028882000002E3028C0000C208C00",
- INIT_14 => X"02A03008AA200022008010800C001222002A3008243000041C40D082300C0002",
- INIT_15 => X"20808202003208CF6300308C0EA32823032C208220030202210210BA32028B30",
- INIT_16 => X"08D080B10000B62300200C028200260C0080C20B80FF0000000030003800020C",
- INIT_17 => X"C084080080080020322030C02A200B2401C0000880028000200AA000258210C8",
- INIT_18 => X"82A22200A08000200A0A0820C2282A1A8CA0000800C90280080030A00B8C0000",
- INIT_19 => X"7038030C21E023288C0238C80023663238A100000C2002080C000822021200A2",
- INIT_1A => X"8C0C088083000C003020CD8C08382EA2083032C0008420000A3000C0C8000020",
- INIT_1B => X"00F08C08A0A3022828C08A0A3022828C08A023022828C08A08280A2C0D0B6882",
- INIT_1C => X"00C800000108003200820121208428084F63002088280880B000FC0A230B8800",
- INIT_1D => X"088000002000300C8C0CB208838A0300000AA21072EA030B82C00F2EA2000820",
- INIT_1E => X"802328022802E2A80C8AE0300F2320023A02C0294F080038C023003C03080E00",
- INIT_1F => X"206003248E340008E002008C3C903C08020008E00380E000E30008A328021E00",
- INIT_20 => X"ECAA3232802208C0C0808C386200BAA2C3C8E20012002B0B0281206003082300",
- INIT_21 => X"00C82C04338C00893020230E2220EA32328022800A22AC00000AA020E00200AA",
- INIT_22 => X"8BAA2AC8AB22EA8AAA3AAAABAEF12242EAEEFAAAEAEAB9EB858904893FB00C38",
- INIT_23 => X"B62ADAAFAAAEA88604013AA2AD8AB62AA8AAA3AAAEA8AB6ECAA3AA299CAE72AC",
- INIT_24 => X"FA8BABAAF8BEAEACBAC0AABBF88B3FAB8FC1804EA8AB706013AA2ADCAA22AD8A",
- INIT_25 => X"00000C00000000000000003CC00000000000000000000000000000000B05893B",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"00000000000000000000000000000000000000000002C0000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(21 downto 20), -- Port A 2-bit Data Output
- DOB => memBRead(21 downto 20), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(21 downto 20), -- Port A 2-bit Data Input
- DIB => memBWrite(21 downto 20), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM11 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"010002800005000000C1008400000003002100000021040000000B0B00000080",
- INIT_01 => X"300555555818C13E024600280002446044400000000000000000001400210008",
- INIT_02 => X"5558001502C05488000000002055555554085555555502055555554490240A60",
- INIT_03 => X"55400000005F20014925C05500000000017C800005F080001652555555554555",
- INIT_04 => X"284143450521050D141494397C95402E555500D95555557B8000D65F09557015",
- INIT_05 => X"4C06A011050D1414841434505284143450521050D1414A1050D1414841434505",
- INIT_06 => X"08300810202228C05A80858C82220C544955A62AAEABAEBA2AA230A8232640C7",
- INIT_07 => X"81820930112311843064801515403C98683C64CC3C642000820254B002222311",
- INIT_08 => X"2319C42EE8BAC200709BF860C11608091088112325648C440F25531652041820",
- INIT_09 => X"0AAA64A0B1AA88B6AE80A0F9CB0D89600123002ED080D0A1082E04C2601C8232",
- INIT_0A => X"80B1F855540592024B086067802000BB42034297B9016AC008640821B6A83830",
- INIT_0B => X"A590C3A6964A7A3129083A696430E8864AA6423AE830CEA4A9A084AA0C8048C8",
- INIT_0C => X"402E609E6DA6824AA1855024A08AA99B160820AA6292A9AA6A4229A908A6A9E9",
- INIT_0D => X"0155C680202440B64308D144C55D125014820820088920293200203C44080420",
- INIT_0E => X"21158224204A263099232052441402364C257115550828288DD0801236C05232",
- INIT_0F => X"025008204204448D20BD0F420204075350030300404C042C95208C84C8591480",
- INIT_10 => X"120000824C6A82140F18C0B258202D42025358CF4CF4CF4C70F6080202425682",
- INIT_11 => X"2D2E0814132042102D960C0C114C42025358CF4CF4CF4C70F608020811195469",
- INIT_12 => X"140F1159658164C80B60264402C9144202E0B8C2CA74C2C6C0F140DA32001498",
- INIT_13 => X"508C820240D8202CA5A58C268202C2024698164C8BB0201D3214C8120C114C82",
- INIT_14 => X"41582246551A8099826834902C91209986B53201DC3018282FC8F041320C2024",
- INIT_15 => X"14404302823121C09300314C2D531653231C1041590B25085301B0E5318547A2",
- INIT_16 => X"812A614202024993081A8C9343921D0C01408167603C02062020808004200508",
- INIT_17 => X"C048048048202080B140B8C815580B1803C9200648096080914544201F19B8C4",
- INIT_18 => X"635309A05A60803045A50814A916352D4C51801602C6196216023258074C8000",
- INIT_19 => X"B2642B997AD453154C2904C48011F864F8BA80800C1809048C988C8B81208071",
- INIT_1A => X"4C2886A01F5A0808B007D24C040A0258047231C180889E2205320603C46A4810",
- INIT_1B => X"80704C945513251544C945513251544C945513251544C9455031215D42809601",
- INIT_1C => X"08C528201A2E02316950461B05582C08889300706A9690E6B2029C005E94E8C0",
- INIT_1D => X"044202085020302C4C8C718442140B248247C1B0F4D18206C3C90B4D15080612",
- INIT_1E => X"4813140150A9C5588C5692388F9310815542C81567040804C25309BC02058D20",
- INIT_1F => X"80842348197820041901405C3C782C95012004188320C6849309555314016C2A",
- INIT_20 => X"CC55313140158184C0404C219A25715003C510202846A50F6A46008423460610",
- INIT_21 => X"08C41C890A4D24963010130841A215313140150A91905D2022045012D6015414",
- INIT_22 => X"4050001400501400051411551455445144445554554505515511551140808CB4",
- INIT_23 => X"0500154555414015155545000500140050004155414001414154500154015001",
- INIT_24 => X"5545515054551554015400055445555541451551400051455450001400500140",
- INIT_25 => X"00000C00000000000000003CC000000000000000000000000000000001151151",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000300000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(23 downto 22), -- Port A 2-bit Data Output
- DOB => memBRead(23 downto 22), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(23 downto 22), -- Port A 2-bit Data Input
- DIB => memBWrite(23 downto 22), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM12 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"039A019A000D000B001200DA0007023A001E000F001E0FDA000F0BD9003C00CC",
- INIT_01 => X"B69555554C5750DF077600150001D65619160003000B0003000B007E00620009",
- INIT_02 => X"554C39042084105A00000001DD55555555D955555555769555555565615EB5BE",
- INIT_03 => X"554AAC0000192000620183552AB000000064800001B8800A0819555555549555",
- INIT_04 => X"686F8AA55961BE2A9565862064954A8855552A255555506A800A481B855060D5",
- INIT_05 => X"0F947491BE2A956586F8AA559686F8AA55961BE2A9565A1BE2A956586F8AA559",
- INIT_06 => X"55E4555D553130F9471D940D531356044986430CC330E31F333C3E346A848391",
- INIT_07 => X"35D6B03E5162555DD551BE454D416A32594950D1695D6F969D55D0B050106257",
- INIT_08 => X"6A55650674135555948D2557551899E1D319DC6686C599575286C34146735D6B",
- INIT_09 => X"0B511375E55C5CCB20300054564209022543E5E74557415004E410F8141746E8",
- INIT_0A => X"AE0A5E5545D396F84475FC1100639791155105719777D7445735D550CB8C5434",
- INIT_0B => X"704D5111C1371164C4DA119C13584551371134971C79E5D3C571D371018C5BA1",
- INIT_0C => X"994753E402D391371FF80D1371A5C46D51346795104DC671DD378774DE15C546",
- INIT_0D => X"5B5A9011555CD497541A5760FB60D8541C4D34D354C86B843665D9495DD99522",
- INIT_0E => X"64695D546782203E03646F924107E6D50F86A6360919C905A7E55556E49D9436",
- INIT_0F => X"B8440DDE1D5511B9048D4B53755C343160951559A40F957A056F0D90D94114C7",
- INIT_10 => X"D679D4140D155DD85255D5E851D14116B87360F80F80F00D0537757F43D40796",
- INIT_11 => X"7410755803559DF9600C1C55540FD6387360F80F80F00D0534757C75D144000D",
- INIT_12 => X"D8525415078455CE5804350557A1910638D530F845D0F840E5651B0C35474055",
- INIT_13 => X"450D5D5551C06F8451150F8B46F8467840C8455CEC0766083640D5A775540D9D",
- INIT_14 => X"C435C39600054001D41427915A29110183343D0001D5B8055FDAF500354C6B86",
- INIT_15 => X"5E50155F46A5765083E7050F8583D043C3C4D34D43568A75400001C83704D943",
- INIT_16 => X"092310E176738BC3E0850F1317C143755645556B5856754057556754DDD55B55",
- INIT_17 => X"1D05D35D25D36BE56595F0D52318565417A1679C5AE171AE108065D5B81070DC",
- INIT_18 => X"137710413751AC75D19455584241371D0D284586159535150C16284DD40D9740",
- INIT_19 => X"68B51C594F5503C60F85C0DDBE728B201C6CDD960905D341AA04DCE847119D04",
- INIT_1A => X"0F8C5FD0CDD555441033720F9048321F20C6655390C4D1167C355C5495C159F5",
- INIT_1B => X"54650F25F943C97E50F25F943C97E50F25F943C97E50F25F99553100D20C86C8",
- INIT_1C => X"B0D3CDD5C10D16651A0001CA4C27190C4C83E467FD85FC2686B8D90E8F841C1D",
- INIT_1D => X"9B517557476727680F0FB03495F05689BECE30C59D995556D6A05DD991756036",
- INIT_1E => X"9AC3CC76F058CBDDA96706F9BF837755E8D719DE3645D500F8C3E26C15549C6B",
- INIT_1F => X"75776F40CEB46F9098761DF5694D6A1D776B9C198FF7418483E18F83EC767C15",
- INIT_20 => X"CF6C3C3EC76E0CC7DD9D71515318703B9794416707741951E1AF35776F3A3327",
- INIT_21 => X"1995184149CDC7DFA76748564D310C3C3CC76F45BAFA416F86F01755E5775604",
- INIT_22 => X"C13000BC02E04C002D999D80225BDDC38B0652041E3E0C672F772F7700859A10",
- INIT_23 => X"3900D6125104C0BE1369130006001000D000C25104C001872DE13009E407500B",
- INIT_24 => X"9B24DA1D155701E2091800057049300F44449A44C003B116913000DC02D00F40",
- INIT_25 => X"00000C00000000000000003F00000000000000003FFFFFFFEAAA954314EF7729",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"00000000000000000000000000000000000000000002B0000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(25 downto 24), -- Port A 2-bit Data Output
- DOB => memBRead(25 downto 24), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(25 downto 24), -- Port A 2-bit Data Input
- DIB => memBWrite(25 downto 24), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM13 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"048000800000000200D00184000A017000000002000011200002000000180188",
- INIT_01 => X"7C5555555854138606440000000108641104000E0006000A0002005000C00000",
- INIT_02 => X"5558042D08A0B41A00000001AD555555549155555555E41555555541A0206648",
- INIT_03 => X"55715C000240F00919240F55C57000000903C000243480300640555555555555",
- INIT_04 => X"405C8182114172060845114903D571635555C5955555590C80300643455903D5",
- INIT_05 => X"5B801D017206084505C818211405C8182114172060845017206084505C818211",
- INIT_06 => X"CF9158A961AC95B82D05825991BD5A818146BA784E178E05EE196D1F5140921C",
- INIT_07 => X"B005756E115DA14862955E25811175003146959146905384061691264ACA55A0",
- INIT_08 => X"59A42C80120D1614043907018A5255D15255DD5D458556865145564855BB005F",
- INIT_09 => X"01CCB2259A0B2392C28EB25C2C44439D7556E1C065846DC42FC145B4B017F5D4",
- INIT_0A => X"5D045055085455F440192D596B5B87059615B7094314F0445810596FD2990D67",
- INIT_0B => X"2AFAD9C0AB629CBFAFADDC0ABEB572DBE2CBEB0208A280BA712A3A2C017F5451",
- INIT_0C => X"11556380E4B31F22CC8459F22A00B2C9AD2F53440AC8B22C8BAA332CA8CCB170",
- INIT_0D => X"20521D116161320750D75445BA63043113F3CF3C5A8353456600614680580100",
- INIT_0E => X"61C0465D5B55056D2C59536A410615565B4484160756D1354445850590451166",
- INIT_0F => X"34540464C6282165840F2FC01644185361165611845B8175155F598598574301",
- INIT_10 => X"95B81610590006D555A145D454614515B44D55B85B05B059451518414910F155",
- INIT_11 => X"754218A4566586A15676D758A25B95745945B85B05B05945151841195403B8C5",
- INIT_12 => X"D551A2D57526556851549CC515512185746555B44C55B454651AD2896651552D",
- INIT_13 => X"8559861581715344E5155B4405F4557449226556808162B96615991018A25946",
- INIT_14 => X"26810900EE302D971042C7156514441D7E116C47006114D165575485665C5744",
- INIT_15 => X"A0C05611F51A011016E3015B4416DC56D6D50410605144194847857167575649",
- INIT_16 => X"8501D75816390056D02C5B13154B001851558A06B000164401658184C0614458",
- INIT_17 => X"0574554574665B151AA515999DD755A194515B8256D1855D195248612057559C",
- INIT_18 => X"294541ADD1C95F545C0658A6DD729444592D35B5D46841BCF6D5145056598440",
- INIT_19 => X"149C18D3853DD6ED5B46C5954E2306988017058001305075452D168064440507",
- INIT_1A => X"5B45DE3E255C5866C889405B844000F7C4859A19500318D5F56654D4686755D5",
- INIT_1B => X"94C55B661556D98555B661556D98555B661556D98555B6615966998090003DF1",
- INIT_1C => X"3592E46160BFE5DAB10482E8425701001416E005E33F6F15057471E127141505",
- INIT_1D => X"80C9165B516301415B5B0701161251457D340D55D4531628D7525D4509184AA5",
- INIT_1E => X"16D6E0146835CA997694559D7456518A815556F59C405905B416D01856291657",
- INIT_1F => X"8587514864C4538C5A1605E146B57504145784994C01A31416D14956D0141E0C",
- INIT_20 => X"CD516D6D0145C6464505A965E90EB3E9566B0C5F1536A2596A25058759A61921",
- INIT_21 => X"5468563D4019C7D5514156594E90616D6E0146C37529415345B4115925148658",
- INIT_22 => X"01C0003000C07000268DD053D75C7D13203354162007003471F473F46485451C",
- INIT_23 => X"020009137507003F200E1C000C003400D00003750700030D29C1C00BC00F0003",
- INIT_24 => X"CC244C4D1D8522020A340015444E300FD448038700000200E1C0000002D00080",
- INIT_25 => X"00000C00000000000000003F2AAAAAAAAAAAAAAA95555555555555541931F475",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000300000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(27 downto 26), -- Port A 2-bit Data Output
- DOB => memBRead(27 downto 26), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(27 downto 26), -- Port A 2-bit Data Input
- DIB => memBWrite(27 downto 26), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM14 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"000A000A00020008000A0002000400B2000A0008000A008A000C000A00100010",
- INIT_01 => X"3C00000002000B2100020000000000020882000C000800000004000A00060002",
- INIT_02 => X"0002800A00C02800AAAAAAA80400000003080000000042000000000008082020",
- INIT_03 => X"00300EAAA808FAA00C008F00C03AAAAAA023EAAA80B02AB22008000000000000",
- INIT_04 => X"2A0C2828002830A0A000802023C0303B0000C0000000002E2AB2200B000023C0",
- INIT_05 => X"0302A00830A0A000A0C2828002A0C2828002830A0A000A830A0A000A0C282800",
- INIT_06 => X"322C0000000F2030098C00000AC20218800000408020003A00A00C9008220000",
- INIT_07 => X"3000B00C08080028C0002C008CC030B82000000000000B0A0C00001031310403",
- INIT_08 => X"080003203C800000000302230088C3CB2C00CF0420E030020020000200F3000F",
- INIT_09 => X"0284200000013410000200FB000402024000C082C002C087A08260320D0F0002",
- INIT_0A => X"1C88F20068CB00320032CA23C00F020B000B0203C230201A00B0C00610320001",
- INIT_0B => X"00830340024034CA0830340020C0D302C0420C0001C30028D0036C04002D0108",
- INIT_0C => X"CC390F8224230200473B002007401083A38D0B0080801204828C120B304810D1",
- INIT_0D => X"2B020380000CCE810202820030002ACC0B082082000003200008C80000C02802",
- INIT_0E => X"004C8C800F22000C8E0E072BB02AA0A003228022B000F80018400000228C0000",
- INIT_0F => X"7202A8CC8C002008E004CD363022A22F0A808008200300308807000000200D83",
- INIT_10 => X"4070A00200000C00000240C208C0188072012030030030004022302201020A80",
- INIT_11 => X"3802300200028CA00A8A040000030032012030030030004022302232C0A80B28",
- INIT_12 => X"000000000880004802201A200008A820F24020320800321260002A2000232800",
- INIT_13 => X"A0008C000C4A0B208080032230B210720008000488830208000000823000008C",
- INIT_14 => X"0008812A02CA808202280340308C0A8280900FC200C08BE03940902800240B22",
- INIT_15 => X"0234800B00400A0000C3A0032000C200C0C820820A0022322904885000800281",
- INIT_16 => X"2209082030310040C888038181680230000000030082302223002302E8C00200",
- INIT_17 => X"0C78C78C68C90B0000802000A02800020008070001C8203C880808C0A0281003",
- INIT_18 => X"A121A82029842D1002A00002420A1204002880CA000088080A004208C8000A2A",
- INIT_19 => X"0233E882882000C80320E0080C0E0A284C208C024008C0AC10800488800A8C00",
- INIT_1A => X"032E0CC0840800023421000303022020C080C00080C20BA070002200000E03C0",
- INIT_1B => X"0B000302E000C0B800302E000C0B800302E000C0B800302E0808E84000880830",
- INIT_1C => X"B002E8C088442000220300C83023800C1400C300CC0A33000032C00B0700280C",
- INIT_1D => X"003630032303A32803032088808800201CC82C30E08A000243080E0882302220",
- INIT_1E => X"82C0C8322820D2881003602C1880230035C081C88008C0A032C0C80E00000C0B",
- INIT_1F => X"20230E18800B030389304CE000303088320703880C23280000C88880C8322E08",
- INIT_20 => X"DE080C0C8320883A8C8CA008A00036AA8300AE0F0221300E1312E0230A2220E3",
- INIT_21 => X"03000BCE003CC3C2A32328021E00880C0C83228208AAA00720B0E32A223212A9",
- INIT_22 => X"0ABA2A90AA42AE8AB02AAEFA8AC18042EFAACFBAAB4AAEAB060104013F402082",
- INIT_23 => X"AC2AB3AAAEEAE8940911ABA2AB8AAE2AB8AAE2AEEAE8AAE84B2ABA2DB0A6C2A9",
- INIT_24 => X"AB4EAAEAB2AAAAB4BA84AAAAB08BAAAA2A42C46AE8AAD0B11ABA2AB4AB42AB0A",
- INIT_25 => X"00000C00000000000000003F000000000000000000000000000000002E06012A",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000170000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(29 downto 28), -- Port A 2-bit Data Output
- DOB => memBRead(29 downto 28), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(29 downto 28), -- Port A 2-bit Data Input
- DIB => memBWrite(29 downto 28), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
- ZPU_RAM15 : RAMB16_S2_S2
- generic map (
- INIT_A => X"0", -- Value of output RAM registers on Port A at startup
- INIT_B => X"0", -- Value of output RAM registers on Port B at startup
- SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
- SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
- WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
- INIT_00 => X"012501250005000C00850021000C04790015000800150445000C06A500A20022",
- INIT_01 => X"3E0000000102861A0021001A000062014461000800080008000C000500090005",
- INIT_02 => X"00016181A9A606405555555408000000020400000000C1800000002406860012",
- INIT_03 => X"00380D555416F5504C816F00E0355555505BD555417215799015000000000000",
- INIT_04 => X"150D141484143450521044505BC038370000E0000000005D1579901720005BC0",
- INIT_05 => X"232560943450521050D141484150D1414841434505210543450521050D141484",
- INIT_06 => X"00220200080CA232424C242006C10156652140C2A0A8208A00A08C600C152802",
- INIT_07 => X"7960B48C94080954C8002C90603830464420020820060B290C804A2B0A8A0808",
- INIT_08 => X"0801A099B260808262038663204603C45802DC0C111020210811482500B7960F",
- INIT_09 => X"B21A08408092A834489A08F2B02D6019E008C8D9C021C81E70D9D231028F00C1",
- INIT_0A => X"3C65F50054C400B126310D53AA0B236700872053A93255150278C00D7442A482",
- INIT_0B => X"40229BA900843AA20229BA9008A6EA90C4A08A6493A69908EA4E884AE83E0304",
- INIT_0C => X"083213991D0B0084AC3620084E992813008A0B666021294A508A694329A528EA",
- INIT_0D => X"941900480802026609C30522351855428704104100200F1080A4C42028C29489",
- INIT_0E => X"09924C500B55848C49080F5E48945081231541904403C48021D020A0854C8880",
- INIT_0F => X"F11354CE4C829821D2282A093015515E4540408412232430540F202202542263",
- INIT_10 => X"C0B252C920AA8C820809A0C114C82140F11A123A23A23A20A08132192B490540",
- INIT_11 => X"31A9320188014C4821458A02082340F11A123A23A23A20A08132193189540F14",
- INIT_12 => X"82080840056000820852B53082055430F180823121423135908045108013168C",
- INIT_13 => X"50204C8060860B121484231580B130B12056000826630914809200493208204C",
- INIT_14 => X"60147B5503C56A444956B3C8304DAD4164688CA9A8C840D832822238801B0B15",
- INIT_15 => X"050A408700809D8A08CB58231148D108C8D65965050811315FBC68B48264017B",
- INIT_16 => X"3987081A30B361C8C641238A42DC6932092020630669301593001321D4C82502",
- INIT_17 => X"8CF4CF4CF4C70F60802082005016080982040F2403C4582C4D2424C852942208",
- INIT_18 => X"5A12D4581F1C3F2241500201C105A1AA20896085820254018580C114C4202535",
- INIT_19 => X"81709601658808D02311D2042C992E2EAE684C29A084C9682040482661AD4CA0",
- INIT_1A => X"231F1CC0888102070A2228232621A807D66080894AE65C90B4801182024003D0",
- INIT_1B => X"060023511408D445023511408D445023511408D4450235114405D4AA486A01F5",
- INIT_1C => X"F208D4C846C8108005EA29C4245760AE6A08CA81CC005E9120F1C00A4B12968C",
- INIT_1D => X"26093003130B531623235855404608102D249870C644408183040C6451321180",
- INIT_1E => X"42C8D6310685E5402010908C22081320554202D55024C0523108C58D80818C0F",
- INIT_1F => X"1013086689640B2442308CC820343062310B24402E93142648C56148D6315DA1",
- INIT_20 => X"ED148C8D631068854C4C500542A579414301690F86B5240C527110130841A213",
- INIT_21 => X"82028B29217CE3C1531314016C2A548C8D6310685441680F10F6131181315052",
- INIT_22 => X"4150005401505400051555515555155155055515155504555455555540A03041",
- INIT_23 => X"1100451145454055115515000500140050004145454001414151500144051005",
- INIT_24 => X"5544555515551154011400155405100554441545400111055150004400500440",
- INIT_25 => X"00000C00000000000000003F0000000000000000000000000000000015545555",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000300000000000000000000",
- INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DOA => memARead(31 downto 30), -- Port A 2-bit Data Output
- DOB => memBRead(31 downto 30), -- Port B 2-bit Data Output
- ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
- ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
- CLKA => clk, -- Port A Clock
- CLKB => clk, -- Port B Clock
- DIA => memAWrite(31 downto 30), -- Port A 2-bit Data Input
- DIB => memBWrite(31 downto 30), -- Port B 2-bit Data Input
- ENA => re, -- Port A RAM Enable Input
- ENB => high, -- PortB RAM Enable Input
- SSRA => low, -- Port A Synchronous Set/Reset Input
- SSRB => low, -- Port B Synchronous Set/Reset Input
- WEA => memAWriteEnable, -- Port A Write Enable Input
- WEB => memBWriteEnable -- Port B Write Enable Input
- );
-end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/xmake.filelist b/zpu/hdl/zpu3/src/xmake.filelist deleted file mode 100644 index 3d0a779..0000000 --- a/zpu/hdl/zpu3/src/xmake.filelist +++ /dev/null @@ -1,5 +0,0 @@ -vhdl zylin "zpu_config.vhd"
-vhdl zylin "zpupkg.vhd"
-vhdl work "dmips_ram.vhd"
-vhdl zylin "zpu_top_bram_intstack.vhd"
-vhdl work "testlut.vhd"
diff --git a/zpu/hdl/zpu3/src/xmake.xst b/zpu/hdl/zpu3/src/xmake.xst deleted file mode 100644 index bfdb23f..0000000 --- a/zpu/hdl/zpu3/src/xmake.xst +++ /dev/null @@ -1,53 +0,0 @@ -set -tmpdir ../tmp
-set -xsthdpdir ../xst
-run
--ifn xmake.filelist
--ifmt mixed
--ofn ../syn/ic300
--ofmt NGC
--p xc3s400-4-ft256
--top ic300
--opt_mode Area
--opt_level 2
--iuc NO
--lso ic300.lso
--keep_hierarchy NO
--glob_opt AllClockNets
--rtlview Yes
--read_cores YES
--write_timing_constraints NO
--cross_clock_analysis NO
--hierarchy_separator /
--bus_delimiter <>
--case maintain
--slice_utilization_ratio 100
--verilog2001 YES
--fsm_extract YES -fsm_encoding Auto
--safe_implementation No
--fsm_style lut
--ram_extract Yes
--ram_style Auto
--rom_extract Yes
--rom_style Auto
--mux_extract YES
--mux_style Auto
--decoder_extract YES
--priority_extract YES
--shreg_extract YES
--shift_extract YES
--xor_collapse YES
--resource_sharing YES
--mult_style auto
--iobuf YES
--max_fanout 500
--bufg 8
--register_duplication YES
--equivalent_register_removal NO
--register_balancing No
--slice_packing YES
--optimize_primitives NO
--use_clock_enable Yes
--use_sync_set No
--use_sync_reset No
--iob true
--slice_utilization_ratio_maxmargin 5
diff --git a/zpu/hdl/zpu3/src/zpu_config.vhd b/zpu/hdl/zpu3/src/zpu_config.vhd deleted file mode 100644 index 506121c..0000000 --- a/zpu/hdl/zpu3/src/zpu_config.vhd +++ /dev/null @@ -1,25 +0,0 @@ -library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_unsigned.all;
-
-package zpu_config is
-
- constant Generate_Trace : boolean := false;
- -- during simulation, set this to '0' to get matching trace.txt
- constant DontCareValue : std_logic := '0';
- -- Clock frequency in MHz.
- constant ZPU_Frequency : std_logic_vector(7 downto 0) := x"64";
- -- maximum address includes upper bit for IO registers
- -- the rest is RAM
- constant maxAddrBit : integer := 14;
- constant minAddrBit : integer := 2;
- -- This bit is set for read/writes to IO
- -- FIX!!! eventually this should be set to wordSize-1 so as to
- -- to make the address of IO independent of amount of memory
- -- reserved for CPU. Requires trivial tweaks in toolchain/runtime
- -- libraries.
- constant ioBit : integer := maxAddrBit+1;
- constant wordPower : integer := 5;
- constant wordSize : integer := 2**wordPower;
-
-end zpu_config;
diff --git a/zpu/hdl/zpu3/src/zpu_pipelined.vhd b/zpu/hdl/zpu3/src/zpu_pipelined.vhd deleted file mode 100644 index 207939d..0000000 --- a/zpu/hdl/zpu3/src/zpu_pipelined.vhd +++ /dev/null @@ -1,852 +0,0 @@ --- Company: ZPU3 --- Engineer: Øyvind Harboe - -library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.STD_LOGIC_UNSIGNED.ALL; -use IEEE.STD_LOGIC_arith.ALL; - -library zylin; -use zylin.zpu_config.all; -use zylin.zpupkg.all; - - -entity zpu_top is - Port ( clk : in std_logic; - areset : in std_logic; - io_busy : in std_logic; - io_read : in std_logic_vector(7 downto 0); - io_write : out std_logic_vector(7 downto 0); - io_addr : out std_logic_vector(maxAddrBit downto minAddrBit); - io_writeEnable : out std_logic; - io_readEnable : out std_logic; - interrupt : in std_logic; - break : out std_logic); -end zpu_top; - -architecture behave of zpu_top is - -signal readIO : std_logic; - - - -signal memAWriteEnable : std_logic; -signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memAWrite : std_logic_vector(wordSize-1 downto 0); -signal memARead : std_logic_vector(wordSize-1 downto 0); -signal memBWriteEnable : std_logic; -signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memBWrite : std_logic_vector(wordSize-1 downto 0); -signal memBRead : std_logic_vector(wordSize-1 downto 0); - - -signal busy : std_logic; - -signal begin_inst : std_logic; - - - -signal trace_opcode : std_logic_vector(7 downto 0); -signal trace_pc : std_logic_vector(maxAddrBit downto 0); -signal trace_sp : std_logic_vector(maxAddrBit downto minAddrBit); -signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0); -signal trace_topOfStackB : std_logic_vector(wordSize-1 downto 0); - -type DecodedOpcodeType is -( -Decoded_Stall , -Decoded_Nop , -Decoded_Im , -Decoded_ImShift , -Decoded_LoadSP , -Decoded_StoreSP , -Decoded_AddSP , -Decoded_Emulate , -Decoded_Break , -Decoded_PushPC , -Decoded_PushSP , -Decoded_PopPC , -Decoded_Add , -Decoded_Or , -Decoded_And , -Decoded_Load , -Decoded_Not , -Decoded_Flip , -Decoded_Store , -Decoded_Storeb , -Decoded_PopSP , -Decoded_Ashiftleft , -Decoded_Ashiftright , -Decoded_Lshiftright , -Decoded_Eqbranch , -Decoded_Neqbranch , -Decoded_Eq , -Decoded_Neq , -Decoded_Loadb , -Decoded_Lessthan , -Decoded_Lessthanorequal , -Decoded_Ulessthan , -Decoded_Ulessthanorequal , -Decoded_Duplicate , -Decoded_Duplicate2 , -Decoded_Duplicate3 , -Decoded_MoveDown, -Decoded_MoveDown2, -Decoded_MoveDown3, -Decoded_Pushspadd, -Decoded_Callpcrel, -Decoded_Sub -); - - -signal decode_pc : std_logic_vector(maxAddrBit downto 0); -signal decode_fetchedPC : std_logic_vector(maxAddrBit downto 0); -signal decode_fetched : std_logic; -signal decode_opcode : std_logic_vector(OpCode_Size-1 downto 0); -signal decode_opcodeWord : std_logic_vector(wordSize-1 downto 0); -signal decode_starved : std_logic; -signal decode_wordStarved : std_logic; -signal decode_willBeStarved : std_logic; -signal decode_idim_flag : std_logic; - -signal execute1_stall : std_logic; -signal execute1_fetched : std_logic; -signal execute1_decodedOpcode : DecodedOpcodeType; -signal execute1_fetchedPC : std_logic_vector(maxAddrBit downto 0); -signal execute1_sp : std_logic_vector(maxAddrBit downto minAddrBit); -signal execute1_opcode : std_logic_vector(opCode_Size-1 downto 0); -signal execute1_spOffset : std_logic_vector(4 downto 0); -signal execute1_fetchPC : std_logic_vector(maxAddrBit downto 0); -signal execute1_push1 : std_logic; -signal execute1_push2 : std_logic; -signal execute1_pop1 : std_logic; -signal execute1_pop2 : std_logic; -signal execute1_antialias : std_logic; -signal execute1_savedTopOfStack : std_logic_vector(wordSize-1 downto 0); - - -signal load_decodedOpcode : DecodedOpcodeType; -signal load_opcode : std_logic_vector(opCode_Size-1 downto 0); -signal load_spOffset : std_logic_vector(4 downto 0); -signal load_stall : std_logic; -signal load_willBeStalled : std_logic; - -signal execute2_opcode : std_logic_vector(opCode_Size-1 downto 0); -signal execute2_topOfStack : std_logic_vector(wordSize-1 downto 0); -signal execute2_addResult : std_logic_vector(wordSize-1 downto 0); -signal execute2_topOfStackB : std_logic_vector(wordSize-1 downto 0); -signal execute2_pc : std_logic_vector(maxAddrBit downto 0); -signal execute2_sp : std_logic_vector(maxAddrBit downto minAddrBit); -signal execute2_loading : std_logic; -signal execute2_loadByte : std_logic; -signal execute2_storeByte : std_logic; -signal execute2_loadingDone : std_logic; -signal execute2_decodedOpcode : DecodedOpcodeType; -signal execute2_spOffset : std_logic_vector(4 downto 0); -signal execute2_persistTopOfStack : std_logic; -signal execute2_persistTopOfStackB : std_logic; -signal execute2_resync : std_logic; -signal execute2_resync2 : std_logic; -signal execute2_resync3 : std_logic; -signal execute2_resync4 : std_logic; -signal execute2_resync5 : std_logic; -signal execute2_resync6 : std_logic; -signal execute2_resync7 : std_logic; -signal execute2_resync8 : std_logic; -signal execute2_resync9 : std_logic; -signal execute2_resync10 : std_logic; - - -begin - traceFileGenerate: - if Generate_Trace generate - trace_file: trace port map ( - clk => clk, - begin_inst => begin_inst, - pc => trace_pc, - opcode => trace_opcode, - sp => trace_sp, - memA => trace_topOfStack, - memB => trace_topOfStackB, - busy => busy - ); - end generate; - - - memory: dualport_ram port map ( - clk => clk, - memAWriteEnable => memAWriteEnable, - memAAddr => memAAddr, - memAWrite => memAWrite, - memARead => memARead, - memBWriteEnable => memBWriteEnable, - memBAddr => memBAddr, - memBWrite => memBWrite, - memBRead => memBRead - ); - - opcodeControl: - process(clk, areset) - variable compareA : signed(wordSize-1 downto 0); - variable compareB : signed(wordSize-1 downto 0); - variable execute1_doFetch : boolean; - begin - if areset = '1' then - break <= '0'; - begin_inst <= '0'; - memAAddr <= (others => '0'); - memBAddr <= (others => '0'); - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - memAWrite <= (others => '0'); - memBWrite <= (others => '0'); - - memBAddr <= (others => '0'); - memBWrite <= (others => '0'); - - - io_writeEnable <= '0'; - io_readEnable <= '0'; - io_addr <= (others => '0'); - io_write <= (others => '0'); - - -- stage 1. Don't care since this is driven by stage2 - decode_pc <= (others => '0'); - decode_fetched <= '0'; - decode_starved <= '0'; - decode_opcode <= (others => '0'); - decode_opcodeWord <= (others => '0'); - - -- stage 2. - execute1_antialias <= '0'; - execute1_fetchPC <= (others => '0'); - execute1_fetched <= '0'; - execute1_decodedOpcode <= Decoded_Stall; - execute1_sp <= (2 => '0', others => '1'); - execute1_push1 <= '0'; - execute1_push2 <= '0'; - execute1_pop1 <= '0'; - execute1_pop2 <= '0'; - execute1_stall <= '1'; - - -- stage 3 - load_decodedOpcode <= Decoded_Stall; - load_stall <= '1'; - load_willBeStalled <= '1'; - - -- stage 4 - decode_idim_flag <= '0'; - execute2_pc <= (others => '0'); - execute2_sp <= (2 => '0', others => '1'); - execute2_loading <= '0'; - execute2_loadByte <= '0'; - execute2_storeByte <= '0'; - execute2_loadingDone <= '0'; - execute2_decodedOpcode <= Decoded_Stall; - execute2_resync <= '1'; - execute2_resync2 <= '0'; - execute2_resync3 <= '0'; - execute2_resync4 <= '0'; - execute2_resync5 <= '0'; - execute2_resync6 <= '0'; - execute2_resync7 <= '0'; - execute2_resync8 <= '0'; - execute2_resync9 <= '0'; - execute2_resync10 <= '0'; - execute2_persistTopOfStack <= '0'; - execute2_persistTopOfStackB <= '0'; - - -- stage 5 - memBWriteEnable <= '0'; - - - elsif (clk'event and clk = '1') then - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - io_writeEnable <= '0'; - io_readEnable <= '0'; - begin_inst <= '0'; - - -- stage0: fetch - decode_willBeStarved <= '0'; - if (decode_fetched='1') then - -- resync #4 - decode_opcodeWord <= memARead; - decode_pc <= decode_fetchedPC; - elsif (decode_pc(minAddrBit-1 downto 0)=b"11") then - decode_willBeStarved <= '1'; - else - -- we can continue decoding. - decode_pc <= decode_pc + 1; - end if; - - -- stage 0b: move to byte.. - -- resync #5 - decode_starved <= decode_willBeStarved; - case decode_pc(minAddrBit-1 downto 0) is - when "00" => decode_opcode <= decode_opcodeWord(31 downto 24); - when "01" => decode_opcode <= decode_opcodeWord(23 downto 16); - when "10" => decode_opcode <= decode_opcodeWord(15 downto 8); - when others => decode_opcode <= decode_opcodeWord(7 downto 0); - end case; - - -- stage1: decode 1 - execute1_opcode <= decode_opcode; - - execute1_spOffset(4)<=not decode_opcode(4); - execute1_spOffset(3 downto 0)<=decode_opcode(3 downto 0); - - execute1_decodedOpcode<=Decoded_Break; - - decode_idim_flag <= '0'; - - -- resync #6 - -- resync #1 - if (decode_starved = '1') then - execute1_decodedOpcode<=Decoded_Stall; - decode_idim_flag <= decode_idim_flag; - elsif (decode_opcode(7 downto 7)=OpCode_Im) then - decode_idim_flag <= '1'; - if (decode_idim_flag = '0') then - execute1_decodedOpcode<=Decoded_Im; - else - execute1_decodedOpcode<=Decoded_ImShift; - end if; - elsif (decode_opcode(7 downto 5)=OpCode_StoreSP) then - if (decode_opcode(4 downto 0)=b"10001") then - execute1_decodedOpcode<=Decoded_MoveDown; - elsif (decode_opcode(4 downto 0)=b"10010") then - execute1_decodedOpcode<=Decoded_MoveDown2; --- elsif (decode_opcode(4 downto 0)=b"10011") then --- execute1_decodedOpcode<=Decoded_MoveDown3; - else - execute1_decodedOpcode<=Decoded_StoreSP; - end if; - elsif (decode_opcode(7 downto 5)=OpCode_LoadSP) then - if (decode_opcode(4 downto 0)=b"10000") then - execute1_decodedOpcode<=Decoded_Duplicate; - elsif (decode_opcode(4 downto 0)=b"10001") then - execute1_decodedOpcode<=Decoded_Duplicate2; - elsif (decode_opcode(4 downto 0)=b"10010") then - execute1_decodedOpcode<=Decoded_Duplicate3; - else - execute1_decodedOpcode<=Decoded_LoadSP; - end if; - elsif (decode_opcode(7 downto 5)=OpCode_Emulate) then - execute1_decodedOpcode<=Decoded_Emulate; - if decode_opcode(5 downto 0)=OpCode_Neqbranch then - execute1_decodedOpcode <= Decoded_Neqbranch; - elsif decode_opcode(5 downto 0)=OpCode_Eq then - execute1_decodedOpcode <= Decoded_Eq; - elsif decode_opcode(5 downto 0)=OpCode_Lessthan then - execute1_decodedOpcode <= Decoded_Lessthan; - elsif decode_opcode(5 downto 0)=OpCode_Ulessthan then - execute1_decodedOpcode <= Decoded_Ulessthan; - elsif decode_opcode(5 downto 0)=OpCode_Loadb then - execute1_decodedOpcode <= Decoded_Loadb; - elsif decode_opcode(5 downto 0)=OpCode_Storeb then - execute1_decodedOpcode <= Decoded_Storeb; - elsif decode_opcode(5 downto 0)=OpCode_Pushspadd then - execute1_decodedOpcode <= Decoded_Pushspadd; - elsif decode_opcode(5 downto 0)=OpCode_Callpcrel then - execute1_decodedOpcode <= Decoded_Callpcrel; - elsif decode_opcode(5 downto 0)=OpCode_Sub then - execute1_decodedOpcode <= Decoded_Sub; - end if; - elsif (decode_opcode(7 downto 4)=OpCode_AddSP) then - if (decode_opcode(3 downto 0) = 0) then - execute1_decodedOpcode<=Decoded_Ashiftleft; - elsif (decode_opcode(3 downto 0) = 1) then --- execute1_decodedOpcode<=Decoded_AddSP; - elsif (decode_opcode(3 downto 0) = 2) then --- execute1_decodedOpcode<=Decoded_AddSP; - else - execute1_decodedOpcode<=Decoded_AddSP; - end if; - else - case decode_opcode(3 downto 0) is - when OpCode_Nop => - execute1_decodedOpcode<=Decoded_Nop; - when OpCode_PushSP => - execute1_decodedOpcode<=Decoded_PushSP; - when OpCode_PopPC => - execute1_decodedOpcode<=Decoded_PopPC; - when OpCode_Add => - execute1_decodedOpcode<=Decoded_Add; - when OpCode_Or => - execute1_decodedOpcode<=Decoded_Or; - when OpCode_And => - execute1_decodedOpcode<=Decoded_And; - when OpCode_Load => - execute1_decodedOpcode<=Decoded_Load; - when OpCode_Not => - execute1_decodedOpcode<=Decoded_Not; - when OpCode_Flip => - execute1_decodedOpcode<=Decoded_Flip; - when OpCode_Store => - execute1_decodedOpcode<=Decoded_Store; - when OpCode_PopSP => - execute1_decodedOpcode<=Decoded_PopSP; - when others => - execute1_decodedOpcode<=Decoded_Break; - end case; - end if; - - - -- stage 2: execute 1 - load stage. - -- - -- the address must be known without using the value on top of the stack... - -- resync #3 - execute1_fetched <= '0'; - decode_fetched <= execute1_fetched; -- the value in memAAddr will be valid for 1 cycle only - decode_fetchedPC <= execute1_fetchedPC; - - if (execute1_fetchPC(1 downto 0)/=b"00") then - execute1_fetchPC <= execute1_fetchPC+1; - end if; - - execute1_push1 <= '0'; - execute1_push2 <= execute1_push1; - execute1_pop1 <= '0'; - execute1_pop2 <= execute1_pop1; - - if ((execute1_push1 and execute1_push2)='1') then - memAWrite <= execute2_topOfStack; - else - memAWrite <= execute2_topOfStackB; - end if; - - -- resync #7 - case execute1_decodedOpcode is - when Decoded_Neqbranch | Decoded_MoveDown3 | Decoded_Load | Decoded_Loadb | Decoded_Store | Decoded_Storeb | Decoded_Emulate | Decoded_PopSP | Decoded_PopPC| Decoded_Callpcrel => - execute1_stall <= '1'; - when others => - -- nothing... - end case; - - execute1_antialias <= load_stall; - execute1_doFetch := false; - case execute1_decodedOpcode is - when Decoded_PushSP | Decoded_Emulate => - execute1_sp <= execute1_sp - 1; - execute1_push1 <= '1'; - execute1_doFetch := true; - when Decoded_Duplicate3 => - memAWriteEnable <= ((execute1_push1 and execute1_push2) or - (execute1_push1 and not execute1_pop2) or - (execute1_push2 and not execute1_pop1)) and - (not execute1_antialias and not execute1_stall); - memAAddr <= execute1_sp + 2; - execute1_sp <= execute1_sp - 1; - execute1_push1 <= '1'; - when Decoded_Im | Decoded_Duplicate | Decoded_Duplicate2 => - execute1_sp <= execute1_sp - 1; - execute1_push1 <= '1'; - execute1_doFetch := true; - when Decoded_LoadSP => - memAAddr <= execute1_sp+execute1_spOffset; - execute1_sp <= execute1_sp - 1; - execute1_push1 <= '1'; - when Decoded_AddSP => - memAAddr <= execute1_sp+execute1_spOffset; - when Decoded_MoveDown2 => - execute1_sp <= execute1_sp + 1; - execute1_pop1 <= '1'; - execute1_doFetch := true; - when Decoded_Ulessthan | Decoded_Lessthan | Decoded_Eq | Decoded_Neqbranch | Decoded_MoveDown3 | Decoded_MoveDown | Decoded_Add | Decoded_Sub | Decoded_Or | Decoded_And | Decoded_PopPC | Decoded_StoreSP => - -- be afraid :-) - memAWriteEnable <= ((execute1_push1 and execute1_push2) or - (execute1_push1 and not execute1_pop2) or - (execute1_push2 and not execute1_pop1)) and - (not execute1_antialias and not execute1_stall); - memAAddr <= execute1_sp + 2; - execute1_sp <= execute1_sp + 1; - execute1_pop1 <= '1'; - when others => - execute1_doFetch := true; - end case; - - if execute1_doFetch then - -- resync #2 - -- some instruction that does not change the stack pointer - -- and does not need use a memory operand. - -- We can fetch the next word to be decoded to avoid stalls - execute1_fetchPC <= execute1_fetchPC+1; - memAAddr <= execute1_fetchPC(maxAddrBit downto minAddrBit); - execute1_fetchedPC <= execute1_fetchPC; - execute1_fetched <= '1'; - end if; - - - -- stage 3: fetching memory takes 1 cycle - -- here we also verify that we've fetched & decoded the right - -- opcode. - -- resync #8 - load_decodedOpcode <= execute1_decodedOpcode; - load_opcode <= execute1_opcode; - load_spOffset <= execute1_spOffset; - load_stall <= execute1_stall; - -- resync #9 - if (load_stall = '1') then - execute2_decodedOpcode <= Decoded_Stall; - else - execute2_decodedOpcode <= load_decodedOpcode; - end if; - execute2_opcode <= load_opcode; - execute2_spOffset <= load_spOffset; - - -- stage 4: execute 2 - we now have both operands. This is the - -- main execute stage... - begin_inst <= '1'; - trace_pc <= execute2_pc; - trace_opcode <= execute2_opcode; - trace_sp <= execute2_sp; - trace_topOfStack <= execute2_topOfStack; - trace_topOfStackB <= execute2_topOfStackB; - - execute2_pc <= execute2_pc + 1; - execute2_loading <= '0'; - memBWriteEnable <= '0'; - - case execute2_decodedOpcode is - when Decoded_PopSP => - execute2_sp <= execute2_topOfStack(maxAddrBit downto minAddrBit); - - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - execute2_resync <= '1'; - when Decoded_Callpcrel => - execute2_topOfStack <= (others => DontCareValue); - execute2_topOfStack(maxAddrBit downto 0) <= execute2_pc + 1; - execute2_pc <= execute2_pc + execute2_topOfStack(maxAddrBit downto 0); - execute2_persistTopOfStack <= '1'; - when Decoded_PopPC => - execute2_pc <= execute2_topOfStack(maxAddrBit downto 0); - execute2_sp <= execute2_sp + 1; - - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - execute2_resync <= '1'; - when Decoded_Emulate => - execute2_sp <= execute2_sp - 1; - - execute2_topOfStack <= (others => DontCareValue); - execute2_topOfStack(maxAddrBit downto 0) <= execute2_pc + 1; - execute2_topOfStackB <= execute2_topOfStack; - - memBWriteEnable <= '1'; - memBAddr <= execute2_sp+1; - memBWrite <= execute2_topOfStackB; - -- The emulate address is: - -- 98 7654 3210 - -- 0000 00aa aaa0 0000 - execute2_pc <= (others => '0'); - execute2_pc(9 downto 5) <= execute2_opcode(4 downto 0); - execute2_persistTopOfStack <= '1'; - when Decoded_Im => - execute2_sp <= execute2_sp - 1; - for i in wordSize-1 downto 7 loop - execute2_topOfStack(i) <= execute2_opcode(6); - end loop; - execute2_topOfStack(6 downto 0) <= execute2_opcode(6 downto 0); - - execute2_topOfStackB <= execute2_topOfStack; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - when Decoded_ImShift => - execute2_topOfStack(wordSize-1 downto 7) <= execute2_topOfStack(wordSize-8 downto 0); - execute2_topOfStack(6 downto 0) <= execute2_opcode(6 downto 0); - when Decoded_LoadSP => - execute2_sp <= execute2_sp - 1; - execute2_topOfStack <= memARead; - execute2_topOfStackB <= execute2_topOfStack; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - when Decoded_Break => - report "Break instruction encountered" severity failure; - break <= '1'; - when Decoded_PushSP => - execute2_topOfStack <= (others => DontCareValue); - execute2_topOfStack(maxAddrBit downto minAddrBit) <= execute2_sp; - - execute2_sp <= execute2_sp - 1; - execute2_topOfStackB <= execute2_topOfStack; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - when Decoded_Add => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= execute2_topOfStackB + execute2_topOfStack; - execute2_topOfStackB <= memARead; - when Decoded_Sub => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= execute2_topOfStackB - execute2_topOfStack; - execute2_topOfStackB <= memARead; - when Decoded_AddSP => - execute2_topOfStack <= execute2_topOfStack + memARead; - when Decoded_Or => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= execute2_topOfStackB or execute2_topOfStack; - execute2_topOfStackB <= memARead; - when Decoded_And => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= execute2_topOfStackB and execute2_topOfStack; - execute2_topOfStackB <= memARead; - when Decoded_Load | Decoded_Loadb | Decoded_Storeb => - if (execute2_topOfStack(ioBit)='1') then - io_addr <= execute2_topOfStack(maxAddrBit downto minAddrBit); - io_readEnable <= '1'; - else - memAAddr <= execute2_topOfStack(maxAddrBit downto minAddrBit); - execute1_fetched <= '0'; - end if; - if (execute2_decodedOpcode = Decoded_Loadb) then - execute2_loadByte <= '1'; - else - execute2_loadByte <= '0'; - end if; - if (execute2_decodedOpcode = Decoded_Storeb) then - execute2_storeByte <= '1'; - else - execute2_storebyte <= '0'; - end if; - execute2_loading <= '1'; - when Decoded_Ashiftleft => - execute2_topOfStack(wordSize-1 downto 1) <= execute2_topOfStack(wordSize-2 downto 0); - execute2_topOfStack(0) <= '0'; - when Decoded_MoveDown => - execute2_sp <= execute2_sp + 1; - execute2_topOfStackB <= memARead; - when Decoded_MoveDown2 => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= execute2_topOfStackB; - execute2_topOfStackB <= execute2_topOfStack; - when Decoded_MoveDown3 => - execute2_sp <= execute2_sp + 1; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp+execute2_spOffset; - memBWrite <= execute2_topOfStack; - - execute2_topOfStack <= execute2_topOfStackB; - execute2_topOfStackB <= memARead; - execute2_persistTopOfStack <= '1'; - when Decoded_Duplicate => - execute2_topOfStackB <= execute2_topOfStack; - execute2_sp <= execute2_sp - 1; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - when Decoded_Duplicate2 => - execute2_topOfStack <= execute2_topOfStackB; - execute2_topOfStackB <= execute2_topOfStack; - execute2_sp <= execute2_sp - 1; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - when Decoded_Duplicate3 => - execute2_topOfStack <= memARead; - execute2_topOfStackB <= execute2_topOfStack; - execute2_sp <= execute2_sp - 1; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp + 1; - memBWrite <= execute2_topOfStackB; - when Decoded_Pushspadd => - execute2_topOfStack <= (others => DontCareValue); - execute2_topOfStack(maxAddrBit downto minAddrBit) <= execute2_sp + execute2_topOfStack(maxAddrBit-minAddrBit downto 0); - when Decoded_Not => - execute2_topOfStack <= not execute2_topOfStack; - when Decoded_Flip => - for i in 0 to wordSize-1 loop - execute2_topOfStack(i) <= execute2_topOfStack(wordSize-1-i); - end loop; - when Decoded_Store => - execute2_sp <= execute2_sp + 2; - if (execute2_topOfStack(ioBit)='0') then - memBAddr <= execute2_topOfStack(maxAddrBit downto minAddrBit); - memBWrite <= execute2_topOfStackB; - memBWriteEnable <= '1'; - else - io_addr <= execute2_topOfStack(maxAddrBit downto minAddrBit); - io_write <= execute2_topOfStackB(7 downto 0); - io_writeEnable <= '1'; - end if; - execute2_resync <= '1'; - when Decoded_StoreSP => - execute2_sp <= execute2_sp + 1; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp+execute2_spOffset; - memBWrite <= execute2_topOfStack; - - execute2_topOfStack <= execute2_topOfStackB; - execute2_topOfStackB <= memARead; - when Decoded_Neqbranch => - execute2_sp <= execute2_sp + 2; - if (execute2_topOfStackB/=0) then - execute2_pc <= execute2_topOfStack(maxAddrBit downto 0) + execute2_pc; - end if; - execute2_resync <= '1'; - when Decoded_Eq => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= (others => '0'); - if (execute2_topOfStack=execute2_topOfStackB) then - execute2_topOfStack(0) <= '1'; - end if; - execute2_topOfStackB <= memARead; - when Decoded_Ulessthan => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= (others => '0'); - if (execute2_topOfStack<execute2_topOfStackB) then - execute2_topOfStack(0) <= '1'; - end if; - execute2_topOfStackB <= memARead; - when Decoded_Lessthan => - execute2_sp <= execute2_sp + 1; - execute2_topOfStack <= (others => '0'); - compareA := signed(execute2_topOfStack); - compareB := signed(execute2_topOfStackB); - if (compareA<compareB) then - execute2_topOfStack(0) <= '1'; - end if; - execute2_topOfStackB <= memARead; - when Decoded_Stall => - begin_inst <= '0'; - execute2_pc <= execute2_pc; - when others => - -- nop - end case; - - -- load cycle... - execute2_loadingDone <= execute2_loading; - if (execute2_loadingDone ='1') then - if (execute2_topOfStack(ioBit)='1') then - if (io_busy = '0') then - execute2_topOfStack <= (others => '0'); - execute2_topOfStack(7 downto 0) <= io_read; - execute2_persistTopOfStack <= '1'; - else - execute2_loadingDone <= '1'; - end if; - else - if (execute2_storeByte = '1') then - execute2_sp <= execute2_sp + 2; - memBWriteEnable <= '1'; - memBAddr <= execute2_topOfStack(maxAddrBit downto minAddrBit); - memBWrite <= memARead; - case execute2_topOfStack(minAddrBit-1 downto 0) is - when "00" => memBWrite(31 downto 24) <= execute2_topOfStackB(7 downto 0); - when "01" => memBWrite(23 downto 16) <= execute2_topOfStackB(7 downto 0); - when "10" => memBWrite(15 downto 8) <= execute2_topOfStackB(7 downto 0); - when others => memBWrite(7 downto 0) <= execute2_topOfStackB(7 downto 0); - end case; --- case execute2_topOfStack(0 downto 0) is --- when "1" => memBWrite(15 downto 8) <= execute2_topOfStackB(7 downto 0); --- when others => memBWrite(7 downto 0) <= execute2_topOfStackB(7 downto 0); --- end case; - execute2_resync <= '1'; - elsif (execute2_loadByte = '1') then - execute2_topOfStack <= (others => '0'); - case execute2_topOfStack(minAddrBit-1 downto 0) is - when "00" => execute2_topOfStack(7 downto 0) <= memARead(31 downto 24); - when "01" => execute2_topOfStack(7 downto 0) <= memARead(23 downto 16); - when "10" => execute2_topOfStack(7 downto 0) <= memARead(15 downto 8); - when others => execute2_topOfStack(7 downto 0) <= memARead(7 downto 0); - end case; --- case execute2_topOfStack(0 downto 0) is --- when "1" => execute2_topOfStack(7 downto 0) <= memARead(15 downto 8); --- when others => execute2_topOfStack(7 downto 0) <= memARead(7 downto 0); --- end case; - execute2_persistTopOfStack <= '1'; - else - execute2_topOfStack <= memARead; - execute2_persistTopOfStack <= '1'; - end if; - end if; - end if; - - -- write top of stack... - execute2_persistTopOfStackB <= execute2_persistTopOfStack; - if (execute2_persistTopOfStack = '1') then - execute2_persistTopOfStack <= '0'; - memBWriteEnable <= '1'; - memBAddr <= execute2_sp; - memBWrite <= execute2_topOfStack; - end if; - if (execute2_persistTopOfStackB = '1') then - memBWriteEnable <= '1'; - memBAddr <= execute2_sp+1; - memBWrite <= execute2_topOfStackB; - - execute2_resync <= '1'; - end if; - - -- here we resync the pipeline. - -- a number of things have to happen on certain cycles - execute2_resync2 <= execute2_resync; - execute2_resync3 <= execute2_resync2; - execute2_resync4 <= execute2_resync3; - execute2_resync5 <= execute2_resync4; - execute2_resync6 <= execute2_resync5; - execute2_resync7 <= execute2_resync6; - execute2_resync8 <= execute2_resync7; - execute2_resync9 <= execute2_resync8; - execute2_resync10 <= execute2_resync9; - - if (execute2_resync = '1' ) then - -- resync #1 - execute2_resync <= '0'; - decode_starved <= '1'; - memAAddr <= execute2_sp; - end if; - if (execute2_resync2 = '1') then - -- resync #2 - execute1_fetchPC <= execute2_pc; - memAAddr <= execute2_sp + 1; - end if; - if (execute2_resync3 = '1') then - -- resync #3 - execute2_topOfStack <= memARead; - end if; - if (execute2_resync4 = '1') then - -- resync #4 - -- during this cycle the address is set to the opcode - execute2_topOfStackB <= memARead; - end if; - if (execute2_resync5 = '1') then - -- resync #5 - execute1_pop1 <= '0'; - execute1_push1 <= '0'; - end if; - if (execute2_resync6 = '1') then - -- resync #6 - decode_idim_flag <= '0'; - execute1_pop1 <= '0'; - execute1_push1 <= '0'; - end if; - if (execute2_resync7 = '1') then - -- resync #7 - execute1_sp <= execute2_sp; - execute1_stall <= '0'; - end if; - if (execute2_resync8 = '1') then - -- resync #8 --- load_stall <= '0'; - end if; - if (execute2_resync9 = '1') then - -- resync #9 - end if; - if (execute2_resync10 = '1') then - end if; - - - - - end if; - end process; - - - -end behave; diff --git a/zpu/hdl/zpu3/src/zpu_top.vhd b/zpu/hdl/zpu3/src/zpu_top.vhd deleted file mode 100644 index 0ac6df4..0000000 --- a/zpu/hdl/zpu3/src/zpu_top.vhd +++ /dev/null @@ -1,421 +0,0 @@ --- Company: ZPU3 --- Engineer: Øyvind Harboe - -library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.STD_LOGIC_UNSIGNED.ALL; - -library zylin; -use zylin.zpu_config.all; -use zylin.zpupkg.all; - - -entity zpu_top is - Port ( clk : in std_logic; - areset : in std_logic; - io_busy : in std_logic; - io_read : in std_logic_vector(7 downto 0); - io_write : out std_logic_vector(7 downto 0); - io_addr : out std_logic_vector(maxAddrBit downto minAddrBit); - io_writeEnable : out std_logic; - io_readEnable : out std_logic; - interrupt : in std_logic; - break : out std_logic); -end zpu_top; - -architecture behave of zpu_top is - -signal readIO : std_logic; - - - -signal memAWriteEnable : std_logic; -signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memAWrite : std_logic_vector(wordSize-1 downto 0); -signal memARead : std_logic_vector(wordSize-1 downto 0); -signal memBWriteEnable : std_logic; -signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memBWrite : std_logic_vector(wordSize-1 downto 0); -signal memBRead : std_logic_vector(wordSize-1 downto 0); - - - -signal pc : std_logic_vector(maxAddrBit downto 0); -signal sp : std_logic_vector(maxAddrBit downto minAddrBit); - -signal idim_flag : std_logic; - ---signal storeToStack : std_logic; ---signal fetchNextInstruction : std_logic; ---signal extraCycle : std_logic; -signal busy : std_logic; ---signal fetching : std_logic; - -signal begin_inst : std_logic; - - - -signal trace_opcode : std_logic_vector(7 downto 0); -signal trace_pc : std_logic_vector(maxAddrBit downto 0); -signal trace_sp : std_logic_vector(maxAddrBit downto minAddrBit); -signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0); -signal trace_topOfStackB : std_logic_vector(wordSize-1 downto 0); - --- state machine. - -subtype State_Type is std_logic_vector(3 downto 0); -constant State_Fetch : State_Type := b"0000"; -constant State_WriteIODone : State_Type := b"0001"; -constant State_Execute : State_Type := b"0010"; -constant State_StoreToStack : State_Type := b"0011"; -constant State_Add : State_Type := b"0100"; -constant State_Or : State_Type := b"0101"; -constant State_And : State_Type := b"0110"; -constant State_Store : State_Type := b"0111"; -constant State_ReadIO : State_Type := b"1000"; -constant State_WriteIO : State_Type := b"1001"; -constant State_Load : State_Type := b"1010"; -constant State_FetchNext : State_Type := b"1011"; -constant State_AddSP : State_Type := b"1100"; -constant State_ReadIODone : State_Type := b"1101"; -constant State_Decode : State_Type := b"1110"; -constant State_Resync : State_Type := b"1111"; - - -subtype DecodedOpcodeType is std_logic_vector(4 downto 0); -constant Decoded_Nop : DecodedOpcodeType := b"00000"; -constant Decoded_Im : DecodedOpcodeType := b"00001"; -constant Decoded_ImShift : DecodedOpcodeType := b"00010"; -constant Decoded_LoadSP : DecodedOpcodeType := b"00011"; -constant Decoded_StoreSP : DecodedOpcodeType := b"00100"; -constant Decoded_AddSP : DecodedOpcodeType := b"00101"; -constant Decoded_Emulate : DecodedOpcodeType := b"00110"; -constant Decoded_Break : DecodedOpcodeType := b"00111"; -constant Decoded_PushPC : DecodedOpcodeType := b"01000"; -constant Decoded_PushSP : DecodedOpcodeType := b"01001"; -constant Decoded_PopPC : DecodedOpcodeType := b"01010"; -constant Decoded_Add : DecodedOpcodeType := b"01011"; -constant Decoded_Or : DecodedOpcodeType := b"01100"; -constant Decoded_And : DecodedOpcodeType := b"01101"; -constant Decoded_Load : DecodedOpcodeType := b"01110"; -constant Decoded_Not : DecodedOpcodeType := b"01111"; -constant Decoded_Flip : DecodedOpcodeType := b"10000"; -constant Decoded_Store : DecodedOpcodeType := b"10001"; -constant Decoded_PopSP : DecodedOpcodeType := b"10010"; - -signal opcode : std_logic_vector(OpCode_Size-1 downto 0); - -signal decodedOpcode : DecodedOpcodeType; - -signal state : State_Type; - -begin - traceFileGenerate: - if Generate_Trace generate - trace_file: trace port map ( - clk => clk, - begin_inst => begin_inst, - pc => trace_pc, - opcode => trace_opcode, - sp => trace_sp, - memA => trace_topOfStack, - memB => trace_topOfStackB, - busy => busy - ); - end generate; - - - memory: dualport_ram port map ( - clk => clk, - memAWriteEnable => memAWriteEnable, - memAAddr => memAAddr, - memAWrite => memAWrite, - memARead => memARead, - memBWriteEnable => memBWriteEnable, - memBAddr => memBAddr, - memBWrite => memBWrite, - memBRead => memBRead - ); - - - - - opcodeControl: - process(clk, areset) - variable tOpcode : std_logic_vector(OpCode_Size-1 downto 0); - variable spOffset : std_logic_vector(4 downto 0); - begin - if areset = '1' then - state <= State_Resync; - break <= '0'; - sp <= (2 => '0', others => '1'); - pc <= (others => '0'); - idim_flag <= '0'; - begin_inst <= '0'; - memAAddr <= (others => '0'); - memBAddr <= (others => '0'); - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - io_writeEnable <= '0'; - io_readEnable <= '0'; - decodedOpcode <= (others => '0'); - memAWrite <= (others => '0'); - memBWrite <= (others => '0'); - opcode <= (others => '0'); - io_addr <= (others => '0'); - io_write <= (others => '0'); - elsif (clk'event and clk = '1') then - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - -- This saves ca. 100 LUT's, by explicitly declaring that the - -- memAWrite can be left at whatever value if memAWriteEnable is - -- not set. - memAWrite <= (others => DontCareValue); - memBWrite <= (others => DontCareValue); - opcode <= (others => DontCareValue); --- io_addr <= (others => DontCareValue); --- io_write <= (others => DontCareValue); - spOffset := (others => DontCareValue); - memAAddr <= (others => DontCareValue); - memBAddr <= (others => DontCareValue); - - io_writeEnable <= '0'; - io_readEnable <= '0'; - begin_inst <= '0'; - - case state is - when State_Execute => - state <= State_Fetch; - -- at this point: - -- memBRead contains opcode word - -- memARead contains top of stack - pc <= pc + 1; - - -- trace - begin_inst <= '1'; - trace_pc <= pc; - trace_opcode <= opcode; - trace_sp <= sp; - trace_topOfStack <= memARead; - trace_topOfStackB <= memBRead; - - -- during the next cycle we'll be reading the next opcode - spOffset(4):=not opcode(4); - spOffset(3 downto 0):=opcode(3 downto 0); - - case decodedOpcode is - when Decoded_Im => - memAWriteEnable <= '1'; - sp <= sp - 1; - memAAddr <= sp-1; - for i in wordSize-1 downto 7 loop - memAWrite(i) <= opcode(6); - end loop; - memAWrite(6 downto 0) <= opcode(6 downto 0); - when Decoded_ImShift => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite(wordSize-1 downto 7) <= memARead(wordSize-8 downto 0); - memAWrite(6 downto 0) <= opcode(6 downto 0); - when Decoded_StoreSP => - memBWriteEnable <= '1'; - memBAddr <= sp+spOffset; - memBWrite <= memARead; - sp <= sp + 1; - state <= State_Resync; - when Decoded_LoadSP => - sp <= sp - 1; - memAAddr <= sp+spOffset; - when Decoded_Emulate => - sp <= sp - 1; - memAWriteEnable <= '1'; - memAAddr <= sp - 1; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto 0) <= pc + 1; - -- The emulate address is: - -- 98 7654 3210 - -- 0000 00aa aaa0 0000 - pc <= (others => '0'); - pc(9 downto 5) <= opcode(4 downto 0); - when Decoded_AddSP => - memAAddr <= sp; - memBAddr <= sp+spOffset; - state <= State_AddSP; - when Decoded_Break => - report "Break instruction encountered" severity failure; - break <= '1'; - when Decoded_PushSP => - memAWriteEnable <= '1'; - memAAddr <= sp - 1; - sp <= sp - 1; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto minAddrBit) <= sp; - when Decoded_PopPC => - pc <= memARead(maxAddrBit downto 0); - sp <= sp + 1; - state <= State_Resync; - when Decoded_Add => - sp <= sp + 1; - state <= State_Add; - when Decoded_Or => - sp <= sp + 1; - state <= State_Or; - when Decoded_And => - sp <= sp + 1; - state <= State_And; - when Decoded_Load => - if (memARead(ioBit)='1') then - io_addr <= memARead(maxAddrBit downto minAddrBit); - io_readEnable <= '1'; - state <= State_ReadIO; - else - memAAddr <= memARead(maxAddrBit downto minAddrBit); - end if; - when Decoded_Not => - memAAddr <= sp(maxAddrBit downto minAddrBit); - memAWriteEnable <= '1'; - memAWrite <= not memARead; - when Decoded_Flip => - memAAddr <= sp(maxAddrBit downto minAddrBit); - memAWriteEnable <= '1'; - for i in 0 to wordSize-1 loop - memAWrite(i) <= memARead(wordSize-1-i); - end loop; - when Decoded_Store => - memBAddr <= sp + 1; - sp <= sp + 1; - if (memARead(ioBit)='1') then - state <= State_WriteIO; - else - state <= State_Store; - end if; - when Decoded_PopSP => - sp <= memARead(maxAddrBit downto minAddrBit); - state <= State_Resync; - when Decoded_Nop => - memAAddr <= sp; - when others => - null; - end case; - when State_ReadIO => - if (io_busy = '0') then - state <= State_Fetch; - memAWriteEnable <= '1'; - memAWrite <= (others => '0'); - memAWrite(7 downto 0) <= io_read; - end if; - when State_WriteIO => - sp <= sp + 1; - io_writeEnable <= '1'; - io_addr <= memARead(maxAddrBit downto minAddrBit); - io_write <= memBRead(7 downto 0); - state <= State_WriteIODone; - when State_WriteIODone => - if (io_busy = '0') then - state <= State_Resync; - end if; - when State_Fetch => - -- We need to resync. During the *next* cycle - -- we'll fetch the opcode @ pc and thus it will - -- be available for State_Execute the cycle after - -- next - memBAddr <= pc(maxAddrBit downto minAddrBit); - state <= State_FetchNext; - when State_FetchNext => - -- at this point memARead contains the value that is either - -- from the top of stack or should be copied to the top of the stack - memAWriteEnable <= '1'; - memAWrite <= memARead; - memAAddr <= sp; - memBAddr <= sp + 1; - state <= State_Decode; - when State_Decode => - case pc(1 downto 0) is - when "00" => tOpcode := memBRead(31 downto 24); - when "01" => tOpcode := memBRead(23 downto 16); - when "10" => tOpcode := memBRead(15 downto 8); - when others => tOpcode := memBRead(7 downto 0); - end case; - idim_flag <= tOpcode(7); - opcode <= tOpcode; - if (tOpcode(7 downto 7)=OpCode_Im) then - if (idim_flag='1') then - decodedOpcode<=Decoded_ImShift; - else - decodedOpcode<=Decoded_Im; - end if; - elsif (tOpcode(7 downto 5)=OpCode_StoreSP) then - decodedOpcode<=Decoded_StoreSP; - elsif (tOpcode(7 downto 5)=OpCode_LoadSP) then - decodedOpcode<=Decoded_LoadSP; - elsif (tOpcode(7 downto 5)=OpCode_Emulate) then - decodedOpcode<=Decoded_Emulate; - elsif (tOpcode(7 downto 4)=OpCode_AddSP) then - decodedOpcode<=Decoded_AddSP; - else - case tOpcode(3 downto 0) is - when OpCode_Break => - decodedOpcode<=Decoded_Break; - when OpCode_PushSP => - decodedOpcode<=Decoded_PushSP; - when OpCode_PopPC => - decodedOpcode<=Decoded_PopPC; - when OpCode_Add => - decodedOpcode<=Decoded_Add; - when OpCode_Or => - decodedOpcode<=Decoded_Or; - when OpCode_And => - decodedOpcode<=Decoded_And; - when OpCode_Load => - decodedOpcode<=Decoded_Load; - when OpCode_Not => - decodedOpcode<=Decoded_Not; - when OpCode_Flip => - decodedOpcode<=Decoded_Flip; - when OpCode_Store => - decodedOpcode<=Decoded_Store; - when OpCode_PopSP => - decodedOpcode<=Decoded_PopSP; - when others => - decodedOpcode<=Decoded_Nop; - end case; - end if; - -- during the State_Execute cycle we'll be fetching SP+1 - memAAddr <= sp; - memBAddr <= sp + 1; - state <= State_Execute; - when State_Store => - sp <= sp + 1; - memAWriteEnable <= '1'; - memAAddr <= memARead(maxAddrBit downto minAddrBit); - memAWrite <= memBRead; - state <= State_Resync; - when State_AddSP => - state <= State_Add; - when State_Add => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite <= memARead + memBRead; - state <= State_Fetch; - when State_Or => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite <= memARead or memBRead; - state <= State_Fetch; - when State_Resync => - memAAddr <= sp; - state <= State_Fetch; - when State_And => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite <= memARead and memBRead; - state <= State_Fetch; - when others => - null; - end case; - end if; - end process; - - - -end behave; diff --git a/zpu/hdl/zpu3/src/zpu_top_medium.vhd b/zpu/hdl/zpu3/src/zpu_top_medium.vhd deleted file mode 100644 index 4896b30..0000000 --- a/zpu/hdl/zpu3/src/zpu_top_medium.vhd +++ /dev/null @@ -1,768 +0,0 @@ --- Company: ZPU3 --- Engineer: Øyvind Harboe - -library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.STD_LOGIC_UNSIGNED.ALL; -use IEEE.STD_LOGIC_arith.ALL; - -library zylin; -use zylin.zpu_config.all; -use zylin.zpupkg.all; - - -entity zpu_top is - Port ( clk : in std_logic; - areset : in std_logic; - io_busy : in std_logic; - io_read : in std_logic_vector(7 downto 0); - io_write : out std_logic_vector(7 downto 0); - io_addr : out std_logic_vector(maxAddrBit downto minAddrBit); - io_writeEnable : out std_logic; - io_readEnable : out std_logic; - interrupt : in std_logic; - break : out std_logic); -end zpu_top; - -architecture behave of zpu_top is - -signal readIO : std_logic; - - - -signal memAWriteEnable : std_logic; -signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memAWrite : std_logic_vector(wordSize-1 downto 0); -signal memARead : std_logic_vector(wordSize-1 downto 0); -signal memBWriteEnable : std_logic; -signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memBWrite : std_logic_vector(wordSize-1 downto 0); -signal memBRead : std_logic_vector(wordSize-1 downto 0); - - - -signal pc : std_logic_vector(maxAddrBit downto 0); -signal sp : std_logic_vector(maxAddrBit downto minAddrBit); - -signal idim_flag : std_logic; - ---signal storeToStack : std_logic; ---signal fetchNextInstruction : std_logic; ---signal extraCycle : std_logic; -signal busy : std_logic; ---signal fetching : std_logic; - -signal begin_inst : std_logic; - - - -signal trace_opcode : std_logic_vector(7 downto 0); -signal trace_pc : std_logic_vector(maxAddrBit downto 0); -signal trace_sp : std_logic_vector(maxAddrBit downto minAddrBit); -signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0); - --- state machine. - -subtype State_Type is std_logic_vector(4 downto 0); -constant State_ResyncDecode : State_Type := b"00000"; -constant State_WriteIODone : State_Type := b"00001"; -constant State_Execute : State_Type := b"00010"; -constant State_StoreToStack : State_Type := b"00011"; -constant State_Add : State_Type := b"00100"; -constant State_Or : State_Type := b"00101"; -constant State_And : State_Type := b"00110"; -constant State_Store : State_Type := b"00111"; -constant State_ReadIO : State_Type := b"01000"; -constant State_WriteIO : State_Type := b"01001"; -constant State_Load : State_Type := b"01010"; -constant State_ResyncStack : State_Type := b"01011"; -constant State_AddSP : State_Type := b"01100"; -constant State_ReadIODone : State_Type := b"01101"; -constant State_Decode : State_Type := b"01110"; -constant State_LoadByte1 : State_Type := b"01111"; -constant State_LoadByte2 : State_Type := b"10000"; -constant State_StoreByte1 : State_Type := b"10001"; -constant State_StoreByte2 : State_Type := b"10010"; -constant State_Mult1 : State_Type := b"10011"; -constant State_Mult2 : State_Type := b"10100"; -constant State_Mult3 : State_Type := b"10101"; - - -subtype DecodedOpcodeType is std_logic_vector(5 downto 0); -constant Decoded_Nop : DecodedOpcodeType := b"000000"; -constant Decoded_Im : DecodedOpcodeType := b"000001"; -constant Decoded_ImShift : DecodedOpcodeType := b"000010"; -constant Decoded_LoadSP : DecodedOpcodeType := b"000011"; -constant Decoded_StoreSP : DecodedOpcodeType := b"000100"; -constant Decoded_AddSP : DecodedOpcodeType := b"000101"; -constant Decoded_Emulate : DecodedOpcodeType := b"000110"; -constant Decoded_Break : DecodedOpcodeType := b"000111"; -constant Decoded_PushPC : DecodedOpcodeType := b"001000"; -constant Decoded_PushSP : DecodedOpcodeType := b"001001"; -constant Decoded_PopPC : DecodedOpcodeType := b"001010"; -constant Decoded_Add : DecodedOpcodeType := b"001011"; -constant Decoded_Or : DecodedOpcodeType := b"001100"; -constant Decoded_And : DecodedOpcodeType := b"001101"; -constant Decoded_Load : DecodedOpcodeType := b"001110"; -constant Decoded_Not : DecodedOpcodeType := b"001111"; -constant Decoded_Flip : DecodedOpcodeType := b"010000"; -constant Decoded_Store : DecodedOpcodeType := b"010001"; -constant Decoded_PopSP : DecodedOpcodeType := b"010010"; -constant Decoded_Ashiftleft : DecodedOpcodeType := b"010011"; -constant Decoded_Ashiftright : DecodedOpcodeType := b"010100"; -constant Decoded_Lshiftright : DecodedOpcodeType := b"010101"; -constant Decoded_Eqbranch : DecodedOpcodeType := b"010110"; -constant Decoded_Neqbranch : DecodedOpcodeType := b"010111"; -constant Decoded_Eq : DecodedOpcodeType := b"011000"; -constant Decoded_Neq : DecodedOpcodeType := b"011001"; -constant Decoded_Loadb : DecodedOpcodeType := b"011010"; -constant Decoded_Lessthan : DecodedOpcodeType := b"011011"; -constant Decoded_Lessthanorequal : DecodedOpcodeType := b"011100"; -constant Decoded_Ulessthan : DecodedOpcodeType := b"011101"; -constant Decoded_Ulessthanorequal : DecodedOpcodeType := b"011110"; -constant Decoded_Storeb : DecodedOpcodeType := b"011111"; -constant Decoded_Lshift2 : DecodedOpcodeType := b"100000"; -constant Decoded_DoubleIm : DecodedOpcodeType := b"100001"; -constant Decoded_AddIm : DecodedOpcodeType := b"100011"; -constant Decoded_Mult16x16 : DecodedOpcodeType := b"100100"; -constant Decoded_Swap : DecodedOpcodeType := b"100101"; -constant Decoded_Callpcrel : DecodedOpcodeType := b"100110"; -constant Decoded_Pushspadd : DecodedOpcodeType := b"100111"; - - -signal mult1 : std_logic_vector(wordSize/2-1 downto 0); -signal mult2 : std_logic_vector(wordSize/2-1 downto 0); -signal multResult : std_logic_vector(wordSize-1 downto 0); - -signal storeByte : std_logic_vector(7 downto 0); -signal byteSelect : std_logic_vector(minAddrBit-1 downto 0); - -signal opcode : std_logic_vector(OpCode_Size-1 downto 0); -signal opcode2 : std_logic_vector(OpCode_Size-1 downto 0); - -signal decodedOpcode : DecodedOpcodeType; - -signal state : State_Type; - -begin - traceFileGenerate: - if Generate_Trace generate - trace_file: trace port map ( - clk => clk, - begin_inst => begin_inst, - pc => trace_pc, - opcode => trace_opcode, - sp => trace_sp, - memA => trace_topOfStack, - busy => busy - ); - end generate; - - - memory: dualport_ram port map ( - clk => clk, - memAWriteEnable => memAWriteEnable, - memAAddr => memAAddr, - memAWrite => memAWrite, - memARead => memARead, - memBWriteEnable => memBWriteEnable, - memBAddr => memBAddr, - memBWrite => memBWrite, - memBRead => memBRead - ); - - - process(clk, areset) - begin - if (clk'event and clk = '1') then - multResult <= mult1 * mult2; - end if; - end process; - - - - opcodeControl: - process(clk, areset) - variable tOpcode : std_logic_vector(OpCode_Size-1 downto 0); - variable tOpcode2 : std_logic_vector(OpCode_Size-1 downto 0); - variable spOffset : std_logic_vector(4 downto 0); - variable spOffset2 : std_logic_vector(4 downto 0); - variable nextPC : std_logic_vector(maxAddrBit downto 0); - variable pushspaddTemp : std_logic_vector(maxAddrBit downto minAddrBit); - variable tempVal : std_logic_vector(wordSize-1 downto 0); - variable compareA : signed(wordSize-1 downto 0); - variable compareB : signed(wordSize-1 downto 0); - begin - if areset = '1' then - mult1 <= (others => '0'); - mult2 <= (others => '0'); - state <= State_ResyncDecode; - break <= '0'; - sp <= (2 => '0', others => '1'); - pc <= (others => '0'); - idim_flag <= '0'; - begin_inst <= '0'; - memAAddr <= (others => '0'); - memBAddr <= (others => '0'); - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - io_writeEnable <= '0'; - io_readEnable <= '0'; - decodedOpcode <= (others => '0'); - memAWrite <= (others => '0'); - memBWrite <= (others => '0'); - opcode <= (others => '0'); - io_addr <= (others => '0'); - io_write <= (others => '0'); - elsif (clk'event and clk = '1') then - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - - io_writeEnable <= '0'; - io_readEnable <= '0'; - begin_inst <= '0'; - - case state is - when State_Decode => - nextPC:=pc+1; - case pc(1 downto 0) is - when "00" => tOpcode := memARead(31 downto 24); - when "01" => tOpcode := memARead(23 downto 16); - when "10" => tOpcode := memARead(15 downto 8); - when others => tOpcode := memARead(7 downto 0); - end case; - case nextPC(1 downto 0) is - when "00" => tOpcode2 := memBRead(31 downto 24); - when "01" => tOpcode2 := memBRead(23 downto 16); - when "10" => tOpcode2 := memBRead(15 downto 8); - when others => tOpcode2 := memBRead(7 downto 0); - end case; - idim_flag <= tOpcode(7); - opcode <= tOpcode; - opcode2 <= tOpcode2; - if (tOpcode(7 downto 7)=OpCode_Im and tOpcode2(7 downto 4)=0 and tOpcode2(3 downto 0)=Opcode_Add and idim_flag='0') then - idim_flag <= '0'; - decodedOpcode <= Decoded_AddIm; - nextPC := pc + 2; - elsif (tOpcode(7 downto 7)=OpCode_Im and tOpcode2(7 downto 7)=OpCode_Im and idim_flag='0') then - decodedOpcode <= Decoded_DoubleIm; - nextPC := pc + 2; - elsif (tOpcode(7 downto 4)=OpCode_AddSP and tOpcode(3 downto 0)=0 and - tOpcode2(7 downto 4)=OpCode_AddSP and tOpcode2(3 downto 0)=0) then - decodedOpcode <= Decoded_Lshift2; - nextPC := pc + 2; - elsif (tOpcode(7 downto 7)=OpCode_Im) then - if (idim_flag='1') then - decodedOpcode<=Decoded_ImShift; - else - decodedOpcode<=Decoded_Im; - end if; - elsif (tOpcode(7 downto 5)=OpCode_StoreSP) then - decodedOpcode<=Decoded_StoreSP; - elsif (tOpcode(7 downto 5)=OpCode_LoadSP) then - decodedOpcode<=Decoded_LoadSP; - elsif (tOpcode(7 downto 5)=OpCode_Emulate) then - if tOpcode(5 downto 0)=OpCode_Eqbranch then - decodedOpcode <= Decoded_Eqbranch; - elsif tOpcode(5 downto 0)=OpCode_Neqbranch then - decodedOpcode <= Decoded_Neqbranch; - elsif tOpcode(5 downto 0)=OpCode_Eq then - decodedOpcode <= Decoded_Eq; - elsif tOpcode(5 downto 0)=OpCode_Neq then - decodedOpcode <= Decoded_Neq; - elsif tOpcode(5 downto 0)=OpCode_Lessthan then - decodedOpcode <= Decoded_Lessthan; - elsif tOpcode(5 downto 0)=OpCode_Lessthanorequal then - decodedOpcode <= Decoded_Lessthanorequal; - elsif tOpcode(5 downto 0)=OpCode_Ulessthan then - decodedOpcode <= Decoded_Ulessthan; - elsif tOpcode(5 downto 0)=OpCode_Ulessthanorequal then - decodedOpcode <= Decoded_Ulessthanorequal; - elsif tOpcode(5 downto 0)=OpCode_Loadb then - decodedOpcode <= Decoded_Loadb; - elsif tOpcode(5 downto 0)=OpCode_Storeb then - decodedOpcode <= Decoded_Storeb; - elsif tOpcode(5 downto 0)=OpCode_Mult16x16 then - decodedOpcode <= Decoded_Mult16x16; - elsif tOpcode(5 downto 0)=OpCode_Swap then - decodedOpcode <= Decoded_Swap; - elsif tOpcode(5 downto 0)=OpCode_Callpcrel then - decodedOpcode <= Decoded_Callpcrel; - elsif tOpcode(5 downto 0)=OpCode_Pushspadd then - decodedOpcode <= Decoded_Pushspadd; --- elsif tOpcode(5 downto 0)=OpCode_Lshiftright then --- decodedOpcode <= Decoded_Lshiftright; --- elsif tOpcode(5 downto 0)=OpCode_Ashiftleft then --- decodedOpcode <= Decoded_Ashiftleft; --- elsif tOpcode(5 downto 0)=OpCode_Ashiftright then --- decodedOpcode <= Decoded_Ashiftright; - else - decodedOpcode<=Decoded_Emulate; - end if; - elsif (tOpcode(7 downto 4)=OpCode_AddSP) then - decodedOpcode<=Decoded_AddSP; - else - case tOpcode(3 downto 0) is - when OpCode_Break => - decodedOpcode<=Decoded_Break; - when OpCode_PushPC => - decodedOpcode<=Decoded_PushPC; - when OpCode_PushSP => - decodedOpcode<=Decoded_PushSP; - when OpCode_PopPC => - decodedOpcode<=Decoded_PopPC; - when OpCode_Add => - decodedOpcode<=Decoded_Add; - when OpCode_Or => - decodedOpcode<=Decoded_Or; - when OpCode_And => - decodedOpcode<=Decoded_And; - when OpCode_Load => - decodedOpcode<=Decoded_Load; - when OpCode_Not => - decodedOpcode<=Decoded_Not; - when OpCode_Flip => - decodedOpcode<=Decoded_Flip; - when OpCode_Store => - decodedOpcode<=Decoded_Store; - when OpCode_PopSP => - decodedOpcode<=Decoded_PopSP; - when others => - decodedOpcode<=Decoded_Nop; - end case; - end if; - -- Fetch the two next opcodes... :-) - memAAddr <= nextPC(maxAddrBit downto minAddrBit); - nextPC:=nextPC+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_Execute; - when State_Execute => - state <= State_Decode; - -- at this point: - -- memBRead contains opcode word - -- memARead contains top of stack - pc <= pc + 1; - - -- trace - begin_inst <= '1'; - trace_pc <= pc; - trace_opcode <= opcode; - trace_sp <= sp; - trace_topOfStack <= memARead; - - -- during the next cycle we'll be reading the next opcode - spOffset(4):=not opcode(4); - spOffset(3 downto 0):=opcode(3 downto 0); - spOffset2(4):=not opcode2(4); - spOffset2(3 downto 0):=opcode2(3 downto 0); - - case decodedOpcode is - - when Decoded_DoubleIm => - memAWriteEnable <= '1'; - sp <= sp - 1; - memAAddr <= sp-1; - for i in wordSize-1 downto 14 loop - memAWrite(i) <= opcode(6); - end loop; - memAWrite(13 downto 7) <= opcode(6 downto 0); - memAWrite(6 downto 0) <= opcode2(6 downto 0); - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - pc <= pc + 2; - when Decoded_Im => - memAWriteEnable <= '1'; - sp <= sp - 1; - memAAddr <= sp-1; - for i in wordSize-1 downto 7 loop - memAWrite(i) <= opcode(6); - end loop; - memAWrite(6 downto 0) <= opcode(6 downto 0); - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - when Decoded_ImShift => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite(wordSize-1 downto 7) <= memARead(wordSize-8 downto 0); - memAWrite(6 downto 0) <= opcode(6 downto 0); - memBAddr <= sp + 1; - when Decoded_StoreSP => - memAWriteEnable <= '1'; - memAAddr <= sp+spOffset; - memAWrite <= memARead; - -- avoid address crashes. - memBAddr <= sp - 1; - sp <= sp + 1; - state <= State_ResyncDecode; - when Decoded_LoadSP => - sp <= sp - 1; - if (spOffset = 0) then - -- This is a duplicate instruction. - memAAddr <= sp-1; - memAWriteEnable <= '1'; - memAWrite <= memARead; - else - memAAddr <= sp+spOffset; - end if; - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - when Decoded_Callpcrel => - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto 0) <= pc + 1; - memBAddr <= sp+1; - pc <= pc + memARead(maxAddrBit downto 0); - state <= State_ResyncDecode; - when Decoded_Emulate => - sp <= sp - 1; - memAWriteEnable <= '1'; - memAAddr <= sp - 1; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto 0) <= pc; - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - -- The emulate address is: - -- 98 7654 3210 - -- 0000 00aa aaa0 0000 - pc <= (others => '0'); - pc(9 downto 5) <= opcode(4 downto 0); - state <= State_ResyncDecode; - when Decoded_AddSP => - if spOffset=0 then - -- avoid address line crashes... - -- FIX!!! is this an issue? - -- oh-well. While we are at it, we've got a faster - -- shift operation without updating the toolchain. - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= memARead + memARead; - memBAddr <= sp+1; - else - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= memARead; - memBAddr <= sp+spOffset; - state <= State_AddSP; - end if; - when Decoded_Break => - report "Break instruction encountered" severity failure; - break <= '1'; - when Decoded_PushPC => - memAWriteEnable <= '1'; - memAAddr <= sp - 1; - sp <= sp - 1; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto 0) <= pc; - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - when Decoded_PushSP => - memAWriteEnable <= '1'; - memAAddr <= sp - 1; - sp <= sp - 1; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto minAddrBit) <= sp; - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - when Decoded_Pushspadd => - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= (others => DontCareValue); - pushspaddTemp := memARead(maxAddrBit-minAddrBit downto 0); - memAWrite(maxAddrBit downto minAddrBit) <= sp+pushspaddTemp; - memBAddr <= sp+1; - when Decoded_PopPC => - memAAddr <= sp; - pc <= memARead(maxAddrBit downto 0); - sp <= sp + 1; - state <= State_ResyncDecode; - when Decoded_AddIm => - memAWriteEnable <= '1'; - memAAddr <= sp; - tempVal(wordSize-1 downto 7) := (others => tOpcode(6)); - tempVal(6 downto 0) := tOpcode(6 downto 0); - memAWrite <= memARead + tempVal; - memBAddr <= sp + 1; - pc <= pc + 2; - when Decoded_Add => - memAWriteEnable <= '1'; - memAWrite <= memARead + memBRead; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - sp <= sp + 1; - when Decoded_Or => - sp <= sp + 1; - memAWriteEnable <= '1'; - memAWrite <= memARead or memBRead; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - when Decoded_And => - sp <= sp + 1; - memAWriteEnable <= '1'; - memAWrite <= memARead and memBRead; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - when Decoded_Load => - if (memARead(ioBit)='1') then - io_addr <= memARead(maxAddrBit downto minAddrBit); - io_readEnable <= '1'; - state <= State_ReadIO; - else - memAAddr <= memARead(maxAddrBit downto minAddrBit); - memBAddr <= sp + 1; - end if; - when Decoded_Swap => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite(wordSize/2-1 downto 0) <= memARead(wordSize-1 downto wordSize/2); - memAWrite(wordSize-1 downto wordSize/2) <= memARead(wordSize/2-1 downto 0); - memBAddr <= sp + 1; - when Decoded_Not => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite <= not memARead; - memBAddr <= sp + 1; - when Decoded_Flip => - memAAddr <= sp; - memAWriteEnable <= '1'; - for i in 0 to wordSize-1 loop - memAWrite(i) <= memARead(wordSize-1-i); - end loop; - memBAddr <= sp + 1; - when Decoded_Lshift2 => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite(1 downto 0) <= (others => '0'); - memAWrite(wordSize-1 downto 2) <= memARead(wordSize-1-2 downto 0); - memBAddr <= sp + 1; - pc <= pc + 2; - when Decoded_Store => - sp <= sp + 2; - if (memARead(ioBit)='1') then - io_writeEnable <= '1'; - io_addr <= memARead(maxAddrBit downto minAddrBit); - io_write <= memBRead(7 downto 0); - state <= State_WriteIO; - else - memAWriteEnable <= '1'; - memAAddr <= memARead(maxAddrBit downto minAddrBit); - memAWrite <= memBRead; - state <= State_ResyncDecode; - end if; - when Decoded_PopSP => - sp <= memARead(maxAddrBit downto minAddrBit); - state <= State_ResyncDecode; - when Decoded_Ashiftleft => - memAWrite(wordSize-1 downto conv_integer(memARead(wordPower-1 downto 0))) <= - memBRead(wordSize-conv_integer(memARead(wordPower-1 downto 0))-1 downto 0); - if memARead(wordPower-1 downto 0)/=0 then - memAWrite(conv_integer(memARead(wordPower-1 downto 0))-1 downto 0) <= (others => '0'); - end if; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - sp <= sp + 1; - when Decoded_Ashiftright | Decoded_Lshiftright => - memAWrite(wordSize-1-conv_integer(memARead(wordPower-1 downto 0)) downto 0) <= - memBRead(wordSize-1 downto conv_integer(memARead(wordPower-1 downto 0))); - if memARead(wordPower-1 downto 0)/=0 then - if decodedOpcode=Decoded_Ashiftright and memBRead(wordSize-1)='1' then - memAWrite(wordSize-1 downto wordSize-conv_integer(memARead(wordPower-1 downto 0))-1) <= (others => '1'); - else - memAWrite(wordSize-1 downto wordSize-conv_integer(memARead(wordPower-1 downto 0))-1) <= (others => '0'); - end if; - end if; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - sp <= sp + 1; - when Decoded_Eqbranch => - sp <= sp + 2; - if (memBRead=0) then - pc <= memARead(maxAddrBit downto 0) + pc; - end if; - state <= State_ResyncDecode; - when Decoded_Neqbranch => - sp <= sp + 2; - if (memBRead/=0) then - pc <= memARead(maxAddrBit downto 0) + pc; - end if; - state <= State_ResyncDecode; - when Decoded_Eq => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead=memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Neq => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead/=memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Ulessthan => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead<memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Ulessthanorequal => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead<=memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Lessthan => - sp <= sp + 1; - memAWrite <= (others => '0'); - compareA := signed(memARead); - compareB := signed(memBRead); - if (compareA<compareB) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Lessthanorequal => - sp <= sp + 1; - memAWrite <= (others => '0'); - compareA := signed(memARead); - compareB := signed(memBRead); - if (compareA<=compareB) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Loadb => - byteSelect <= memARead(minAddrBit-1 downto 0); - memAAddr <= memARead(maxAddrBit downto minAddrBit); - state <= State_LoadByte1; - when Decoded_Storeb => - sp <= sp + 2; - byteSelect <= memARead(minAddrBit-1 downto 0); - storeByte <= memBRead(7 downto 0); - memAAddr <= memARead(maxAddrBit downto minAddrBit); - memBAddr <= sp; - state <= State_StoreByte1; - when Decoded_Mult16x16 => - mult1 <= memARead(wordSize/2-1 downto 0); - mult2 <= memBRead(wordSize/2-1 downto 0); - sp <= sp + 1; - state <= State_Mult1; - when others => - -- nop. Here we persist whatever was loaded into - -- memARead - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite <= memARead; - memBAddr <= sp + 1; - - end case; - when State_ReadIO => - state <= State_ReadIODone; - when State_ReadIODone => - if (io_busy = '0') then - state <= State_ResyncDecode; - memAWriteEnable <= '1'; - memAWrite <= (others => '0'); - memAWrite(7 downto 0) <= io_read; - memAAddr <= sp; - end if; - when State_WriteIO => - state <= State_WriteIODone; - when State_WriteIODone => - if (io_busy = '0') then - state <= State_ResyncDecode; - end if; - when State_ResyncDecode => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_ResyncStack; - when State_ResyncStack => - memAAddr <= sp; - memBAddr <= sp+1; - state <= State_Decode; - when State_AddSP => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_Add; - when State_Add => - memAWriteEnable <= '1'; - memAWrite <= memARead + memBRead; - memAAddr <= sp; - memBAddr <= sp + 1; - state <= State_Decode; - when State_LoadByte1 => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_LoadByte2; - when State_LoadByte2 => - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= (others => '0'); - case byteSelect is - when "00" => memAWrite(7 downto 0) <= memARead(31 downto 24); - when "01" => memAWrite(7 downto 0) <= memARead(23 downto 16); - when "10" => memAWrite(7 downto 0) <= memARead(15 downto 8); - when others => memAWrite(7 downto 0) <= memARead(7 downto 0); - end case; - memBAddr <= sp + 1; - state <= State_Decode; - when State_StoreByte1 => - state <= State_StoreByte2; - when State_StoreByte2 => - memAWriteEnable <= '1'; - memAAddr <= memBRead(maxAddrBit downto minAddrBit); - memAWrite <= memARead; - case byteSelect is - when "00" => memAWrite(31 downto 24) <= storeByte; - when "01" => memAWrite(23 downto 16) <= storeByte; - when "10" => memAWrite(15 downto 8) <= storeByte; - when others => memAWrite(7 downto 0) <= storeByte; - end case; - state <= State_ResyncDecode; - when State_Mult1 => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_Mult2; - when State_Mult2 => - memAWriteEnable <= '1'; - memAWrite <= multResult; - memAAddr <= sp; - memBAddr <= sp + 1; - state <= State_Decode; - - when others => - null; - end case; - end if; - end process; - - - -end behave; diff --git a/zpu/hdl/zpu3/src/zpuio.vhd b/zpu/hdl/zpu3/src/zpuio.vhd deleted file mode 100644 index 96e9aea..0000000 --- a/zpu/hdl/zpu3/src/zpuio.vhd +++ /dev/null @@ -1,180 +0,0 @@ -library IEEE;
-use IEEE.STD_LOGIC_1164.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
-library zylin;
-use zylin.arm7.all;
-
-library zylin;
-use zylin.zpu_config.all;
-use zylin.zpupkg.all;
-
-entity zpuio is
- port ( areset : in std_logic;
- cpu_clk : in std_logic;
- clk_status : in std_logic_vector(2 downto 0);
- cpu_din : in std_logic_vector(15 downto 0);
- cpu_a : in std_logic_vector(20 downto 0);
- cpu_we : in std_logic_vector(1 downto 0);
- cpu_re : in std_logic;
- cpu_dout : inout std_logic_vector(15 downto 0));
-end zpuio;
-
-architecture behave of zpuio is
-
-signal timer_read : std_logic_vector(7 downto 0);
---signal timer_write : std_logic_vector(7 downto 0);
-signal timer_we : std_logic;
-
-
-signal io_busy : std_logic;
-signal io_read : std_logic_vector(7 downto 0);
-signal io_write : std_logic_vector(7 downto 0);
-signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
-signal io_writeEnable : std_logic;
-signal io_readEnable : std_logic;
-
-signal din : std_logic_vector(7 downto 0);
-signal dout : std_logic_vector(7 downto 0);
-signal adr : std_logic_vector(15 downto 0);
-signal break : std_logic;
-signal we : std_logic;
-signal re : std_logic;
-
-
--- uart forwarding...
-
-signal uartTXPending : std_logic;
-signal uartTXCleared : std_logic;
-signal uartData : std_logic_vector(7 downto 0);
-
-signal readingTimer : std_logic;
-begin
-
- timerinst: timer port map (
- clk => cpu_clk,
- areset => areset,
- we => timer_we,
- din => io_write,
- adr => io_addr(4 downto 2),
- dout => timer_read);
-
- zpu: zpu_top port map (
- clk => cpu_clk ,
- areset => areset,
- io_busy => io_busy,
- io_writeEnable => io_writeEnable,
- io_readEnable => io_readEnable,
- io_write => io_write,
- io_read => io_read,
- io_addr => io_addr,
- interrupt => '0'
- --,
--- break => cpu_fiq_p
-);
-
-
- -- Read/write are on different addresses
- -- The registers are 8 bits and mapped to bit[7:0]
- --
- -- 0xC000 Write: Writes to UART TX FIFO (4 byte FIFO)
- -- Read : Reads from UART RX FIFO (4 byte FIFO)
- -- 0xC004 Read : UART status register
- -- Bit 0 = RX FIFO empty
- -- Bit 1 = TX FIFO full
- -- 0xA000 Skrive: LED's (8 stk.)
-
- -- 0x9000 Write: bit 0: 1= reset counter
- -- 0= counter running
- -- bit 1: 1= sample counter (when set to 1)
- -- 0=not used
- -- Read : counter bit[7:0]
- -- 0x9004 Read: counter bit [15:8]
- -- 0x9008 Read: counter bit [23:16]
- -- 0x900C Read: counter bit [31:24]
- -- 0x9010 Read: counter bit [39:32]
- -- 0x9014 Read: counter bit [47:40]
- -- 0x9018 Read: counter bit [55:48]
- -- 0x901C Read: counter bit [63:56]
- --
- -- 0x8800 Read: unsigned 8-bit integer with FPGA frequency (in MHz)
-
- fauxUart:
- process(cpu_clk, areset)
- begin
- if areset = '1' then
- io_busy <= '0';
- uartTXPending <= '0';
- timer_we <= '0';
- io_busy <= '1';
- uartData <= x"58"; -- 'X'
- readingTimer <= '0';
- elsif (cpu_clk'event and cpu_clk = '1') then
- timer_we <= '0';
- io_busy <= '1';
- if uartTXCleared = '1' then
- uartTXPending <= '0';
- end if;
-
- if io_writeEnable = '1' then
- if io_addr=x"1000" then
- -- Write to UART
- uartData <= io_write;
- uartTXPending <= '1';
- io_busy <= '0';
- elsif io_addr(12)='1' then
- timer_we <= '1';
- io_busy <= '0';
- else
- report "Illegal IO write" severity failure;
- end if;
- end if;
- if (io_readEnable = '1') then
- if io_addr=x"1001" then
- io_read <= (0=>'1', -- recieve empty
- 1 => uartTXPending, -- tx full
- others => '0');
- io_busy <= '0';
- elsif io_addr(12)='1' then
- readingTimer <= '1';
- io_busy <= '1';
- elsif io_addr(11)='1' then
- io_read <= ZPU_Frequency;
- io_busy <= '0';
- else
- report "Illegal IO read" severity failure;
- end if;
-
- else
- if (readingTimer = '1') then
- readingTimer <= '0';
- io_read <= timer_read;
- io_busy <= '0';
- else
- io_read <= (others => '1');
- end if;
- end if;
- end if;
- end process;
-
-
- forwardUARTOutputToARM:
- process(cpu_clk, areset)
- begin
- if areset = '1' then
- uartTXCleared <= '0';
- elsif (cpu_clk = '1' and cpu_clk'event) then
- if cpu_we(0) = '1' and cpu_a(3 downto 1) = "000" then
- uartTXCleared <= cpu_din(0);
- else
- uartTXCleared <= uartTXCleared;
- end if;
- end if;
- end process;
-
- cpu_dout(7 downto 0) <= uartData when (cpu_re = '1' and cpu_a(3 downto 1) = "001") else (others => 'Z');
- cpu_dout <= (0 => uartTXPending, others => '0') when (cpu_re = '1' and cpu_a(3 downto 1) = "000") else (others => 'Z');
-
-
-
-end behave;
diff --git a/zpu/hdl/zpu3/src/zpupkg.vhd b/zpu/hdl/zpu3/src/zpupkg.vhd deleted file mode 100644 index a904b11..0000000 --- a/zpu/hdl/zpu3/src/zpupkg.vhd +++ /dev/null @@ -1,130 +0,0 @@ -library IEEE;
-use IEEE.STD_LOGIC_1164.all;
-use IEEE.STD_LOGIC_ARITH.all;
-
-library zylin;
-use zylin.zpu_config.all;
-
-package zpupkg is
-
- component dualport_ram is
- port (clk : in std_logic;
- memAWriteEnable : in std_logic;
- memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memAWrite : in std_logic_vector(wordSize-1 downto 0);
- memARead : out std_logic_vector(wordSize-1 downto 0);
- memBWriteEnable : in std_logic;
- memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
- memBWrite : in std_logic_vector(wordSize-1 downto 0);
- memBRead : out std_logic_vector(wordSize-1 downto 0));
- end component;
-
-
- component trace is
- port(
- clk : in std_logic;
- begin_inst : in std_logic;
- pc : in std_logic_vector(maxAddrBit downto 0);
- opcode : in std_logic_vector(7 downto 0);
- sp : in std_logic_vector(maxAddrBit downto minAddrBit);
- memA : in std_logic_vector(wordSize-1 downto 0);
- memB : in std_logic_vector(wordSize-1 downto 0);
- busy : in std_logic
- );
- end component;
-
- component zpu_top is
- Port ( clk : in std_logic;
- areset : in std_logic;
- io_busy : in std_logic;
- io_read : in std_logic_vector(7 downto 0);
- io_write : out std_logic_vector(7 downto 0);
- io_addr : out std_logic_vector(maxAddrBit downto minAddrBit);
- io_writeEnable : out std_logic;
- io_readEnable : out std_logic;
- interrupt : in std_logic;
- break : out std_logic);
- end component;
-
-
- component timer is
- port(
- clk : in std_logic;
- areset : in std_logic;
- we : in std_logic;
- din : in std_logic_vector(7 downto 0);
- adr : in std_logic_vector(2 downto 0);
- dout : out std_logic_vector(7 downto 0));
- end component;
-
-
- component zpuio is
- port ( areset : in std_logic;
- cpu_clk : in std_logic;
- clk_status : in std_logic_vector(2 downto 0);
- cpu_din : in std_logic_vector(15 downto 0);
- cpu_a : in std_logic_vector(20 downto 0);
- cpu_we : in std_logic_vector(1 downto 0);
- cpu_re : in std_logic;
- cpu_dout : inout std_logic_vector(15 downto 0));
- end component;
-
-
- -- opcode decode constants
- constant OpCode_Im : std_logic_vector(7 downto 7) := "1";
- constant OpCode_StoreSP : std_logic_vector(7 downto 5) := "010";
- constant OpCode_LoadSP : std_logic_vector(7 downto 5) := "011";
- constant OpCode_Emulate : std_logic_vector(7 downto 5) := "001";
- constant OpCode_AddSP : std_logic_vector(7 downto 4) := "0001";
- constant OpCode_Short : std_logic_vector(7 downto 4) := "0000";
-
- constant OpCode_Break : std_logic_vector(3 downto 0) := "0000";
- constant OpCode_Shiftleft: std_logic_vector(3 downto 0) := "0001";
- constant OpCode_PushSP : std_logic_vector(3 downto 0) := "0010";
- constant OpCode_PushInt : std_logic_vector(3 downto 0) := "0011";
-
- constant OpCode_PopPC : std_logic_vector(3 downto 0) := "0100";
- constant OpCode_Add : std_logic_vector(3 downto 0) := "0101";
- constant OpCode_And : std_logic_vector(3 downto 0) := "0110";
- constant OpCode_Or : std_logic_vector(3 downto 0) := "0111";
-
- constant OpCode_Load : std_logic_vector(3 downto 0) := "1000";
- constant OpCode_Not : std_logic_vector(3 downto 0) := "1001";
- constant OpCode_Flip : std_logic_vector(3 downto 0) := "1010";
- constant OpCode_Nop : std_logic_vector(3 downto 0) := "1011";
-
- constant OpCode_Store : std_logic_vector(3 downto 0) := "1100";
- constant OpCode_PopSP : std_logic_vector(3 downto 0) := "1101";
- constant OpCode_Compare : std_logic_vector(3 downto 0) := "1110";
- constant OpCode_PopInt : std_logic_vector(3 downto 0) := "1111";
-
- constant OpCode_Lessthan : std_logic_vector(5 downto 0) := conv_std_logic_vector(36, 6);
- constant OpCode_Lessthanorequal : std_logic_vector(5 downto 0) := conv_std_logic_vector(37, 6);
- constant OpCode_Ulessthan : std_logic_vector(5 downto 0) := conv_std_logic_vector(38, 6);
- constant OpCode_Ulessthanorequal : std_logic_vector(5 downto 0) := conv_std_logic_vector(39, 6);
-
- constant OpCode_Swap : std_logic_vector(5 downto 0) := conv_std_logic_vector(40, 6);
-
- constant OpCode_Lshiftright : std_logic_vector(5 downto 0) := conv_std_logic_vector(42, 6);
- constant OpCode_Ashiftleft : std_logic_vector(5 downto 0) := conv_std_logic_vector(43, 6);
- constant OpCode_Ashiftright : std_logic_vector(5 downto 0) := conv_std_logic_vector(44, 6);
-
- constant OpCode_Eq : std_logic_vector(5 downto 0) := conv_std_logic_vector(46, 6);
- constant OpCode_Neq : std_logic_vector(5 downto 0) := conv_std_logic_vector(47, 6);
-
- constant OpCode_Sub : std_logic_vector(5 downto 0) := conv_std_logic_vector(49, 6);
- constant OpCode_Loadb : std_logic_vector(5 downto 0) := conv_std_logic_vector(51, 6);
- constant OpCode_Storeb : std_logic_vector(5 downto 0) := conv_std_logic_vector(52, 6);
-
- constant OpCode_Eqbranch : std_logic_vector(5 downto 0) := conv_std_logic_vector(55, 6);
- constant OpCode_Neqbranch : std_logic_vector(5 downto 0) := conv_std_logic_vector(56, 6);
-
- constant OpCode_Pushspadd : std_logic_vector(5 downto 0) := conv_std_logic_vector(61, 6);
- constant OpCode_Mult16x16 : std_logic_vector(5 downto 0) := conv_std_logic_vector(62, 6);
- constant OpCode_Callpcrel : std_logic_vector(5 downto 0) := conv_std_logic_vector(63, 6);
-
-
-
- constant OpCode_Size : integer := 8;
-
-end zpupkg;
diff --git a/zpu/hdl/zpu4/src/simzpu_bram.do b/zpu/hdl/zpu4/src/simzpu_bram.do deleted file mode 100644 index 1c8673d..0000000 --- a/zpu/hdl/zpu4/src/simzpu_bram.do +++ /dev/null @@ -1,28 +0,0 @@ -# Xilinx WebPack modelsim script
-#
-# cd C:/workspace/zpu/zpu/hdl/zpu4/src
-# do simzpu_bram.do
-
-set BreakOnAssertion 1
-vlib work
-
-vcom -93 -explicit zpu_config_trace.vhd
-vcom -93 -explicit zpupkg.vhd
-vcom -93 -explicit txt_util.vhd
-vcom -93 -explicit sim_fpga_top.vhd
-vcom -93 -explicit zpu_core_bram.vhd
-vcom -93 -explicit bram_dmips.vhd
-vcom -93 -explicit timer.vhd
-vcom -93 -explicit io.vhd
-vcom -93 -explicit trace.vhd
-
-# run ZPU
-vsim fpga_top
-view wave
-add wave -recursive fpga_top/zpu/*
-#add wave -recursive fpga_top/*
-view structure
-#view signals
-
-# Enough to run tiny programs
-run 1us
diff --git a/zpu/hdl/zpu4/src/zpu_core_bram.vhd b/zpu/hdl/zpu4/src/zpu_core_bram.vhd deleted file mode 100644 index 0bedba3..0000000 --- a/zpu/hdl/zpu4/src/zpu_core_bram.vhd +++ /dev/null @@ -1,780 +0,0 @@ --- Company: ZPU3 --- Engineer: Øyvind Harboe - -library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.STD_LOGIC_UNSIGNED.ALL; -use IEEE.STD_LOGIC_arith.ALL; - -library work; -use work.zpu_config.all; -use work.zpupkg.all; - - --- io_busy : in std_logic; --- io_read : in std_logic_vector(7 downto 0); --- io_write : out std_logic_vector(7 downto 0); --- io_addr : out std_logic_vector(maxAddrBit downto minAddrBit); --- io_writeEnable : out std_logic; --- io_readEnable : out std_logic; - - -entity zpu_core is - Port ( clk : in std_logic; - areset : in std_logic; - enable : in std_logic; - in_mem_busy : in std_logic; - mem_read : in std_logic_vector(wordSize-1 downto 0); - mem_write : out std_logic_vector(wordSize-1 downto 0); - out_mem_addr : out std_logic_vector(maxAddrBitIncIO downto 0); - out_mem_writeEnable : out std_logic; - out_mem_readEnable : out std_logic; - mem_writeMask: out std_logic_vector(wordBytes-1 downto 0); - interrupt : in std_logic; - break : out std_logic); -end zpu_core; - - -architecture behave of zpu_core is - -signal readIO : std_logic; - - - -signal memAWriteEnable : std_logic; -signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memAWrite : std_logic_vector(wordSize-1 downto 0); -signal memARead : std_logic_vector(wordSize-1 downto 0); -signal memBWriteEnable : std_logic; -signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit); -signal memBWrite : std_logic_vector(wordSize-1 downto 0); -signal memBRead : std_logic_vector(wordSize-1 downto 0); - - - -signal pc : std_logic_vector(maxAddrBit downto 0); -signal sp : std_logic_vector(maxAddrBit downto minAddrBit); - -signal idim_flag : std_logic; - ---signal storeToStack : std_logic; ---signal fetchNextInstruction : std_logic; ---signal extraCycle : std_logic; -signal busy : std_logic; ---signal fetching : std_logic; - -signal begin_inst : std_logic; - - - -signal trace_opcode : std_logic_vector(7 downto 0); -signal trace_pc : std_logic_vector(maxAddrBitIncIO downto 0); -signal trace_sp : std_logic_vector(maxAddrBitIncIO downto minAddrBit); -signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0); -signal trace_topOfStackB : std_logic_vector(wordSize-1 downto 0); - --- state machine. - -type State_Type is -( -State_ResyncDecode, -State_WriteIODone, -State_Execute, -State_StoreToStack, -State_Add, -State_Or, -State_And, -State_Store, -State_ReadIO, -State_WriteIO, -State_Load, -State_ResyncStack, -State_AddSP, -State_ReadIODone, -State_Decode, -State_LoadByte1, -State_LoadByte2, -State_StoreByte1, -State_StoreByte2, -State_Mult1, -State_Mult2, -State_Mult3 -); - -type DecodedOpcodeType is -( -Decoded_Nop, -Decoded_Im, -Decoded_ImShift, -Decoded_LoadSP, -Decoded_StoreSP, -Decoded_AddSP, -Decoded_Emulate, -Decoded_Break, -Decoded_PushPC, -Decoded_PushSP, -Decoded_PopPC, -Decoded_Add, -Decoded_Or, -Decoded_And, -Decoded_Load, -Decoded_Not, -Decoded_Flip, -Decoded_Store, -Decoded_PopSP, -Decoded_Ashiftleft, -Decoded_Ashiftright, -Decoded_Lshiftright, -Decoded_Eqbranch, -Decoded_Neqbranch, -Decoded_Eq, -Decoded_Neq, -Decoded_Loadb, -Decoded_Lessthan, -Decoded_Lessthanorequal, -Decoded_Ulessthan, -Decoded_Ulessthanorequal, -Decoded_Storeb, -Decoded_Lshift2, -Decoded_DoubleIm, -Decoded_AddIm, -Decoded_Mult16x16, -Decoded_Swap, -Decoded_Callpcrel, -Decoded_Pushspadd -); - - -signal mult1 : std_logic_vector(wordSize/2-1 downto 0); -signal mult2 : std_logic_vector(wordSize/2-1 downto 0); -signal multResult : std_logic_vector(wordSize-1 downto 0); - -signal storeByte : std_logic_vector(7 downto 0); -signal byteSelect : std_logic_vector(minAddrBit-1 downto 0); - -signal opcode : std_logic_vector(OpCode_Size-1 downto 0); -signal opcode2 : std_logic_vector(OpCode_Size-1 downto 0); - -signal decodedOpcode : DecodedOpcodeType; - -signal state : State_Type; - -begin - traceFileGenerate: - if Generate_Trace generate - trace_file: trace port map ( - clk => clk, - begin_inst => begin_inst, - pc => trace_pc, - opcode => trace_opcode, - sp => trace_sp, - memA => trace_topOfStack, - memB => trace_topOfStackB, - busy => busy, - intsp => (others => 'U') - ); - end generate; - - - memory: dualport_ram port map ( - clk => clk, - memAWriteEnable => memAWriteEnable, - memAAddr => memAAddr(maxAddrBitBRAM downto minAddrBit), - memAWrite => memAWrite, - memARead => memARead, - memBWriteEnable => memBWriteEnable, - memBAddr => memBAddr(maxAddrBitBRAM downto minAddrBit), - memBWrite => memBWrite, - memBRead => memBRead - ); - - - - process(clk, areset) - begin - if (clk'event and clk = '1') then - multResult <= mult1 * mult2; - end if; - end process; - - - - opcodeControl: - process(clk, areset) - variable tOpcode : std_logic_vector(OpCode_Size-1 downto 0); - variable tOpcode2 : std_logic_vector(OpCode_Size-1 downto 0); - variable spOffset : std_logic_vector(4 downto 0); - variable spOffset2 : std_logic_vector(4 downto 0); - variable nextPC : std_logic_vector(maxAddrBit downto 0); - variable pushspaddTemp : std_logic_vector(maxAddrBit downto minAddrBit); - variable tempVal : std_logic_vector(wordSize-1 downto 0); - variable compareA : signed(wordSize-1 downto 0); - variable compareB : signed(wordSize-1 downto 0); - begin - if areset = '1' then - mult1 <= (others => '0'); - mult2 <= (others => '0'); - state <= State_ResyncDecode; - break <= '0'; - sp <= spStart(maxAddrBit downto minAddrBit); - pc <= (others => '0'); - idim_flag <= '0'; - begin_inst <= '0'; - memAAddr <= (others => '0'); - memBAddr <= (others => '0'); - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - out_mem_writeEnable <= '0'; - out_mem_readEnable <= '0'; - decodedOpcode <= Decoded_Break; - memAWrite <= (others => '0'); - memBWrite <= (others => '0'); - opcode <= (others => '0'); - out_mem_addr <= (others => '0'); - mem_write <= (others => '0'); - elsif (clk'event and clk = '1') then - memAWriteEnable <= '0'; - memBWriteEnable <= '0'; - - out_mem_writeEnable <= '0'; - out_mem_readEnable <= '0'; - out_mem_addr <= memARead(maxAddrBitIncIO downto 0); - begin_inst <= '0'; - - case state is - when State_Decode => - nextPC:=pc+1; - case pc(1 downto 0) is - when "00" => tOpcode := memARead(31 downto 24); - when "01" => tOpcode := memARead(23 downto 16); - when "10" => tOpcode := memARead(15 downto 8); - when others => tOpcode := memARead(7 downto 0); - end case; - case nextPC(1 downto 0) is - when "00" => tOpcode2 := memBRead(31 downto 24); - when "01" => tOpcode2 := memBRead(23 downto 16); - when "10" => tOpcode2 := memBRead(15 downto 8); - when others => tOpcode2 := memBRead(7 downto 0); - end case; - idim_flag <= tOpcode(7); - opcode <= tOpcode; - opcode2 <= tOpcode2; - if (tOpcode(7 downto 7)=OpCode_Im and tOpcode2(7 downto 4)=0 and tOpcode2(3 downto 0)=Opcode_Add and idim_flag='0') then - idim_flag <= '0'; - decodedOpcode <= Decoded_AddIm; - nextPC := pc + 2; - elsif (tOpcode(7 downto 7)=OpCode_Im and tOpcode2(7 downto 7)=OpCode_Im and idim_flag='0') then - decodedOpcode <= Decoded_DoubleIm; - nextPC := pc + 2; - elsif (tOpcode(7 downto 4)=OpCode_AddSP and tOpcode(3 downto 0)=0 and - tOpcode2(7 downto 4)=OpCode_AddSP and tOpcode2(3 downto 0)=0) then - decodedOpcode <= Decoded_Lshift2; - nextPC := pc + 2; - elsif (tOpcode(7 downto 7)=OpCode_Im) then - if (idim_flag='1') then - decodedOpcode<=Decoded_ImShift; - else - decodedOpcode<=Decoded_Im; - end if; - elsif (tOpcode(7 downto 5)=OpCode_StoreSP) then - decodedOpcode<=Decoded_StoreSP; - elsif (tOpcode(7 downto 5)=OpCode_LoadSP) then - decodedOpcode<=Decoded_LoadSP; - elsif (tOpcode(7 downto 5)=OpCode_Emulate) then - if tOpcode(5 downto 0)=OpCode_Eqbranch then - decodedOpcode <= Decoded_Eqbranch; - elsif tOpcode(5 downto 0)=OpCode_Neqbranch then - decodedOpcode <= Decoded_Neqbranch; - elsif tOpcode(5 downto 0)=OpCode_Eq then - decodedOpcode <= Decoded_Eq; - elsif tOpcode(5 downto 0)=OpCode_Neq then - decodedOpcode <= Decoded_Neq; - elsif tOpcode(5 downto 0)=OpCode_Lessthan then - decodedOpcode <= Decoded_Lessthan; - elsif tOpcode(5 downto 0)=OpCode_Lessthanorequal then - decodedOpcode <= Decoded_Lessthanorequal; - elsif tOpcode(5 downto 0)=OpCode_Ulessthan then - decodedOpcode <= Decoded_Ulessthan; - elsif tOpcode(5 downto 0)=OpCode_Ulessthanorequal then - decodedOpcode <= Decoded_Ulessthanorequal; - elsif tOpcode(5 downto 0)=OpCode_Loadb then - decodedOpcode <= Decoded_Loadb; - elsif tOpcode(5 downto 0)=OpCode_Storeb then - decodedOpcode <= Decoded_Storeb; - elsif tOpcode(5 downto 0)=OpCode_Mult16x16 then - decodedOpcode <= Decoded_Mult16x16; - elsif tOpcode(5 downto 0)=OpCode_Swap then - decodedOpcode <= Decoded_Swap; - elsif tOpcode(5 downto 0)=OpCode_Callpcrel then - decodedOpcode <= Decoded_Callpcrel; - elsif tOpcode(5 downto 0)=OpCode_Pushspadd then - decodedOpcode <= Decoded_Pushspadd; --- elsif tOpcode(5 downto 0)=OpCode_Lshiftright then --- decodedOpcode <= Decoded_Lshiftright; --- elsif tOpcode(5 downto 0)=OpCode_Ashiftleft then --- decodedOpcode <= Decoded_Ashiftleft; --- elsif tOpcode(5 downto 0)=OpCode_Ashiftright then --- decodedOpcode <= Decoded_Ashiftright; - else - decodedOpcode<=Decoded_Emulate; - end if; - elsif (tOpcode(7 downto 4)=OpCode_AddSP) then - decodedOpcode<=Decoded_AddSP; - else - case tOpcode(3 downto 0) is - when OpCode_PushSP => - decodedOpcode<=Decoded_PushSP; - when OpCode_PopPC => - decodedOpcode<=Decoded_PopPC; - when OpCode_Add => - decodedOpcode<=Decoded_Add; - when OpCode_Or => - decodedOpcode<=Decoded_Or; - when OpCode_And => - decodedOpcode<=Decoded_And; - when OpCode_Load => - decodedOpcode<=Decoded_Load; - when OpCode_Not => - decodedOpcode<=Decoded_Not; - when OpCode_Flip => - decodedOpcode<=Decoded_Flip; - when OpCode_Store => - decodedOpcode<=Decoded_Store; - when OpCode_PopSP => - decodedOpcode<=Decoded_PopSP; - when OpCode_Break => - decodedOpcode<=Decoded_Break; - when others => - decodedOpcode<=Decoded_Nop; - end case; - end if; - -- Fetch the two next opcodes... :-) - memAAddr <= nextPC(maxAddrBit downto minAddrBit); - nextPC:=nextPC+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_Execute; - when State_Execute => - state <= State_Decode; - -- at this point: - -- memBRead contains opcode word - -- memARead contains top of stack - pc <= pc + 1; - - -- trace - begin_inst <= '1'; - trace_pc <= (others => '0'); - trace_pc(maxAddrBit downto 0) <= pc; - trace_sp <= (others => '0'); - trace_sp(maxAddrBit downto minAddrBit) <= sp; - trace_opcode <= opcode; - trace_topOfStack <= memARead; - trace_topOfStackB <= memBRead; - - - -- during the next cycle we'll be reading the next opcode - spOffset(4):=not opcode(4); - spOffset(3 downto 0):=opcode(3 downto 0); - spOffset2(4):=not opcode2(4); - spOffset2(3 downto 0):=opcode2(3 downto 0); - - case decodedOpcode is - - when Decoded_DoubleIm => - memAWriteEnable <= '1'; - sp <= sp - 1; - memAAddr <= sp-1; - for i in wordSize-1 downto 14 loop - memAWrite(i) <= opcode(6); - end loop; - memAWrite(13 downto 7) <= opcode(6 downto 0); - memAWrite(6 downto 0) <= opcode2(6 downto 0); - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - pc <= pc + 2; - when Decoded_Im => - memAWriteEnable <= '1'; - sp <= sp - 1; - memAAddr <= sp-1; - for i in wordSize-1 downto 7 loop - memAWrite(i) <= opcode(6); - end loop; - memAWrite(6 downto 0) <= opcode(6 downto 0); - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - when Decoded_ImShift => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite(wordSize-1 downto 7) <= memARead(wordSize-8 downto 0); - memAWrite(6 downto 0) <= opcode(6 downto 0); - memBAddr <= sp + 1; - when Decoded_StoreSP => - memAWriteEnable <= '1'; - memAAddr <= sp+spOffset; - memAWrite <= memARead; - -- avoid address crashes. - memBAddr <= sp - 1; - sp <= sp + 1; - state <= State_ResyncDecode; - when Decoded_LoadSP => - sp <= sp - 1; - if (spOffset = 0) then - -- This is a duplicate instruction. - memAAddr <= sp-1; - memAWriteEnable <= '1'; - memAWrite <= memARead; - else - memAAddr <= sp+spOffset; - end if; - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - when Decoded_Callpcrel => - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto 0) <= pc + 1; - memBAddr <= sp+1; - pc <= pc + memARead(maxAddrBit downto 0); - state <= State_ResyncDecode; - when Decoded_Emulate => - sp <= sp - 1; - memAWriteEnable <= '1'; - memAAddr <= sp - 1; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto 0) <= pc + 1; - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - -- The emulate address is: - -- 98 7654 3210 - -- 0000 00aa aaa0 0000 - pc <= (others => '0'); - pc(9 downto 5) <= opcode(4 downto 0); - state <= State_ResyncDecode; - when Decoded_AddSP => - if spOffset=0 then - -- avoid address line crashes... - -- FIX!!! is this an issue? - -- oh-well. While we are at it, we've got a faster - -- shift operation without updating the toolchain. - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= memARead + memARead; - memBAddr <= sp+1; - else - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= memARead; - memBAddr <= sp+spOffset; - state <= State_AddSP; - end if; - when Decoded_Break => - report "Break instruction encountered" severity failure; - break <= '1'; - when Decoded_PushSP => - memAWriteEnable <= '1'; - memAAddr <= sp - 1; - sp <= sp - 1; - memAWrite <= (others => DontCareValue); - memAWrite(maxAddrBit downto minAddrBit) <= sp; - memBAddr <= sp; - memBWrite <= memARead; - memBWriteEnable <= '1'; - when Decoded_Pushspadd => - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= (others => DontCareValue); - pushspaddTemp := memARead(maxAddrBit-minAddrBit downto 0); - memAWrite(maxAddrBit downto minAddrBit) <= sp+pushspaddTemp; - memBAddr <= sp+1; - when Decoded_PopPC => - memAAddr <= sp; - pc <= memARead(maxAddrBit downto 0); - sp <= sp + 1; - state <= State_ResyncDecode; - when Decoded_AddIm => - memAWriteEnable <= '1'; - memAAddr <= sp; - tempVal(wordSize-1 downto 7) := (others => tOpcode(6)); - tempVal(6 downto 0) := tOpcode(6 downto 0); - memAWrite <= memARead + tempVal; - memBAddr <= sp + 1; - pc <= pc + 2; - when Decoded_Add => - memAWriteEnable <= '1'; - memAWrite <= memARead + memBRead; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - sp <= sp + 1; - when Decoded_Or => - sp <= sp + 1; - memAWriteEnable <= '1'; - memAWrite <= memARead or memBRead; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - when Decoded_And => - sp <= sp + 1; - memAWriteEnable <= '1'; - memAWrite <= memARead and memBRead; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - when Decoded_Load => - if (memARead(ioBit)='1') then - out_mem_addr <= memARead(maxAddrBitIncIO downto 0); - out_mem_readEnable <= '1'; - state <= State_ReadIO; - else - memAAddr <= memARead(maxAddrBit downto minAddrBit); - memBAddr <= sp + 1; - end if; - when Decoded_Swap => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite(wordSize/2-1 downto 0) <= memARead(wordSize-1 downto wordSize/2); - memAWrite(wordSize-1 downto wordSize/2) <= memARead(wordSize/2-1 downto 0); - memBAddr <= sp + 1; - when Decoded_Not => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite <= not memARead; - memBAddr <= sp + 1; - when Decoded_Flip => - memAAddr <= sp; - memAWriteEnable <= '1'; - for i in 0 to wordSize-1 loop - memAWrite(i) <= memARead(wordSize-1-i); - end loop; - memBAddr <= sp + 1; - when Decoded_Lshift2 => - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite(1 downto 0) <= (others => '0'); - memAWrite(wordSize-1 downto 2) <= memARead(wordSize-1-2 downto 0); - memBAddr <= sp + 1; - pc <= pc + 2; - when Decoded_Store => - sp <= sp + 2; - if (memARead(ioBit)='1') then - out_mem_writeEnable <= '1'; - out_mem_addr <= memARead(maxAddrBitIncIO downto 0); - mem_write <= memBRead; - state <= State_WriteIO; - else - memAWriteEnable <= '1'; - memAAddr <= memARead(maxAddrBit downto minAddrBit); - memAWrite <= memBRead; - state <= State_ResyncDecode; - end if; - when Decoded_PopSP => - sp <= memARead(maxAddrBit downto minAddrBit); - state <= State_ResyncDecode; - when Decoded_Ashiftleft => - memAWrite(wordSize-1 downto conv_integer(memARead(wordPower-1 downto 0))) <= - memBRead(wordSize-conv_integer(memARead(wordPower-1 downto 0))-1 downto 0); - if memARead(wordPower-1 downto 0)/=0 then - memAWrite(conv_integer(memARead(wordPower-1 downto 0))-1 downto 0) <= (others => '0'); - end if; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - sp <= sp + 1; - when Decoded_Ashiftright | Decoded_Lshiftright => - memAWrite(wordSize-1-conv_integer(memARead(wordPower-1 downto 0)) downto 0) <= - memBRead(wordSize-1 downto conv_integer(memARead(wordPower-1 downto 0))); - if memARead(wordPower-1 downto 0)/=0 then - if decodedOpcode=Decoded_Ashiftright and memBRead(wordSize-1)='1' then - memAWrite(wordSize-1 downto wordSize-conv_integer(memARead(wordPower-1 downto 0))-1) <= (others => '1'); - else - memAWrite(wordSize-1 downto wordSize-conv_integer(memARead(wordPower-1 downto 0))-1) <= (others => '0'); - end if; - end if; - memAWriteEnable <= '1'; - memAAddr <= sp + 1; - memBAddr <= sp + 2; - sp <= sp + 1; - when Decoded_Eqbranch => - sp <= sp + 2; - if (memBRead=0) then - pc <= memARead(maxAddrBit downto 0) + pc; - end if; - state <= State_ResyncDecode; - when Decoded_Neqbranch => - sp <= sp + 2; - if (memBRead/=0) then - pc <= memARead(maxAddrBit downto 0) + pc; - end if; - state <= State_ResyncDecode; - when Decoded_Eq => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead=memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Neq => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead/=memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Ulessthan => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead<memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Ulessthanorequal => - sp <= sp + 1; - memAWrite <= (others => '0'); - if (memARead<=memBRead) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Lessthan => - sp <= sp + 1; - memAWrite <= (others => '0'); - compareA := signed(memARead); - compareB := signed(memBRead); - if (compareA<compareB) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Lessthanorequal => - sp <= sp + 1; - memAWrite <= (others => '0'); - compareA := signed(memARead); - compareB := signed(memBRead); - if (compareA<=compareB) then - memAWrite(0) <= '1'; - end if; - memAAddr <= sp + 1; - memAWriteEnable <= '1'; - memBAddr <= sp + 2; - when Decoded_Loadb => - byteSelect <= memARead(minAddrBit-1 downto 0); - memAAddr <= memARead(maxAddrBit downto minAddrBit); - state <= State_LoadByte1; - when Decoded_Storeb => - sp <= sp + 2; - byteSelect <= memARead(minAddrBit-1 downto 0); - storeByte <= memBRead(7 downto 0); - memAAddr <= memARead(maxAddrBit downto minAddrBit); - memBAddr <= sp; - state <= State_StoreByte1; - when Decoded_Mult16x16 => - mult1 <= memARead(wordSize/2-1 downto 0); - mult2 <= memBRead(wordSize/2-1 downto 0); - sp <= sp + 1; - state <= State_Mult1; - when others => - -- nop. Here we persist whatever was loaded into - -- memARead - memAAddr <= sp; - memAWriteEnable <= '1'; - memAWrite <= memARead; - memBAddr <= sp + 1; - - end case; - when State_ReadIO => - state <= State_ReadIODone; - when State_ReadIODone => - if (in_mem_busy = '0') then - state <= State_ResyncDecode; - memAWriteEnable <= '1'; - memAWrite <= (others => '0'); - memAWrite <= mem_read; - memAAddr <= sp; - end if; - when State_WriteIO => - state <= State_WriteIODone; - when State_WriteIODone => - if (in_mem_busy = '0') then - state <= State_ResyncDecode; - end if; - when State_ResyncDecode => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_ResyncStack; - when State_ResyncStack => - memAAddr <= sp; - memBAddr <= sp+1; - state <= State_Decode; - when State_AddSP => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_Add; - when State_Add => - memAWriteEnable <= '1'; - memAWrite <= memARead + memBRead; - memAAddr <= sp; - memBAddr <= sp + 1; - state <= State_Decode; - when State_LoadByte1 => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_LoadByte2; - when State_LoadByte2 => - memAWriteEnable <= '1'; - memAAddr <= sp; - memAWrite <= (others => '0'); - case byteSelect is - when "00" => memAWrite(7 downto 0) <= memARead(31 downto 24); - when "01" => memAWrite(7 downto 0) <= memARead(23 downto 16); - when "10" => memAWrite(7 downto 0) <= memARead(15 downto 8); - when others => memAWrite(7 downto 0) <= memARead(7 downto 0); - end case; - memBAddr <= sp + 1; - state <= State_Decode; - when State_StoreByte1 => - state <= State_StoreByte2; - when State_StoreByte2 => - memAWriteEnable <= '1'; - memAAddr <= memBRead(maxAddrBit downto minAddrBit); - memAWrite <= memARead; - case byteSelect is - when "00" => memAWrite(31 downto 24) <= storeByte; - when "01" => memAWrite(23 downto 16) <= storeByte; - when "10" => memAWrite(15 downto 8) <= storeByte; - when others => memAWrite(7 downto 0) <= storeByte; - end case; - state <= State_ResyncDecode; - when State_Mult1 => - memAAddr <= pc(maxAddrBit downto minAddrBit); - nextPC:=pc+1; - memBAddr <= nextPC(maxAddrBit downto minAddrBit); - state <= State_Mult2; - when State_Mult2 => - memAWriteEnable <= '1'; - memAWrite <= multResult; - memAAddr <= sp; - memBAddr <= sp + 1; - state <= State_Decode; - - when others => - null; - end case; - end if; - end process; - - - -end behave; diff --git a/zpu/roadshow/roadshow/helloworld/test.c b/zpu/roadshow/roadshow/helloworld/test.c index 8c33640..5243468 100644 --- a/zpu/roadshow/roadshow/helloworld/test.c +++ b/zpu/roadshow/roadshow/helloworld/test.c @@ -1,3 +1,4 @@ +/* zpu-elf-gcc -g -Wl,--relax test.c -phi -o hello.elf */ int main(int argc, char **argv) { for (;;) |