OpenCores
URL https://opencores.org/ocsvn/neo430/neo430/trunk

Subversion Repositories neo430

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 171 to Rev 172
    Reverse comparison

Rev 171 → Rev 172

/neo430/trunk/neo430/README.md
14,44 → 14,41
Welcome to the __NEO430 Processor__ project!
 
You need a small but still powerful, customizable and microcontroller-like
processor system for your next FPGA design? Then the NEO430 is the perfect
choice for you!
processor system for your next FPGA project? Then the NEO430 is the right
choice for you.
 
This processor is based on the Texas Instruments MSP430(TM) ISA and provides 100%
This processor is based on the Texas Instruments MSP430(TM) ISA and provides full
compatibility with the original instruction set. The NEO430 is not an MSP430
clone – it is more a complete new implementation from the bottom up. The
clone – it is more like a complete new implementation from the bottom up. The
processor features a very small outline, already implementing standard
features like a timer, a watchdog, UART, TWI and SPI serial interfaces, general
purpose IO ports, an internal bootloader and of course internal memory for
program code and data. All of the peripheral modules are optional – so if you
do not need them, you can exclude them from implementation to reduce the size
program code and data. All of the implemented peripheral modules are optional – so if you
do not need them, you can exclude them from synthesis to reduce the size
of the system. Any additional modules, which make a more customized system,
can be connected via a Wishbone-compatible bus interface. By this, you can
built a system, that perfectly fits your needs.
can be connected via a Wishbone-compatible bus interface or directly implemented within the
processor. By this, you can built a system, that perfectly fits your needs.
 
It is up to you to use the NEO430 as stand-alone, configurable and extensible
microcontroller, or to include it as controller within a more complex SoC
design.
microcontroller, or to use it as controller within a more complex SoC design.
 
The high-level software development is based on the free TI msp430-gcc
compiler tool chain. You can either use Windows or Linux as build
environment for your applications – the project comes with build scripts
for both worlds. The sw\example folder of this project features several demo
programs from which you can start creating your own NEO430 applications.
compiler tool chain. You can either use Windows (PowerShell or Linux Subsystem) or
Linux as build environment for your applications – the project supports both worlds.
 
This project is intended to work "out of the box". Just synthesize the test
setup from this project, upload it to your FPGA board of choice (the NEO430 uses
a vendor-independent VHDL description) and start exploring the capabilities of
the NEO430 processor. Application program generation (and installation) works
by executing a single "make" command. Jump to the "Let’s Get It Started"
chapter, which provides a lot of guides and tutorials to make your first
NEO430 setup run:
a FPGA vendor-independent VHDL description) and start exploring the capabilities of
the NEO430 processor. Application program generation works by executing a single "make"
command. Jump to the "Let’s Get It Started" chapter in the NEO430 documentary, which provides
a lot of guides and tutorials to make your first NEO430 setup run:
https://github.com/stnolting/neo430/blob/master/doc/NEO430.pdf
 
 
## Processor Features
 
<img src="https://github.com/stnolting/neo430/blob/master/doc/figures/neo430_arch.png" width="500px"/>
![NEO430 Overview](https://raw.githubusercontent.com/stnolting/neo430/master/doc/figures/neo430_arch.png)
 
(optional modules are marked using dashed lines in the figure above)
 
 
102,8 → 99,9
## Implementation Results
 
Mapping results generated for HW version 0x0303. The full (default) hardware configuration includes
all optional processor modules (excluding the CFU and DADD), an IMEM size of 4kB and a DMEM size of 2kB.
Results generated with Xilinx Vivado 2017.3, Intel Quartus Prime Lite 17.1 and Lattice Radiant 1.0 (Synplify)
all optional processor modules (excluding the CFU and DADD instruction), an IMEM size of 4kB and a DMEM size of 2kB.
The minimal configuration only includes the CPU and the GPIO module. Results generated with Xilinx Vivado 2017.3,
Intel Quartus Prime Lite 17.1 and Lattice Radiant 1.0 (Synplify)
 
| __Xilinx Artix-7 (XC7A35TICSG324-1L)__ | LUTs | FFs | BRAMs | DSPs | f_max* |
|:----------------------------------------|:----------:|:----------:|:--------:|:------:|:-------:|
129,7 → 127,7
numbers only represent a coarse overview as logic elements might be merged and optimized beyond module boundaries.
 
Mapping results generated for HW version 0x0303. The full (default) hardware configuration includes all optional
processor modules (excluding the CFU and DADD), an IMEM size of 4kB and a DMEM size of 2kB. Results were generated
processor modules (excluding the CFU and DADD instruction), an IMEM size of 4kB and a DMEM size of 2kB. Results were generated
using Intel Quartus Prime Lite 17.1.
 
| __Intel Cyclone IV (EP4CE22F17C6)__ | LUTs | FFs | Memory Bits | DSPs |
160,23 → 158,23
git clone https://github.com/stnolting/neo430.git
~~~
 
* Next, install the compiler toolchain from the TI homepage (select the "compiler only" package):
* Next, install the compiler toolchain from the TI homepage (select the "compiler only" package according to your system OS):
 
http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/latest/index_FDS.html
http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/latest/index_FDS.html
 
* Make sure GNU Make and a native C compiler (GCC) are installed (double check for the newest version)
* Make sure GNU Make and a native C compiler (GCC) are installed (double check for the newest versions)
 
* Follow the instructions from the "Let's Get It Started" section of the NEO430 documentary:
 
https://github.com/stnolting/neo430/blob/master/doc/NEO430.pdf
https://github.com/stnolting/neo430/blob/master/doc/NEO430.pdf
 
* The NEO430 documentary will guide you to create a simple test setup, which serves as "hello world" FPGA demo:
 
<img src="https://github.com/stnolting/neo430/blob/master/doc/figures/test_setup.jpg" width="400px"/>
![NEO430 Test Example Setup](https://raw.githubusercontent.com/stnolting/neo430/master/doc/figures/test_setup.jpg)
 
* This project also includes some example programs, from which you can start:
* The NEO430 project also includes some example programs from which you can start your own application:
 
https://github.com/stnolting/neo430/tree/master/sw/example
https://github.com/stnolting/neo430/tree/master/sw/example
 
* Have fun! =)
 
183,7 → 181,8
 
## Contact
 
If you have any questions, bug reports, ideas or if you are facing problems with the NEO430, feel free to drop me a line:
If you have any questions, bug reports, ideas or if you are facing problems with the NEO430, feel free to drop me a line.
I'm always happy to hear what cool projects you are realizing with this core :smiley:
 
stnolting@gmail.com
 
229,4 → 228,7
 
 
 
<img src="https://github.com/stnolting/neo430/blob/master/doc/figures/oshw_logo.png" width="100px"/>
![OpenHardware Logo](https://raw.githubusercontent.com/stnolting/neo430/master/doc/figures/oshw_logo.png)
 
 
Made with :blue_heart: in Hannover, Germany.
/neo430/trunk/neo430/doc/figures/neo430_arch.png Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
/neo430/trunk/neo430/doc/figures/oshw_logo.png Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
/neo430/trunk/neo430/rtl/core/neo430_alu.vhd
1,7 → 1,7
-- #################################################################################################
-- # << NEO430 - Arithmetical/Logical Unit >> #
-- # ********************************************************************************************* #
-- # Main data processing ALU and temporary operand registers. #
-- # Main data processing ALU and operand registers. #
-- # BCD arithmetic operations need 2 cycles, all other operations only take one cycle. #
-- # ********************************************************************************************* #
-- # This file is part of the NEO430 Processor project: https://github.com/stnolting/neo430 #
22,7 → 22,7
-- # You should have received a copy of the GNU Lesser General Public License along with this #
-- # source; if not, download it from https://www.gnu.org/licenses/lgpl-3.0.en.html #
-- # ********************************************************************************************* #
-- # Stephan Nolting, Hannover, Germany 13.11.2019 #
-- # Stephan Nolting, Hannover, Germany 15.11.2019 #
-- #################################################################################################
 
library ieee;
139,9 → 139,9
end process binary_arithmetic_core;
 
 
-- Decimal Arithmetic Core --------------------------------------------------
-- Binary Coded Decimal Arithmetic Core -------------------------------------
-- -----------------------------------------------------------------------------
decimal_arithmetic_core: process(op_a_ff, op_b_ff, sreg_i)
bcd_arithmetic_core: process(op_a_ff, op_b_ff, sreg_i)
variable dsum_ll_v, dsum_lh_v, dsum_hl_v, dsum_hh_v : std_ulogic_vector(4 downto 0);
begin
-- four 4-bit BCD adders --
156,7 → 156,7
dadd_res(11 downto 08) <= dsum_hl_v(3 downto 0);
dadd_res(15 downto 12) <= dsum_hh_v(3 downto 0);
dadd_res(16) <= dsum_hh_v(4);
end process decimal_arithmetic_core;
end process bcd_arithmetic_core;
 
 
-- DADD Pipeline Register ---------------------------------------------------
169,7 → 169,7
end process dadd_pipe_reg;
 
-- implement DADD instruction? --
dadd_res_in <= dadd_res_ff when (use_dadd_cmd_c = true) else (others => '0');
dadd_res_in <= dadd_res_ff when (use_dadd_cmd_c = true) else (others => '-');
 
 
-- ALU Core -----------------------------------------------------------------
185,36 → 185,21
 
-- function selection --
case ctrl_i(ctrl_alu_cmd3_c downto ctrl_alu_cmd0_c) is
when alu_add_c => -- r <= a + b
when alu_add_c | alu_addc_c | alu_sub_c | alu_subc_c | alu_cmp_c =>
-- alu_add_c : r <= a + b
-- alu_addc_c : r <= a + b + c
-- alu_sub_c : r <= b - a
-- alu_subc_c : r <= b - a - 1 + c
-- alu_cmp_c : b - a (no write back, done by ctrl arbiter)
alu_res <= add_res(15 downto 0);
flag_o(flag_c_c) <= add_res(16);
flag_o(flag_v_c) <= add_res(17);
 
when alu_addc_c => -- r <= a + b + c
alu_res <= add_res(15 downto 0);
flag_o(flag_c_c) <= add_res(16);
flag_o(flag_v_c) <= add_res(17);
 
when alu_sub_c => -- r <= b - a
alu_res <= add_res(15 downto 0);
flag_o(flag_c_c) <= add_res(16);
flag_o(flag_v_c) <= add_res(17);
 
when alu_subc_c => -- r <= b - a - 1 + c
alu_res <= add_res(15 downto 0);
flag_o(flag_c_c) <= add_res(16);
flag_o(flag_v_c) <= add_res(17);
 
when alu_dadd_c => -- r <= a + b + c (decimal)
alu_res <= dadd_res_in(15 downto 0);
flag_o(flag_c_c) <= dadd_res_in(16);
flag_o(flag_v_c) <= '0';
 
when alu_cmp_c => -- b - a (no write back, done by ctrl arbiter)
alu_res <= add_res(15 downto 0);
flag_o(flag_c_c) <= add_res(16);
flag_o(flag_v_c) <= add_res(17);
 
when alu_and_c => -- r <= a & b
alu_res <= op_a_ff and op_b_ff;
flag_o(flag_c_c) <= not zero;
247,22 → 232,23
flag_o(flag_c_c) <= not zero;
flag_o(flag_v_c) <= '0';
 
when alu_rra_c => -- r <= a >> 1, rotate right arithmetically
alu_res <= op_a_ff(15) & op_a_ff(15 downto 1); -- word mode
if (ctrl_i(ctrl_alu_bw_c) = '1') then -- byte mode
alu_res(7) <= op_a_ff(7);
when alu_rra_c | alu_rrc_c =>
-- alu_rra_c : r <= a >> 1, rotate right arithmetically
-- alu_rrc_c : r <= a >> 1, rotate right through carry
if (ctrl_i(ctrl_alu_cmd1_c) = alu_rra_c(1)) then -- alu_rra_c
alu_res <= op_a_ff(15) & op_a_ff(15 downto 1); -- word mode
if (ctrl_i(ctrl_alu_bw_c) = '1') then -- byte mode
alu_res(7) <= op_a_ff(7);
end if;
else -- alu_rrc_c
alu_res <= sreg_i(sreg_c_c) & op_a_ff(15 downto 1); -- word mode
if (ctrl_i(ctrl_alu_bw_c) = '1') then -- byte mode
alu_res(7) <= sreg_i(sreg_c_c);
end if;
end if;
flag_o(flag_c_c) <= op_a_ff(0);
flag_o(flag_v_c) <= '0';
 
when alu_rrc_c => -- r <= a >> 1, rotate right through carry
alu_res <= sreg_i(sreg_c_c) & op_a_ff(15 downto 1); -- word mode
if (ctrl_i(ctrl_alu_bw_c) = '1') then -- byte mode
alu_res(7) <= sreg_i(sreg_c_c);
end if;
flag_o(flag_c_c) <= op_a_ff(0);
flag_o(flag_v_c) <= '0';
 
when alu_sxt_c => -- r <= a, sign extend byte
for i in 8 to 15 loop
alu_res(i) <= op_a_ff(7);
278,19 → 264,12
flag_o(flag_n_c) <= sreg_i(sreg_n_c); -- keep
flag_o(flag_z_c) <= sreg_i(sreg_z_c); -- keep
 
when alu_mov_c => -- r <= a
when others => -- alu_mov_c : r <= a
alu_res <= op_a_ff;
flag_o(flag_c_c) <= sreg_i(sreg_c_c); -- keep
flag_o(flag_v_c) <= sreg_i(sreg_v_c); -- keep
flag_o(flag_n_c) <= sreg_i(sreg_n_c); -- keep
flag_o(flag_z_c) <= sreg_i(sreg_z_c); -- keep
 
when others => -- undefined
alu_res <= op_a_ff;
flag_o(flag_c_c) <= sreg_i(sreg_c_c); -- keep
flag_o(flag_v_c) <= sreg_i(sreg_v_c); -- keep
flag_o(flag_n_c) <= sreg_i(sreg_n_c); -- keep
flag_o(flag_z_c) <= sreg_i(sreg_z_c); -- keep
end case;
end process alu_core;
 
/neo430/trunk/neo430/rtl/core/neo430_bootloader_image.vhd
13,7 → 13,7
000002 => x"5211",
000003 => x"fffa",
000004 => x"8321",
000005 => x"3d9d",
000005 => x"3d98",
000006 => x"120f",
000007 => x"120e",
000008 => x"120d",
23,7 → 23,7
000012 => x"c004",
000013 => x"435c",
000014 => x"12b0",
000015 => x"f658",
000015 => x"f64e",
000016 => x"413b",
000017 => x"413c",
000018 => x"413d",
31,9 → 31,9
000020 => x"413f",
000021 => x"1300",
000022 => x"403c",
000023 => x"f698",
000023 => x"f68e",
000024 => x"12b0",
000025 => x"f56c",
000025 => x"f562",
000026 => x"403d",
000027 => x"ffa0",
000028 => x"4d2c",
45,9 → 45,9
000034 => x"4030",
000035 => x"f042",
000036 => x"403c",
000037 => x"f6a5",
000037 => x"f69b",
000038 => x"12b0",
000039 => x"f56c",
000039 => x"f562",
000040 => x"4130",
000041 => x"120a",
000042 => x"1209",
55,976 → 55,971
000044 => x"1207",
000045 => x"1206",
000046 => x"1205",
000047 => x"1204",
000048 => x"4079",
000049 => x"0020",
000050 => x"4348",
000047 => x"407a",
000048 => x"0020",
000049 => x"4038",
000050 => x"f562",
000051 => x"4037",
000052 => x"f56c",
000052 => x"f5cc",
000053 => x"4036",
000054 => x"f5d6",
000055 => x"4035",
000056 => x"f53c",
000057 => x"403c",
000058 => x"f707",
000059 => x"1287",
000060 => x"490a",
000061 => x"503a",
000062 => x"ffe0",
000063 => x"4a0c",
000064 => x"1286",
000065 => x"403c",
000066 => x"f709",
000067 => x"1287",
000068 => x"4074",
000069 => x"0020",
000070 => x"4a2c",
000054 => x"f532",
000055 => x"403c",
000056 => x"f6fd",
000057 => x"1288",
000058 => x"4a09",
000059 => x"5039",
000060 => x"ffe0",
000061 => x"490c",
000062 => x"1287",
000063 => x"403c",
000064 => x"f6ff",
000065 => x"1288",
000066 => x"4075",
000067 => x"0020",
000068 => x"492c",
000069 => x"1287",
000070 => x"454c",
000071 => x"1286",
000072 => x"444c",
000073 => x"1285",
000074 => x"532a",
000075 => x"990a",
000076 => x"23f9",
000077 => x"12b0",
000078 => x"f55c",
000079 => x"930c",
000080 => x"2009",
000081 => x"5039",
000072 => x"5329",
000073 => x"9a09",
000074 => x"23f9",
000075 => x"12b0",
000076 => x"f552",
000077 => x"930c",
000078 => x"2006",
000079 => x"930a",
000080 => x"2404",
000081 => x"503a",
000082 => x"0020",
000083 => x"9038",
000084 => x"ffe0",
000085 => x"2404",
000086 => x"5038",
000087 => x"0010",
000088 => x"4030",
000089 => x"f072",
000090 => x"4030",
000091 => x"f67c",
000092 => x"120a",
000093 => x"1209",
000094 => x"1208",
000095 => x"1207",
000096 => x"1206",
000097 => x"1205",
000098 => x"4c07",
000099 => x"4d46",
000100 => x"4038",
000101 => x"f60a",
000102 => x"434c",
000103 => x"1288",
000104 => x"403a",
000105 => x"f638",
000106 => x"407c",
000107 => x"0006",
000108 => x"128a",
000109 => x"4039",
000110 => x"f630",
000111 => x"1289",
000112 => x"434c",
000113 => x"1288",
000114 => x"436c",
000083 => x"4030",
000084 => x"f06e",
000085 => x"4030",
000086 => x"f674",
000087 => x"120a",
000088 => x"1209",
000089 => x"1208",
000090 => x"1207",
000091 => x"1206",
000092 => x"1205",
000093 => x"4c07",
000094 => x"4d46",
000095 => x"4038",
000096 => x"f600",
000097 => x"434c",
000098 => x"1288",
000099 => x"403a",
000100 => x"f62e",
000101 => x"407c",
000102 => x"0006",
000103 => x"128a",
000104 => x"4039",
000105 => x"f626",
000106 => x"1289",
000107 => x"434c",
000108 => x"1288",
000109 => x"436c",
000110 => x"128a",
000111 => x"470c",
000112 => x"427d",
000113 => x"12b0",
000114 => x"f688",
000115 => x"128a",
000116 => x"470c",
000117 => x"427d",
000118 => x"12b0",
000119 => x"f692",
000120 => x"128a",
000121 => x"474c",
000122 => x"128a",
000123 => x"464c",
000124 => x"128a",
000125 => x"1289",
000126 => x"4347",
000127 => x"4075",
000128 => x"0005",
000129 => x"474c",
000130 => x"1288",
000131 => x"454c",
000132 => x"128a",
000133 => x"474c",
000134 => x"128a",
000135 => x"4c46",
000136 => x"1289",
000137 => x"b316",
000138 => x"23f6",
000139 => x"4030",
000140 => x"f67e",
000141 => x"120a",
000142 => x"1209",
000143 => x"1208",
000144 => x"4c09",
000145 => x"4d08",
000146 => x"4d0c",
000147 => x"427d",
000148 => x"12b0",
000149 => x"f692",
000150 => x"403a",
000151 => x"f0b8",
000152 => x"4c4d",
000153 => x"490c",
000154 => x"128a",
000155 => x"484d",
000156 => x"490c",
000157 => x"531c",
000158 => x"128a",
000159 => x"4030",
000160 => x"f684",
000161 => x"120a",
000162 => x"1209",
000163 => x"8321",
000164 => x"4c09",
000165 => x"434c",
000166 => x"12b0",
000167 => x"f60a",
000168 => x"403a",
000169 => x"f638",
000170 => x"407c",
000171 => x"0003",
000116 => x"474c",
000117 => x"128a",
000118 => x"464c",
000119 => x"128a",
000120 => x"1289",
000121 => x"4347",
000122 => x"4075",
000123 => x"0005",
000124 => x"474c",
000125 => x"1288",
000126 => x"454c",
000127 => x"128a",
000128 => x"474c",
000129 => x"128a",
000130 => x"4c46",
000131 => x"1289",
000132 => x"b316",
000133 => x"23f6",
000134 => x"4030",
000135 => x"f674",
000136 => x"120a",
000137 => x"1209",
000138 => x"1208",
000139 => x"4c09",
000140 => x"4d08",
000141 => x"4d0c",
000142 => x"427d",
000143 => x"12b0",
000144 => x"f688",
000145 => x"403a",
000146 => x"f0ae",
000147 => x"4c4d",
000148 => x"490c",
000149 => x"128a",
000150 => x"484d",
000151 => x"490c",
000152 => x"531c",
000153 => x"128a",
000154 => x"4030",
000155 => x"f67a",
000156 => x"120a",
000157 => x"1209",
000158 => x"8321",
000159 => x"4c09",
000160 => x"434c",
000161 => x"12b0",
000162 => x"f600",
000163 => x"403a",
000164 => x"f62e",
000165 => x"407c",
000166 => x"0003",
000167 => x"128a",
000168 => x"490c",
000169 => x"427d",
000170 => x"12b0",
000171 => x"f688",
000172 => x"128a",
000173 => x"490c",
000174 => x"427d",
000175 => x"12b0",
000176 => x"f692",
000177 => x"128a",
000178 => x"494c",
000179 => x"128a",
000180 => x"434c",
000181 => x"128a",
000182 => x"4c81",
000183 => x"0000",
000184 => x"12b0",
000185 => x"f630",
000186 => x"412c",
000187 => x"5321",
000188 => x"4030",
000189 => x"f686",
000190 => x"120a",
000191 => x"1209",
000192 => x"1208",
000193 => x"4c08",
000194 => x"f03d",
000195 => x"00ff",
000196 => x"930d",
000197 => x"200b",
000198 => x"4039",
000199 => x"f550",
000200 => x"1289",
000201 => x"4c4a",
000202 => x"1289",
000203 => x"4c4d",
000204 => x"4a4c",
000205 => x"12b0",
000206 => x"f66a",
000207 => x"4030",
000208 => x"f684",
000209 => x"931d",
000210 => x"2009",
000211 => x"4039",
000212 => x"f142",
000213 => x"1289",
000214 => x"4c4a",
000215 => x"480c",
000216 => x"531c",
000217 => x"1289",
000218 => x"4030",
000219 => x"f196",
000220 => x"434d",
000221 => x"4d0a",
000222 => x"4030",
000223 => x"f198",
000224 => x"4c4a",
000225 => x"403c",
000226 => x"f70d",
000227 => x"12b0",
000228 => x"f56c",
000229 => x"4a4c",
000230 => x"12b0",
000231 => x"f5ba",
000232 => x"4302",
000233 => x"435c",
000234 => x"12b0",
000235 => x"f652",
000236 => x"4030",
000237 => x"f1d8",
000238 => x"120a",
000239 => x"1209",
000240 => x"1208",
000241 => x"1207",
000242 => x"1206",
000243 => x"403a",
000244 => x"f56c",
000245 => x"403c",
000246 => x"f714",
000247 => x"128a",
000248 => x"12b0",
000249 => x"f550",
000250 => x"4a08",
000251 => x"907c",
000252 => x"0079",
000253 => x"2034",
000254 => x"403c",
000255 => x"f723",
000256 => x"128a",
000257 => x"4037",
000258 => x"f60a",
000259 => x"434c",
000260 => x"1287",
000261 => x"403a",
000262 => x"f638",
000263 => x"407c",
000264 => x"0006",
000265 => x"128a",
000266 => x"4039",
000267 => x"f630",
000268 => x"1289",
000173 => x"494c",
000174 => x"128a",
000175 => x"434c",
000176 => x"128a",
000177 => x"4c81",
000178 => x"0000",
000179 => x"12b0",
000180 => x"f626",
000181 => x"412c",
000182 => x"5321",
000183 => x"4030",
000184 => x"f67c",
000185 => x"120a",
000186 => x"1209",
000187 => x"1208",
000188 => x"4c08",
000189 => x"f03d",
000190 => x"00ff",
000191 => x"930d",
000192 => x"200b",
000193 => x"4039",
000194 => x"f546",
000195 => x"1289",
000196 => x"4c4a",
000197 => x"1289",
000198 => x"4c4d",
000199 => x"4a4c",
000200 => x"12b0",
000201 => x"f660",
000202 => x"4030",
000203 => x"f67a",
000204 => x"931d",
000205 => x"2009",
000206 => x"4039",
000207 => x"f138",
000208 => x"1289",
000209 => x"4c4a",
000210 => x"480c",
000211 => x"531c",
000212 => x"1289",
000213 => x"4030",
000214 => x"f18c",
000215 => x"434d",
000216 => x"4d0a",
000217 => x"4030",
000218 => x"f18e",
000219 => x"4c4a",
000220 => x"403c",
000221 => x"f703",
000222 => x"12b0",
000223 => x"f562",
000224 => x"4a4c",
000225 => x"12b0",
000226 => x"f5b0",
000227 => x"4302",
000228 => x"435c",
000229 => x"12b0",
000230 => x"f648",
000231 => x"4030",
000232 => x"f1ce",
000233 => x"120a",
000234 => x"1209",
000235 => x"1208",
000236 => x"1207",
000237 => x"1206",
000238 => x"403a",
000239 => x"f562",
000240 => x"403c",
000241 => x"f70a",
000242 => x"128a",
000243 => x"12b0",
000244 => x"f546",
000245 => x"4a08",
000246 => x"907c",
000247 => x"0079",
000248 => x"2034",
000249 => x"403c",
000250 => x"f719",
000251 => x"128a",
000252 => x"4037",
000253 => x"f600",
000254 => x"434c",
000255 => x"1287",
000256 => x"403a",
000257 => x"f62e",
000258 => x"407c",
000259 => x"0006",
000260 => x"128a",
000261 => x"4039",
000262 => x"f626",
000263 => x"1289",
000264 => x"434c",
000265 => x"1287",
000266 => x"407c",
000267 => x"0005",
000268 => x"128a",
000269 => x"434c",
000270 => x"1287",
000271 => x"407c",
000272 => x"0005",
000273 => x"128a",
000274 => x"434c",
000275 => x"128a",
000276 => x"4c4a",
000277 => x"1289",
000278 => x"f07a",
000279 => x"ff8f",
000280 => x"936a",
000281 => x"2403",
000282 => x"434c",
000283 => x"12b0",
000284 => x"f1c0",
000285 => x"403a",
000286 => x"f11a",
000287 => x"403d",
000288 => x"cafe",
000289 => x"434c",
000270 => x"128a",
000271 => x"4c4a",
000272 => x"1289",
000273 => x"f07a",
000274 => x"ff8f",
000275 => x"936a",
000276 => x"2403",
000277 => x"434c",
000278 => x"12b0",
000279 => x"f1b6",
000280 => x"403a",
000281 => x"f110",
000282 => x"403d",
000283 => x"cafe",
000284 => x"434c",
000285 => x"128a",
000286 => x"4217",
000287 => x"fff6",
000288 => x"470d",
000289 => x"436c",
000290 => x"128a",
000291 => x"4217",
000292 => x"fff6",
000293 => x"470d",
000294 => x"436c",
000295 => x"128a",
000296 => x"434c",
000297 => x"4c09",
000298 => x"970c",
000299 => x"2808",
000300 => x"490d",
000301 => x"426c",
000302 => x"128a",
000303 => x"403c",
000304 => x"f730",
000305 => x"1288",
000306 => x"4030",
000307 => x"f680",
000308 => x"4c06",
000309 => x"5326",
000310 => x"4c2d",
000311 => x"ed09",
000312 => x"503c",
000313 => x"0006",
000314 => x"128a",
000315 => x"460c",
000316 => x"4030",
000317 => x"f254",
000318 => x"120a",
000319 => x"1209",
000320 => x"1208",
000321 => x"1207",
000322 => x"1206",
000323 => x"1205",
000324 => x"1204",
000325 => x"8221",
000326 => x"4c47",
000327 => x"4216",
000328 => x"fff2",
000329 => x"f036",
000330 => x"0100",
000331 => x"9306",
000332 => x"2403",
000333 => x"435c",
000334 => x"12b0",
000335 => x"f1c0",
000336 => x"4035",
000337 => x"f56c",
000338 => x"9307",
000339 => x"200e",
000340 => x"403c",
000341 => x"f733",
000342 => x"1285",
000343 => x"4039",
000344 => x"f17c",
000345 => x"474d",
000346 => x"434c",
000347 => x"1289",
000348 => x"903c",
000349 => x"cafe",
000350 => x"2407",
000351 => x"436c",
000352 => x"4030",
000353 => x"f29c",
000354 => x"403c",
000355 => x"f747",
000356 => x"4030",
000357 => x"f2ac",
000358 => x"474d",
000359 => x"436c",
000360 => x"1289",
000361 => x"4c0a",
000362 => x"474d",
000363 => x"426c",
000364 => x"1289",
000365 => x"4c81",
000366 => x"0002",
000367 => x"421e",
000368 => x"fff6",
000369 => x"9a0e",
000370 => x"2814",
000371 => x"c312",
000372 => x"100a",
000373 => x"4a04",
000374 => x"5a04",
000375 => x"4348",
000376 => x"480c",
000377 => x"503c",
000378 => x"0006",
000379 => x"9408",
000380 => x"200d",
000381 => x"c312",
000382 => x"100e",
000383 => x"9e0a",
000384 => x"2814",
000385 => x"9116",
000386 => x"0002",
000387 => x"2419",
000388 => x"427c",
000389 => x"4030",
000390 => x"f29c",
000391 => x"426c",
000392 => x"4030",
000393 => x"f29c",
000394 => x"474d",
000395 => x"4e81",
000396 => x"0000",
000397 => x"1289",
000398 => x"ec06",
000399 => x"4c88",
000400 => x"0000",
000401 => x"5328",
000402 => x"412e",
000403 => x"4030",
000404 => x"f2f0",
000405 => x"4a0c",
000406 => x"5a0c",
000407 => x"540c",
000408 => x"438c",
000409 => x"0000",
000410 => x"531a",
000411 => x"4030",
000412 => x"f2fe",
000413 => x"403c",
000414 => x"f730",
000415 => x"1285",
000416 => x"5221",
000417 => x"4030",
000418 => x"f67c",
000419 => x"120a",
000420 => x"1209",
000421 => x"1208",
000422 => x"1207",
000423 => x"1206",
000424 => x"1205",
000425 => x"12b0",
000426 => x"f674",
000427 => x"4032",
000428 => x"c000",
000429 => x"4382",
000430 => x"ff90",
000431 => x"4382",
000432 => x"ffe0",
000291 => x"434c",
000292 => x"4c09",
000293 => x"970c",
000294 => x"2808",
000295 => x"490d",
000296 => x"426c",
000297 => x"128a",
000298 => x"403c",
000299 => x"f726",
000300 => x"1288",
000301 => x"4030",
000302 => x"f676",
000303 => x"4c06",
000304 => x"5326",
000305 => x"4c2d",
000306 => x"ed09",
000307 => x"503c",
000308 => x"0006",
000309 => x"128a",
000310 => x"460c",
000311 => x"4030",
000312 => x"f24a",
000313 => x"120a",
000314 => x"1209",
000315 => x"1208",
000316 => x"1207",
000317 => x"1206",
000318 => x"1205",
000319 => x"1204",
000320 => x"8221",
000321 => x"4c47",
000322 => x"4216",
000323 => x"fff2",
000324 => x"f036",
000325 => x"0100",
000326 => x"9306",
000327 => x"2403",
000328 => x"435c",
000329 => x"12b0",
000330 => x"f1b6",
000331 => x"4035",
000332 => x"f562",
000333 => x"9307",
000334 => x"200e",
000335 => x"403c",
000336 => x"f729",
000337 => x"1285",
000338 => x"4039",
000339 => x"f172",
000340 => x"474d",
000341 => x"434c",
000342 => x"1289",
000343 => x"903c",
000344 => x"cafe",
000345 => x"2407",
000346 => x"436c",
000347 => x"4030",
000348 => x"f292",
000349 => x"403c",
000350 => x"f73d",
000351 => x"4030",
000352 => x"f2a2",
000353 => x"474d",
000354 => x"436c",
000355 => x"1289",
000356 => x"4c0a",
000357 => x"474d",
000358 => x"426c",
000359 => x"1289",
000360 => x"4c81",
000361 => x"0002",
000362 => x"421e",
000363 => x"fff6",
000364 => x"9a0e",
000365 => x"2814",
000366 => x"c312",
000367 => x"100a",
000368 => x"4a04",
000369 => x"5a04",
000370 => x"4348",
000371 => x"480c",
000372 => x"503c",
000373 => x"0006",
000374 => x"9408",
000375 => x"200d",
000376 => x"c312",
000377 => x"100e",
000378 => x"9e0a",
000379 => x"2814",
000380 => x"9116",
000381 => x"0002",
000382 => x"2419",
000383 => x"427c",
000384 => x"4030",
000385 => x"f292",
000386 => x"426c",
000387 => x"4030",
000388 => x"f292",
000389 => x"474d",
000390 => x"4e81",
000391 => x"0000",
000392 => x"1289",
000393 => x"ec06",
000394 => x"4c88",
000395 => x"0000",
000396 => x"5328",
000397 => x"412e",
000398 => x"4030",
000399 => x"f2e6",
000400 => x"4a0c",
000401 => x"5a0c",
000402 => x"540c",
000403 => x"438c",
000404 => x"0000",
000405 => x"531a",
000406 => x"4030",
000407 => x"f2f4",
000408 => x"403c",
000409 => x"f726",
000410 => x"1285",
000411 => x"5221",
000412 => x"4030",
000413 => x"f672",
000414 => x"120a",
000415 => x"1209",
000416 => x"1208",
000417 => x"1207",
000418 => x"1206",
000419 => x"1205",
000420 => x"12b0",
000421 => x"f66a",
000422 => x"4032",
000423 => x"c000",
000424 => x"4382",
000425 => x"ff90",
000426 => x"4382",
000427 => x"ffe0",
000428 => x"4382",
000429 => x"ffe8",
000430 => x"40b2",
000431 => x"f00c",
000432 => x"c000",
000433 => x"4382",
000434 => x"ffe8",
000435 => x"40b2",
000436 => x"f00c",
000437 => x"c000",
000438 => x"4382",
000439 => x"ffaa",
000440 => x"435c",
000434 => x"ffaa",
000435 => x"435c",
000436 => x"12b0",
000437 => x"f648",
000438 => x"403c",
000439 => x"4b00",
000440 => x"434d",
000441 => x"12b0",
000442 => x"f652",
000443 => x"403c",
000444 => x"4b00",
000445 => x"434d",
000446 => x"12b0",
000447 => x"f4bc",
000448 => x"12b0",
000449 => x"f566",
000450 => x"407c",
000451 => x"0003",
000452 => x"12b0",
000453 => x"f5f0",
000454 => x"434c",
000455 => x"12b0",
000456 => x"f638",
000457 => x"4382",
000458 => x"ffb0",
000459 => x"4038",
000460 => x"fffe",
000461 => x"482c",
000462 => x"5c0c",
000463 => x"5c0c",
000464 => x"533c",
000465 => x"4c82",
000466 => x"ffb4",
000467 => x"40b2",
000468 => x"007f",
000469 => x"ffb0",
000470 => x"4382",
000471 => x"c004",
000472 => x"12b0",
000473 => x"f664",
000474 => x"12b0",
000475 => x"f65e",
000476 => x"403a",
000477 => x"f56c",
000478 => x"403c",
000479 => x"f753",
000480 => x"128a",
000481 => x"4039",
000482 => x"f5d6",
000483 => x"421c",
000484 => x"fff0",
000485 => x"1289",
000486 => x"403c",
000487 => x"f78d",
000488 => x"128a",
000489 => x"421c",
000490 => x"fff4",
000442 => x"f4b2",
000443 => x"12b0",
000444 => x"f55c",
000445 => x"407c",
000446 => x"0003",
000447 => x"12b0",
000448 => x"f5e6",
000449 => x"434c",
000450 => x"12b0",
000451 => x"f62e",
000452 => x"4382",
000453 => x"ffb0",
000454 => x"4038",
000455 => x"fffe",
000456 => x"482c",
000457 => x"5c0c",
000458 => x"5c0c",
000459 => x"533c",
000460 => x"4c82",
000461 => x"ffb4",
000462 => x"40b2",
000463 => x"007f",
000464 => x"ffb0",
000465 => x"4382",
000466 => x"c004",
000467 => x"12b0",
000468 => x"f65a",
000469 => x"12b0",
000470 => x"f654",
000471 => x"403a",
000472 => x"f562",
000473 => x"403c",
000474 => x"f749",
000475 => x"128a",
000476 => x"4039",
000477 => x"f5cc",
000478 => x"421c",
000479 => x"fff0",
000480 => x"1289",
000481 => x"403c",
000482 => x"f783",
000483 => x"128a",
000484 => x"421c",
000485 => x"fff4",
000486 => x"1289",
000487 => x"403c",
000488 => x"f78c",
000489 => x"128a",
000490 => x"482c",
000491 => x"1289",
000492 => x"403c",
000493 => x"f796",
000494 => x"128a",
000495 => x"482c",
000496 => x"1289",
000497 => x"421c",
000498 => x"fffc",
000499 => x"1289",
000500 => x"403c",
000501 => x"f79f",
000502 => x"128a",
000503 => x"421c",
000504 => x"fff6",
000505 => x"1289",
000506 => x"403c",
000507 => x"f7a8",
000508 => x"128a",
000509 => x"421c",
000510 => x"fffa",
000511 => x"1289",
000512 => x"403c",
000513 => x"f7b1",
000514 => x"128a",
000515 => x"421c",
000516 => x"fff2",
000517 => x"1289",
000518 => x"403c",
000519 => x"f7ba",
000520 => x"128a",
000521 => x"403e",
000522 => x"c004",
000523 => x"403d",
000524 => x"ffa2",
000525 => x"4e2c",
000526 => x"903c",
000527 => x"0020",
000528 => x"2008",
000529 => x"435c",
000492 => x"421c",
000493 => x"fffc",
000494 => x"1289",
000495 => x"403c",
000496 => x"f795",
000497 => x"128a",
000498 => x"421c",
000499 => x"fff6",
000500 => x"1289",
000501 => x"403c",
000502 => x"f79e",
000503 => x"128a",
000504 => x"421c",
000505 => x"fffa",
000506 => x"1289",
000507 => x"403c",
000508 => x"f7a7",
000509 => x"128a",
000510 => x"421c",
000511 => x"fff2",
000512 => x"1289",
000513 => x"403c",
000514 => x"f7b0",
000515 => x"128a",
000516 => x"403e",
000517 => x"c004",
000518 => x"403d",
000519 => x"ffa2",
000520 => x"4e2c",
000521 => x"903c",
000522 => x"0020",
000523 => x"2008",
000524 => x"435c",
000525 => x"12b0",
000526 => x"f272",
000527 => x"403c",
000528 => x"f6fd",
000529 => x"128a",
000530 => x"12b0",
000531 => x"f27c",
000532 => x"403c",
000533 => x"f707",
000534 => x"128a",
000535 => x"12b0",
000536 => x"f02c",
000537 => x"4d2c",
000538 => x"930c",
000539 => x"37f1",
000540 => x"4038",
000541 => x"f048",
000542 => x"1288",
000543 => x"4036",
000544 => x"f550",
000545 => x"4035",
000546 => x"f53c",
000547 => x"4037",
000548 => x"f27c",
000549 => x"403c",
000550 => x"f7e1",
000551 => x"128a",
000552 => x"1286",
000553 => x"4c49",
000554 => x"1285",
000555 => x"403c",
000556 => x"f707",
000557 => x"128a",
000558 => x"9079",
000559 => x"0072",
000560 => x"2004",
000561 => x"4030",
000562 => x"f000",
000563 => x"4030",
000564 => x"f44a",
000565 => x"9079",
000566 => x"0068",
000567 => x"2003",
000568 => x"1288",
000569 => x"4030",
000570 => x"f44a",
000571 => x"9079",
000572 => x"0064",
000573 => x"2004",
000574 => x"12b0",
000575 => x"f052",
000576 => x"4030",
000577 => x"f44a",
000578 => x"9079",
000579 => x"0075",
000580 => x"2004",
000581 => x"434c",
000582 => x"1287",
000583 => x"4030",
000584 => x"f44a",
000585 => x"9079",
000586 => x"0070",
000587 => x"2004",
000588 => x"12b0",
000589 => x"f1dc",
000590 => x"4030",
000591 => x"f44a",
000592 => x"9079",
000593 => x"0065",
000594 => x"2003",
000595 => x"435c",
000596 => x"4030",
000597 => x"f48c",
000598 => x"9079",
000599 => x"0073",
000600 => x"27be",
000601 => x"403c",
000602 => x"f7e9",
000603 => x"128a",
000604 => x"4030",
000605 => x"f44a",
000606 => x"120a",
000607 => x"1209",
000608 => x"421a",
000609 => x"fffc",
000610 => x"421b",
000611 => x"fffe",
000612 => x"4c0e",
000613 => x"5c0e",
000614 => x"4d0f",
000615 => x"6d0f",
000616 => x"434c",
000617 => x"4f09",
000618 => x"9f0b",
000619 => x"2804",
000620 => x"9b09",
000621 => x"201b",
000622 => x"9e0a",
000623 => x"2c19",
000624 => x"434a",
000625 => x"4079",
000626 => x"0003",
000627 => x"407d",
000628 => x"00ff",
000629 => x"9c0d",
000630 => x"2817",
000631 => x"4382",
000632 => x"ffa0",
000633 => x"4a0d",
000634 => x"5a0d",
000531 => x"f02c",
000532 => x"4d2c",
000533 => x"930c",
000534 => x"37f1",
000535 => x"4038",
000536 => x"f048",
000537 => x"1288",
000538 => x"4036",
000539 => x"f546",
000540 => x"4035",
000541 => x"f532",
000542 => x"4037",
000543 => x"f272",
000544 => x"403c",
000545 => x"f7d7",
000546 => x"128a",
000547 => x"1286",
000548 => x"4c49",
000549 => x"1285",
000550 => x"403c",
000551 => x"f6fd",
000552 => x"128a",
000553 => x"9079",
000554 => x"0072",
000555 => x"2004",
000556 => x"4030",
000557 => x"f000",
000558 => x"4030",
000559 => x"f440",
000560 => x"9079",
000561 => x"0068",
000562 => x"2003",
000563 => x"1288",
000564 => x"4030",
000565 => x"f440",
000566 => x"9079",
000567 => x"0064",
000568 => x"2004",
000569 => x"12b0",
000570 => x"f052",
000571 => x"4030",
000572 => x"f440",
000573 => x"9079",
000574 => x"0075",
000575 => x"2004",
000576 => x"434c",
000577 => x"1287",
000578 => x"4030",
000579 => x"f440",
000580 => x"9079",
000581 => x"0070",
000582 => x"2004",
000583 => x"12b0",
000584 => x"f1d2",
000585 => x"4030",
000586 => x"f440",
000587 => x"9079",
000588 => x"0065",
000589 => x"2003",
000590 => x"435c",
000591 => x"4030",
000592 => x"f482",
000593 => x"9079",
000594 => x"0073",
000595 => x"27be",
000596 => x"403c",
000597 => x"f7df",
000598 => x"128a",
000599 => x"4030",
000600 => x"f440",
000601 => x"120a",
000602 => x"1209",
000603 => x"421a",
000604 => x"fffc",
000605 => x"421b",
000606 => x"fffe",
000607 => x"4c0e",
000608 => x"5c0e",
000609 => x"4d0f",
000610 => x"6d0f",
000611 => x"434c",
000612 => x"4f09",
000613 => x"9f0b",
000614 => x"2804",
000615 => x"9b09",
000616 => x"201b",
000617 => x"9e0a",
000618 => x"2c19",
000619 => x"434a",
000620 => x"4079",
000621 => x"0003",
000622 => x"407d",
000623 => x"00ff",
000624 => x"9c0d",
000625 => x"2817",
000626 => x"4382",
000627 => x"ffa0",
000628 => x"4a0d",
000629 => x"5a0d",
000630 => x"5d0d",
000631 => x"5d0d",
000632 => x"5d0d",
000633 => x"5d0d",
000634 => x"5d0d",
000635 => x"5d0d",
000636 => x"5d0d",
000637 => x"5d0d",
000638 => x"5d0d",
000639 => x"5d0d",
000640 => x"5d0d",
000641 => x"5d0d",
000642 => x"dc0d",
000643 => x"d03d",
000644 => x"1000",
000645 => x"4d82",
000646 => x"ffa0",
000637 => x"dc0d",
000638 => x"d03d",
000639 => x"1000",
000640 => x"4d82",
000641 => x"ffa0",
000642 => x"4030",
000643 => x"f67c",
000644 => x"8e0a",
000645 => x"7f0b",
000646 => x"531c",
000647 => x"4030",
000648 => x"f686",
000649 => x"8e0a",
000650 => x"7f0b",
000651 => x"531c",
000652 => x"4030",
000653 => x"f4d4",
000654 => x"936a",
000655 => x"2402",
000656 => x"926a",
000657 => x"2008",
000658 => x"490d",
000659 => x"12b0",
000660 => x"f692",
000661 => x"535a",
000662 => x"f03a",
000663 => x"00ff",
000664 => x"4030",
000665 => x"f4e6",
000666 => x"c312",
000667 => x"100c",
000668 => x"4030",
000669 => x"f52a",
000670 => x"f03c",
000671 => x"00ff",
000672 => x"403e",
000673 => x"ffa0",
000674 => x"4e2d",
000675 => x"930d",
000676 => x"3bfd",
000677 => x"4c82",
000678 => x"ffa2",
000679 => x"4130",
000680 => x"403d",
000681 => x"ffa2",
000682 => x"4d2c",
000683 => x"930c",
000684 => x"37fd",
000648 => x"f4ca",
000649 => x"936a",
000650 => x"2402",
000651 => x"926a",
000652 => x"2008",
000653 => x"490d",
000654 => x"12b0",
000655 => x"f688",
000656 => x"535a",
000657 => x"f03a",
000658 => x"00ff",
000659 => x"4030",
000660 => x"f4dc",
000661 => x"c312",
000662 => x"100c",
000663 => x"4030",
000664 => x"f520",
000665 => x"f03c",
000666 => x"00ff",
000667 => x"403e",
000668 => x"ffa0",
000669 => x"4e2d",
000670 => x"930d",
000671 => x"3bfd",
000672 => x"4c82",
000673 => x"ffa2",
000674 => x"4130",
000675 => x"403d",
000676 => x"ffa2",
000677 => x"4d2c",
000678 => x"930c",
000679 => x"37fd",
000680 => x"4130",
000681 => x"421c",
000682 => x"ffa2",
000683 => x"f03c",
000684 => x"8000",
000685 => x"4130",
000686 => x"421c",
000687 => x"ffa2",
000688 => x"f03c",
000689 => x"8000",
000690 => x"4130",
000691 => x"421c",
000692 => x"ffa2",
000693 => x"4130",
000694 => x"120a",
000695 => x"1209",
000696 => x"1208",
000697 => x"1207",
000698 => x"4c09",
000699 => x"4038",
000700 => x"f53c",
000701 => x"4077",
000702 => x"000d",
000703 => x"496a",
000704 => x"930a",
000688 => x"4130",
000689 => x"120a",
000690 => x"1209",
000691 => x"1208",
000692 => x"1207",
000693 => x"4c09",
000694 => x"4038",
000695 => x"f532",
000696 => x"4077",
000697 => x"000d",
000698 => x"496a",
000699 => x"930a",
000700 => x"2002",
000701 => x"4030",
000702 => x"f678",
000703 => x"903a",
000704 => x"000a",
000705 => x"2002",
000706 => x"4030",
000707 => x"f682",
000708 => x"903a",
000709 => x"000a",
000710 => x"2002",
000711 => x"474c",
000712 => x"1288",
000713 => x"4a4c",
000714 => x"1288",
000715 => x"5319",
000716 => x"4030",
000717 => x"f57e",
000718 => x"f07c",
000719 => x"000f",
000720 => x"407d",
000721 => x"0009",
000722 => x"9c4d",
000723 => x"2805",
000706 => x"474c",
000707 => x"1288",
000708 => x"4a4c",
000709 => x"1288",
000710 => x"5319",
000711 => x"4030",
000712 => x"f574",
000713 => x"f07c",
000714 => x"000f",
000715 => x"407d",
000716 => x"0009",
000717 => x"9c4d",
000718 => x"2805",
000719 => x"503c",
000720 => x"0030",
000721 => x"12b0",
000722 => x"f532",
000723 => x"4130",
000724 => x"503c",
000725 => x"0030",
000726 => x"12b0",
000727 => x"f53c",
000728 => x"4130",
000729 => x"503c",
000730 => x"0037",
000731 => x"4030",
000732 => x"f5ac",
000733 => x"120a",
000734 => x"1209",
000735 => x"4c49",
000736 => x"490c",
000737 => x"426d",
000738 => x"12b0",
000739 => x"f692",
000740 => x"403a",
000741 => x"f59c",
000742 => x"128a",
000743 => x"494c",
000744 => x"128a",
000745 => x"4030",
000746 => x"f686",
000747 => x"120a",
000748 => x"1209",
000749 => x"4c09",
000750 => x"427d",
000751 => x"12b0",
000752 => x"f692",
000753 => x"403a",
000754 => x"f5ba",
000755 => x"128a",
000756 => x"494c",
000757 => x"128a",
000758 => x"4030",
000759 => x"f686",
000760 => x"f03c",
000761 => x"00ff",
000762 => x"403d",
000763 => x"ffa4",
000764 => x"438d",
000765 => x"0000",
000766 => x"5c0c",
000767 => x"5c0c",
000768 => x"5c0c",
000769 => x"d31c",
000770 => x"4c8d",
000771 => x"0000",
000772 => x"4130",
000773 => x"f03c",
000774 => x"00ff",
000775 => x"403d",
000776 => x"ffa4",
000777 => x"f0bd",
000778 => x"fc3f",
000779 => x"0000",
000725 => x"0037",
000726 => x"4030",
000727 => x"f5a2",
000728 => x"120a",
000729 => x"1209",
000730 => x"4c49",
000731 => x"490c",
000732 => x"426d",
000733 => x"12b0",
000734 => x"f688",
000735 => x"403a",
000736 => x"f592",
000737 => x"128a",
000738 => x"494c",
000739 => x"128a",
000740 => x"4030",
000741 => x"f67c",
000742 => x"120a",
000743 => x"1209",
000744 => x"4c09",
000745 => x"427d",
000746 => x"12b0",
000747 => x"f688",
000748 => x"403a",
000749 => x"f5b0",
000750 => x"128a",
000751 => x"494c",
000752 => x"128a",
000753 => x"4030",
000754 => x"f67c",
000755 => x"f03c",
000756 => x"00ff",
000757 => x"403d",
000758 => x"ffa4",
000759 => x"438d",
000760 => x"0000",
000761 => x"5c0c",
000762 => x"5c0c",
000763 => x"5c0c",
000764 => x"d31c",
000765 => x"4c8d",
000766 => x"0000",
000767 => x"4130",
000768 => x"f03c",
000769 => x"00ff",
000770 => x"403d",
000771 => x"ffa4",
000772 => x"f0bd",
000773 => x"fc3f",
000774 => x"0000",
000775 => x"5c0c",
000776 => x"5c0c",
000777 => x"5c0c",
000778 => x"5c0c",
000779 => x"5c0c",
000780 => x"5c0c",
000781 => x"5c0c",
000782 => x"5c0c",
000783 => x"5c0c",
000784 => x"5c0c",
000785 => x"5c0c",
000786 => x"dd2c",
000787 => x"d03c",
000788 => x"0200",
000789 => x"4c8d",
000790 => x"0000",
000791 => x"4130",
000792 => x"f0b2",
000793 => x"fdff",
000794 => x"ffa4",
000795 => x"4130",
000796 => x"403d",
000797 => x"ffa6",
000798 => x"f03c",
000799 => x"00ff",
000800 => x"4c8d",
000801 => x"0000",
000802 => x"403e",
000803 => x"ffa4",
000804 => x"4e2c",
000805 => x"930c",
000806 => x"3bfd",
000807 => x"4d2c",
000808 => x"4130",
000809 => x"4c82",
000810 => x"ffae",
000811 => x"4130",
000812 => x"ec82",
000813 => x"ffae",
000814 => x"4130",
000815 => x"d232",
000816 => x"4303",
000817 => x"4130",
000818 => x"d032",
000819 => x"4000",
000781 => x"dd2c",
000782 => x"d03c",
000783 => x"0200",
000784 => x"4c8d",
000785 => x"0000",
000786 => x"4130",
000787 => x"f0b2",
000788 => x"fdff",
000789 => x"ffa4",
000790 => x"4130",
000791 => x"403d",
000792 => x"ffa6",
000793 => x"f03c",
000794 => x"00ff",
000795 => x"4c8d",
000796 => x"0000",
000797 => x"403e",
000798 => x"ffa4",
000799 => x"4e2c",
000800 => x"930c",
000801 => x"3bfd",
000802 => x"4d2c",
000803 => x"4130",
000804 => x"4c82",
000805 => x"ffae",
000806 => x"4130",
000807 => x"ec82",
000808 => x"ffae",
000809 => x"4130",
000810 => x"d232",
000811 => x"4303",
000812 => x"4130",
000813 => x"d032",
000814 => x"4000",
000815 => x"4130",
000816 => x"4c4e",
000817 => x"4d4c",
000818 => x"108e",
000819 => x"de0c",
000820 => x"4130",
000821 => x"4c4e",
000822 => x"4d4c",
000823 => x"108e",
000824 => x"de0c",
000825 => x"4130",
000826 => x"40b2",
000827 => x"4700",
000828 => x"ffb8",
000829 => x"4130",
000830 => x"4134",
000831 => x"4135",
000832 => x"4136",
000833 => x"4137",
000834 => x"4138",
000835 => x"4139",
000836 => x"413a",
000837 => x"4130",
000838 => x"533d",
000839 => x"c312",
000840 => x"100c",
000841 => x"930d",
000842 => x"23fb",
000843 => x"4130",
000844 => x"6f42",
000845 => x"746f",
000846 => x"6e69",
000847 => x"2e67",
000848 => x"2e2e",
000849 => x"0a0a",
000850 => x"4300",
000851 => x"444d",
000852 => x"3a73",
000853 => x"200a",
000854 => x"3a64",
000855 => x"4420",
000856 => x"6d75",
000857 => x"2070",
000858 => x"454d",
000859 => x"0a4d",
000860 => x"6520",
000861 => x"203a",
000862 => x"6f4c",
000863 => x"6461",
000864 => x"4520",
000865 => x"5045",
000866 => x"4f52",
000867 => x"0a4d",
000868 => x"6820",
000869 => x"203a",
000870 => x"6548",
000871 => x"706c",
000872 => x"200a",
000873 => x"3a70",
000874 => x"5320",
000875 => x"6f74",
000876 => x"6572",
000877 => x"4520",
000878 => x"5045",
000879 => x"4f52",
000880 => x"0a4d",
000881 => x"7220",
000882 => x"203a",
000883 => x"6552",
000884 => x"7473",
000821 => x"40b2",
000822 => x"4700",
000823 => x"ffb8",
000824 => x"4130",
000825 => x"4134",
000826 => x"4135",
000827 => x"4136",
000828 => x"4137",
000829 => x"4138",
000830 => x"4139",
000831 => x"413a",
000832 => x"4130",
000833 => x"533d",
000834 => x"c312",
000835 => x"100c",
000836 => x"930d",
000837 => x"23fb",
000838 => x"4130",
000839 => x"6f42",
000840 => x"746f",
000841 => x"6e69",
000842 => x"2e67",
000843 => x"2e2e",
000844 => x"0a0a",
000845 => x"4300",
000846 => x"444d",
000847 => x"3a73",
000848 => x"200a",
000849 => x"3a64",
000850 => x"4420",
000851 => x"6d75",
000852 => x"2070",
000853 => x"454d",
000854 => x"0a4d",
000855 => x"6520",
000856 => x"203a",
000857 => x"6f4c",
000858 => x"6461",
000859 => x"4520",
000860 => x"5045",
000861 => x"4f52",
000862 => x"0a4d",
000863 => x"6820",
000864 => x"203a",
000865 => x"6548",
000866 => x"706c",
000867 => x"200a",
000868 => x"3a70",
000869 => x"5320",
000870 => x"6f74",
000871 => x"6572",
000872 => x"4520",
000873 => x"5045",
000874 => x"4f52",
000875 => x"0a4d",
000876 => x"7220",
000877 => x"203a",
000878 => x"6552",
000879 => x"7473",
000880 => x"7261",
000881 => x"0a74",
000882 => x"7320",
000883 => x"203a",
000884 => x"7453",
000885 => x"7261",
000886 => x"0a74",
000887 => x"7320",
000888 => x"203a",
000889 => x"7453",
000890 => x"7261",
000891 => x"2074",
000892 => x"7061",
000893 => x"0a70",
000894 => x"7520",
000895 => x"203a",
000896 => x"7055",
000897 => x"6f6c",
000898 => x"6461",
000899 => x"0a00",
000900 => x"3a00",
000901 => x"2020",
000902 => x"0700",
000903 => x"450a",
000904 => x"5252",
000905 => x"005f",
000906 => x"7250",
000907 => x"636f",
000908 => x"6565",
000909 => x"2064",
000910 => x"7928",
000911 => x"6e2f",
000912 => x"3f29",
000913 => x"0a00",
000914 => x"7257",
000915 => x"7469",
000916 => x"6e69",
000917 => x"2e67",
000918 => x"2e2e",
000919 => x"0020",
000920 => x"4b4f",
000921 => x"4100",
000922 => x"6177",
000923 => x"7469",
000924 => x"6e69",
000925 => x"2067",
000926 => x"4942",
000927 => x"454e",
000928 => x"4558",
000929 => x"2e2e",
000930 => x"202e",
000931 => x"4c00",
000932 => x"616f",
000933 => x"6964",
000934 => x"676e",
000935 => x"2e2e",
000936 => x"202e",
000937 => x"0a00",
000938 => x"4e0a",
000939 => x"4f45",
000940 => x"3334",
000941 => x"2030",
000942 => x"6f42",
000943 => x"746f",
000944 => x"6f6c",
000945 => x"6461",
000946 => x"7265",
000947 => x"5620",
000948 => x"3032",
000949 => x"3931",
000950 => x"3131",
000951 => x"3331",
000952 => x"420a",
000953 => x"2079",
000954 => x"7453",
000955 => x"7065",
000956 => x"6168",
000957 => x"206e",
000958 => x"6f4e",
000959 => x"746c",
000960 => x"6e69",
000961 => x"0a67",
000962 => x"480a",
000963 => x"5657",
000964 => x"203a",
000965 => x"7830",
000966 => x"0a00",
000967 => x"5355",
000968 => x"3a52",
000969 => x"3020",
000970 => x"0078",
000971 => x"430a",
000972 => x"4b4c",
000973 => x"203a",
000974 => x"7830",
000975 => x"0a00",
000976 => x"4f52",
000977 => x"3a4d",
000978 => x"3020",
000979 => x"0078",
000980 => x"520a",
000981 => x"4d41",
000982 => x"203a",
000983 => x"7830",
000984 => x"0a00",
000985 => x"5953",
000986 => x"3a53",
000987 => x"3020",
000988 => x"0078",
000989 => x"0a0a",
000990 => x"7541",
000991 => x"6f74",
000992 => x"6f62",
000993 => x"746f",
000994 => x"6920",
000995 => x"206e",
000996 => x"7338",
000997 => x"202e",
000998 => x"7250",
000999 => x"7365",
001000 => x"2073",
001001 => x"656b",
001002 => x"2079",
001003 => x"6f74",
001004 => x"6120",
001005 => x"6f62",
001006 => x"7472",
001007 => x"0a2e",
001008 => x"0a00",
001009 => x"4d43",
001010 => x"3a44",
001011 => x"203e",
001012 => x"4200",
001013 => x"6461",
001014 => x"4320",
001015 => x"444d",
001016 => x"0021",
000886 => x"2074",
000887 => x"7061",
000888 => x"0a70",
000889 => x"7520",
000890 => x"203a",
000891 => x"7055",
000892 => x"6f6c",
000893 => x"6461",
000894 => x"0a00",
000895 => x"3a00",
000896 => x"2020",
000897 => x"0700",
000898 => x"450a",
000899 => x"5252",
000900 => x"005f",
000901 => x"7250",
000902 => x"636f",
000903 => x"6565",
000904 => x"2064",
000905 => x"7928",
000906 => x"6e2f",
000907 => x"3f29",
000908 => x"0a00",
000909 => x"7257",
000910 => x"7469",
000911 => x"6e69",
000912 => x"2e67",
000913 => x"2e2e",
000914 => x"0020",
000915 => x"4b4f",
000916 => x"4100",
000917 => x"6177",
000918 => x"7469",
000919 => x"6e69",
000920 => x"2067",
000921 => x"4942",
000922 => x"454e",
000923 => x"4558",
000924 => x"2e2e",
000925 => x"202e",
000926 => x"4c00",
000927 => x"616f",
000928 => x"6964",
000929 => x"676e",
000930 => x"2e2e",
000931 => x"202e",
000932 => x"0a00",
000933 => x"4e0a",
000934 => x"4f45",
000935 => x"3334",
000936 => x"2030",
000937 => x"6f42",
000938 => x"746f",
000939 => x"6f6c",
000940 => x"6461",
000941 => x"7265",
000942 => x"5620",
000943 => x"3032",
000944 => x"3931",
000945 => x"3131",
000946 => x"3531",
000947 => x"420a",
000948 => x"2079",
000949 => x"7453",
000950 => x"7065",
000951 => x"6168",
000952 => x"206e",
000953 => x"6f4e",
000954 => x"746c",
000955 => x"6e69",
000956 => x"0a67",
000957 => x"480a",
000958 => x"5657",
000959 => x"203a",
000960 => x"7830",
000961 => x"0a00",
000962 => x"5355",
000963 => x"3a52",
000964 => x"3020",
000965 => x"0078",
000966 => x"430a",
000967 => x"4b4c",
000968 => x"203a",
000969 => x"7830",
000970 => x"0a00",
000971 => x"4f52",
000972 => x"3a4d",
000973 => x"3020",
000974 => x"0078",
000975 => x"520a",
000976 => x"4d41",
000977 => x"203a",
000978 => x"7830",
000979 => x"0a00",
000980 => x"5953",
000981 => x"3a53",
000982 => x"3020",
000983 => x"0078",
000984 => x"0a0a",
000985 => x"7541",
000986 => x"6f74",
000987 => x"6f62",
000988 => x"746f",
000989 => x"6920",
000990 => x"206e",
000991 => x"7338",
000992 => x"202e",
000993 => x"7250",
000994 => x"7365",
000995 => x"2073",
000996 => x"656b",
000997 => x"2079",
000998 => x"6f74",
000999 => x"6120",
001000 => x"6f62",
001001 => x"7472",
001002 => x"0a2e",
001003 => x"0a00",
001004 => x"4d43",
001005 => x"3a44",
001006 => x"203e",
001007 => x"4200",
001008 => x"6461",
001009 => x"4320",
001010 => x"444d",
001011 => x"0021",
others => x"0000"
);
 
/neo430/trunk/neo430/rtl/core/neo430_control.vhd
21,7 → 21,7
-- # You should have received a copy of the GNU Lesser General Public License along with this #
-- # source; if not, download it from https://www.gnu.org/licenses/lgpl-3.0.en.html #
-- # ********************************************************************************************* #
-- # Stephan Nolting, Hannover, Germany 13.11.2019 #
-- # Stephan Nolting, Hannover, Germany 15.11.2019 #
-- #################################################################################################
 
library ieee;
148,7 → 148,7
ctrl_nxt <= (others => '0');
ctrl_nxt(ctrl_rf_adr3_c downto ctrl_rf_adr0_c) <= src; -- source reg A
ctrl_nxt(ctrl_alu_cmd3_c downto ctrl_alu_cmd0_c) <= ctrl(ctrl_alu_cmd3_c downto ctrl_alu_cmd0_c); -- keep ALU function
ctrl_nxt(ctrl_rf_as1_c downto ctrl_rf_as0_c) <= sam; -- default SRC addressing mode
ctrl_nxt(ctrl_rf_as1_c downto ctrl_rf_as0_c) <= sam; -- default: SRC addressing mode
ctrl_nxt(ctrl_adr_off2_c downto ctrl_adr_off0_c) <= "010"; -- add +2 as address offset
ctrl_nxt(ctrl_mem_rd_c) <= mem_rd_ff; -- memory read
ctrl_nxt(ctrl_alu_bw_c) <= ctrl(ctrl_alu_bw_c); -- keep byte/word mode
638,15 → 638,17
-- interrupt priority encoder --
irq_priority: process(irq_buf)
begin
if (irq_buf(0) = '1') then
irq_vec_nxt <= "00";
elsif (irq_buf(1) = '1') then
irq_vec_nxt <= "01";
elsif (irq_buf(2) = '1') then
irq_vec_nxt <= "10";
else --if (irq_buf(3) = '1') then
irq_vec_nxt <= "11";
end if;
-- use "case" here to prevent a MUX chain
case irq_buf is
when "0001" | "0011" | "0101" | "0111" | "1001" | "1011" | "1101" | "1111" => -- "---1"
irq_vec_nxt <= "00";
when "0010" | "0110" | "1010" | "1110" => -- "--10"
irq_vec_nxt <= "01";
when "0100" | "1100" => -- "-100"
irq_vec_nxt <= "10";
when others => -- "1000"
irq_vec_nxt <= "11";
end case;
end process irq_priority;
 
-- interrupt vector output --
/neo430/trunk/neo430/rtl/core/neo430_package.vhd
30,7 → 30,7
 
-- Processor Hardware Version -------------------------------------------------------------
-- -------------------------------------------------------------------------------------------
constant hw_version_c : std_ulogic_vector(15 downto 0) := x"0304"; -- no touchy!
constant hw_version_c : std_ulogic_vector(15 downto 0) := x"0305"; -- no touchy!
 
-- Advanced Hardware Configuration --------------------------------------------------------
-- -------------------------------------------------------------------------------------------
291,7 → 291,7
constant alu_subc_c : std_ulogic_vector(3 downto 0) := "0111"; -- r <= b - a - 1 + carry
constant alu_sub_c : std_ulogic_vector(3 downto 0) := "1000"; -- r <= b - a
constant alu_cmp_c : std_ulogic_vector(3 downto 0) := "1001"; -- b - a (no write back)
constant alu_dadd_c : std_ulogic_vector(3 downto 0) := "1010"; -- r <= a + b (BCD!)
constant alu_dadd_c : std_ulogic_vector(3 downto 0) := "1010"; -- r <= a + b (BCD)
constant alu_bit_c : std_ulogic_vector(3 downto 0) := "1011"; -- a & b (no write back)
constant alu_bic_c : std_ulogic_vector(3 downto 0) := "1100"; -- r <= !a & b
constant alu_bis_c : std_ulogic_vector(3 downto 0) := "1101"; -- r <= a | b
/neo430/trunk/neo430/rtl/core/neo430_reg_file.vhd
122,7 → 122,7
end if;
end process sreg_write;
 
-- construct logical SREG --
-- construct logical status register --
sreg_combine: process(sreg)
begin
sreg_int <= (others => '0');
139,7 → 139,7
-- status register output --
sreg_o <= sreg_int;
 
-- general purpose register file (including PC, dummy SR and dummy CG) --
-- general purpose register file (including PC, SP, dummy SR and dummy CG) --
rf_write: process(clk_i)
begin
if rising_edge(clk_i) then
153,7 → 153,7
-- Register File Read Access ------------------------------------------------
-- -----------------------------------------------------------------------------
rf_read: process(ctrl_i, reg_file, sreg_int)
variable const_sel_v : std_ulogic_vector(02 downto 0);
variable const_sel_v : std_ulogic_vector(2 downto 0);
begin
if ((ctrl_i(ctrl_rf_adr3_c downto ctrl_rf_adr0_c) = reg_sr_c) or
(ctrl_i(ctrl_rf_adr3_c downto ctrl_rf_adr0_c) = reg_cg_c)) then
168,10 → 168,9
when "101" => data_o <= x"0001"; -- +1
when "110" => data_o <= x"0002"; -- +2
when "111" => data_o <= x"FFFF"; -- -1
when others => data_o <= x"0000";
when others => data_o <= (others => '-');
end case;
else
-- gp register file read access --
else -- gp register file read access
data_o <= reg_file(to_integer(unsigned(ctrl_i(ctrl_rf_adr3_c downto ctrl_rf_adr0_c))));
end if;
end process rf_read;
/neo430/trunk/neo430/sw/bootloader/bootloader.c
29,7 → 29,7
// # You should have received a copy of the GNU Lesser General Public License along with this #
// # source; if not, download it from https://www.gnu.org/licenses/lgpl-3.0.en.html #
// # ********************************************************************************************* #
// # Stephan Nolting, Hannover, Germany 13.11.2019 #
// # Stephan Nolting, Hannover, Germany 15.11.2019 #
// #################################################################################################
 
// Libraries
147,7 → 147,7
// ****************************************************************
// Show bootloader intro and system information
// ****************************************************************
neo430_uart_br_print("\n\nNEO430 Bootloader V20191113\nBy Stephan Nolting\n\n"
neo430_uart_br_print("\n\nNEO430 Bootloader V20191115\nBy Stephan Nolting\n\n"
"HWV: 0x");
neo430_uart_print_hex_word(HW_VERSION);
neo430_uart_br_print("\nUSR: 0x");
283,7 → 283,7
if ((neo430_uart_char_received() != 0) || (j == 0xFFE0))
return;
j += 16;
j += 32;
}
}
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.