summaryrefslogtreecommitdiffstats
path: root/usrp2
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-12-17 19:02:14 -0800
committerJosh Blum <josh@joshknows.com>2010-12-17 19:02:14 -0800
commit110070fe371e521c0f20cbbb1b1da66312cb4d74 (patch)
tree73d68784058b23846dd001c53b2598f066ada31e /usrp2
parenta96f39ef767ffcecac4a1cb7d20584fb7bd1e11a (diff)
downloaduhd-110070fe371e521c0f20cbbb1b1da66312cb4d74.tar.gz
uhd-110070fe371e521c0f20cbbb1b1da66312cb4d74.tar.bz2
uhd-110070fe371e521c0f20cbbb1b1da66312cb4d74.zip
usrp-n210: almost working w/ packet router + zpu
added stack start signal to zpu removed wb perifs in n210 out of 0-16k added reset controller for main app rewire cpu addr line after booted use 0-16k
Diffstat (limited to 'usrp2')
-rw-r--r--usrp2/opencores/zpu/core/zpu_config.vhd5
-rw-r--r--usrp2/opencores/zpu/core/zpu_core.vhd3
-rw-r--r--usrp2/opencores/zpu/core/zpupkg.vhd1
-rw-r--r--usrp2/opencores/zpu/wishbone/zpu_system.vhd3
-rw-r--r--usrp2/opencores/zpu/zpu_top_pkg.vhd2
-rw-r--r--usrp2/opencores/zpu/zpu_wb_top.vhd2
-rw-r--r--usrp2/top/u2_rev3/u2_core.v16
-rw-r--r--usrp2/top/u2plus/bootloader.rmi472
-rw-r--r--usrp2/top/u2plus/u2plus_core.v110
9 files changed, 313 insertions, 301 deletions
diff --git a/usrp2/opencores/zpu/core/zpu_config.vhd b/usrp2/opencores/zpu/core/zpu_config.vhd
index f7743d602..b7e894232 100644
--- a/usrp2/opencores/zpu/core/zpu_config.vhd
+++ b/usrp2/opencores/zpu/core/zpu_config.vhd
@@ -12,9 +12,4 @@ package zpu_config is
constant ZPU_Frequency : std_logic_vector(7 downto 0) := x"40";
-- This is the msb address bit. bytes=2^(maxAddrBitIncIO+1)
constant maxAddrBitIncIO : integer := 15;
-
- -- start byte address of stack.
- -- point to top of RAM - 2*words
- constant spStart : std_logic_vector(maxAddrBitIncIO downto 0) := x"3ff8";
-
end zpu_config;
diff --git a/usrp2/opencores/zpu/core/zpu_core.vhd b/usrp2/opencores/zpu/core/zpu_core.vhd
index 2450f14d3..24586b2f6 100644
--- a/usrp2/opencores/zpu/core/zpu_core.vhd
+++ b/usrp2/opencores/zpu/core/zpu_core.vhd
@@ -26,6 +26,7 @@ entity zpu_core is
mem_write : out std_logic_vector(wordSize-1 downto 0);
out_mem_addr : out std_logic_vector(maxAddrBitIncIO downto 0);
mem_writeMask: out std_logic_vector(wordBytes-1 downto 0);
+ stack_start : in std_logic_vector(maxAddrBitIncIO downto 0);
interrupt : in std_logic;
break : out std_logic;
zpu_status : out std_logic_vector(63 downto 0));
@@ -202,7 +203,7 @@ begin
if areset = '1' then
state <= State_Idle;
break <= '0';
- sp <= spStart(maxAddrBitIncIO downto minAddrBit);
+ sp <= stack_start(maxAddrBitIncIO downto minAddrBit);
pc <= (others => '0');
idim_flag <= '0';
diff --git a/usrp2/opencores/zpu/core/zpupkg.vhd b/usrp2/opencores/zpu/core/zpupkg.vhd
index 1a01563b8..eee967a09 100644
--- a/usrp2/opencores/zpu/core/zpupkg.vhd
+++ b/usrp2/opencores/zpu/core/zpupkg.vhd
@@ -73,6 +73,7 @@ package zpupkg is
mem_write : out std_logic_vector(wordSize-1 downto 0);
out_mem_addr : out std_logic_vector(maxAddrBitIncIO downto 0);
mem_writeMask: out std_logic_vector(wordBytes-1 downto 0);
+ stack_start : in std_logic_vector(maxAddrBitIncIO downto 0);
interrupt : in std_logic;
break : out std_logic;
zpu_status : out std_logic_vector(63 downto 0));
diff --git a/usrp2/opencores/zpu/wishbone/zpu_system.vhd b/usrp2/opencores/zpu/wishbone/zpu_system.vhd
index 294651fe2..8af678b6a 100644
--- a/usrp2/opencores/zpu/wishbone/zpu_system.vhd
+++ b/usrp2/opencores/zpu/wishbone/zpu_system.vhd
@@ -51,7 +51,7 @@ entity zpu_system is
-- ZPU Control signals
enable : in std_logic;
interrupt : in std_logic;
-
+ stack_start : in std_logic_vector(maxAddrBitIncIO downto 0);
zpu_status : out std_logic_vector(63 downto 0);
-- wishbone interfaces
@@ -84,6 +84,7 @@ begin
mem_write => mem_write,
out_mem_addr => out_mem_addr,
mem_writeMask => mem_writeMask,
+ stack_start => stack_start,
interrupt => interrupt,
zpu_status => zpu_status,
break => open);
diff --git a/usrp2/opencores/zpu/zpu_top_pkg.vhd b/usrp2/opencores/zpu/zpu_top_pkg.vhd
index 23ff48c39..a158ab9c0 100644
--- a/usrp2/opencores/zpu/zpu_top_pkg.vhd
+++ b/usrp2/opencores/zpu/zpu_top_pkg.vhd
@@ -35,7 +35,7 @@ package zpu_top_pkg is
-- ZPU Control signals
enable : in std_logic;
interrupt : in std_logic;
-
+ stack_start : in std_logic_vector(maxAddrBitIncIO downto 0);
zpu_status : out std_logic_vector(63 downto 0);
-- wishbone interfaces
diff --git a/usrp2/opencores/zpu/zpu_wb_top.vhd b/usrp2/opencores/zpu/zpu_wb_top.vhd
index 48e5ee31d..9735c4b54 100644
--- a/usrp2/opencores/zpu/zpu_wb_top.vhd
+++ b/usrp2/opencores/zpu/zpu_wb_top.vhd
@@ -36,6 +36,7 @@ entity zpu_wb_top is
-- misc zpu signals
interrupt: in std_logic;
+ stack_start: in std_logic_vector(adr_w-1 downto 0);
zpu_status: out std_logic_vector(63 downto 0)
);
@@ -66,6 +67,7 @@ zpu_system0: zpu_system port map(
areset => rst,
enable => enb,
interrupt => interrupt,
+ stack_start => stack_start,
zpu_status => zpu_status,
zpu_wb_i => zpu_wb_i,
zpu_wb_o => zpu_wb_o
diff --git a/usrp2/top/u2_rev3/u2_core.v b/usrp2/top/u2_rev3/u2_core.v
index 97de38a82..66c951638 100644
--- a/usrp2/top/u2_rev3/u2_core.v
+++ b/usrp2/top/u2_rev3/u2_core.v
@@ -306,18 +306,8 @@ module u2_core
// /////////////////////////////////////////////////////////////////////////
// Processor
-// aeMB_core_BE #(.ISIZ(16),.DSIZ(16),.MUL(0),.BSF(1))
-// aeMB (.sys_clk_i(wb_clk), .sys_rst_i(wb_rst),
-// // Instruction Wishbone bus to I-RAM
-// .if_adr(if_adr),
-// .if_dat(if_dat),
-// // Data Wishbone bus to system bus fabric
-// .dwb_we_o(m0_we),.dwb_stb_o(m0_stb),.dwb_dat_o(m0_dat_i),.dwb_adr_o(m0_adr),
-// .dwb_dat_i(m0_dat_o),.dwb_ack_i(m0_ack),.dwb_sel_o(m0_sel),.dwb_cyc_o(m0_cyc),
-// // Interrupts and exceptions
-// .sys_int_i(proc_int),.sys_exc_i(bus_error) );
-
- //assign bus_error = m0_err | m0_rty;
+
+ assign bus_error = m0_err | m0_rty;
wire [63:0] zpu_status;
zpu_wb_top #(.dat_w(dw), .adr_w(aw), .sel_w(sw))
@@ -326,7 +316,7 @@ module u2_core
.we_o(m0_we),.stb_o(m0_stb),.dat_o(m0_dat_i),.adr_o(m0_adr),
.dat_i(m0_dat_o),.ack_i(m0_ack),.sel_o(m0_sel),.cyc_o(m0_cyc),
// Interrupts and exceptions
- .zpu_status(zpu_status), .interrupt(proc_int & 1'b0));
+ .stack_start(16'h3ff8), .zpu_status(zpu_status), .interrupt(proc_int & 1'b0));
// /////////////////////////////////////////////////////////////////////////
// Dual Ported RAM -- D-Port is Slave #0 on main Wishbone
diff --git a/usrp2/top/u2plus/bootloader.rmi b/usrp2/top/u2plus/bootloader.rmi
index 7c15699db..0916adaf7 100644
--- a/usrp2/top/u2plus/bootloader.rmi
+++ b/usrp2/top/u2plus/bootloader.rmi
@@ -1,245 +1,231 @@
-defparam bootram.RAM0.INIT_00=256'h00000000_00000000_00000000_b80801c0_00000000_b808175c_00000000_b8080050;
-defparam bootram.RAM0.INIT_01=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_b8081764;
-defparam bootram.RAM0.INIT_02=256'h3020ffe0_b0000000_30401e70_31a01e98_00000000_00000000_00000000_00000000;
-defparam bootram.RAM0.INIT_03=256'h3021ffe4_e060f800_b0000000_b8000000_30a30000_b9f40668_80000000_b9f400cc;
-defparam bootram.RAM0.INIT_04=256'he8830000_e8601e78_80000000_99fc2000_f8601e78_b8000044_bc030014_f9e10000;
-defparam bootram.RAM0.INIT_05=256'h80000000_99fc1800_30a01e8c_bc030010_30600000_b0000000_30630004_be24ffec;
-defparam bootram.RAM0.INIT_06=256'h30600000_b0000000_3021001c_b60f0008_e9e10000_f060f800_b0000000_30600001;
-defparam bootram.RAM0.INIT_07=256'h80000000_99fc1800_bc03000c_30c0f804_b0000000_30a01e8c_f9e10000_3021ffe4;
-defparam bootram.RAM0.INIT_08=256'h80000000_99fc2000_bc04000c_30a01e90_bc030014_30800000_b0000000_e8601e90;
-defparam bootram.RAM0.INIT_09=256'h06463800_20e01e98_20c01e98_f9e10000_2021ffec_3021001c_b60f0008_e9e10000;
-defparam bootram.RAM0.INIT_0A=256'hb0000000_20c0f800_b0000000_bc92fff4_06463800_20c60004_f8060000_bc720014;
-defparam bootram.RAM0.INIT_0B=256'hb9f415f8_bc92fff4_06463800_20c60004_f8060000_bc720014_06463800_20e0f82c;
-defparam bootram.RAM0.INIT_0C=256'h32630000_20a00000_b9f401c8_20e00000_20c00000_80000000_b9f41778_80000000;
-defparam bootram.RAM0.INIT_0D=256'h20210014_b60f0008_30730000_c9e10000_80000000_b9f415c4_80000000_b9f41780;
-defparam bootram.RAM0.INIT_0E=256'he9e10000_f9610004_fa410010_95608001_fa21000c_f9610008_f9e10000_3021ffec;
-defparam bootram.RAM0.INIT_0F=256'hbc050018_30210014_b62e0000_ea410010_ea21000c_e9610008_940bc001_e9610004;
-defparam bootram.RAM0.INIT_10=256'h3021ff2c_80000000_b60f0008_bc32fff4_16432800_30630001_80000000_10600000;
-defparam bootram.RAM0.INIT_11=256'hb9f4062c_32c1001c_3261004c_f8610028_f9e10000_fac100d0_fa6100cc_3061002c;
-defparam bootram.RAM0.INIT_12=256'h22407fff_e8610024_bc230038_30a01984_10b30000_b9f40da4_10d60000_10b30000;
-defparam bootram.RAM0.INIT_13=256'h30a01984_bc120040_aa430001_30a0194c_e061001c_10a30000_be520034_16439003;
-defparam bootram.RAM0.INIT_14=256'he8e10020_e8c10028_b800ffa8_80000000_b9f406c0_b800ffb4_80000000_b9f406cc;
-defparam bootram.RAM0.INIT_15=256'h80000000_b9f40694_b800ff88_80000000_b9f406a0_30a0194c_80000000_b9f4155c;
-defparam bootram.RAM0.INIT_16=256'hb800ff60_80000000_b9f40678_30a01950_80000000_b9f411e8_30a08000_b0000000;
-defparam bootram.RAM0.INIT_17=256'hbe030020_30a00050_31000001_30e1001c_30c000f7_f9e10000_a46500ff_3021ffe0;
-defparam bootram.RAM0.INIT_18=256'hb810ffe8_30210020_b60f0008_e9e10000_80000000_b9f40330_f081001c_3080005e;
-defparam bootram.RAM0.INIT_19=256'h31000001_b9f40280_f9e10000_30e1001c_30c000f7_30a00050_3021ffe0_308000dc;
-defparam bootram.RAM0.INIT_1A=256'h3021ffdc_30210020_b60f0008_6463001f_3063ffff_a863005e_e9e10000_e061001c;
-defparam bootram.RAM0.INIT_1B=256'h30a0a120_b0000007_9403c001_ac640002_94808001_fac10020_fa61001c_f9e10000;
-defparam bootram.RAM0.INIT_1C=256'hb9f40ea8_80000000_b9f4082c_f800200c_80000000_b9f4fe74_f860200c_306000ff;
-defparam bootram.RAM0.INIT_1D=256'h80000000_b9f4ff6c_80000000_b9f4059c_30a01988_80000000_b9f409ec_80000000;
-defparam bootram.RAM0.INIT_1E=256'h30a00000_b0000030_bc160100_bc130134_a6632000_e8603334_12c30000_be23017c;
-defparam bootram.RAM0.INIT_1F=256'hb0000000_80000000_b9f40558_30a01b04_12c30000_be030068_80000000_b9f41180;
-defparam bootram.RAM0.INIT_20=256'hb9f41094_30a08000_b0000000_30c07c00_b9f40e70_30a00000_b0000030_30e08000;
-defparam bootram.RAM0.INIT_21=256'he9e10000_30600001_10a00000_b9f41244_80000000_b9f40524_30a01b30_80000000;
-defparam bootram.RAM0.INIT_22=256'hb000003f_80000000_b9f404f8_30a01b6c_30210024_b60f0008_eac10020_ea61001c;
-defparam bootram.RAM0.INIT_23=256'h80000000_b9f404d4_30a019f8_12630000_be230024_80000000_b9f410fc_30a00000;
-defparam bootram.RAM0.INIT_24=256'h30a00000_b000003f_30e08000_b0000000_10730000_b810ffb4_80000000_b9f4fd9c;
-defparam bootram.RAM0.INIT_25=256'hb9f40490_30a019bc_80000000_b9f41000_30a08000_b0000000_30c07c00_b9f40ddc;
-defparam bootram.RAM0.INIT_26=256'h80000000_b9f40474_30a01a50_30600001_b810ff70_10b60000_b9f411b0_80000000;
-defparam bootram.RAM0.INIT_27=256'h80000000_b9f40454_30a01ab4_bc230098_80000000_b9f41000_30a00000_b0000018;
-defparam bootram.RAM0.INIT_28=256'h80000000_b9f41048_30a00000_b000003f_80000000_b9f40444_30a0199c_b800fed8;
-defparam bootram.RAM0.INIT_29=256'hb9f4fda4_b800fe9c_80000000_b9f4fcec_80000000_b9f40424_30a019f8_bc230028;
-defparam bootram.RAM0.INIT_2A=256'h30c07c00_b9f40d24_30a00000_b000003f_30e08000_b0000000_b800fe84_10a00000;
-defparam bootram.RAM0.INIT_2B=256'hb9f410f8_80000000_b9f403d8_30a019bc_80000000_b9f40f48_30a08000_b0000000;
-defparam bootram.RAM0.INIT_2C=256'hb9f4fc60_30a00001_b9f4fd4c_80000000_b9f403c0_30a01a7c_b800fe50_10b30000;
-defparam bootram.RAM0.INIT_2D=256'hfa610020_3021ffd4_b800ff40_80000000_b9f410c8_30a00000_b0000018_30a07530;
-defparam bootram.RAM0.INIT_2E=256'hfac10024_30e00001_30c1001c_12e70000_f0c1001c_fae10028_10b30000_a66500ff;
-defparam bootram.RAM0.INIT_2F=256'h10b30000_10f60000_10d70000_10830000_be030030_12c80000_b9f40898_f9e10000;
-defparam bootram.RAM0.INIT_30=256'h10640000_a8830001_6463001f_3063ffff_80000000_b9f407d0_30800001_be76001c;
-defparam bootram.RAM0.INIT_31=256'hfac10024_3021ffcc_3021002c_b60f0008_eae10028_eac10024_ea610020_e9e10000;
-defparam bootram.RAM0.INIT_32=256'hf9e10000_12c80000_12e70000_13250000_13060000_fb210030_fb01002c_fae10028;
-defparam bootram.RAM0.INIT_33=256'h32d6ffff_e0770000_f301001c_30e00002_be76005c_30c1001c_10b90000_fa610020;
-defparam bootram.RAM0.INIT_34=256'hbe33ffcc_32f70001_b9f4089c_30a0000a_12630000_33180001_b9f407f8_f061001d;
-defparam bootram.RAM0.INIT_35=256'heb210030_eb01002c_eae10028_eac10024_ea610020_e9e10000_10730000_10b90000;
-defparam bootram.RAM0.INIT_36=256'h80000000_b9f4f998_f9e10000_3021ffe4_30600001_b810ffe0_30210034_b60f0008;
-defparam bootram.RAM0.INIT_37=256'h12660000_fb21002c_fb010028_fae10024_fa61001c_3021ffd0_80000000_b60f0008;
-defparam bootram.RAM0.INIT_38=256'haa43ffff_12c00000_b810001c_f9e10000_fac10020_13260000_12e70000_13050000;
-defparam bootram.RAM0.INIT_39=256'h10960000_90630060_10b80000_b9f405ec_32730001_bcb2002c_16572001_bc120030;
-defparam bootram.RAM0.INIT_3A=256'he9e10000_10640000_f0130000_14999800_32d60001_be32ffd4_aa43000a_f0730000;
-defparam bootram.RAM0.INIT_3B=256'h3021ffd0_30210030_b60f0008_eb21002c_eb010028_eae10024_eac10020_ea61001c;
-defparam bootram.RAM0.INIT_3C=256'h13260000_12e70000_13050000_12660000_fb21002c_fb010028_fae10024_fa61001c;
-defparam bootram.RAM0.INIT_3D=256'hb9f4051c_32730001_bcb2002c_16572001_12c00000_b8100014_f9e10000_fac10020;
-defparam bootram.RAM0.INIT_3E=256'h14999800_32d60001_be32ffdc_aa43000a_f0730000_10960000_90630060_10b80000;
-defparam bootram.RAM0.INIT_3F=256'heb21002c_eb010028_eae10024_eac10020_ea61001c_e9e10000_10640000_f0130000;
-defparam bootram.RAM1.INIT_00=256'h12e60000_12c50000_fae10024_fac10020_fa61001c_3021ffd8_30210030_b60f0008;
-defparam bootram.RAM1.INIT_01=256'hbe32ffec_aa43000a_f0730000_90630060_10b60000_b9f404b0_12660000_f9e10000;
-defparam bootram.RAM1.INIT_02=256'heae10024_eac10020_ea61001c_e9e10000_10770000_f0130000_3273ffff_32730001;
-defparam bootram.RAM1.INIT_03=256'he9e10000_10a00000_b9f4ff94_f9e10000_3021ffe4_10c50000_30210028_b60f0008;
-defparam bootram.RAM1.INIT_04=256'hb60f0008_e9e10000_80000000_b9f40448_f9e10000_3021ffe4_3021001c_b60f0008;
-defparam bootram.RAM1.INIT_05=256'h3021001c_b60f0008_e9e10000_10a00000_b9f4ffdc_f9e10000_3021ffe4_3021001c;
-defparam bootram.RAM1.INIT_06=256'hbe060024_90c30060_12660000_e0660000_f9e10000_fac10020_fa61001c_3021ffdc;
-defparam bootram.RAM1.INIT_07=256'h10b60000_be26fff0_90c30060_e0730000_32730001_b9f40324_10b60000_12c50000;
-defparam bootram.RAM1.INIT_08=256'hfac1001c_3021ffe0_30210024_b60f0008_10600000_eac10020_ea61001c_e9e10000;
-defparam bootram.RAM1.INIT_09=256'heac1001c_e9e10000_30c0000a_b9f402dc_10b60000_12c50000_b9f4ff9c_f9e10000;
-defparam bootram.RAM1.INIT_0A=256'h10a00000_b9f4ffc0_f9e10000_3021ffe4_10c50000_30210020_b60f0008_10600000;
-defparam bootram.RAM1.INIT_0B=256'h10a00000_b9f4ff48_f9e10000_3021ffe4_10c50000_3021001c_b60f0008_e9e10000;
-defparam bootram.RAM1.INIT_0C=256'he9e10000_30c0000a_b9f40278_f9e10000_3021ffe4_3021001c_b60f0008_e9e10000;
-defparam bootram.RAM1.INIT_0D=256'hb9f40250_f9e10000_10a00000_12c50000_fac1001c_3021ffe0_3021001c_b60f0008;
-defparam bootram.RAM1.INIT_0E=256'hfac1001c_3021ffe0_30210020_b60f0008_eac1001c_e9e10000_10760000_10d60000;
-defparam bootram.RAM1.INIT_0F=256'h30210020_b60f0008_eac1001c_e9e10000_10760000_12c60000_b9f40228_f9e10000;
-defparam bootram.RAM1.INIT_10=256'h94e08001_3021001c_b60f0008_e9e10000_80000000_b9f401b8_f9e10000_3021ffe4;
-defparam bootram.RAM1.INIT_11=256'h80633000_84632000_84c62800_a866ffff_e880f81c_b0000000_9404c001_ac870002;
-defparam bootram.RAM1.INIT_12=256'h9404c001_80843800_ac840002_94808001_a4e70002_f860f81c_b0000000_f860200c;
-defparam bootram.RAM1.INIT_13=256'h88a52000_e880f81c_b0000000_9406c001_acc30002_94608001_80000000_b60f0008;
-defparam bootram.RAM1.INIT_14=256'h9404c001_80841800_ac840002_94808001_a4630002_f8a0f81c_b0000000_f8a0200c;
-defparam bootram.RAM1.INIT_15=256'ha866ffff_e880f820_b0000000_9404c001_ac870002_94e08001_80000000_b60f0008;
-defparam bootram.RAM1.INIT_16=256'h94808001_a4e70002_f860f820_b0000000_f8602020_80633000_84632000_84c62800;
-defparam bootram.RAM1.INIT_17=256'hfae10024_fa61001c_3021ffd4_80000000_b60f0008_9404c001_80843800_ac840002;
-defparam bootram.RAM1.INIT_18=256'hbe060040_90c30060_13050000_12e60000_e0660000_fac10020_f9e10000_fb010028;
-defparam bootram.RAM1.INIT_19=256'h10730000_be120028_16569800_32c70001_b8100014_32600001_be670038_12660000;
-defparam bootram.RAM1.INIT_1A=256'h10730000_3273ffff_32730001_be26ffe4_90c30060_c0779800_10b80000_b9f400cc;
-defparam bootram.RAM1.INIT_1B=256'h3021ffe4_3021002c_b60f0008_eb010028_eae10024_eac10020_ea61001c_e9e10000;
-defparam bootram.RAM1.INIT_1C=256'hf0c51e7c_3021001c_b60f0008_e9e10000_30c0000a_b9f40084_f9e10000_10a00000;
-defparam bootram.RAM1.INIT_1D=256'h80000000_b60f0008_f8653700_64a50405_e4661bac_10c63000_80000000_b60f0008;
-defparam bootram.RAM1.INIT_1E=256'h90c60060_b9f4ffc4_10b30000_e0d31e7c_12600000_f9e10000_fa61001c_3021ffe0;
-defparam bootram.RAM1.INIT_1F=256'he9e10000_bc32ffd8_aa530003_90c60060_b9f4ffbc_32730001_10b30000_e0d31ba8;
-defparam bootram.RAM1.INIT_20=256'h12c60000_f9e10000_fac10020_fa61001c_3021ffdc_30210020_b60f0008_ea61001c;
-defparam bootram.RAM1.INIT_21=256'hfac5000c_bc03fffc_e8650004_30a33700_64730405_12650000_be120030_aa46000a;
-defparam bootram.RAM1.INIT_22=256'hbc32ffd0_aa430001_e0651e7c_30210024_b60f0008_eac10020_ea61001c_e9e10000;
-defparam bootram.RAM1.INIT_23=256'hf9e10000_fac10020_fa61001c_3021ffdc_64730405_b810ffc8_30c0000d_b9f4ffac;
-defparam bootram.RAM1.INIT_24=256'hbc040008_e8830004_30633700_64730405_12650000_be120030_aa46000a_12c60000;
-defparam bootram.RAM1.INIT_25=256'haa430001_e0651e7c_30210024_b60f0008_eac10020_ea61001c_e9e10000_fac3000c;
-defparam bootram.RAM1.INIT_26=256'h30a53700_64a50405_64730405_b810ffc4_80000000_b9f4ff44_30c0000d_be32ffd0;
-defparam bootram.RAM1.INIT_27=256'he8650008_30a53700_64a50405_80000000_b60f0008_e8650010_bc03fffc_e8650008;
-defparam bootram.RAM1.INIT_28=256'h64a50405_80000000_b60f0008_90630060_be24fff8_e8850008_e8650010_bc030014;
-defparam bootram.RAM1.INIT_29=256'h32600001_be230040_e8760008_32c53700_fa61001c_f9e10000_fac10020_3021ffdc;
-defparam bootram.RAM1.INIT_2A=256'hbe03ffe8_e8760008_30a00001_b9f401e0_3060ffff_be120034_aa53012d_b8000010;
-defparam bootram.RAM1.INIT_2B=256'he9e10000_e8760010_3060ffff_be52000c_16539001_3240012b_3273ffff_32730001;
-defparam bootram.RAM1.INIT_2C=256'h32400004_a463000f_e8603324_f8003108_30210024_b60f0008_eac10020_ea61001c;
-defparam bootram.RAM1.INIT_2D=256'ha46300ff_64a30008_e4641bb8_10831800_30600004_10831800_beb20010_16439001;
-defparam bootram.RAM1.INIT_2E=256'ha4a500ff_be070088_80000000_b60f0008_f8603108_30600080_f8a03104_f8603100;
-defparam bootram.RAM1.INIT_2F=256'hf8803110_30800090_f860310c_a0630001_10652800_be23fff8_a4630040_e8603110;
-defparam bootram.RAM1.INIT_30=256'haa470001_10800000_be230058_a4630080_e8603110_bc23fff8_a4630002_e8603110;
-defparam bootram.RAM1.INIT_31=256'h30e7ffff_e860310c_bc23fff8_a4630002_e8603110_f8603110_30600020_be120038;
-defparam bootram.RAM1.INIT_32=256'h30600068_b810ffd0_30600020_be32ffd8_aa470001_30c60001_be07001c_f0660000;
-defparam bootram.RAM1.INIT_33=256'ha4a500ff_10640000_b60f0008_f8603110_30600040_10640000_b60f0008_30800001;
-defparam bootram.RAM1.INIT_34=256'h306000d0_30600090_be27000c_f860310c_10652800_be23fff8_a4630040_e8603110;
-defparam bootram.RAM1.INIT_35=256'h10800000_be23005c_a4630080_e8603110_bc23fff8_a4630002_e8603110_f8603110;
-defparam bootram.RAM1.INIT_36=256'hf8803110_bc120030_aa470001_f860310c_30800010_e0660000_30800001_be070068;
-defparam bootram.RAM1.INIT_37=256'hbe070028_30e7ffff_be23001c_a4630080_e8603110_bc23fff8_a4630002_e8603110;
-defparam bootram.RAM1.INIT_38=256'hb60f0008_f8603110_30600040_10800000_30800050_b810ffd4_b800ffc4_30c60001;
-defparam bootram.RAM1.INIT_39=256'hbc260054_a4c30000_b0008000_e8603324_10640000_b60f0008_30800001_10640000;
-defparam bootram.RAM1.INIT_3A=256'h80000000_10800000_bc660030_e8c01e80_10660000_be650048_bc430054_e8601e80;
-defparam bootram.RAM1.INIT_3B=256'h16443000_30840001_80000000_80000000_80000000_80000000_80000000_80000000;
-defparam bootram.RAM1.INIT_3C=256'ha4630007_e8603324_80000000_b60f0008_bc32ffc8_16432800_30630001_bc32ffdc;
-defparam bootram.RAM1.INIT_3D=256'h16459001_3240005a_3065ffa9_90a50060_b800ff9c_f8801e80_e4831bc4_10631800;
-defparam bootram.RAM1.INIT_3E=256'h3085ffd0_be52000c_16459001_32400039_a46300ff_3065ffc9_a46300ff_be520024;
-defparam bootram.RAM1.INIT_3F=256'hf9e10000_fb610034_13250000_fb21002c_3021ffc8_80000000_b60f0008_a46400ff;
-defparam bootram.RAM2.INIT_00=256'haa43003a_13660000_e0790000_fb410030_fb010028_fae10024_fac10020_fa61001c;
-defparam bootram.RAM2.INIT_01=256'heb010028_eae10024_eac10020_ea61001c_e9e10000_10650000_30a0ffff_be120034;
-defparam bootram.RAM2.INIT_02=256'hc085c800_30a00001_e8c01e84_30210038_b60f0008_eb610034_eb410030_eb21002c;
-defparam bootram.RAM2.INIT_03=256'hb810ffac_bc23ffe4_a4630044_c0662000_a4a300ff_be04001c_90840060_30650001;
-defparam bootram.RAM2.INIT_04=256'h12761800_66c30404_b9f4ff1c_e0b90002_80000000_b9f4ff28_e0b90001_30a0fffe;
-defparam bootram.RAM2.INIT_05=256'he0b90005_30a0fffd_be38ff74_93040060_e083000b_10791800_fa7b0004_10739800;
-defparam bootram.RAM2.INIT_06=256'h66c3040c_b9f4fed8_e0b90004_66e30404_b9f4fee4_e0b90003_13530000_b9f4fef0;
-defparam bootram.RAM2.INIT_07=256'he0b90007_fafb0008_12f7b000_12d61800_12d61800_b9f4fec8_64630408_e0b90006;
-defparam bootram.RAM2.INIT_08=256'hbe130060_f07b0000_1063b000_66c30404_b9f4fea4_e0b90008_80000000_b9f4feb0;
-defparam bootram.RAM2.INIT_09=256'hb9f4fe74_c0b6c800_a6d600ff_32d60009_12d8c000_ea7b000c_13580000_10f30000;
-defparam bootram.RAM2.INIT_0A=256'he8fb0004_ea7b000c_d0789800_1063b800_66e30404_b9f4fe68_e0b60001_12d9b000;
-defparam bootram.RAM2.INIT_0B=256'headb0008_a74300ff_be52ffb8_1647c003_107a1800_a70400ff_c073c000_30980001;
-defparam bootram.RAM2.INIT_0C=256'h107a1800_12c7b000_10632000_e0b70009_12f9b800_64760008_12e73800_e09b0000;
-defparam bootram.RAM2.INIT_0D=256'ha6d600ff_1063c000_16d60000_67030404_b9f4fe04_e0b7000a_12d61800_b9f4fe10;
-defparam bootram.RAM2.INIT_0E=256'ha4630100_e8603b10_10a00000_b810fe58_30a0fffb_be32fe60_1643b000_a46300ff;
-defparam bootram.RAM2.INIT_0F=256'ha4a500ff_80884800_a1292000_a508007f_a5290600_80000000_b60f0008_bc23fff8;
-defparam bootram.RAM2.INIT_10=256'ha0840100_f8603b18_a46600ff_f8803b10_f8e03b00_bc23fff8_a4630100_e8603b10;
-defparam bootram.RAM2.INIT_11=256'hb60f0008_e8603b00_bc23fff8_a4630100_e8603b10_10650000_be050018_f8803b10;
-defparam bootram.RAM2.INIT_12=256'h31200400_31000008_10a00000_f9e10000_3021ffe4_10e60000_10c00000_80000000;
-defparam bootram.RAM2.INIT_13=256'h3021ffc4_3021001c_b60f0008_e9e10000_80000000_b9f4ff84_f8603b14_30600001;
-defparam bootram.RAM2.INIT_14=256'hb9f4ff3c_fae10034_13060000_f9e10000_fb010038_fa61002c_12c50000_fac10030;
-defparam bootram.RAM2.INIT_15=256'hfac03b00_f8603b04_3060000b_66d60408_f8603b10_f8003b18_30600400_12670000;
-defparam bootram.RAM2.INIT_16=256'h80000000_b9f4ff00_f8603b10_30600528_f8803b10_30800428_f8603b18_30600001;
-defparam bootram.RAM2.INIT_17=256'hf8803b10_30800500_f8603b10_30600400_3261001c_12e00000_12d30000_be18009c;
-defparam bootram.RAM2.INIT_18=256'he8803b04_f8610020_e8603b08_f881001c_14b7c000_e8803b0c_80000000_b9f4fed8;
-defparam bootram.RAM2.INIT_19=256'h30a00010_10800000_beb20034_16459003_22400010_f8610028_e8603b00_f8810024;
-defparam bootram.RAM2.INIT_1A=256'hbeb20020_1658b803_12f72800_bc32fff0_16442800_30840001_d0762000_c0732000;
-defparam bootram.RAM2.INIT_1B=256'hf8003b18_12d62800_be52ff7c_1658b803_12f72800_bc25ffd8_b800ff8c_12d62800;
-defparam bootram.RAM2.INIT_1C=256'hb0009f00_3021003c_b60f0008_eb010038_eae10034_eac10030_ea61002c_e9e10000;
-defparam bootram.RAM2.INIT_1D=256'h31200400_b9f4fe34_f9e10000_31000020_30c00001_30a00001_3021ffe4_30e00000;
-defparam bootram.RAM2.INIT_1E=256'h3021ffe4_e860f828_b0000000_3021001c_b60f0008_a463ffff_b00000ff_e9e10000;
-defparam bootram.RAM2.INIT_1F=256'h64830008_80000000_b9f4ffa8_3021001c_b60f0008_e9e10000_bc030010_f9e10000;
-defparam bootram.RAM2.INIT_20=256'h16439001_32400015_80000000_b9f40330_a46300ff_be120010_aa440020_a48400ff;
-defparam bootram.RAM2.INIT_21=256'hb0000000_b800ffb0_f860f828_b0000000_bc52ffe4_16439001_32400018_bcb2fff0;
-defparam bootram.RAM2.INIT_22=256'hb9f4ff40_3021001c_b60f0008_e9e10000_bc030010_f9e10000_3021ffe4_e860f824;
-defparam bootram.RAM2.INIT_23=256'h80000000_b9f402c8_a4a300ff_be120010_aa440020_a48400ff_64830008_80000000;
-defparam bootram.RAM2.INIT_24=256'hb0000000_e0651bbe_bc52ffe4_16459001_32400018_bcb2fff0_16459001_32400015;
-defparam bootram.RAM2.INIT_25=256'h10c50000_12c00000_fac1001c_3021ffe0_b800ffa4_f860f824_b0000000_f8a0f828;
-defparam bootram.RAM2.INIT_26=256'heac1001c_e9e10000_80000000_99fcb000_30e00024_b9f40334_f9e10000_10b60000;
-defparam bootram.RAM2.INIT_27=256'hb810001c_30e1001c_b9f4fd88_f9e10000_30c00040_3021ffa4_30210020_b60f0008;
-defparam bootram.RAM2.INIT_28=256'he063001c_10612800_10600000_be520044_16459001_3240003e_30a50001_10a00000;
-defparam bootram.RAM2.INIT_29=256'haa440099_e083001c_10612800_30a50001_bc32ffd8_aa4300aa_bc12ffe0_aa4300ff;
-defparam bootram.RAM2.INIT_2A=256'h3021005c_b60f0008_e9e10000_3021005c_b60f0008_e9e10000_30600001_be32ffc8;
-defparam bootram.RAM2.INIT_2B=256'h10b60000_30c00006_b9f4fd08_f9e10000_10f60000_32c1001c_fac10028_3021ffd4;
-defparam bootram.RAM2.INIT_2C=256'heac10028_e9e10000_a884ffff_80841800_14830000_30e00006_b9f401f8_30c01bd8;
-defparam bootram.RAM2.INIT_2D=256'h65040403_64e40003_64a40007_64c40005_e0803a03_3021002c_b60f0008_6464001f;
-defparam bootram.RAM2.INIT_2E=256'ha4a50008_80e73000_90a40041_a4e70004_80c62800_a4c60002_64640407_65240405;
-defparam bootram.RAM2.INIT_2F=256'h81294000_a5290040_81082000_a5080020_80842800_a4840010_80a53800_10842000;
-defparam bootram.RAM2.INIT_30=256'h64e50403_64c50003_64650007_64850005_a4a500ff_a46300ff_b60f0008_80634800;
-defparam bootram.RAM2.INIT_31=256'ha4630008_80c62000_90650041_a4c60004_80841800_a4840002_65250407_65050405;
-defparam bootram.RAM2.INIT_32=256'h81083800_a5080040_80e72800_a4e70020_80a51800_a4a50010_80633000_10a52800;
-defparam bootram.RAM2.INIT_33=256'hb00000ff_fac1001c_3021ffe0_80000000_b60f0008_f9203a00_a52900ff_81294000;
-defparam bootram.RAM2.INIT_34=256'h30a0ffaa_b9f4ff74_30a0ffff_b9f4ff7c_30a0ffff_b9f4ff84_f9e10000_a6c5ffff;
-defparam bootram.RAM2.INIT_35=256'h30a00061_b9f4ff54_30a00032_b9f4ff5c_a2d60000_b0000b00_30a0ff99_b9f4ff6c;
-defparam bootram.RAM2.INIT_36=256'h30a0ff81_b9f4ff34_30a00032_b9f4ff3c_10b60000_b9f4ff44_64b60008_b9f4ff4c;
-defparam bootram.RAM2.INIT_37=256'h30a0ffa1_b9f4ff14_30a00030_b9f4ff1c_64b60010_b9f4ff24_30a0000b_b9f4ff2c;
-defparam bootram.RAM2.INIT_38=256'h10a00000_b9f4fef4_30a00020_b9f4fefc_30a0000e_b9f4ff04_10a00000_b9f4ff0c;
-defparam bootram.RAM2.INIT_39=256'h30210020_b60f0008_eac1001c_e9e10000_10a00000_b9f4fee4_30a00020_b9f4feec;
-defparam bootram.RAM2.INIT_3A=256'hb6110000_30a0ffff_b9f4e91c_80000000_b9f4f220_f9e10000_3021ffe4_30a01be0;
-defparam bootram.RAM2.INIT_3B=256'h22400003_80000000_b60f0008_80000000_b60f0008_80000000_b6910000_80000000;
-defparam bootram.RAM2.INIT_3C=256'h16432000_e8660000_e8850000_bc230050_a4630003_80653000_beb2005c_16479003;
-defparam bootram.RAM2.INIT_3D=256'h30e7ffff_30c60004_be52ffe0_16479003_22400003_30a50004_30e7fffc_bc320040;
-defparam bootram.RAM2.INIT_3E=256'h30c60001_30a50001_be320020_16434000_e0660000_e1050000_bc120028_aa47ffff;
-defparam bootram.RAM2.INIT_3F=256'h2240000f_14634000_b60f0008_10600000_b60f0008_bc32ffe0_aa47ffff_30e7ffff;
-defparam bootram.RAM3.INIT_00=256'hbc070024_11050000_be030034_a4630003_80662800_10850000_beb20018_16479003;
-defparam bootram.RAM3.INIT_01=256'h30c60001_be32fff0_16474000_31080001_f0680000_e0660000_10e72000_11040000;
-defparam bootram.RAM3.INIT_02=256'he8860008_f8680004_e8660004_f8880000_30e7fff0_e8860000_10650000_b60f0008;
-defparam bootram.RAM3.INIT_03=256'h31080010_be52ffd0_16479003_2240000f_f868000c_30c60010_e866000c_f8880008;
-defparam bootram.RAM3.INIT_04=256'h22400003_d8682000_30e7fffc_c8662000_10800000_bcb2002c_16479003_22400003;
-defparam bootram.RAM3.INIT_05=256'he860193c_10880000_b810ff68_11044000_10c43000_30840004_be52ffec_16479003;
-defparam bootram.RAM3.INIT_06=256'h3273fffc_99fc1800_bc120018_aa43ffff_3260193c_f9e10000_fa61001c_3021ffe0;
-defparam bootram.RAM3.INIT_07=256'h3021fff8_30210020_b60f0008_ea61001c_e9e10000_bc32fff0_aa43ffff_e8730000;
-defparam bootram.RAM3.INIT_08=256'h30210008_b60f0008_c9e00800_80000000_b9f4ffb0_80000000_b9f4e7d4_d9e00800;
-defparam bootram.RAM3.INIT_09=256'hffffffff_30210008_b60f0008_c9e00800_80000000_b9f4e74c_d9e00800_3021fff8;
-defparam bootram.RAM3.INIT_0A=256'h696d6167_61696e20_523a206d_4552524f_4f4b0000_00000000_ffffffff_00000000;
-defparam bootram.RAM3.INIT_0B=256'h64206d6f_206c6f61_49484558_20696e20_4261636b_65642120_7475726e_65207265;
-defparam bootram.RAM3.INIT_0C=256'h53746172_720a0000_6f616465_6f6f746c_322b2062_55535250_4e4f4b00_64652e00;
-defparam bootram.RAM3.INIT_0D=256'h4552524f_2e000000_6d6f6465_61666520_696e2073_50322b20_20555352_74696e67;
-defparam bootram.RAM3.INIT_0E=256'h20546869_72616d21_70726f67_61696e20_6f6d206d_6e206672_65747572_523a2072;
-defparam bootram.RAM3.INIT_0F=256'h523a206e_4552524f_6e210000_61707065_65722068_206e6576_6f756c64_73207368;
-defparam bootram.RAM3.INIT_10=256'h626c652e_61696c61_65206176_696d6167_61726520_69726d77_66652066_6f207361;
-defparam bootram.RAM3.INIT_11=256'h6c6f6164_20746f20_66726565_65656c20_6b2e2046_62726963_6d206120_20492061;
-defparam bootram.RAM3.INIT_12=256'h2076616c_20666f72_6b696e67_43686563_2e000000_2052414d_5820746f_20494845;
-defparam bootram.RAM3.INIT_13=256'h56616c69_2e2e2e00_6d616765_47412069_6e204650_6374696f_726f6475_69642070;
-defparam bootram.RAM3.INIT_14=256'h642e2041_666f756e_61676520_4120696d_20465047_74696f6e_6f647563_64207072;
-defparam bootram.RAM3.INIT_15=256'h2070726f_616c6964_4e6f2076_742e0000_20626f6f_6720746f_7074696e_7474656d;
-defparam bootram.RAM3.INIT_16=256'h74656d70_2e0a4174_6f756e64_67652066_20696d61_46504741_696f6e20_64756374;
-defparam bootram.RAM3.INIT_17=256'h77617265_6669726d_696f6e20_64756374_2070726f_6c6f6164_20746f20_74696e67;
-defparam bootram.RAM3.INIT_18=256'h6520666f_6d776172_20666972_74696f6e_6f647563_64207072_56616c69_2e2e2e00;
-defparam bootram.RAM3.INIT_19=256'h6e206672_65747572_523a2052_4552524f_2e2e2e00_64696e67_204c6f61_756e642e;
-defparam bootram.RAM3.INIT_1A=256'h206e6576_6f756c64_73207368_20546869_72616d21_70726f67_61696e20_6f6d206d;
-defparam bootram.RAM3.INIT_1B=256'h696f6e20_64756374_2070726f_616c6964_4e6f2076_6e210000_61707065_65722068;
-defparam bootram.RAM3.INIT_1C=256'h6669726d_61666520_6e672073_54727969_6e642e20_20666f75_77617265_6669726d;
-defparam bootram.RAM3.INIT_1D=256'h0018000f_ffff0031_01b200d9_05160364_14580a2c_05050400_2e2e2e00_77617265;
-defparam bootram.RAM3.INIT_1E=256'hb8080000_b0000000_10101200_06820594_09c407d0_13880d05_00002710_000b0000;
-defparam bootram.RAM3.INIT_1F=256'h20202020_28282820_20202828_20202020_00202020_00000000_6f72740a_0a0a6162;
-defparam bootram.RAM3.INIT_20=256'h10040404_10101010_10101010_10101010_20881010_20202020_20202020_20202020;
-defparam bootram.RAM3.INIT_21=256'h01010101_01010101_01010101_41414141_10104141_10101010_04040410_04040404;
-defparam bootram.RAM3.INIT_22=256'h02020202_02020202_02020202_42424242_10104242_10101010_01010101_01010101;
-defparam bootram.RAM3.INIT_23=256'h00000000_00000000_00000000_00000000_20000000_10101010_02020202_02020202;
+defparam bootram.RAM0.INIT_00=256'h00000000_00000000_00000000_a7fc0400_3a0b0b0b_0bb1fc0c_80700b0b_0b0b0b0b;
+defparam bootram.RAM0.INIT_01=256'h00000000_00000000_00000000_800c0400_880c840c_0ba8b92d_88080b0b_80088408;
+defparam bootram.RAM0.INIT_02=256'h00000000_00000000_04000000_ffff0652_832b2a83_81058205_72830609_71fd0608;
+defparam bootram.RAM0.INIT_03=256'h83a70400_0b0b0b0b_7383ffff_2b2b0906_05820583_83060981_83ffff73_71fd0608;
+defparam bootram.RAM0.INIT_04=256'h00000000_00000000_53510400_070a8106_73097306_09060906_72057373_72098105;
+defparam bootram.RAM0.INIT_05=256'h00000000_00000000_00000000_00000000_00000000_51040000_732e0753_72722473;
+defparam bootram.RAM0.INIT_06=256'h00000000_53510400_81065151_0a31050a_0a720a10_30720a10_71068106_71737109;
+defparam bootram.RAM0.INIT_07=256'h00000000_00000000_00000000_00000000_00000000_51040000_732e0753_72722673;
+defparam bootram.RAM0.INIT_08=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM0.INIT_09=256'h00000000_00000000_00000000_00000000_00000000_00000000_c3040000_0b0b0b88;
+defparam bootram.RAM0.INIT_0A=256'h00000000_00000000_00000000_00000000_00000000_00000000_0a535104_720a722b;
+defparam bootram.RAM0.INIT_0B=256'h00000000_00000000_00000000_00000000_05040000_0b0b88a6_0981050b_72729f06;
+defparam bootram.RAM0.INIT_0C=256'h00000000_00000000_04000000_06075351_8106ff05_0974090a_739f062a_72722aff;
+defparam bootram.RAM0.INIT_0D=256'h00000000_0c515104_0772fc06_832b0b2b_81058205_73830609_020d0406_71715351;
+defparam bootram.RAM0.INIT_0E=256'h00000000_00000000_00000000_51040000_0a810653_81050906_72050970_72098105;
+defparam bootram.RAM0.INIT_0F=256'h00000000_00000000_00000000_53510400_0a098106_81050906_72050970_72098105;
+defparam bootram.RAM0.INIT_10=256'h00000000_00000000_00000000_00000000_00000000_00000000_52040000_71098105;
+defparam bootram.RAM0.INIT_11=256'h00000000_00000000_00000000_00000000_00000000_04000000_05055351_72720981;
+defparam bootram.RAM0.INIT_12=256'h00000000_00000000_00000000_00000000_00000000_07535104_73730906_72097206;
+defparam bootram.RAM0.INIT_13=256'h00000000_00000000_04000000_81ff0652_1010102a_81058305_72830609_71fc0608;
+defparam bootram.RAM0.INIT_14=256'h00000000_00000000_88a90400_060b0b0b_10100508_e8738306_0b0b0bb1_71fc0608;
+defparam bootram.RAM0.INIT_15=256'h00000000_0c510400_0c840c80_80085688_f32d5050_0b0b0ba1_88087575_80088408;
+defparam bootram.RAM0.INIT_16=256'h00000000_0c510400_0c840c80_80085688_a52d5050_0b0b0ba3_88087575_80088408;
+defparam bootram.RAM0.INIT_17=256'h04000000_07515151_05ff0506_73097274_70547106_8106ff05_0509060a_72097081;
+defparam bootram.RAM0.INIT_18=256'h51040000_06075151_7405ff05_06730972_05705471_098106ff_0509060a_72097081;
+defparam bootram.RAM0.INIT_19=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_05ff0504;
+defparam bootram.RAM0.INIT_1A=256'h00000000_00000000_00000000_00000000_00000000_51040000_0bb1f80c_810b0b0b;
+defparam bootram.RAM0.INIT_1B=256'h00000000_00000000_00000000_00000000_00000000_00000000_04000000_71810552;
+defparam bootram.RAM0.INIT_1C=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM0.INIT_1D=256'h00000000_00000000_00000000_00000000_00000000_04000000_10100552_02840572;
+defparam bootram.RAM0.INIT_1E=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM0.INIT_1F=256'h00000000_00000000_00000000_00000000_00000000_020d0400_05715351_717105ff;
+defparam bootram.RAM0.INIT_20=256'h10101010_10101010_10101010_10101010_10101010_10101010_d93f0410_81f33fa1;
+defparam bootram.RAM0.INIT_21=256'h060c5151_2b0772fc_05101010_09810583_06738306_047381ff_10105351_10101010;
+defparam bootram.RAM0.INIT_22=256'h535104b1_ed385151_100a5372_1052720a_72060571_06ff0509_72807281_043c0472;
+defparam bootram.RAM0.INIT_23=256'hcc0c8290_a0800bb9_b9c80c82_0b0b0b0b_38838080_08822eb9_a138b1fc_f808802e;
+defparam bootram.RAM0.INIT_24=256'h80808480_b9cc0cf8_8082800b_c80cf880_0b0b0bb9_8080a40b_0c04f880_800bb9d0;
+defparam bootram.RAM0.INIT_25=256'h0baa880b_cc0c0b0b_80940bb9_0c80c0a8_0b0bb9c8_808c0b0b_0480c0a8_0bb9d00c;
+defparam bootram.RAM0.INIT_26=256'hb2840c70_92388412_5270802e_08700852_a338b284_d4335170_ff3d0db9_b9d00c04;
+defparam bootram.RAM0.INIT_27=256'hc408802e_0b0b0bb9_04803d0d_833d0d04_0bb9d434_70f03881_70085252_2db28408;
+defparam bootram.RAM0.INIT_28=256'hf5e23f82_510b0b0b_0b0bb9c4_3d0d040b_06853882_802e0981_0b0b800b_8e380b0b;
+defparam bootram.RAM0.INIT_29=256'h518bdc3f_d0055273_3fb23dfe_525486b3_59923d70_3dfee005_d03d0db2_3d0d0404;
+defparam bootram.RAM0.INIT_2A=256'h3d335473_519e3986_8e3faa8c_5273519c_38765378_ff74278f_775481ff_8008b238;
+defparam bootram.RAM0.INIT_2B=256'hb039803d_85b13fff_39aac451_aa905184_3f91f53f_8c5185bf_068f38aa_812e0981;
+defparam bootram.RAM0.INIT_2C=256'h0ca78851_0b81a08c_3d0d81ff_3d0d04fc_51f63982_380bff11_70ff2e87_0dff1351;
+defparam bootram.RAM0.INIT_2D=256'h81ff0655_ee3f8008_84f53f83_3faac851_f43f86e9_85f43f8e_81a08c0c_dd3f800b;
+defparam bootram.RAM0.INIT_2E=256'h81fc8080_5184d03f_c338aaf4_51547380_70810651_08708d2a_3f81c6b4_805182ed;
+defparam bootram.RAM0.INIT_2F=256'h8ebe3f90_fc808051_ffff5281_80805380_82c33f82_a6388151_8008802e_5190d43f;
+defparam bootram.RAM0.INIT_30=256'ha851848b_74b238ac_3ffe8d3f_d0518497_3f8a39ab_735191b0_5184a43f_e33fab94;
+defparam bootram.RAM0.INIT_31=256'hfec03fb0_3f82ac51_815181f9_5183f83f_9938acd4_8008802e_518fbf3f_3fb0800a;
+defparam bootram.RAM0.INIT_32=256'h83cd3f82_38addc51_08802eaa_8fe53f80_98800a51_5183e03f_f73fad8c_800a5190;
+defparam bootram.RAM0.INIT_33=256'h3faeac51_853f8fe8_82ac51fe_5183b83f_cf3fae88_800a518d_ffff5298_80805380;
+defparam bootram.RAM0.INIT_34=256'h5380ffff_38828080_08802eb5_80085480_518fa83f_81fc8080_5183a43f_ba39aee8;
+defparam bootram.RAM0.INIT_35=256'hee3f82ac_ab945182_3f8fad3f_ac51fdca_82fd3f82_3fae8851_80518d94_5281fc80;
+defparam bootram.RAM0.INIT_36=256'h04f83d0d_0c863d0d_cf3f7380_82d93ffc_39abd051_3f81548a_80518ff4_51fdbb3f;
+defparam bootram.RAM0.INIT_37=256'h70810558_8a3d3476_17575473_b7387581_54807425_74ff1656_5a575758_7a7c7f7f;
+defparam bootram.RAM0.INIT_38=256'h8a518790_81ff0654_e23f8008_ff065185_05527781_538a3dfc_a1053482_33028405;
+defparam bootram.RAM0.INIT_39=256'h748338dc_5580de56_02a30533_04fa3d0d_0c8a3d0d_81547380_8538c139_3f73802e;
+defparam bootram.RAM0.INIT_3A=256'h7c5702ab_04f93d0d_3f883d0d_d051ff89_81f75280_3dfc0553_34815488_5675883d;
+defparam bootram.RAM0.INIT_3B=256'h56547380_81ff0670_823f8008_70525685_02a70533_3dfc0552_34815389_0533893d;
+defparam bootram.RAM0.INIT_3C=256'h83388155_5473802e_ff067056_3f800881_755183c5_76537b52_77259738_2e9e3880;
+defparam bootram.RAM0.INIT_3D=256'h883d3356_a03f800b_80d051ff_5381f752_883dfc05_3d0d8154_3d0d04fa_74800c89;
+defparam bootram.RAM0.INIT_3E=256'h81e33f72_53538051_3d0d7470_3d0d04fe_75800c88_83388156_2e098106_567480de;
+defparam bootram.RAM0.INIT_3F=256'h7481ff06_90388115_5472802e_81ff0654_56743370_0d777956_0d04fb3d_800c843d;
+defparam bootram.RAM1.INIT_00=256'h8a527251_5253cb3f_74765370_04fe3d0d_0c873d0d_39800b80_81bb3fe5_53765255;
+defparam bootram.RAM1.INIT_01=256'h78705555_fc3d0d76_833d0d04_8051de3f_3d0d7352_3d0d04ff_0b800c84_819f3f80;
+defparam bootram.RAM1.INIT_02=256'h38807334_098106e7_52718a2e_0881ff06_08733480_81b23f80_13537451_55843981;
+defparam bootram.RAM1.INIT_03=256'h33b28812_51028f05_803d0d72_833d0d04_8051c93f_3d0d7352_3d0d04ff_73800c86;
+defparam bootram.RAM1.INIT_04=256'h0d04fe3d_5351833d_7022720c_10afa405_ce800575_73a02981_04ff3d0d_34823d0d;
+defparam bootram.RAM1.INIT_05=256'h38843d0d_827325e7_3f811353_527251d1_b28c1333_7251c93f_88133352_0d8053b2;
+defparam bootram.RAM1.INIT_06=256'h388d5273_09810687_5372812e_b2881433_81069438_748a2e09_76785654_04fc3d0d;
+defparam bootram.RAM1.INIT_07=256'hff3d0d73_863d0d04_748c150c_802ef838_14085372_80055484_a02981ce_51df3f73;
+defparam bootram.RAM1.INIT_08=256'h800b81c2_04ff3d0d_0c833d0d_90120880_802ef838_12085170_80055288_a02981ce;
+defparam bootram.RAM1.INIT_09=256'h0681c280_227081ff_b2900570_84517010_71258338_06515184_a408708f_880c81c6;
+defparam bootram.RAM1.INIT_0A=256'h05970533_76780288_04fd3d0d_0c833d0d_0b81c288_51518180_81c2840c_0c70882a;
+defparam bootram.RAM1.INIT_0B=256'h10810781_70f13872_06515151_862a7081_c2900870_81863881_5171802e_55535481;
+defparam bootram.RAM1.INIT_0C=256'h90087087_f13881c2_51515170_2a708106_90087081_900c81c2_900b81c2_c28c0c81;
+defparam bootram.RAM1.INIT_0D=256'h38a05170_71812e83_3880e851_71802eb1_802eba38_51515170_70813251_2a708106;
+defparam bootram.RAM1.INIT_0E=256'h81055634_51707470_81c28c08_5170f138_81065151_70812a70_81c29008_81c2900c;
+defparam bootram.RAM1.INIT_0F=256'h02880597_3d0d7678_3d0d04fd_70800c85_81c2900c_3980c00b_39815188_ff1252cc;
+defparam bootram.RAM1.INIT_10=256'hd0517180_c28c0c81_38721081_515170f1_70810651_0870862a_5481c290_05335553;
+defparam bootram.RAM1.INIT_11=256'hc2900870_70f13881_06515151_812a7081_c2900870_c2900c81_90517081_2e843881;
+defparam bootram.RAM1.INIT_12=256'h8c0c80d0_733381c2_2e80c538_cf387180_70802e80_51515151_06708132_872a7081;
+defparam bootram.RAM1.INIT_13=256'h3881c290_515170f1_70810651_0870812a_0c81c290_7081c290_83389051_5171812e;
+defparam bootram.RAM1.INIT_14=256'h81518a39_54ffb739_14ff1353_2e8e3881_51517080_81325151_70810670_0870872a;
+defparam bootram.RAM1.INIT_15=256'h24a638b2_52528071_81c6a408_ff3d0d73_853d0d04_5170800c_c2900c80_80c00b81;
+defparam bootram.RAM1.INIT_16=256'h7151ff11_72258938_0c515180_1122b29c_8e06b2a0_a4087010_923881c6_9c088025;
+defparam bootram.RAM1.INIT_17=256'h269638c9_527180da_ff065152_a9117081_8f0533ff_ff3d0d02_833d0d04_5170fb38;
+defparam bootram.RAM1.INIT_18=256'h3d0d797b_3d0d04f9_70800c83_ff065151_d0127081_b9268938_06515171_127081ff;
+defparam bootram.RAM1.INIT_19=256'haa387281_5371782e_81173353_ef38810b_09810682_5371ba2e_335358ff_58568076;
+defparam bootram.RAM1.INIT_1A=256'hbd387216_71802e82_53515452_06515151_337080c4_33afd511_06721970_147081ff;
+defparam bootram.RAM1.INIT_1B=256'h3f800881_5252feec_06821733_842b9ff0_fb3f8008_163351fe_71d83881_70335152;
+defparam bootram.RAM1.INIT_1C=256'hcb3f8008_163351fe_828a3883_54fd5374_11335753_7010178b_7084190c_ff067205;
+defparam bootram.RAM1.INIT_1D=256'h53fea93f_85173352_80067305_882b83fe_bb3f8008_335253fe_80068417_8c2bbfe0;
+defparam bootram.RAM1.INIT_1E=256'h163351fe_88180c87_ff067305_3f800881_5253fe98_05861733_9ff00673_8008842b;
+defparam bootram.RAM1.INIT_1F=256'hd2387410_74742780_52717734_3f800812_5252fdf8_06881733_842b9ff0_873f8008;
+defparam bootram.RAM1.INIT_20=256'h842b9ff0_cf3f8008_565152fd_52335552_70708105_08177119_ff068c19_89057081;
+defparam bootram.RAM1.INIT_21=256'h197081ff_81ff0681_33701a70_17081570_7274348c_80081353_53fdc13f_06723352;
+defparam bootram.RAM1.INIT_22=256'h05547305_0571882a_08783372_17088818_ffb03884_17087526_51515284_065a525b;
+defparam bootram.RAM1.INIT_23=256'h068a1533_842b9ff0_f33f8008_515354fc_3356545b_101a8911_81ff0673_19703070;
+defparam bootram.RAM1.INIT_24=256'h83398053_8539fe53_81068938_77722e09_5152fb53_7081ff06_3f800812_5252fce4;
+defparam bootram.RAM1.INIT_25=256'h0d04fe3d_f138823d_51515170_2a708106_90087088_3d0d81d6_3d0d0480_72800c89;
+defparam bootram.RAM1.INIT_26=256'h81065151_70882a70_81d69008_80075353_060780c0_067a8c80_337880ff_0d029305;
+defparam bootram.RAM1.INIT_27=256'h900c7251_800781d6_980c7182_ff0681d6_900c7581_0c7181d6_7681d680_5170f138;
+defparam bootram.RAM1.INIT_28=256'h0c843d0d_08517080_3881d680_515170f1_70810651_0870882a_3881d690_72802e96;
+defparam bootram.RAM1.INIT_29=256'hf33d0d60_863d0d04_51ff873f_53805280_55885480_940c8880_810b81d6_04fc3d0d;
+defparam bootram.RAM1.INIT_2A=256'h800c810b_882b81d6_d6840c7f_0c8b0b81_0b81d690_980c8880_800b81d6_59fee43f;
+defparam bootram.RAM1.INIT_2B=256'h80de3888_58777927_3f615780_900cfeb3_a80b81d6_d6900c8a_88a80b81_81d6980c;
+defparam bootram.RAM1.INIT_2C=256'h84085d81_085c81d6_5b81d688_81d68c08_0cfe983f_0b81d690_900c8a80_800b81d6;
+defparam bootram.RAM1.INIT_2D=256'h1a547333_279c3874_80557476_83387356_56737627_31555a90_8b3d7979_d680085e;
+defparam bootram.RAM1.INIT_2E=256'h800b81d6_58ff9e39_e1397518_3f811555_b05183e3_741852af_59347653_77708105;
+defparam bootram.RAM1.INIT_2F=256'h57557417_84059d05_c73f8002_526851fe_545780c0_0d883d70_0d04ea3d_980c8f3d;
+defparam bootram.RAM1.INIT_30=256'h2e098106_54738199_16703351_06943874_aa2e0981_9d387381_7381ff2e_70335154;
+defparam bootram.RAM1.INIT_31=256'h70545486_3d0d863d_3d0d04f9_73800c98_d1388054_55be7527_8b398115_85388154;
+defparam bootram.RAM1.INIT_32=256'h5574800c_06833881_752e0981_9e3f8008_52735189_8653afb8_f73f8055_527951fd;
+defparam bootram.RAM1.INIT_33=256'h832a8406_872a0771_2a820671_05337085_3d0d0297_940c04fd_810b81a0_893d0d04;
+defparam bootram.RAM1.INIT_34=256'h2b80c006_ff067685_07077081_a0067173_0674832b_07731090_06717307_72812a88;
+defparam bootram.RAM1.INIT_35=256'hfe3d0d74_853d0d04_52555552_52535155_d4800c51_81ff0681_872b0770_70720778;
+defparam bootram.RAM1.INIT_36=256'h51ff8c3f_923f8199_81aa51ff_51ff983f_9e3f81ff_81ff51ff_d00a0753_d00a0681;
+defparam bootram.RAM1.INIT_37=256'hfeed3fb2_81ff0651_fef53f72_ff065252_882a7081_ff813f72_3f80e151_b251ff87;
+defparam bootram.RAM1.INIT_38=256'h3fb051fe_5253fecf_7081ff06_3f72902a_2a51fedb_e23f7298_818151fe_51fee83f;
+defparam bootram.RAM1.INIT_39=256'ha051feab_51feb03f_feb53f80_ba3fa051_3f8e51fe_8051febf_51fec43f_ca3f81a1;
+defparam bootram.RAM1.INIT_3A=256'h9f2a515b_33703070_9005bb05_7e616302_f63d0d7c_0d04ff39_a63f843d_3f8051fe;
+defparam bootram.RAM1.INIT_3B=256'h38795578_77772694_2d763057_52ad5178_2e8a3879_8f387580_57768025_5f5d5b59;
+defparam bootram.RAM1.INIT_3C=256'h3351782d_08afc005_82b83f80_77527651_51ffbd3f_a03f8008_52765182_54805377;
+defparam bootram.RAM1.INIT_3D=256'h52089fa4_70708405_3d0d8c3d_3d0d04f7_f0a53f82_8b053351_803d0d02_8c3d0d04;
+defparam bootram.RAM1.INIT_3E=256'h80db3881_2e098106_065675a5_387681ff_802e81d1_06575775_337081ff_5c5a5878;
+defparam bootram.RAM1.INIT_3F=256'h8a387580_7580e324_e32eb938_a0387580_7580f024_2e80fb38_597580f0_19703357;
+defparam bootram.RAM2.INIT_00=256'h387580f3_80f5248b_2eac3875_397580f5_c638818b_80e42e80_81953975_2e819e38;
+defparam bootram.RAM2.INIT_01=256'h51792d80_56805275_12335259_77841983_3880ec39_80f82eba_80f53975_2e80db38;
+defparam bootram.RAM2.INIT_02=256'h559fa454_52595680_84197108_53903977_9fa45480_59568055_19710852_da397784;
+defparam bootram.RAM2.INIT_03=256'h9e397784_51fdd13f_53905275_9fa45480_59568055_19710852_92397784_81538a52;
+defparam bootram.RAM2.INIT_04=256'h1959fea3_2dec3981_58335179_76708105_8e388052_5675802e_59567633_19710859;
+defparam bootram.RAM2.INIT_05=256'h05085182_528c0888_088c0508_0d80538c_8c0cfd3d_048c0802_0c8b3d0d_39800b80;
+defparam bootram.RAM2.INIT_06=256'h08528c08_8c088c05_3d0d8153_028c0cfd_0c048c08_853d0d8c_70800c54_de3f8008;
+defparam bootram.RAM2.INIT_07=256'h0b8c08fc_f93d0d80_08028c0c_8c0c048c_54853d0d_0870800c_82b93f80_88050851;
+defparam bootram.RAM2.INIT_08=256'h0c8c08fc_8c08f405_050c800b_308c0888_08880508_25ab388c_88050880_050c8c08;
+defparam bootram.RAM2.INIT_09=256'hab388c08_05088025_0c8c088c_8c08fc05_08f40508_f4050c8c_810b8c08_05088838;
+defparam bootram.RAM2.INIT_0A=256'h050c8c08_0b8c08f0_08883881_8c08fc05_08f0050c_0c800b8c_8c088c05_8c050830;
+defparam bootram.RAM2.INIT_0B=256'h8c08f805_3f800870_085181a7_8c088805_8c050852_80538c08_08fc050c_f005088c;
+defparam bootram.RAM2.INIT_0C=256'h800c5489_f8050870_050c8c08_308c08f8_08f80508_2e8c388c_fc050880_0c548c08;
+defparam bootram.RAM2.INIT_0D=256'h388c0888_08802593_8c088805_08fc050c_0d800b8c_8c0cfb3d_048c0802_3d0d8c0c;
+defparam bootram.RAM2.INIT_0E=256'h08308c08_8c088c05_80258c38_088c0508_fc050c8c_810b8c08_0888050c_0508308c;
+defparam bootram.RAM2.INIT_0F=256'h8c08fc05_f8050c54_08708c08_51ad3f80_08880508_0508528c_538c088c_8c050c81;
+defparam bootram.RAM2.INIT_10=256'h8c0c048c_54873d0d_0870800c_8c08f805_08f8050c_0508308c_388c08f8_08802e8c;
+defparam bootram.RAM2.INIT_11=256'h88050827_05088c08_0c8c088c_8c08f805_050c800b_0b8c08fc_fd3d0d81_08028c0c;
+defparam bootram.RAM2.INIT_12=256'h088c050c_0508108c_388c088c_05082499_0b8c088c_2ea33880_fc050880_ac388c08;
+defparam bootram.RAM2.INIT_13=256'h8c088805_088c0508_80c9388c_0508802e_398c08fc_fc050cc9_08108c08_8c08fc05;
+defparam bootram.RAM2.INIT_14=256'h0508078c_088c08fc_8c08f805_0888050c_0508318c_088c088c_8c088805_0826a138;
+defparam bootram.RAM2.INIT_15=256'hffaf398c_088c050c_08812a8c_8c088c05_08fc050c_08812a8c_8c08fc05_08f8050c;
+defparam bootram.RAM2.INIT_16=256'h8c08f405_f8050870_8d398c08_f4050c51_08708c08_8c088805_802e8f38_08900508;
+defparam bootram.RAM2.INIT_17=256'h38747407_8372278c_79565652_3d0d7877_8c0c04fc_0c853d0d_f4050880_0c518c08;
+defparam bootram.RAM2.INIT_18=256'hbd388115_2e098106_52537271_74337433_ff2ea038_ff125271_802eb038_83065170;
+defparam bootram.RAM2.INIT_19=256'h0873082e_74545170_3d0d0474_0b800c86_06e23880_ff2e0981_54555571_8115ff14;
+defparam bootram.RAM2.INIT_1A=256'h31800c86_af397271_735555ff_26e93870_54517183_14fc1454_38841184_0981068f;
+defparam bootram.RAM2.INIT_1B=256'ha738ff12_5170802e_75078306_278c3872_55558f72_797b5555_3d0d7670_3d0d04fc;
+defparam bootram.RAM2.INIT_1C=256'h3874800c_098106ea_5271ff2e_5634ff12_74708105_81055433_98387270_5271ff2e;
+defparam bootram.RAM2.INIT_1D=256'h530c7270_71708405_84055408_530c7270_71708405_84055408_74517270_863d0d04;
+defparam bootram.RAM2.INIT_1E=256'hc9388372_52718f26_530cf012_71708405_84055408_530c7270_71708405_84055408;
+defparam bootram.RAM2.INIT_1F=256'hfd3d0d80_54ff8339_26ed3870_12527183_05530cfc_08717084_70840554_27953872;
+defparam bootram.RAM2.INIT_20=256'h3f800851_8151e2f7_3fb2b052_ce3fdfec_b9d80ce0_2e983873_54547281_0bb1fc08;
+defparam bootram.RAM2.INIT_21=256'hf73d0d7b_3f00ff39_80085184_51e2e03f_b2b05281_3fdfd53f_d80ce0b7_9b3f72b9;
+defparam bootram.RAM2.INIT_22=256'h55598074_81712b59_1908ff05_81881884_2e80d938_545a7780_c811085a_b2b40882;
+defparam bootram.RAM2.INIT_23=256'hb5387816_5372802e_19087706_56568180_78118805_3873822b_807424b5_2480e938;
+defparam bootram.RAM2.INIT_24=256'h38770858_738025d6_5a575754_1779812c_14fc17fc_53722dff_79517408_70085353;
+defparam bootram.RAM2.INIT_25=256'h1779812c_14fc17fc_53722dff_993f7408_387951f5_bc1308a5_b2b40853_77ffad38;
+defparam bootram.RAM2.INIT_26=256'hed3fff3d_2d7951f4_13085372_397251bc_8057ff94_a938d239_738025ff_5a575754;
+defparam bootram.RAM2.INIT_27=256'h06f13883_ff2e0981_08525270_2dfc1270_2e913870_525270ff_fc057008_0db9b80b;
+defparam bootram.RAM2.INIT_28=256'h696d6167_61696e20_523a206d_4552524f_4f4b0000_00000040_dfbe3f04_3d0d0404;
+defparam bootram.RAM2.INIT_29=256'h64206d6f_206c6f61_49484558_20696e20_4261636b_65642120_7475726e_65207265;
+defparam bootram.RAM2.INIT_2A=256'h70657220_72207375_6f616465_6f6f746c_322b2062_55535250_4e4f4b00_64652e00;
+defparam bootram.RAM2.INIT_2B=256'h20555352_74696e67_53746172_6e0a0000_6974696f_55206564_61205a50_756c7472;
+defparam bootram.RAM2.INIT_2C=256'h65747572_523a2072_4552524f_2e000000_6d6f6465_61666520_696e2073_50322b20;
+defparam bootram.RAM2.INIT_2D=256'h6f756c64_73207368_20546869_72616d21_70726f67_61696e20_6f6d206d_6e206672;
+defparam bootram.RAM2.INIT_2E=256'h66652066_6f207361_523a206e_4552524f_6e210000_61707065_65722068_206e6576;
+defparam bootram.RAM2.INIT_2F=256'h6d206120_20492061_626c652e_61696c61_65206176_696d6167_61726520_69726d77;
+defparam bootram.RAM2.INIT_30=256'h5820746f_20494845_6c6f6164_20746f20_66726565_65656c20_6b2e2046_62726963;
+defparam bootram.RAM2.INIT_31=256'h726f6475_69642070_2076616c_20666f72_6b696e67_43686563_2e000000_2052414d;
+defparam bootram.RAM2.INIT_32=256'h6f647563_64207072_56616c69_2e2e2e00_6d616765_47412069_6e204650_6374696f;
+defparam bootram.RAM2.INIT_33=256'h7074696e_7474656d_642e2041_666f756e_61676520_4120696d_20465047_74696f6e;
+defparam bootram.RAM2.INIT_34=256'h696f6e20_64756374_2070726f_616c6964_4e6f2076_742e0000_20626f6f_6720746f;
+defparam bootram.RAM2.INIT_35=256'h20746f20_74696e67_74656d70_2e0a4174_6f756e64_67652066_20696d61_46504741;
+defparam bootram.RAM2.INIT_36=256'h56616c69_2e2e2e00_77617265_6669726d_696f6e20_64756374_2070726f_6c6f6164;
+defparam bootram.RAM2.INIT_37=256'h204c6f61_756e642e_6520666f_6d776172_20666972_74696f6e_6f647563_64207072;
+defparam bootram.RAM2.INIT_38=256'h61727469_2e205374_64696e67_206c6f61_73686564_46696e69_2e2e2e00_64696e67;
+defparam bootram.RAM2.INIT_39=256'h6f6d206d_6e206672_65747572_523a2052_4552524f_2e000000_6d616765_6e672069;
+defparam bootram.RAM2.INIT_3A=256'h65722068_206e6576_6f756c64_73207368_20546869_72616d21_70726f67_61696e20;
+defparam bootram.RAM2.INIT_3B=256'h6669726d_696f6e20_64756374_2070726f_616c6964_4e6f2076_6e210000_61707065;
+defparam bootram.RAM2.INIT_3C=256'h77617265_6669726d_61666520_6e672073_54727969_6e642e20_20666f75_77617265;
+defparam bootram.RAM2.INIT_3D=256'h80700000_0b0b0b0b_25640a00_25643a20_01b200d9_05160364_14580a2c_2e2e2e00;
+defparam bootram.RAM2.INIT_3E=256'h20202828_20202020_00202020_00000000_43444546_38394142_34353637_30313233;
+defparam bootram.RAM2.INIT_3F=256'h10101010_10101010_20881010_20202020_20202020_20202020_20202020_28282820;
+defparam bootram.RAM3.INIT_00=256'h01010101_41414141_10104141_10101010_04040410_04040404_10040404_10101010;
+defparam bootram.RAM3.INIT_01=256'h02020202_42424242_10104242_10101010_01010101_01010101_01010101_01010101;
+defparam bootram.RAM3.INIT_02=256'h00000000_00000000_20000000_10101010_02020202_02020202_02020202_02020202;
+defparam bootram.RAM3.INIT_03=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_04=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_05=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_06=256'h792e6578_64756d6d_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_07=256'h00000000_00000000_ffffff00_ffff00ff_ff00ffff_00ffffff_43000000_65000000;
+defparam bootram.RAM3.INIT_08=256'hffffffff_000b0000_0018000f_ffff0031_05050400_01010100_00001cc0_00000000;
+defparam bootram.RAM3.INIT_09=256'h00001ba0_00000000_00001938_000018d8_06820594_09c407d0_13880d05_00002710;
+defparam bootram.RAM3.INIT_0A=256'h00000000_00000000_00000000_00000000_00000000_00000000_00001c58_00001bfc;
+defparam bootram.RAM3.INIT_0B=256'h00000000_00000000_00000000_00000000_000018e4_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_0C=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_0D=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_0E=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_0F=256'h00000000_00000000_00000000_000b0000_deec0005_1234e66d_330eabcd_00000001;
+defparam bootram.RAM3.INIT_10=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_11=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_12=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_13=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_14=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_15=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_16=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_17=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_18=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_19=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_1A=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_1B=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_1C=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_1D=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_1E=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_1F=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_20=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_21=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_22=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_23=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
defparam bootram.RAM3.INIT_24=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_25=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
+defparam bootram.RAM3.INIT_25=256'hffffffff_00000000_ffffffff_00000000_00000000_00000000_00000000_00000000;
defparam bootram.RAM3.INIT_26=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_27=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_28=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_29=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_2A=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_2B=256'h28282020_20282828_20202020_20202020_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_2C=256'h10101010_10101010_10101010_88101010_20202020_20202020_20202020_20202020;
-defparam bootram.RAM3.INIT_2D=256'h01010101_01010101_41414101_10414141_10101010_04041010_04040404_04040404;
-defparam bootram.RAM3.INIT_2E=256'h02020202_02020202_42424202_10424242_10101010_01010110_01010101_01010101;
-defparam bootram.RAM3.INIT_2F=256'h00000000_00000000_00000000_00000000_10101020_02020210_02020202_02020202;
-defparam bootram.RAM3.INIT_30=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_31=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_32=256'h00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_33=256'h01010100_00001948_00000000_00000000_00000000_00000000_00000000_00000000;
-defparam bootram.RAM3.INIT_34=256'h00000000_00000000_00000000_00000000_00000000_00000000_00001d70_ffffffff;
diff --git a/usrp2/top/u2plus/u2plus_core.v b/usrp2/top/u2plus/u2plus_core.v
index 72dee909b..1969883d7 100644
--- a/usrp2/top/u2plus/u2plus_core.v
+++ b/usrp2/top/u2plus/u2plus_core.v
@@ -131,7 +131,7 @@ module u2plus_core
output spiflash_cs, output spiflash_clk, input spiflash_miso, output spiflash_mosi
);
- localparam SR_BUF_POOL = 64; // Uses 1 reg
+ localparam SR_BUF_POOL = 64; // router
localparam SR_UDP_SM = 96; // 64 regs
localparam SR_RX_DSP = 160; // 16
localparam SR_RX_CTRL = 176; // 16
@@ -197,21 +197,21 @@ module u2plus_core
wb_1master #(.decode_w(8),
.s0_addr(8'b0000_0000),.s0_mask(8'b1110_0000), // 0-8K, Boot RAM
- .s1_addr(8'b0100_0000),.s1_mask(8'b1100_0000), // 16K-32K, Buffer Pool
- .s2_addr(8'b0011_0000),.s2_mask(8'b1111_1111), // SPI
- .s3_addr(8'b0011_0001),.s3_mask(8'b1111_1111), // I2C
- .s4_addr(8'b0011_0010),.s4_mask(8'b1111_1111), // GPIO
- .s5_addr(8'b0011_0011),.s5_mask(8'b1111_1111), // Readback
- .s6_addr(8'b0011_0100),.s6_mask(8'b1111_1111), // Ethernet MAC
- .s7_addr(8'b0010_0000),.s7_mask(8'b1111_0000), // 8-12K, Settings Bus (only uses 1K)
- .s8_addr(8'b0011_0101),.s8_mask(8'b1111_1111), // PIC
- .s9_addr(8'b0011_0110),.s9_mask(8'b1111_1111), // Unused
- .sa_addr(8'b0011_0111),.sa_mask(8'b1111_1111), // UART
- .sb_addr(8'b0011_1000),.sb_mask(8'b1111_1111), // ATR
- .sc_addr(8'b0011_1001),.sc_mask(8'b1111_1111), // Unused
- .sd_addr(8'b0011_1010),.sd_mask(8'b1111_1111), // ICAP
- .se_addr(8'b0011_1011),.se_mask(8'b1111_1111), // SPI Flash
- .sf_addr(8'b1000_0000),.sf_mask(8'b1000_0000), // 32-64K, Main RAM
+ .s1_addr(8'b0100_0000),.s1_mask(8'b1111_0000), // 16K-20K, Buffer Pool
+ .s2_addr(8'b0110_0000),.s2_mask(8'b1111_1111), // SPI
+ .s3_addr(8'b0110_0001),.s3_mask(8'b1111_1111), // I2C
+ .s4_addr(8'b0110_0010),.s4_mask(8'b1111_1111), // GPIO
+ .s5_addr(8'b0110_0011),.s5_mask(8'b1111_1111), // Readback
+ .s6_addr(8'b0110_0100),.s6_mask(8'b1111_1111), // Ethernet MAC
+ .s7_addr(8'b0101_0000),.s7_mask(8'b1111_0000), // 20K-24K, Settings Bus (only uses 1K)
+ .s8_addr(8'b0110_0101),.s8_mask(8'b1111_1111), // PIC
+ .s9_addr(8'b0110_0110),.s9_mask(8'b1111_1111), // Unused
+ .sa_addr(8'b0110_0111),.sa_mask(8'b1111_1111), // UART
+ .sb_addr(8'b0110_1000),.sb_mask(8'b1111_1111), // ATR
+ .sc_addr(8'b0110_1001),.sc_mask(8'b1111_1111), // Unused
+ .sd_addr(8'b0110_1010),.sd_mask(8'b1111_1111), // ICAP
+ .se_addr(8'b0110_1011),.se_mask(8'b1111_1111), // SPI Flash
+ .sf_addr(8'b1000_0000),.sf_mask(8'b1100_0000), // 32-48K, Main RAM
.dw(dw),.aw(aw),.sw(sw)) wb_1master
(.clk_i(wb_clk),.rst_i(wb_rst),
.m0_dat_o(m0_dat_o),.m0_ack_o(m0_ack),.m0_err_o(m0_err),.m0_rty_o(m0_rty),.m0_dat_i(m0_dat_i),
@@ -251,33 +251,58 @@ module u2plus_core
//////////////////////////////////////////////////////////////////////////////////////////
// Reset Controller
-
+
+ reg cpu_bldr_ctrl_state;
+ localparam CPU_BLDR_CTRL_WAIT = 0;
+ localparam CPU_BLDR_CTRL_DONE = 1;
+
+ wire bldr_done;
+ reg cpu_rst;
+ wire cpu_enb = ~cpu_rst;
+ wire [aw-1:0] cpu_adr;
+ wire [aw-1:0] cpu_sp_init = (cpu_bldr_ctrl_state == CPU_BLDR_CTRL_DONE)?
+ 16'h3ff8 /*16K main ram*/: 16'h1ff8 /*8K boot ram*/;
+
+ //When the main program runs, it will try to access system ram at 0.
+ //This logic sets the upper bit high to force select the system ram.
+ assign m0_adr = ((cpu_bldr_ctrl_state == CPU_BLDR_CTRL_DONE) &&
+ (cpu_adr[15:14] == 2'b00))? {2'b10, cpu_adr[13:0]} : cpu_adr;
+
+ always @(posedge wb_clk)
+ if(wb_rst) begin
+ cpu_bldr_ctrl_state <= CPU_BLDR_CTRL_WAIT;
+ cpu_rst <= 1'b0;
+ end
+ else begin
+ case(cpu_bldr_ctrl_state)
+
+ CPU_BLDR_CTRL_WAIT: begin
+ if (bldr_done == 1'b1) begin //set by the bootloader
+ cpu_bldr_ctrl_state <= CPU_BLDR_CTRL_DONE;
+ cpu_rst <= 1'b1;
+ end
+ end
+
+ CPU_BLDR_CTRL_DONE: begin //stay here forever
+ cpu_rst <= 1'b0;
+ end
+
+ endcase //cpu_bldr_ctrl_state
+ end
+
// /////////////////////////////////////////////////////////////////////////
// Processor
-// wire [31:0] if_dat;
-// wire [15:0] if_adr;
-
-// aeMB_core_BE #(.ISIZ(16),.DSIZ(16),.MUL(0),.BSF(1))
-// aeMB (.sys_clk_i(wb_clk), .sys_rst_i(wb_rst),
-// // Instruction Wishbone bus to I-RAM
-// .if_adr(if_adr),
-// .if_dat(if_dat),
-// // Data Wishbone bus to system bus fabric
-// .dwb_we_o(m0_we),.dwb_stb_o(m0_stb),.dwb_dat_o(m0_dat_i),.dwb_adr_o(m0_adr),
-// .dwb_dat_i(m0_dat_o),.dwb_ack_i(m0_ack),.dwb_sel_o(m0_sel),.dwb_cyc_o(m0_cyc),
-// // Interrupts and exceptions
-// .sys_int_i(proc_int),.sys_exc_i(bus_error) );
-
-// assign bus_error = m0_err | m0_rty;
+
+ assign bus_error = m0_err | m0_rty;
wire [63:0] zpu_status;
zpu_wb_top #(.dat_w(dw), .adr_w(aw), .sel_w(sw))
- zpu_top0 (.clk(wb_clk), .rst(wb_rst), .enb(ram_loader_done),
+ zpu_top0 (.clk(wb_clk), .rst(wb_rst | cpu_rst), .enb(cpu_enb),
// Data Wishbone bus to system bus fabric
- .we_o(m0_we),.stb_o(m0_stb),.dat_o(m0_dat_i),.adr_o(m0_adr),
+ .we_o(m0_we),.stb_o(m0_stb),.dat_o(m0_dat_i),.adr_o(cpu_adr),
.dat_i(m0_dat_o),.ack_i(m0_ack),.sel_o(m0_sel),.cyc_o(m0_cyc),
// Interrupts and exceptions
- .zpu_status(zpu_status), .interrupt(proc_int & 1'b0));
+ .stack_start(cpu_sp_init), .zpu_status(zpu_status), .interrupt(proc_int & 1'b0));
// /////////////////////////////////////////////////////////////////////////
@@ -476,6 +501,8 @@ module u2plus_core
.in(set_data),.out(adc_outs),.changed());
setting_reg #(.my_addr(4),.width(1)) sr_phy (.clk(wb_clk),.rst(wb_rst),.strobe(set_stb),.addr(set_addr),
.in(set_data),.out(phy_reset),.changed());
+ setting_reg #(.my_addr(5),.width(1)) sr_bldr (.clk(wb_clk),.rst(wb_rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(bldr_done),.changed());
// /////////////////////////////////////////////////////////////////////////
// LEDS
@@ -694,8 +721,17 @@ module u2plus_core
// /////////////////////////////////////////////////////////////////////////////////////////
// Debug Pins
- assign debug_clk = 2'b00; // {dsp_clk, clk_to_mac};
- assign debug = 32'd0; // debug_extfifo;
+ //assign debug_clk = 2'b00; // {dsp_clk, clk_to_mac};
+ //assign debug = 32'd0; // debug_extfifo;
+ assign debug_clk = {wb_rst, wb_clk};
+ assign debug = {
+ cpu_adr, //16 bits
+ cpu_bldr_ctrl_state, //1 bits
+ bldr_done, //1 bit
+ cpu_rst, cpu_enb, // 2 bits
+ m0_we, m0_stb, m0_ack, m0_cyc, //4
+ button, 7'b0
+ };
assign debug_gpio_0 = 32'd0;
assign debug_gpio_1 = 32'd0;