aboutsummaryrefslogtreecommitdiff
path: root/works/life
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-12-26 17:21:51 +0800
committercrupest <crupest@outlook.com>2021-12-26 17:21:51 +0800
commit825afbb7774d5a507f198429b8999c6aae3f8592 (patch)
tree87826d08c77b359a7c7df1ba8155603f641b5e80 /works/life
parent90dbff7efabddf8f3cb19cae3e75009f4bf0fc52 (diff)
downloadcrupest-825afbb7774d5a507f198429b8999c6aae3f8592.tar.gz
crupest-825afbb7774d5a507f198429b8999c6aae3f8592.tar.bz2
crupest-825afbb7774d5a507f198429b8999c6aae3f8592.zip
import(life): ...
Diffstat (limited to 'works/life')
-rw-r--r--works/life/computer-organization-experiment/cpu.vhdl212
-rw-r--r--works/life/computer-organization-experiment/out.ghwbin14642 -> 4661248 bytes
-rw-r--r--works/life/computer-organization-experiment/out.vcd1133
3 files changed, 249 insertions, 1096 deletions
diff --git a/works/life/computer-organization-experiment/cpu.vhdl b/works/life/computer-organization-experiment/cpu.vhdl
index f1a7d65..aca35cf 100644
--- a/works/life/computer-organization-experiment/cpu.vhdl
+++ b/works/life/computer-organization-experiment/cpu.vhdl
@@ -4,6 +4,7 @@ use ieee.std_logic_1164.all;
package cru is
subtype word is std_logic_vector(31 downto 0);
constant clock_time : time := 10 ns;
+ constant ram_clock_time: time := 2.5 ns;
end package;
library ieee;
@@ -35,13 +36,36 @@ end architecture;
library ieee;
use ieee.std_logic_1164.all;
+use work.cru.all;
+
+entity reg_file_clock is
+ port(CLK: out std_logic);
+end entity;
+
+architecture Behavioral of reg_file_clock is
+ signal V: std_logic := '1';
+begin
+ l: process is
+ begin
+ CLK <= V;
+ wait for 1 ns;
+ loop
+ V <= not V;
+ wait for 1 ps;
+ CLK <= V;
+ wait for clock_time;
+ end loop;
+ end process;
+end architecture;
+
+library ieee;
+use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
use work.cru.all;
entity register_file is
port (
- CLK: in std_logic;
ENABLE: in std_logic;
R1, R2, W: in std_logic_vector(4 downto 0);
WD: in std_logic_vector(31 downto 0);
@@ -52,7 +76,10 @@ end entity;
architecture Behavioral of register_file is
type reg_file_type is array (0 to 31) of std_logic_vector(31 downto 0);
signal reg_file: reg_file_type := (others => (others => '0'));
+ signal CLK : std_logic;
begin
+ clock: entity work.reg_file_clock
+ port map (CLK);
process (CLK)
begin
if rising_edge(CLK) then
@@ -91,13 +118,11 @@ begin
else std_logic_vector(signed(A) sll to_integer(unsigned(B))) when ALUC ?= B"0011"
else std_logic_vector(signed(A) srl to_integer(unsigned(B))) when ALUC ?= B"0111"
else std_logic_vector(signed(A) sra to_integer(unsigned(B))) when ALUC ?= B"1111";
- Z <= S ?= X"00000000";
+ Z <= S ?= X"00000000" after 10 ps;
end architecture;
library ieee;
use ieee.std_logic_1164.all;
-use ieee.numeric_std.all;
-use ieee.std_logic_unsigned.all;
use work.cru.all;
entity clock is
@@ -113,16 +138,41 @@ end architecture;
library ieee;
use ieee.std_logic_1164.all;
+use work.cru.all;
+
+entity ram_clock is
+ port(CLK: out std_logic);
+end entity;
+
+architecture Behavioral of ram_clock is
+ signal V: std_logic := '0';
+begin
+ l: process is
+ begin
+ CLK <= V;
+ wait for 500 ps;
+ loop
+ V <= not V;
+ wait for 1 ps;
+ CLK <= V;
+ wait for ram_clock_time;
+ end loop;
+ end process;
+end architecture;
+
+library ieee;
+use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
-use ieee.std_logic_unsigned.all;
use work.cru.all;
entity ram is
- port(CLK: in std_logic;
- R: out word;
- W: in word;
- ADDR: in word;
- ENABLE: in std_logic
+ port(
+ R_DATA: out word;
+ W_DATA: in word;
+ R_ADDR: in word;
+ W_ADDR: in word;
+ READ: in std_logic;
+ WRITE: in std_logic
);
end entity;
@@ -130,7 +180,7 @@ architecture Behavioral of ram is
type memory_type is array (0 to 16#30#) of word;
signal memory: memory_type := (
X"3c010000",
- X"34240020",
+ X"34240080",
X"20050004",
X"0c000018",
X"ac820000",
@@ -168,14 +218,17 @@ architecture Behavioral of ram is
others => (others => '0')
);
signal V: std_logic := '0';
+ signal CLK: std_logic;
begin
+ clock: entity work.ram_clock
+ port map (CLK);
b: process(CLK) is
begin
- if rising_edge(CLK) then
- R <= memory(to_integer(unsigned(ADDR)) / 4);
+ if rising_edge(CLK) and READ = '1' then
+ R_DATA <= memory(to_integer(unsigned(R_ADDR)) / 4);
end if;
- if falling_edge(CLK) and ENABLE = '1' then
- memory(to_integer(unsigned(ADDR)) / 4) <= W;
+ if falling_edge(CLK) and WRITE = '1' then
+ memory(to_integer(unsigned(W_ADDR)) / 4) <= W_DATA;
end if;
end process;
end architecture;
@@ -198,17 +251,18 @@ architecture Behavioral of cpu is
signal ins: word;
- signal enable_mem: std_logic;
- signal write_mem: std_logic := '0';
- signal addr: word := X"00000000";
- signal mem_w: word;
- signal mem_r: word;
+ signal mem_r_addr: word := X"00000000";
+ signal mem_w_addr: word := X"00000000";
+ signal mem_r_data: word;
+ signal mem_w_data: word := X"00000000";
+ signal mem_read: std_logic := '0';
+ signal mem_write: std_logic := '0';
signal WRITE_REG: std_logic := '0';
signal R1: std_logic_vector(4 downto 0) := B"00000";
signal R2: std_logic_vector(4 downto 0) := B"00000";
signal W: std_logic_vector(4 downto 0) := B"00000";
- signal WD: std_logic_vector(31 downto 0);
+ signal WD: std_logic_vector(31 downto 0) := X"00000000";
signal RD1: std_logic_vector(31 downto 0) := X"00000000";
signal RD2: std_logic_vector(31 downto 0) := X"00000000";
@@ -227,7 +281,6 @@ begin
);
reg: entity work.register_file
port map(
- CLK => CLK,
ENABLE => WRITE_REG,
R1 => R1,
R2 => R2,
@@ -247,84 +300,112 @@ begin
ram: entity work.ram
port map (
- CLK => CLK,
- R => mem_r,
- W => mem_w,
- ADDR => addr,
- ENABLE => write_mem
+ R_DATA => mem_r_data,
+ W_DATA => mem_w_data,
+ R_ADDR => mem_r_addr,
+ W_ADDR => mem_w_addr,
+ READ => mem_read,
+ WRITE => mem_write
);
logic: process is
begin
wait until rising_edge(CLK);
- wait for 100 ps;
- addr <= pc;
+ wait for 250 ps;
+
+ mem_read <= '1';
+ mem_r_addr <= pc;
pc_to_write <= pc + 4;
- wait for 1 ns;
- ins <= mem_r;
+ wait for 500 ps;
+
+ ins <= mem_r_data;
+
+ mem_write <= '0';
WRITE_REG <= '0';
+
+ wait for 100 ps;
- if ins(31 downto 27) = B"00001" then -- j / jal
+ if ins(31 downto 27) = B"00001" then -- j / jal, not read reg
if ins(26) = '1' then -- jal
W <= B"11111";
- WD <= pc;
+ WD <= pc + 4;
WRITE_REG <= '1';
end if;
- pc_to_write <= (25 downto 0 => ins(25 downto 0), others => '0');
+
+ ALUC <= B"0011";
+ A <= (25 downto 0 => ins(25 downto 0), others => '0');
+ B <= X"00000002";
+ wait for 100 ps;
+ pc_to_write <= S;
elsif ins(31 downto 26) = B"000000" then
if ins(5) = '1' then
R1 <= ins(25 downto 21);
R2 <= ins(20 downto 16);
- ALUC <= ins(3 downto 0);
- wait for 100 ps;
+ wait for 500 ps;
+ ALUC <= ins(3 downto 0);
A <= RD1;
B <= RD2;
+
+ wait for 100 ps;
+
W <= ins(15 downto 11);
WRITE_REG <= '1';
WD <= S;
elsif ins(3) = '0' then
R1 <= ins(20 downto 16);
+
+ wait for 500 ps;
+
ALUC(3 downto 2) <= ins(1 downto 0);
ALUC(1 downto 0) <= B"11";
+ A <= RD1;
+ B <= (4 downto 0 => ins(10 downto 6), others => '0');
wait for 100 ps;
- A <= RD1;
- B <= (4 downto 0 => ins(10 downto 6), others => '0');
W <= ins(15 downto 11);
WRITE_REG <= '1';
WD <= S;
else
R1 <= ins(25 downto 21);
- WRITE_REG <= '0';
- wait for 100 ps;
+ wait for 500 ps;
pc_to_write <= RD1;
end if;
else
if ins(31) = '1' then
- enable_mem <= '1';
R1 <= ins(25 downto 21);
- ALUC <= B"0000";
+ R2 <= ins(20 downto 16);
- wait for 100 ps;
+ wait for 500 ps;
+ ALUC <= B"0000";
A <= RD1;
B <= (15 downto 0 => ins(15 downto 0), others => '0' );
+
+ wait for 100 ps;
+
if ins(29) = '1' then
- W <= ins(20 downto 16);
- write_mem <= '0';
- else
R2 <= ins(20 downto 16);
- write_mem <= '1';
+ mem_write <= '1';
+ mem_w_addr <= S;
+ mem_w_data <= RD2;
+
+ else
+ W <= ins(20 downto 16);
+ mem_read <= '1';
+ mem_r_addr <= S;
+
+ wait for ram_clock_time * 2;
- wait for 100 ps;
+ WD <= mem_r_data;
+ WRITE_REG <= '1';
end if;
elsif ins(29 downto 26) = B"1111" then
WRITE_REG <= '1';
@@ -332,43 +413,42 @@ begin
WD(31 downto 16) <= ins(15 downto 0);
elsif ins(29) = '1' then
R1 <= ins(25 downto 21);
- ALUC <= ins(29 downto 26);
- wait for 100 ps;
+ wait for 500 ps;
+ ALUC <= ins(29 downto 26);
A <= RD1;
B(15 downto 0) <= ins(15 downto 0);
- B(31 downto 16) <= X"0000";
+ if ins(15) = '0' then
+ B(31 downto 16) <= X"0000";
+ else
+ B(31 downto 16) <= X"FFFF";
+ end if;
+
+ wait for 100 ps;
+
W <= ins(20 downto 16);
WRITE_REG <= '1';
WD <= S;
else
R1 <= ins(25 downto 21);
R2 <= ins(20 downto 16);
- ALUC <= B"0010";
- wait for 100 ps;
+ wait for 500 ps;
+ ALUC <= B"0010";
A <= RD1;
B <= RD2;
- if Z = '1' then
- pc_to_write <= pc_to_write + to_integer(unsigned(ins(15 downto 0)) * 4);
+
+ wait for 100 ps;
+
+ if Z = '1' xor ins(26) = '1' then
+ pc_to_write <= pc_to_write + to_integer(signed(ins(15 downto 0)) * 4);
end if;
WRITE_REG <= '0';
end if;
end if;
- if enable_mem then
- if write_mem then
- WRITE_REG <= '0';
- mem_w <= RD2;
- else
- WRITE_REG <= '1';
- WD <= mem_r;
- end if;
- else
- write_mem <= '0';
- end if;
end process;
end architecture;
diff --git a/works/life/computer-organization-experiment/out.ghw b/works/life/computer-organization-experiment/out.ghw
index 10d4b17..81d1df7 100644
--- a/works/life/computer-organization-experiment/out.ghw
+++ b/works/life/computer-organization-experiment/out.ghw
Binary files differ
diff --git a/works/life/computer-organization-experiment/out.vcd b/works/life/computer-organization-experiment/out.vcd
index 5bc0ca7..a47fb22 100644
--- a/works/life/computer-organization-experiment/out.vcd
+++ b/works/life/computer-organization-experiment/out.vcd
@@ -1,5 +1,5 @@
$date
- Sat Dec 25 16:11:16 2021
+ Sun Dec 26 07:20:30 2021
$end
$version
GHDL v0
@@ -32,56 +32,63 @@ $var reg 1 $ clk $end
$var reg 32 % pc[31:0] $end
$var reg 32 & pc_to_write[31:0] $end
$var reg 32 ' ins[31:0] $end
-$var reg 1 ( enable_mem $end
-$var reg 1 ) write_mem $end
-$var reg 32 * addr[31:0] $end
-$var reg 32 + mem_w[31:0] $end
-$var reg 32 , mem_r[31:0] $end
-$var reg 1 - write_reg $end
-$var reg 5 . r1[4:0] $end
-$var reg 5 / r2[4:0] $end
-$var reg 5 0 w[4:0] $end
-$var reg 32 1 wd[31:0] $end
-$var reg 32 2 rd1[31:0] $end
-$var reg 32 3 rd2[31:0] $end
-$var reg 32 4 a[31:0] $end
-$var reg 32 5 b[31:0] $end
-$var reg 4 6 aluc[3:0] $end
-$var reg 32 7 s[31:0] $end
-$var reg 1 8 z $end
+$var reg 32 ( mem_r_addr[31:0] $end
+$var reg 32 ) mem_w_addr[31:0] $end
+$var reg 32 * mem_r_data[31:0] $end
+$var reg 32 + mem_w_data[31:0] $end
+$var reg 1 , mem_read $end
+$var reg 1 - mem_write $end
+$var reg 1 . write_reg $end
+$var reg 5 / r1[4:0] $end
+$var reg 5 0 r2[4:0] $end
+$var reg 5 1 w[4:0] $end
+$var reg 32 2 wd[31:0] $end
+$var reg 32 3 rd1[31:0] $end
+$var reg 32 4 rd2[31:0] $end
+$var reg 32 5 a[31:0] $end
+$var reg 32 6 b[31:0] $end
+$var reg 4 7 aluc[3:0] $end
+$var reg 32 8 s[31:0] $end
+$var reg 1 9 z $end
$scope module pc_reg $end
-$var reg 1 9 clk $end
-$var reg 1 : enable $end
-$var reg 32 ; w[31:0] $end
-$var reg 32 < r[31:0] $end
-$var reg 32 = v[31:0] $end
+$var reg 1 : clk $end
+$var reg 1 ; enable $end
+$var reg 32 < w[31:0] $end
+$var reg 32 = r[31:0] $end
+$var reg 32 > v[31:0] $end
$upscope $end
$scope module reg $end
-$var reg 1 > clk $end
-$var reg 1 ? enable $end
-$var reg 5 @ r1[4:0] $end
-$var reg 5 A r2[4:0] $end
-$var reg 5 B w[4:0] $end
-$var reg 32 C wd[31:0] $end
-$var reg 32 D rd1[31:0] $end
-$var reg 32 E rd2[31:0] $end
+$var reg 1 ? clk $end
+$var reg 1 @ enable $end
+$var reg 5 A r1[4:0] $end
+$var reg 5 B r2[4:0] $end
+$var reg 5 C w[4:0] $end
+$var reg 32 D wd[31:0] $end
+$var reg 32 E rd1[31:0] $end
+$var reg 32 F rd2[31:0] $end
$comment reg_file is not handled $end
$upscope $end
$scope module alu $end
-$var reg 32 F a[31:0] $end
-$var reg 32 G b[31:0] $end
-$var reg 4 H aluc[3:0] $end
-$var reg 32 I s[31:0] $end
-$var reg 1 J z $end
+$var reg 32 G a[31:0] $end
+$var reg 32 H b[31:0] $end
+$var reg 4 I aluc[3:0] $end
+$var reg 32 J s[31:0] $end
+$var reg 1 K z $end
$upscope $end
$scope module ram $end
-$var reg 1 K clk $end
-$var reg 32 L r[31:0] $end
-$var reg 32 M w[31:0] $end
-$var reg 32 N addr[31:0] $end
-$var reg 1 O enable $end
+$var reg 32 L r_data[31:0] $end
+$var reg 32 M w_data[31:0] $end
+$var reg 32 N r_addr[31:0] $end
+$var reg 32 O w_addr[31:0] $end
+$var reg 1 P read $end
+$var reg 1 Q write $end
$comment memory is not handled $end
-$var reg 1 P v $end
+$var reg 1 R v $end
+$var reg 1 S clk $end
+$scope module clock $end
+$var reg 1 T clk $end
+$var reg 1 U v $end
+$upscope $end
$upscope $end
$upscope $end
$upscope $end
@@ -94,1018 +101,84 @@ $enddefinitions $end
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU %
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU &
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU '
-U(
-0)
-b00000000000000000000000000000000 *
-bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU +
-bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ,
+b00000000000000000000000000000000 (
+b00000000000000000000000000000000 )
+bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU *
+b00000000000000000000000000000000 +
+0,
0-
-b00000 .
+0.
b00000 /
b00000 0
-bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 1
+b00000 1
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 2
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 3
-b00000000000000000000000000000000 4
+bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 4
b00000000000000000000000000000000 5
-b0000 6
-b00000000000000000000000000000000 7
-18
-09
-1:
-bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ;
+b00000000000000000000000000000000 6
+b0000 7
+b00000000000000000000000000000000 8
+19
+0:
+1;
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU <
-b00000000000000000000000000000000 =
-0>
+bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU =
+b00000000000000000000000000000000 >
0?
-b00000 @
+0@
b00000 A
b00000 B
-bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU C
+b00000 C
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU D
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU E
-b00000000000000000000000000000000 F
+bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU F
b00000000000000000000000000000000 G
-b0000 H
-b00000000000000000000000000000000 I
-1J
-0K
+b00000000000000000000000000000000 H
+b0000 I
+b00000000000000000000000000000000 J
+1K
bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU L
-bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU M
+b00000000000000000000000000000000 M
b00000000000000000000000000000000 N
-0O
+b00000000000000000000000000000000 O
0P
+0Q
+0R
+0S
+0T
+0U
+#200000
+#2700000
+1U
+#5200000
+1S
+1T
+0U
+#7700000
+0S
+0T
+1U
#10000000
1!
1"
1#
1$
b00000000000000000000000000000000 %
-b00111100000000010000000000000000 ,
-b00000000000000000000000000000000 2
b00000000000000000000000000000000 3
-19
-b00000000000000000000000000000000 <
-1>
-b00000000000000000000000000000000 D
+b00000000000000000000000000000000 4
+1:
+b00000000000000000000000000000000 =
+1?
b00000000000000000000000000000000 E
-1K
-b00111100000000010000000000000000 L
+b00000000000000000000000000000000 F
#10100000
-b00000000000000000000000000000001 &
-b00000000000000000000000000000001 ;
-#11100000
-b00111100000000010000000000000000 '
-bUUUUU .
-bUUUUU /
-b0010 6
-bUUUUU @
-bUUUUU A
-b0010 H
-#11200000
-#20000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000000001 =
-0>
-0K
-#30000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000000001 %
-19
-b00000000000000000000000000000001 <
-1>
-1K
-#30100000
-b00000000000000000000000000000010 &
-b00000000000000000000000000000001 *
-b00000000000000000000000000000010 ;
-b00000000000000000000000000000001 N
-#31100000
-1-
-b00001 0
-b0000000000000000UUUUUUUUUUUUUUUU 1
-1?
-b00001 B
-b0000000000000000UUUUUUUUUUUUUUUU C
-#40000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000000010 =
-0>
-0K
-#50000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000000010 %
-b00110100001001000000000000100000 ,
-19
-b00000000000000000000000000000010 <
-1>
-1K
-b00110100001001000000000000100000 L
-#50100000
-b00000000000000000000000000000011 &
-b00000000000000000000000000000010 *
-b00000000000000000000000000000011 ;
-b00000000000000000000000000000010 N
-#51100000
-b00110100001001000000000000100000 '
-#60000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000000011 =
-0>
-0K
-#70000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000000011 %
-b00100000000001010000000000000100 ,
-19
-b00000000000000000000000000000011 <
-1>
-1K
-b00100000000001010000000000000100 L
-#70100000
b00000000000000000000000000000100 &
-b00000000000000000000000000000011 *
-b00000000000000000000000000000100 ;
-b00000000000000000000000000000011 N
-#71100000
-b00100000000001010000000000000100 '
-0-
-b00001 .
-b1101 6
-0?
-b00001 @
-b1101 H
-#71200000
-1-
-b00101 0
-b00000000000000000000000000000000 1
-b00000000000000000000000000000100 5
-b00000000000000000000000000000100 7
-08
-1?
-b00101 B
-b00000000000000000000000000000000 C
-b00000000000000000000000000000100 G
-b00000000000000000000000000000100 I
-0J
-#80000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000000100 =
-0>
-0K
-#90000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000000100 %
-b00001100000000000000000000011000 ,
-b0000000000000000UUUUUUUUUUUUUUUU 2
-19
+1,
b00000000000000000000000000000100 <
-1>
-b0000000000000000UUUUUUUUUUUUUUUU D
-1K
-b00001100000000000000000000011000 L
-#90100000
-b00000000000000000000000000000101 &
-b00000000000000000000000000000100 *
-b00000000000000000000000000000101 ;
-b00000000000000000000000000000100 N
-#91100000
-b00001100000000000000000000011000 '
-0-
-b00000 .
-b1000 6
-0?
-b00000 @
-b1000 H
-#91200000
-1-
-b00000 0
-b00000000000000000000000000000100 1
-b0000000000000000UUUUUUUUUUUUUUUU 4
-b00000000000000000000000000011000 5
-bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7
-X8
-1?
-b00000 B
-b00000000000000000000000000000100 C
-b0000000000000000UUUUUUUUUUUUUUUU F
-b00000000000000000000000000011000 G
-bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I
-XJ
-#100000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000000101 =
-0>
-0K
-#110000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000000101 %
-b10101100100000100000000000000000 ,
-b00000000000000000000000000000100 2
-b00000000000000000000000000000100 3
-19
-b00000000000000000000000000000101 <
-1>
-b00000000000000000000000000000100 D
-b00000000000000000000000000000100 E
-1K
-b10101100100000100000000000000000 L
-#110100000
-b00000000000000000000000000000110 &
-b00000000000000000000000000000101 *
-b00000000000000000000000000000110 ;
-b00000000000000000000000000000101 N
-#111100000
-b00000000000000000000000000011000 &
-b10101100100000100000000000000000 '
-b11111 0
-b00000000000000000000000000000101 1
-b00000000000000000000000000011000 ;
-b11111 B
-b00000000000000000000000000000101 C
-#120000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011000 =
-0>
-0K
-#130000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011000 %
-b10001100100010010000000000000000 ,
-19
-b00000000000000000000000000011000 <
-1>
-1K
-b10001100100010010000000000000000 L
-#130100000
-b00000000000000000000000000011001 &
-b00000000000000000000000000011000 *
-b00000000000000000000000000011001 ;
-b00000000000000000000000000011000 N
-#131100000
-b10001100100010010000000000000000 '
-1(
-0-
-b00100 .
-b0000 6
-0?
-b00100 @
-b0000 H
-#131200000
-1)
-b01001 /
-b00000000000000000000000000000100 4
-b00000000000000000000000000000000 5
-b00000000000000000000000000000100 7
-08
-b01001 A
-b00000000000000000000000000000100 F
-b00000000000000000000000000000000 G
-b00000000000000000000000000000100 I
-0J
-1O
-#131300000
-b00000000000000000000000000000100 +
-b00000000000000000000000000000100 M
-#140000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011001 =
-0>
-0K
-#150000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011001 %
-b00000000000000000000000000000100 ,
-b00000000000000000000000000000000 2
-b00000000000000000000000000000000 3
-19
-b00000000000000000000000000011001 <
-1>
-b00000000000000000000000000000000 D
-b00000000000000000000000000000000 E
-1K
-b00000000000000000000000000000100 L
-#150100000
-b00000000000000000000000000011010 &
-b00000000000000000000000000011001 *
-b00000000000000000000000000011010 ;
-b00000000000000000000000000011001 N
-#151100000
-b00000000000000000000000000000100 '
-#151200000
-b00000 /
-b00000000000000000000000000000000 4
-b00000000000000000000000000000100 5
-b00000 A
-b00000000000000000000000000000000 F
-b00000000000000000000000000000100 G
-#151300000
-b00000000000000000000000000000000 +
-b00000000000000000000000000000000 M
-#160000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011010 =
-0>
-0K
-#170000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011010 %
-b00000000000000000000000000000000 ,
-b00000000000000000000000000000100 3
-19
-b00000000000000000000000000011010 <
-1>
-b00000000000000000000000000000100 E
-1K
-b00000000000000000000000000000000 L
-#170100000
-b00000000000000000000000000011011 &
-b00000000000000000000000000011010 *
-b00000000000000000000000000011011 ;
-b00000000000000000000000000011010 N
-#171100000
-b00000000000000000000000000000000 '
-b00000 .
-b0011 6
-b00000000000000000000000000000000 7
-18
-b00000 @
-b0011 H
-b00000000000000000000000000000000 I
-1J
-#171200000
-b00000000000000000000000000000100 +
-b00000 0
-b00000000000000000000000000000000 1
-b00000000000000000000000000000000 5
-b00000 B
-b00000000000000000000000000000000 C
-b00000000000000000000000000000000 G
-b00000000000000000000000000000100 M
-#180000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011011 =
-0>
-0K
-#190000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011011 %
-b00000000000000000000000000000100 ,
-b00000000000000000000000000000100 2
-19
-b00000000000000000000000000011011 <
-1>
-b00000000000000000000000000000100 D
-1K
-b00000000000000000000000000000100 L
-#190100000
-b00000000000000000000000000011100 &
-b00000000000000000000000000011011 *
-b00000000000000000000000000011100 ;
-b00000000000000000000000000011011 N
-#191100000
-b00000000000000000000000000000100 '
-#191200000
-b00000000000000000000000000000100 4
-b00000000000000000000000000000100 7
-08
-b00000000000000000000000000000100 F
-b00000000000000000000000000000100 I
-0J
-#200000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011100 =
-0>
-0K
-#210000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011100 %
-19
-b00000000000000000000000000011100 <
-1>
-1K
-#210100000
-b00000000000000000000000000011101 &
-b00000000000000000000000000011100 *
-b00000000000000000000000000011101 ;
-b00000000000000000000000000011100 N
-#211100000
-#211200000
-b00000000000000000000000000000100 1
-b00000000000000000000000000000100 C
-#220000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011101 =
-0>
-0K
-#230000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011101 %
-19
-b00000000000000000000000000011101 <
-1>
-1K
-#230100000
-b00000000000000000000000000011110 &
-b00000000000000000000000000011101 *
-b00000000000000000000000000011110 ;
-b00000000000000000000000000011101 N
-#231100000
-#231200000
-#240000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011110 =
-0>
-0K
-#250000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011110 %
-19
-b00000000000000000000000000011110 <
-1>
-1K
-#250100000
-b00000000000000000000000000011111 &
-b00000000000000000000000000011110 *
-b00000000000000000000000000011111 ;
-b00000000000000000000000000011110 N
-#251100000
-#251200000
-#260000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000011111 =
-0>
-0K
-#270000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000011111 %
-19
-b00000000000000000000000000011111 <
-1>
-1K
-#270100000
-b00000000000000000000000000100000 &
-b00000000000000000000000000011111 *
-b00000000000000000000000000100000 ;
-b00000000000000000000000000011111 N
-#271100000
-#271200000
-#280000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100000 =
-0>
-0K
-#290000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100000 %
-19
-b00000000000000000000000000100000 <
-1>
-1K
-#290100000
-b00000000000000000000000000100001 &
-b00000000000000000000000000100000 *
-b00000000000000000000000000100001 ;
-b00000000000000000000000000100000 N
-#291100000
-#291200000
-#300000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100001 =
-0>
-0K
-#310000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100001 %
-19
-b00000000000000000000000000100001 <
-1>
-1K
-#310100000
-b00000000000000000000000000100010 &
-b00000000000000000000000000100001 *
-b00000000000000000000000000100010 ;
-b00000000000000000000000000100001 N
-#311100000
-#311200000
-#320000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100010 =
-0>
-0K
-#330000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100010 %
-19
-b00000000000000000000000000100010 <
-1>
-1K
-#330100000
-b00000000000000000000000000100011 &
-b00000000000000000000000000100010 *
-b00000000000000000000000000100011 ;
-b00000000000000000000000000100010 N
-#331100000
-#331200000
-#340000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100011 =
-0>
-0K
-#350000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100011 %
-19
-b00000000000000000000000000100011 <
-1>
-1K
-#350100000
-b00000000000000000000000000100100 &
-b00000000000000000000000000100011 *
-b00000000000000000000000000100100 ;
-b00000000000000000000000000100011 N
-#351100000
-#351200000
-#360000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100100 =
-0>
-0K
-#370000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100100 %
-19
-b00000000000000000000000000100100 <
-1>
-1K
-#370100000
-b00000000000000000000000000100101 &
-b00000000000000000000000000100100 *
-b00000000000000000000000000100101 ;
-b00000000000000000000000000100100 N
-#371100000
-#371200000
-#380000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100101 =
-0>
-0K
-#390000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100101 %
-19
-b00000000000000000000000000100101 <
-1>
-1K
-#390100000
-b00000000000000000000000000100110 &
-b00000000000000000000000000100101 *
-b00000000000000000000000000100110 ;
-b00000000000000000000000000100101 N
-#391100000
-#391200000
-#400000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100110 =
-0>
-0K
-#410000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100110 %
-19
-b00000000000000000000000000100110 <
-1>
-1K
-#410100000
-b00000000000000000000000000100111 &
-b00000000000000000000000000100110 *
-b00000000000000000000000000100111 ;
-b00000000000000000000000000100110 N
-#411100000
-#411200000
-#420000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000100111 =
-0>
-0K
-#430000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000100111 %
-19
-b00000000000000000000000000100111 <
-1>
-1K
-#430100000
-b00000000000000000000000000101000 &
-b00000000000000000000000000100111 *
-b00000000000000000000000000101000 ;
-b00000000000000000000000000100111 N
-#431100000
-#431200000
-#440000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101000 =
-0>
-0K
-#450000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101000 %
-19
-b00000000000000000000000000101000 <
-1>
-1K
-#450100000
-b00000000000000000000000000101001 &
-b00000000000000000000000000101000 *
-b00000000000000000000000000101001 ;
-b00000000000000000000000000101000 N
-#451100000
-#451200000
-#460000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101001 =
-0>
-0K
-#470000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101001 %
-19
-b00000000000000000000000000101001 <
-1>
-1K
-#470100000
-b00000000000000000000000000101010 &
-b00000000000000000000000000101001 *
-b00000000000000000000000000101010 ;
-b00000000000000000000000000101001 N
-#471100000
-#471200000
-#480000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101010 =
-0>
-0K
-#490000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101010 %
-19
-b00000000000000000000000000101010 <
-1>
-1K
-#490100000
-b00000000000000000000000000101011 &
-b00000000000000000000000000101010 *
-b00000000000000000000000000101011 ;
-b00000000000000000000000000101010 N
-#491100000
-#491200000
-#500000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101011 =
-0>
-0K
-#510000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101011 %
-19
-b00000000000000000000000000101011 <
-1>
-1K
-#510100000
-b00000000000000000000000000101100 &
-b00000000000000000000000000101011 *
-b00000000000000000000000000101100 ;
-b00000000000000000000000000101011 N
-#511100000
-#511200000
-#520000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101100 =
-0>
-0K
-#530000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101100 %
-19
-b00000000000000000000000000101100 <
-1>
-1K
-#530100000
-b00000000000000000000000000101101 &
-b00000000000000000000000000101100 *
-b00000000000000000000000000101101 ;
-b00000000000000000000000000101100 N
-#531100000
-#531200000
-#540000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101101 =
-0>
-0K
-#550000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101101 %
-19
-b00000000000000000000000000101101 <
-1>
-1K
-#550100000
-b00000000000000000000000000101110 &
-b00000000000000000000000000101101 *
-b00000000000000000000000000101110 ;
-b00000000000000000000000000101101 N
-#551100000
-#551200000
-#560000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101110 =
-0>
-0K
-#570000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101110 %
-19
-b00000000000000000000000000101110 <
-1>
-1K
-#570100000
-b00000000000000000000000000101111 &
-b00000000000000000000000000101110 *
-b00000000000000000000000000101111 ;
-b00000000000000000000000000101110 N
-#571100000
-#571200000
-#580000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000101111 =
-0>
-0K
-#590000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000101111 %
-19
-b00000000000000000000000000101111 <
-1>
-1K
-#590100000
-b00000000000000000000000000110000 &
-b00000000000000000000000000101111 *
-b00000000000000000000000000110000 ;
-b00000000000000000000000000101111 N
-#591100000
-#591200000
-#600000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000110000 =
-0>
-0K
-#610000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000110000 %
-19
-b00000000000000000000000000110000 <
-1>
-1K
-#610100000
-b00000000000000000000000000110001 &
-b00000000000000000000000000110000 *
-b00000000000000000000000000110001 ;
-b00000000000000000000000000110000 N
-#611100000
-#611200000
-#620000000
-0!
-0"
-0#
-0$
-09
-b00000000000000000000000000110001 =
-0>
-0K
-#630000000
-1!
-1"
-1#
-1$
-b00000000000000000000000000110001 %
-19
-b00000000000000000000000000110001 <
-1>
-1K
-#630100000
-b00000000000000000000000000110010 &
-b00000000000000000000000000110001 *
-b00000000000000000000000000110010 ;
-b00000000000000000000000000110001 N
-#631100000
-#631200000
+1P
+#10200000
+b00111100000000010000000000000000 *
+b00111100000000010000000000000000 L
+1S
+1T
+0U