mirror of
https://github.com/marqs85/ossc
synced 2025-10-29 15:06:02 +03:00
make Lumacode palettes CPU controlled
This commit is contained in:
parent
6198ce7d9e
commit
d6dba1618b
@ -1 +1 @@
|
||||
Subproject commit 80569615842bf4e82f8efdef7c4937b0d9e0141e
|
||||
Subproject commit 79c0da70116a3a10c73a14c91652e81acd3fc9a9
|
||||
@ -165,6 +165,8 @@ typedef struct {
|
||||
sl_config_reg sl_config;
|
||||
sl_config2_reg sl_config2;
|
||||
sl_config3_reg sl_config3;
|
||||
uint32_t padding[1];
|
||||
uint32_t lumacode_pal_ram[496];
|
||||
} sc_regs;
|
||||
|
||||
#endif //SC_CONFIG_REGS_H_
|
||||
|
||||
@ -100,7 +100,7 @@ set_interface_property avalon_s PORT_NAME_MAP ""
|
||||
set_interface_property avalon_s CMSIS_SVD_VARIABLES ""
|
||||
set_interface_property avalon_s SVD_ADDRESS_GROUP ""
|
||||
|
||||
add_interface_port avalon_s avalon_s_address address Input 4
|
||||
add_interface_port avalon_s avalon_s_address address Input 9
|
||||
add_interface_port avalon_s avalon_s_writedata writedata Input 32
|
||||
add_interface_port avalon_s avalon_s_readdata readdata Output 32
|
||||
add_interface_port avalon_s avalon_s_byteenable byteenable Input 4
|
||||
@ -158,3 +158,21 @@ add_interface_port sc_if misc_config_o misc_config_o Output 32
|
||||
add_interface_port sc_if sl_config_o sl_config_o Output 32
|
||||
add_interface_port sc_if sl_config2_o sl_config2_o Output 32
|
||||
add_interface_port sc_if sl_config3_o sl_config3_o Output 32
|
||||
|
||||
|
||||
#
|
||||
# connection point lumacode_ram_if
|
||||
#
|
||||
add_interface lc_ram_if conduit end
|
||||
set_interface_property lc_ram_if associatedClock ""
|
||||
set_interface_property lc_ram_if associatedReset ""
|
||||
set_interface_property lc_ram_if ENABLED true
|
||||
set_interface_property lc_ram_if EXPORT_OF ""
|
||||
set_interface_property lc_ram_if PORT_NAME_MAP ""
|
||||
set_interface_property lc_ram_if CMSIS_SVD_VARIABLES ""
|
||||
set_interface_property lc_ram_if SVD_ADDRESS_GROUP ""
|
||||
|
||||
add_interface_port lc_ram_if lumacode_clk_i lumacode_clk_i Input 1
|
||||
add_interface_port lc_ram_if lumacode_addr_i lumacode_addr_i Input 9
|
||||
add_interface_port lc_ram_if lumacode_rden_i lumacode_rden_i Input 1
|
||||
add_interface_port lc_ram_if lumacode_data_o lumacode_data_o Output 32
|
||||
|
||||
@ -24,7 +24,7 @@ module sc_config_top(
|
||||
// avalon slave
|
||||
input [31:0] avalon_s_writedata,
|
||||
output reg [31:0] avalon_s_readdata,
|
||||
input [3:0] avalon_s_address,
|
||||
input [8:0] avalon_s_address,
|
||||
input [3:0] avalon_s_byteenable,
|
||||
input avalon_s_write,
|
||||
input avalon_s_read,
|
||||
@ -45,24 +45,31 @@ module sc_config_top(
|
||||
output [31:0] misc_config_o,
|
||||
output [31:0] sl_config_o,
|
||||
output [31:0] sl_config2_o,
|
||||
output [31:0] sl_config3_o
|
||||
output [31:0] sl_config3_o,
|
||||
// Lumacode interface
|
||||
input lumacode_clk_i,
|
||||
input [8:0] lumacode_addr_i,
|
||||
input lumacode_rden_i,
|
||||
output [31:0] lumacode_data_o
|
||||
);
|
||||
|
||||
localparam FE_STATUS_REGNUM = 4'h0;
|
||||
localparam FE_STATUS2_REGNUM = 4'h1;
|
||||
localparam LT_STATUS_REGNUM = 4'h2;
|
||||
localparam HV_IN_CONFIG_REGNUM = 4'h3;
|
||||
localparam HV_IN_CONFIG2_REGNUM = 4'h4;
|
||||
localparam HV_IN_CONFIG3_REGNUM = 4'h5;
|
||||
localparam HV_OUT_CONFIG_REGNUM = 4'h6;
|
||||
localparam HV_OUT_CONFIG2_REGNUM = 4'h7;
|
||||
localparam HV_OUT_CONFIG3_REGNUM = 4'h8;
|
||||
localparam XY_OUT_CONFIG_REGNUM = 4'h9;
|
||||
localparam XY_OUT_CONFIG2_REGNUM = 4'ha;
|
||||
localparam MISC_CONFIG_REGNUM = 4'hb;
|
||||
localparam SL_CONFIG_REGNUM = 4'hc;
|
||||
localparam SL_CONFIG2_REGNUM = 4'hd;
|
||||
localparam SL_CONFIG3_REGNUM = 4'he;
|
||||
localparam FE_STATUS_REGNUM = 9'h0;
|
||||
localparam FE_STATUS2_REGNUM = 9'h1;
|
||||
localparam LT_STATUS_REGNUM = 9'h2;
|
||||
localparam HV_IN_CONFIG_REGNUM = 9'h3;
|
||||
localparam HV_IN_CONFIG2_REGNUM = 9'h4;
|
||||
localparam HV_IN_CONFIG3_REGNUM = 9'h5;
|
||||
localparam HV_OUT_CONFIG_REGNUM = 9'h6;
|
||||
localparam HV_OUT_CONFIG2_REGNUM = 9'h7;
|
||||
localparam HV_OUT_CONFIG3_REGNUM = 9'h8;
|
||||
localparam XY_OUT_CONFIG_REGNUM = 9'h9;
|
||||
localparam XY_OUT_CONFIG2_REGNUM = 9'ha;
|
||||
localparam MISC_CONFIG_REGNUM = 9'hb;
|
||||
localparam SL_CONFIG_REGNUM = 9'hc;
|
||||
localparam SL_CONFIG2_REGNUM = 9'hd;
|
||||
localparam SL_CONFIG3_REGNUM = 9'he;
|
||||
|
||||
localparam LUMACODE_RAM_START = 9'h10;
|
||||
|
||||
reg [31:0] config_reg[HV_IN_CONFIG_REGNUM:SL_CONFIG3_REGNUM] /* synthesis ramstyle = "logic" */;
|
||||
|
||||
@ -118,4 +125,51 @@ assign sl_config_o = config_reg[SL_CONFIG_REGNUM];
|
||||
assign sl_config2_o = config_reg[SL_CONFIG2_REGNUM];
|
||||
assign sl_config3_o = config_reg[SL_CONFIG3_REGNUM];
|
||||
|
||||
|
||||
// Lumacode palette RAM
|
||||
altsyncram lumacode_pal_ram (
|
||||
.address_a (avalon_s_address),
|
||||
.address_b (lumacode_addr_i),
|
||||
.clock0 (clk_i),
|
||||
.clock1 (lumacode_clk_i),
|
||||
.data_a (avalon_s_writedata),
|
||||
.rden_b (lumacode_rden_i),
|
||||
.wren_a (avalon_s_chipselect && avalon_s_write && (avalon_s_address >= LUMACODE_RAM_START)),
|
||||
.q_b (lumacode_data_o),
|
||||
.aclr0 (1'b0),
|
||||
.aclr1 (1'b0),
|
||||
.addressstall_a (1'b0),
|
||||
.addressstall_b (1'b0),
|
||||
.byteena_a (1'b1),
|
||||
.byteena_b (1'b1),
|
||||
.clocken0 (1'b1),
|
||||
.clocken1 (1'b1),
|
||||
.clocken2 (1'b1),
|
||||
.clocken3 (1'b1),
|
||||
.data_b ({32{1'b1}}),
|
||||
.eccstatus (),
|
||||
.q_a (),
|
||||
.rden_a (1'b1),
|
||||
.wren_b (1'b0));
|
||||
defparam
|
||||
lumacode_pal_ram.address_aclr_b = "NONE",
|
||||
lumacode_pal_ram.address_reg_b = "CLOCK1",
|
||||
lumacode_pal_ram.clock_enable_input_a = "BYPASS",
|
||||
lumacode_pal_ram.clock_enable_input_b = "BYPASS",
|
||||
lumacode_pal_ram.clock_enable_output_b = "BYPASS",
|
||||
lumacode_pal_ram.intended_device_family = "Cyclone IV E",
|
||||
lumacode_pal_ram.lpm_type = "altsyncram",
|
||||
lumacode_pal_ram.numwords_a = 512,
|
||||
lumacode_pal_ram.numwords_b = 512,
|
||||
lumacode_pal_ram.operation_mode = "DUAL_PORT",
|
||||
lumacode_pal_ram.outdata_aclr_b = "NONE",
|
||||
lumacode_pal_ram.outdata_reg_b = "UNREGISTERED",
|
||||
lumacode_pal_ram.power_up_uninitialized = "FALSE",
|
||||
lumacode_pal_ram.rdcontrol_reg_b = "CLOCK1",
|
||||
lumacode_pal_ram.widthad_a = 9,
|
||||
lumacode_pal_ram.widthad_b = 9,
|
||||
lumacode_pal_ram.width_a = 32,
|
||||
lumacode_pal_ram.width_b = 32,
|
||||
lumacode_pal_ram.width_byteena_a = 1;
|
||||
|
||||
endmodule
|
||||
|
||||
3
ossc.sdc
3
ossc.sdc
@ -53,8 +53,7 @@ foreach_in_collection c [get_clocks pclk_*_out] {
|
||||
set_false_path -to [remove_from_collection [all_outputs] $critoutputs_hdmi]
|
||||
|
||||
# Lumacode (constrained to max. 60MHz sampling)
|
||||
set_max_delay 16.6 -from [get_clocks pclk_tvp_high] -through [get_cells tvp7002_frontend:u_tvp_frontend|lc_code*]
|
||||
set_max_delay 16.6 -from [get_clocks pclk_tvp_high] -through [get_cells u_tvp_frontend|lc_atari_*]
|
||||
set_max_delay 16.6 -from [get_registers sys:sys_inst|sc_config_top:sc_config_0|altsyncram:lumacode_pal_ram|*]
|
||||
|
||||
|
||||
### CPU/scanconverter clock relations ###
|
||||
|
||||
13
rtl/ossc.v
13
rtl/ossc.v
@ -129,6 +129,10 @@ wire [11:0] lt_stb_result;
|
||||
wire lt_trig_waiting;
|
||||
wire lt_finished;
|
||||
|
||||
wire [31:0] lumacode_data;
|
||||
wire [8:0] lumacode_addr;
|
||||
wire lumacode_rden;
|
||||
|
||||
reg remove_event_prev;
|
||||
reg [14:0] to_ctr, to_ctr_ms;
|
||||
wire lcd_bl_timeout;
|
||||
@ -195,6 +199,7 @@ tvp7002_frontend u_tvp_frontend (
|
||||
.hv_in_config2(hv_in_config2),
|
||||
.hv_in_config3(hv_in_config3),
|
||||
.misc_config(misc_config),
|
||||
.lumacode_data(lumacode_data),
|
||||
.R_o(TVP_R_post),
|
||||
.G_o(TVP_G_post),
|
||||
.B_o(TVP_B_post),
|
||||
@ -211,7 +216,9 @@ tvp7002_frontend u_tvp_frontend (
|
||||
.sof_scaler(TVP_sof_scaler),
|
||||
.pcnt_field(TVP_fe_pcnt_field),
|
||||
.hsync_width(TVP_hsync_width),
|
||||
.sync_active(TVP_sync_active)
|
||||
.sync_active(TVP_sync_active),
|
||||
.lumacode_addr(lumacode_addr),
|
||||
.lumacode_rden(lumacode_rden)
|
||||
);
|
||||
|
||||
// Insert synchronizers to async inputs (synchronize to CPU clock)
|
||||
@ -402,6 +409,10 @@ sys sys_inst(
|
||||
.sc_config_0_sc_if_sl_config_o (sl_config),
|
||||
.sc_config_0_sc_if_sl_config2_o (sl_config2),
|
||||
.sc_config_0_sc_if_sl_config3_o (sl_config3),
|
||||
.sc_config_0_lc_ram_if_lumacode_clk_i (TVP_PCLK_i),
|
||||
.sc_config_0_lc_ram_if_lumacode_addr_i (lumacode_addr),
|
||||
.sc_config_0_lc_ram_if_lumacode_rden_i (lumacode_rden),
|
||||
.sc_config_0_lc_ram_if_lumacode_data_o (lumacode_data),
|
||||
.osd_generator_0_osd_if_vclk (PCLK_sc),
|
||||
.osd_generator_0_osd_if_xpos (xpos_sc),
|
||||
.osd_generator_0_osd_if_ypos (ypos_sc),
|
||||
|
||||
@ -36,6 +36,7 @@ module tvp7002_frontend (
|
||||
input [31:0] hv_in_config2,
|
||||
input [31:0] hv_in_config3,
|
||||
input [31:0] misc_config,
|
||||
input [31:0] lumacode_data,
|
||||
output [7:0] R_o,
|
||||
output [7:0] G_o,
|
||||
output [7:0] B_o,
|
||||
@ -52,7 +53,9 @@ module tvp7002_frontend (
|
||||
output reg sof_scaler,
|
||||
output reg [19:0] pcnt_field,
|
||||
output reg [7:0] hsync_width,
|
||||
output reg sync_active
|
||||
output reg sync_active,
|
||||
output [8:0] lumacode_addr,
|
||||
output lumacode_rden
|
||||
);
|
||||
|
||||
localparam FID_EVEN = 1'b0;
|
||||
@ -151,59 +154,6 @@ wire [3:0] H_SAMPLE_SEL = hv_in_config3[31:28];
|
||||
wire [2:0] LC_SAMPLES = (MISC_LUMACODE_MODE <= 3) ? 2 : ((MISC_LUMACODE_MODE <= 5) ? 3 : 2);
|
||||
wire [2:0] LC_H_SKIP = ((H_SKIP+1) / LC_SAMPLES) - 1;
|
||||
|
||||
// Lumacode palettes for 2-sample index-based sources (C64, Spectrum, Coleco/MSX)
|
||||
wire [23:0] lumacode_data_2s[0:2][0:15] = '{'{ 24'h000000,24'h2a1b9d,24'h7d202c,24'h84258c,24'h4c2e00,24'h3c3c3c,24'h646464,24'h4fb3a5,24'h7f410d,24'h6351db,24'h939393,24'hbfd04a,24'h339840,24'hb44f5c,24'h7ce587,24'hffffff},
|
||||
'{ 24'h000000,24'h000000,24'h0200FD,24'hCF01CE,24'h0100CE,24'hCF0100,24'hFF02FD,24'h01CFCF,24'hFF0201,24'h00CF15,24'h02FFFF,24'hFFFF1D,24'h00FF1C,24'hCFCF15,24'hCFCFCF,24'hFFFFFF},
|
||||
'{ 24'h000000,24'h5455ed,24'hfc5554,24'hff7978,24'h000000,24'hd4524d,24'h7d76fc,24'h42ebf5,24'h21b03b,24'h21c842,24'hff7978,24'hcccccc,24'hc95bba,24'hd4c154,24'he6ce80,24'hffffff}};
|
||||
|
||||
// Lumacode palette for NES
|
||||
wire [23:0] lumacode_data_3s[0:63] = '{ 24'h000000, 24'h000000, 24'h000000, 24'h000000, 24'h000000, 24'h000000, 24'h000000, 24'h000000,
|
||||
24'h626262, 24'h001fb2, 24'h2404c8, 24'h5200b2, 24'h730076, 24'h800024, 24'h730b00, 24'h522800, 24'h244400, 24'h005700, 24'h005c00, 24'h005324, 24'h003c76, 24'h000000,
|
||||
24'hababab, 24'h0d57ff, 24'h4b30ff, 24'h8a13ff, 24'hbc08d6, 24'hd21269, 24'hc72e00, 24'h9d5400, 24'h607b00, 24'h209800, 24'h00a300, 24'h009942, 24'h007db4, 24'h000000,
|
||||
24'hffffff, 24'h53aeff, 24'h9085ff, 24'hd365ff, 24'hff57ff, 24'hff5dcf, 24'hff7757, 24'hfa9e00, 24'hbdc700, 24'h7ae700, 24'h43f611, 24'h26ef7e, 24'h2cd5f6, 24'h4e4e4e,
|
||||
24'hffffff, 24'hb6e1ff, 24'hced1ff, 24'he9c3ff, 24'hffbcff, 24'hffbdf4, 24'hffc6c3, 24'hffd59a, 24'he9e681, 24'hcef481, 24'hb6fb9a, 24'ha9fac3, 24'ha9f0f4, 24'hb8b8b8};
|
||||
wire [7:0] lumacode_data_3s_R = lumacode_data_3s[{lc_code[1], lc_code[2], lc_code[3]}][23:16];
|
||||
wire [7:0] lumacode_data_3s_G = lumacode_data_3s[{lc_code[1], lc_code[2], lc_code[3]}][15:8];
|
||||
wire [7:0] lumacode_data_3s_B = lumacode_data_3s[{lc_code[1], lc_code[2], lc_code[3]}][7:0];
|
||||
|
||||
// Lumacode palette Atari GTIA
|
||||
/*wire [23:0] lumacode_data_gtia[0:255] = '{
|
||||
24'h000000, 24'h111111, 24'h222222, 24'h333333, 24'h444444, 24'h555555, 24'h666666, 24'h777777, 24'h888888, 24'h999999, 24'haaaaaa, 24'hbbbbbb, 24'hcccccc, 24'hdddddd, 24'heeeeee, 24'hffffff,
|
||||
24'h091900, 24'h192806, 24'h29370d, 24'h3a4714, 24'h4a561b, 24'h5a6522, 24'h6b7529, 24'h7b8430, 24'h8c9336, 24'h9ca33d, 24'hacb244, 24'hbdc14b, 24'hcdd152, 24'hdee059, 24'heeef60, 24'hffff67,
|
||||
24'h300000, 24'h3d1108, 24'h4b2211, 24'h593319, 24'h674422, 24'h75552a, 24'h826633, 24'h90773b, 24'h9e8844, 24'hac994c, 24'hbaaa55, 24'hc7bb5d, 24'hd5cc66, 24'he3dd6e, 24'hf1ee77, 24'hffff80,
|
||||
24'h4b0000, 24'h570f0c, 24'h631e18, 24'h6f2e24, 24'h7a3d30, 24'h874d3c, 24'h935c49, 24'h9f6b55, 24'hab7b61, 24'hb68a6d, 24'hc39a79, 24'hcfa986, 24'hdbb892, 24'he6c89e, 24'hf3d7aa, 24'hffe7b7,
|
||||
24'h550000, 24'h600e10, 24'h6b1c21, 24'h772a32, 24'h823843, 24'h8d4654, 24'h995465, 24'ha46276, 24'haf7187, 24'hbb7f98, 24'hc68da9, 24'hd19bba, 24'hdda9cb, 24'he8b7dc, 24'hf3c5ed, 24'hffd4fe,
|
||||
24'h4c0047, 24'h570d53, 24'h631b5f, 24'h6f286b, 24'h7b3678, 24'h874384, 24'h935190, 24'h9f5e9c, 24'hab6ca9, 24'hb779b5, 24'hc387c1, 24'hcf94cd, 24'hdba2da, 24'he7afe6, 24'hf3bdf2, 24'hffcbff,
|
||||
24'h30007e, 24'h3b0b85, 24'h49198d, 24'h572796, 24'h65349f, 24'h7242a7, 24'h8050b0, 24'h8e5db8, 24'h9c6bc1, 24'ha979c9, 24'hb786d2, 24'hc594db, 24'hd3a2e3, 24'he0afec, 24'heebdf4, 24'hfccbfd,
|
||||
24'h0a0097, 24'h1a0e9d, 24'h2a1da4, 24'h3b2cab, 24'h4b3ab2, 24'h5b49b9, 24'h6c58c0, 24'h7c67c7, 24'h8c75ce, 24'h9c84d5, 24'had93dc, 24'hbda2e3, 24'hceb0ea, 24'hdebff1, 24'heecef8, 24'hffddff,
|
||||
24'h00008e, 24'h0c0d94, 24'h1b1e9c, 24'h2a2ea3, 24'h393eab, 24'h484eb2, 24'h575eba, 24'h666ec1, 24'h747ec9, 24'h838fd0, 24'h929fd8, 24'ha1afdf, 24'hb0bfe6, 24'hbfcfee, 24'hcedff5, 24'hddeffd,
|
||||
24'h000e64, 24'h0c1e6e, 24'h192e78, 24'h263e83, 24'h324e8d, 24'h3f5e97, 24'h4c6ea2, 24'h587eac, 24'h658eb6, 24'h729ec1, 24'h7eaecb, 24'h8bbed5, 24'h98cee0, 24'ha4deea, 24'hb1eef4, 24'hbeffff,
|
||||
24'h002422, 24'h09302e, 24'h153f3d, 24'h204d4c, 24'h2c5c5a, 24'h376a69, 24'h427978, 24'h4e8786, 24'h599695, 24'h65a4a4, 24'h70b3b2, 24'h7cc1c1, 24'h87d0d0, 24'h92dfde, 24'h9eeded, 24'ha9fcfc,
|
||||
24'h003200, 24'h0b3f0e, 24'h164d1c, 24'h225b2b, 24'h2d6839, 24'h397648, 24'h448456, 24'h509164, 24'h5b9f73, 24'h67ad81, 24'h72ba90, 24'h7ec89e, 24'h89d6ac, 24'h95e3bb, 24'ha0f1c9, 24'hacffd8,
|
||||
24'h003400, 24'h0c410a, 24'h194f14, 24'h265c1e, 24'h336a28, 24'h407732, 24'h4c853c, 24'h599246, 24'h66a050, 24'h73ad5a, 24'h80bb64, 24'h8cc86e, 24'h99d678, 24'ha6e382, 24'hb3f18c, 24'hc0ff97,
|
||||
24'h002a00, 24'h0f3807, 24'h1e460e, 24'h2d5416, 24'h3c621d, 24'h4b7124, 24'h5a7f2c, 24'h698d33, 24'h799b3b, 24'h88a942, 24'h97b849, 24'ha6c651, 24'hb5d458, 24'hc4e260, 24'hd3f067, 24'he3ff6f,
|
||||
24'h0d1700, 24'h1d2606, 24'h2d350d, 24'h3d4514, 24'h4d541b, 24'h5d6422, 24'h6d7329, 24'h7d8330, 24'h8e9237, 24'h9ea23e, 24'haeb145, 24'hbec14c, 24'hced053, 24'hdee05a, 24'heeef61, 24'hffff68,
|
||||
24'h330000, 24'h401008, 24'h4e2111, 24'h5b321a, 24'h694323, 24'h77542c, 24'h846535, 24'h92763e, 24'h9f8646, 24'had974f, 24'hbba858, 24'hc8b961, 24'hd6ca6a, 24'he3db73, 24'hf1ec7c, 24'hfffd85};*/
|
||||
|
||||
// Lumacode palette Atari CTIA/TIA
|
||||
/*wire [23:0] lumacode_data_ctia[0:127] = '{
|
||||
24'h000000, 24'h404040, 24'h6C6C6C, 24'h909090, 24'hB0B0B0, 24'hC8C8C8, 24'hDCDCDC, 24'hECECEC,
|
||||
24'h444400, 24'h646410, 24'h848424, 24'hA0A034, 24'hB8B840, 24'hD0D050, 24'hE8E85C, 24'hFCFC68,
|
||||
24'h702800, 24'h844414, 24'h985C28, 24'hAC783C, 24'hBC8C4C, 24'hCCA05C, 24'hDCB468, 24'hECC878,
|
||||
24'h841800, 24'h983418, 24'hAC5030, 24'hC06848, 24'hD0805C, 24'hE09470, 24'hECA880, 24'hFCBC94,
|
||||
24'h880000, 24'h9C2020, 24'hB03C3C, 24'hC05858, 24'hD07070, 24'hE08888, 24'hECA0A0, 24'hFCB4B4,
|
||||
24'h78005C, 24'h8C2074, 24'hA03C88, 24'hB0589C, 24'hC070B0, 24'hD084C0, 24'hDC9CD0, 24'hECB0E0,
|
||||
24'h480078, 24'h602090, 24'h783CA4, 24'h8C58B8, 24'hA070CC, 24'hB484DC, 24'hC49CEC, 24'hD4B0FC,
|
||||
24'h140084, 24'h302098, 24'h4C3CAC, 24'h6858C0, 24'h7C70D0, 24'h9488E0, 24'hA8A0EC, 24'hBCB4FC,
|
||||
24'h000088, 24'h1C209C, 24'h3840B0, 24'h505CC0, 24'h6874D0, 24'h7C8CE0, 24'h90A4EC, 24'hA4B8FC,
|
||||
24'h00187C, 24'h1C3890, 24'h3854A8, 24'h5070BC, 24'h6888CC, 24'h7C9CDC, 24'h90B4EC, 24'hA4C8FC,
|
||||
24'h002C5C, 24'h1C4C78, 24'h386890, 24'h5084AC, 24'h689CC0, 24'h7CB4D4, 24'h90CCE8, 24'hA4E0FC,
|
||||
24'h003C2C, 24'h1C5C48, 24'h387C64, 24'h509C80, 24'h68B494, 24'h7CD0AC, 24'h90E4C0, 24'hA4FCD4,
|
||||
24'h003C00, 24'h205C20, 24'h407C40, 24'h5C9C5C, 24'h74B474, 24'h8CD08C, 24'hA4E4A4, 24'hB8FCB8,
|
||||
24'h143800, 24'h345C1C, 24'h507C38, 24'h6C9850, 24'h84B468, 24'h9CCC7C, 24'hB4E490, 24'hC8FCA4,
|
||||
24'h2C3000, 24'h4C501C, 24'h687034, 24'h848C4C, 24'h9CA864, 24'hB4C078, 24'hCCD488, 24'hE0EC9C,
|
||||
24'h442800, 24'h644818, 24'h846830, 24'hA08444, 24'hB89C58, 24'hD0B46C, 24'hE8CC7C, 24'hFCE08C};*/
|
||||
|
||||
// SOF position for scaler
|
||||
wire [10:0] V_SOF_LINE = hv_in_config3[23:13];
|
||||
|
||||
@ -312,35 +262,9 @@ always @(posedge PCLK_i) begin
|
||||
lc_ctr <= lc_ctr + 1;
|
||||
end
|
||||
|
||||
// Standard output
|
||||
if (MISC_LUMACODE_MODE == '0) begin
|
||||
{R_pp[2], G_pp[2], B_pp[2]} <= {R_pp[1], G_pp[1], B_pp[1]};
|
||||
// Lumacode C64, C128, VIC20, Spectrum, TMS99xxA
|
||||
end else if (MISC_LUMACODE_MODE <= 3) begin
|
||||
{R_pp[2], G_pp[2], B_pp[2]} <= lumacode_data_2s[MISC_LUMACODE_MODE-1'b1][{lc_code[1], lc_code[2]}];
|
||||
// Lumacode related source-specific registers (used as part of palette RAM addressing / data processing)
|
||||
// Lumacode NES
|
||||
end else if (MISC_LUMACODE_MODE == 4) begin
|
||||
if (lc_emp_nes[1] & lc_emp_nes[0])
|
||||
R_pp[2] <= lumacode_data_3s_R/2;
|
||||
else if (lc_emp_nes[1] | lc_emp_nes[0])
|
||||
R_pp[2] <= lumacode_data_3s_R - lumacode_data_3s_R/4;
|
||||
else
|
||||
R_pp[2] <= lumacode_data_3s_R;
|
||||
|
||||
if (lc_emp_nes[2] & lc_emp_nes[0])
|
||||
G_pp[2] <= lumacode_data_3s_G/2;
|
||||
else if (lc_emp_nes[2] | lc_emp_nes[0])
|
||||
G_pp[2] <= lumacode_data_3s_G - lumacode_data_3s_G/4;
|
||||
else
|
||||
G_pp[2] <= lumacode_data_3s_G;
|
||||
|
||||
if (lc_emp_nes[2] & lc_emp_nes[1])
|
||||
B_pp[2] <= lumacode_data_3s_B/2;
|
||||
else if (lc_emp_nes[2] | lc_emp_nes[1])
|
||||
B_pp[2] <= lumacode_data_3s_B - lumacode_data_3s_B/4;
|
||||
else
|
||||
B_pp[2] <= lumacode_data_3s_B;
|
||||
|
||||
if (MISC_LUMACODE_MODE == 4) begin
|
||||
if ((h_ctr == H_SAMPLE_SEL) & ({lc_code[1], lc_code[2], lc_code[3]} < 8))
|
||||
lc_emp_nes <= {lc_code[2][0], lc_code[3]};
|
||||
// Lumacode Atari GTIA
|
||||
@ -351,12 +275,10 @@ always @(posedge PCLK_i) begin
|
||||
lc_atari_hue <= {lc_code[1], lc_code[2]};
|
||||
lc_atari_luma[3:2] <= lc_code[3];
|
||||
//{R_pp[2], G_pp[2], B_pp[2]} <= lumacode_data_gtia[{lc_atari_hue, lc_atari_luma}];
|
||||
{R_pp[2], G_pp[2], B_pp[2]} <= '0;
|
||||
end else begin
|
||||
// Store luma for 2nd pixel, and display first pixel of current pair
|
||||
lc_atari_luma <= {lc_code[2], lc_code[3]};
|
||||
//{R_pp[2], G_pp[2], B_pp[2]} <= lumacode_data_gtia[{lc_atari_hue, lc_atari_luma[3:2], lc_code[1]}];
|
||||
{R_pp[2], G_pp[2], B_pp[2]} <= '0;
|
||||
end
|
||||
end
|
||||
// Lumacode Atari VCS
|
||||
@ -368,11 +290,11 @@ always @(posedge PCLK_i) begin
|
||||
end else begin
|
||||
// Display pixel after receiving remaining 2 lumacode samples (luma)
|
||||
//{R_pp[2], G_pp[2], B_pp[2]} <= lumacode_data_ctia[{lc_atari_hue, lc_code[1], lc_code[2][1]}];
|
||||
{R_pp[2], G_pp[2], B_pp[2]} <= '0;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
{R_pp[2], G_pp[2], B_pp[2]} <= {R_pp[1], G_pp[1], B_pp[1]};
|
||||
HSYNC_pp[2] <= HSYNC_pp[1];
|
||||
VSYNC_pp[2] <= VSYNC_pp[1];
|
||||
FID_pp[2] <= FID_pp[1];
|
||||
@ -422,13 +344,61 @@ always @(posedge PCLK_i) begin
|
||||
B_diff_s15 <= (B_diff_s15_pre * MISC_REV_LPF_STR);
|
||||
|
||||
// Cycle 3
|
||||
if (MISC_REV_LPF_ENABLE) begin
|
||||
if (MISC_REV_LPF_ENABLE & (MISC_LUMACODE_MODE == 0)) begin
|
||||
R_pp[PP_RLPF_END] <= apply_reverse_lpf(R_pp[PP_RLPF_START+2], R_diff_s15);
|
||||
G_pp[PP_RLPF_END] <= apply_reverse_lpf(G_pp[PP_RLPF_START+2], G_diff_s15);
|
||||
B_pp[PP_RLPF_END] <= apply_reverse_lpf(B_pp[PP_RLPF_START+2], B_diff_s15);
|
||||
end
|
||||
|
||||
/* --- Lumacode overwrite data from RAM --- */
|
||||
if (MISC_LUMACODE_MODE != 0) begin
|
||||
if (MISC_LUMACODE_MODE == 4) begin
|
||||
// NES
|
||||
R_pp[PP_RLPF_START+1] <= &lc_emp_nes[1:0] ? (lumacode_data[23:16]/2) : (|lc_emp_nes[1:0] ? (lumacode_data[23:16] - lumacode_data[23:16]/4) : lumacode_data[23:16]);
|
||||
G_pp[PP_RLPF_START+1] <= (lc_emp_nes[2] & lc_emp_nes[0]) ? (lumacode_data[15:8]/2) : ((lc_emp_nes[2] | lc_emp_nes[0]) ? (lumacode_data[15:8] - lumacode_data[15:8]/4) : lumacode_data[15:8]);
|
||||
B_pp[PP_RLPF_START+1] <= &lc_emp_nes[2:1] ? (lumacode_data[7:0]/2) : (|lc_emp_nes[2:1] ? (lumacode_data[7:0] - lumacode_data[7:0]/4) : lumacode_data[7:0]);
|
||||
end else begin
|
||||
// With other palette data used as-is
|
||||
R_pp[PP_RLPF_START+1] <= lumacode_data[23:16];
|
||||
G_pp[PP_RLPF_START+1] <= lumacode_data[15:8];
|
||||
B_pp[PP_RLPF_START+1] <= lumacode_data[7:0];
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// Lumacode palette RAM inputs
|
||||
always @(*)
|
||||
case (MISC_LUMACODE_MODE)
|
||||
1: begin // C64, C128, VIC20
|
||||
lumacode_addr = {5'h1, lc_code[1], lc_code[2]};
|
||||
lumacode_rden = 1;
|
||||
end
|
||||
2: begin // Spectrum
|
||||
lumacode_addr = {5'h2, lc_code[1], lc_code[2]};
|
||||
lumacode_rden = 1;
|
||||
end
|
||||
3: begin // TMS99xxA
|
||||
lumacode_addr = {5'h3, lc_code[1], lc_code[2]};
|
||||
lumacode_rden = 1;
|
||||
end
|
||||
4: begin // NES
|
||||
lumacode_addr = {3'h1, lc_code[1], lc_code[2], lc_code[3]};
|
||||
lumacode_rden = 1;
|
||||
end
|
||||
6: begin // Atari CTIA/TIA
|
||||
lumacode_addr = {2'h1, lc_atari_hue, lc_code[1], lc_code[2][1]};
|
||||
lumacode_rden = (h_ctr == H_SAMPLE_SEL) & !lc_atari_ctr;
|
||||
end
|
||||
5: begin // Atari GTIA
|
||||
lumacode_addr = lc_atari_ctr ? {1'h1, lc_atari_hue, lc_atari_luma} : {1'h1, lc_atari_hue, lc_atari_luma[3:2], lc_code[1]};
|
||||
lumacode_rden = (h_ctr == H_SAMPLE_SEL);
|
||||
end
|
||||
default: begin // Standard output
|
||||
lumacode_addr = '0;
|
||||
lumacode_rden = 0;
|
||||
end
|
||||
endcase
|
||||
|
||||
// Output
|
||||
assign R_o = R_pp[PP_PL_END];
|
||||
assign G_o = G_pp[PP_PL_END];
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
<File Name="sys_controller/src/video_modes.c"/>
|
||||
<File Name="sys_controller/src/fat16_export.c"/>
|
||||
<File Name="sys_controller/src/lcd.c"/>
|
||||
<File Name="sys_controller/src/lumacode_palettes.c"/>
|
||||
</VirtualDirectory>
|
||||
<VirtualDirectory Name="ic_drivers">
|
||||
<VirtualDirectory Name="pcm1862">
|
||||
|
||||
@ -126,6 +126,10 @@ volatile sc_regs *sc = (volatile sc_regs*)SC_CONFIG_0_BASE;
|
||||
volatile osd_regs *osd = (volatile osd_regs*)OSD_GENERATOR_0_BASE;
|
||||
volatile pll_reconfig_regs *pll_reconfig = (volatile pll_reconfig_regs*)PLL_RECONFIG_0_BASE;
|
||||
|
||||
#include "src/lumacode_palettes.c"
|
||||
const lc_palette_set* lc_palette_set_list[] = {&lc_palette_pal};
|
||||
int loaded_lc_palette = -1;
|
||||
|
||||
void ui_disp_menu(alt_u8 osd_mode)
|
||||
{
|
||||
alt_u8 menu_page;
|
||||
@ -458,6 +462,12 @@ void update_sc_config(mode_data_t *vm_in, mode_data_t *vm_out, vm_proc_config_t
|
||||
sl_config2_reg sl_config2 = {.data=0x00000000};
|
||||
sl_config3_reg sl_config3 = {.data=0x00000000};
|
||||
|
||||
if (avconfig->lumacode_mode && (avconfig->lumacode_pal != loaded_lc_palette)) {
|
||||
for (i=0; i<(sizeof(lc_palette_set)/4); i++)
|
||||
sc->lumacode_pal_ram[i] = lc_palette_set_list[avconfig->lumacode_pal]->data[i];
|
||||
loaded_lc_palette = avconfig->lumacode_pal;
|
||||
}
|
||||
|
||||
// Set input params
|
||||
hv_in_config.h_total = vm_in->timings.h_total;
|
||||
hv_in_config.h_active = vm_in->timings.h_active;
|
||||
|
||||
@ -89,6 +89,18 @@ typedef struct {
|
||||
avconfig_t cc;
|
||||
} avmode_t;
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
uint32_t c64_pal[16];
|
||||
uint32_t zx_pal[16];
|
||||
uint32_t msx_pal[16];
|
||||
uint32_t nes_pal[64];
|
||||
uint32_t tia_pal[128];
|
||||
uint32_t gtia_pal[256];
|
||||
} __attribute__((packed, __may_alias__));
|
||||
uint32_t data[496];
|
||||
} lc_palette_set;
|
||||
|
||||
void ui_disp_menu(alt_u8 osd_mode);
|
||||
void ui_disp_status(alt_u8 refresh_osd_timer);
|
||||
|
||||
|
||||
@ -123,6 +123,7 @@ typedef struct {
|
||||
alt_u8 reverse_lpf;
|
||||
alt_u8 shmask_mode;
|
||||
alt_u8 lumacode_mode;
|
||||
alt_u8 lumacode_pal;
|
||||
|
||||
/* AFE settings */
|
||||
alt_u8 sync_vth;
|
||||
|
||||
33
software/sys_controller/src/lumacode_palettes.c
Normal file
33
software/sys_controller/src/lumacode_palettes.c
Normal file
@ -0,0 +1,33 @@
|
||||
// Lumacode palette sets
|
||||
|
||||
const lc_palette_set lc_palette_pal = {.c64_pal={0x000000,0x2a1b9d,0x7d202c,0x84258c,0x4c2e00,0x3c3c3c,0x646464,0x4fb3a5,0x7f410d,0x6351db,0x939393,0xbfd04a,0x339840,0xb44f5c,0x7ce587,0xffffff},
|
||||
.zx_pal= {0x000000,0x000000,0x0200FD,0xCF01CE,0x0100CE,0xCF0100,0xFF02FD,0x01CFCF,0xFF0201,0x00CF15,0x02FFFF,0xFFFF1D,0x00FF1C,0xCFCF15,0xCFCFCF,0xFFFFFF},
|
||||
.msx_pal={0x000000,0x5455ed,0xfc5554,0xff7978,0x000000,0xd4524d,0x7d76fc,0x42ebf5,0x21b03b,0x21c842,0xff7978,0xcccccc,0xc95bba,0xd4c154,0xe6ce80,0xffffff},
|
||||
.nes_pal={0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x626262,0x001fb2,0x2404c8,0x5200b2,0x730076,0x800024,0x730b00,0x522800,
|
||||
0x244400,0x005700,0x005c00,0x005324,0x003c76,0x000000,0xababab,0x0d57ff,0x4b30ff,0x8a13ff,0xbc08d6,0xd21269,0xc72e00,0x9d5400,0x607b00,0x209800,
|
||||
0x00a300,0x009942,0x007db4,0x000000,0xffffff,0x53aeff,0x9085ff,0xd365ff,0xff57ff,0xff5dcf,0xff7757,0xfa9e00,0xbdc700,0x7ae700,0x43f611,0x26ef7e,
|
||||
0x2cd5f6,0x4e4e4e,0xffffff,0xb6e1ff,0xced1ff,0xe9c3ff,0xffbcff,0xffbdf4,0xffc6c3,0xffd59a,0xe9e681,0xcef481,0xb6fb9a,0xa9fac3,0xa9f0f4,0xb8b8b8},
|
||||
.tia_pal={0x000000,0x404040,0x6C6C6C,0x909090,0xB0B0B0,0xC8C8C8,0xDCDCDC,0xECECEC,0x444400,0x646410,0x848424,0xA0A034,0xB8B840,0xD0D050,0xE8E85C,0xFCFC68,
|
||||
0x702800,0x844414,0x985C28,0xAC783C,0xBC8C4C,0xCCA05C,0xDCB468,0xECC878,0x841800,0x983418,0xAC5030,0xC06848,0xD0805C,0xE09470,0xECA880,0xFCBC94,
|
||||
0x880000,0x9C2020,0xB03C3C,0xC05858,0xD07070,0xE08888,0xECA0A0,0xFCB4B4,0x78005C,0x8C2074,0xA03C88,0xB0589C,0xC070B0,0xD084C0,0xDC9CD0,0xECB0E0,
|
||||
0x480078,0x602090,0x783CA4,0x8C58B8,0xA070CC,0xB484DC,0xC49CEC,0xD4B0FC,0x140084,0x302098,0x4C3CAC,0x6858C0,0x7C70D0,0x9488E0,0xA8A0EC,0xBCB4FC,
|
||||
0x000088,0x1C209C,0x3840B0,0x505CC0,0x6874D0,0x7C8CE0,0x90A4EC,0xA4B8FC,0x00187C,0x1C3890,0x3854A8,0x5070BC,0x6888CC,0x7C9CDC,0x90B4EC,0xA4C8FC,
|
||||
0x002C5C,0x1C4C78,0x386890,0x5084AC,0x689CC0,0x7CB4D4,0x90CCE8,0xA4E0FC,0x003C2C,0x1C5C48,0x387C64,0x509C80,0x68B494,0x7CD0AC,0x90E4C0,0xA4FCD4,
|
||||
0x003C00,0x205C20,0x407C40,0x5C9C5C,0x74B474,0x8CD08C,0xA4E4A4,0xB8FCB8,0x143800,0x345C1C,0x507C38,0x6C9850,0x84B468,0x9CCC7C,0xB4E490,0xC8FCA4,
|
||||
0x2C3000,0x4C501C,0x687034,0x848C4C,0x9CA864,0xB4C078,0xCCD488,0xE0EC9C,0x442800,0x644818,0x846830,0xA08444,0xB89C58,0xD0B46C,0xE8CC7C,0xFCE08C},
|
||||
.gtia_pal={0x000000,0x111111,0x222222,0x333333,0x444444,0x555555,0x666666,0x777777,0x888888,0x999999,0xaaaaaa,0xbbbbbb,0xcccccc,0xdddddd,0xeeeeee,0xffffff,
|
||||
0x091900,0x192806,0x29370d,0x3a4714,0x4a561b,0x5a6522,0x6b7529,0x7b8430,0x8c9336,0x9ca33d,0xacb244,0xbdc14b,0xcdd152,0xdee059,0xeeef60,0xffff67,
|
||||
0x300000,0x3d1108,0x4b2211,0x593319,0x674422,0x75552a,0x826633,0x90773b,0x9e8844,0xac994c,0xbaaa55,0xc7bb5d,0xd5cc66,0xe3dd6e,0xf1ee77,0xffff80,
|
||||
0x4b0000,0x570f0c,0x631e18,0x6f2e24,0x7a3d30,0x874d3c,0x935c49,0x9f6b55,0xab7b61,0xb68a6d,0xc39a79,0xcfa986,0xdbb892,0xe6c89e,0xf3d7aa,0xffe7b7,
|
||||
0x550000,0x600e10,0x6b1c21,0x772a32,0x823843,0x8d4654,0x995465,0xa46276,0xaf7187,0xbb7f98,0xc68da9,0xd19bba,0xdda9cb,0xe8b7dc,0xf3c5ed,0xffd4fe,
|
||||
0x4c0047,0x570d53,0x631b5f,0x6f286b,0x7b3678,0x874384,0x935190,0x9f5e9c,0xab6ca9,0xb779b5,0xc387c1,0xcf94cd,0xdba2da,0xe7afe6,0xf3bdf2,0xffcbff,
|
||||
0x30007e,0x3b0b85,0x49198d,0x572796,0x65349f,0x7242a7,0x8050b0,0x8e5db8,0x9c6bc1,0xa979c9,0xb786d2,0xc594db,0xd3a2e3,0xe0afec,0xeebdf4,0xfccbfd,
|
||||
0x0a0097,0x1a0e9d,0x2a1da4,0x3b2cab,0x4b3ab2,0x5b49b9,0x6c58c0,0x7c67c7,0x8c75ce,0x9c84d5,0xad93dc,0xbda2e3,0xceb0ea,0xdebff1,0xeecef8,0xffddff,
|
||||
0x00008e,0x0c0d94,0x1b1e9c,0x2a2ea3,0x393eab,0x484eb2,0x575eba,0x666ec1,0x747ec9,0x838fd0,0x929fd8,0xa1afdf,0xb0bfe6,0xbfcfee,0xcedff5,0xddeffd,
|
||||
0x000e64,0x0c1e6e,0x192e78,0x263e83,0x324e8d,0x3f5e97,0x4c6ea2,0x587eac,0x658eb6,0x729ec1,0x7eaecb,0x8bbed5,0x98cee0,0xa4deea,0xb1eef4,0xbeffff,
|
||||
0x002422,0x09302e,0x153f3d,0x204d4c,0x2c5c5a,0x376a69,0x427978,0x4e8786,0x599695,0x65a4a4,0x70b3b2,0x7cc1c1,0x87d0d0,0x92dfde,0x9eeded,0xa9fcfc,
|
||||
0x003200,0x0b3f0e,0x164d1c,0x225b2b,0x2d6839,0x397648,0x448456,0x509164,0x5b9f73,0x67ad81,0x72ba90,0x7ec89e,0x89d6ac,0x95e3bb,0xa0f1c9,0xacffd8,
|
||||
0x003400,0x0c410a,0x194f14,0x265c1e,0x336a28,0x407732,0x4c853c,0x599246,0x66a050,0x73ad5a,0x80bb64,0x8cc86e,0x99d678,0xa6e382,0xb3f18c,0xc0ff97,
|
||||
0x002a00,0x0f3807,0x1e460e,0x2d5416,0x3c621d,0x4b7124,0x5a7f2c,0x698d33,0x799b3b,0x88a942,0x97b849,0xa6c651,0xb5d458,0xc4e260,0xd3f067,0xe3ff6f,
|
||||
0x0d1700,0x1d2606,0x2d350d,0x3d4514,0x4d541b,0x5d6422,0x6d7329,0x7d8330,0x8e9237,0x9ea23e,0xaeb145,0xbec14c,0xced053,0xdee05a,0xeeef61,0xffff68,
|
||||
0x330000,0x401008,0x4e2111,0x5b321a,0x694323,0x77542c,0x846535,0x92763e,0x9f8646,0xad974f,0xbba858,0xc8b961,0xd6ca6a,0xe3db73,0xf1ec7c,0xfffd85}};
|
||||
@ -82,6 +82,7 @@ static const char* const mask_color_desc[] = { "Black", "Blue", "Green", "Cyan",
|
||||
static const char* const av3_alt_rgb_desc[] = { "Off", "AV1", "AV2" };
|
||||
static const char* const shmask_mode_desc[] = { "Off", "A-Grille", "TV", "PVM" };
|
||||
static const char* const lumacode_mode_desc[] = { "Off", "C64", "Spectrum", "Coleco/MSX", "NES", "Atari GTIA", "Atari VCS" };
|
||||
static const char* const lumacode_pal_desc[] = { "PAL" };
|
||||
static const char* const adc_pll_bw_desc[] = { "High", "Medium", "Low", "Ultra low" };
|
||||
static const char* const fpga_pll_bw_desc[] = { "High", "Low" };
|
||||
|
||||
@ -159,6 +160,7 @@ MENU(menu_vinputproc, P99_PROTECT({ \
|
||||
{ "ALC V filter", OPT_AVCONFIG_NUMVALUE, { .num = { &tc.alc_v_filter, OPT_NOWRAP, 0, ALC_V_FILTER_MAX, alc_v_filter_disp } } },
|
||||
{ "ALC H filter", OPT_AVCONFIG_NUMVALUE, { .num = { &tc.alc_h_filter, OPT_NOWRAP, 0, ALC_H_FILTER_MAX, alc_h_filter_disp } } },
|
||||
{ "Lumacode", OPT_AVCONFIG_SELECTION, { .sel = { &tc.lumacode_mode, OPT_WRAP, SETTING_ITEM(lumacode_mode_desc) } } },
|
||||
{ "Lc palette set", OPT_AVCONFIG_SELECTION, { .sel = { &tc.lumacode_pal, OPT_WRAP, SETTING_ITEM(lumacode_pal_desc) } } },
|
||||
}))
|
||||
|
||||
MENU(menu_sampling, P99_PROTECT({ \
|
||||
|
||||
35
sys.qsys
35
sys.qsys
@ -430,6 +430,11 @@
|
||||
internal="clk_27.clk_in_reset"
|
||||
type="reset"
|
||||
dir="end" />
|
||||
<interface
|
||||
name="sc_config_0_lc_ram_if"
|
||||
internal="sc_config_0.lc_ram_if"
|
||||
type="conduit"
|
||||
dir="end" />
|
||||
<interface
|
||||
name="sc_config_0_sc_if"
|
||||
internal="sc_config_0.sc_if"
|
||||
@ -457,7 +462,11 @@
|
||||
<parameter name="dedicated_spi" value="1" />
|
||||
</module>
|
||||
<module name="ibex_0" kind="ibex" version="1.0" enabled="1">
|
||||
<parameter name="AUTO_INTERRUPT_RECEIVER_INTERRUPTS_USED" value="15" />
|
||||
<parameter name="AUTO_EXTERNAL_IRQ_INTERRUPTS_USED" value="0" />
|
||||
<parameter name="AUTO_FAST_IRQ_INTERRUPTS_USED" value="7" />
|
||||
<parameter name="AUTO_NOT_MASKABLE_IRQ_INTERRUPTS_USED" value="0" />
|
||||
<parameter name="AUTO_SOFTWARE_IRQ_INTERRUPTS_USED" value="0" />
|
||||
<parameter name="AUTO_TIMER_IRQ_INTERRUPTS_USED" value="1" />
|
||||
<parameter name="IBEX_ICACHE" value="true" />
|
||||
<parameter name="IBEX_RV32E" value="true" />
|
||||
</module>
|
||||
@ -884,30 +893,30 @@
|
||||
<connection
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
end="i2c_opencores_1.interrupt_sender">
|
||||
<parameter name="irqNumber" value="0" />
|
||||
</connection>
|
||||
<connection
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
start="ibex_0.fast_irq"
|
||||
end="i2c_opencores_0.interrupt_sender">
|
||||
<parameter name="irqNumber" value="1" />
|
||||
</connection>
|
||||
<connection
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
end="jtag_uart_0.irq">
|
||||
start="ibex_0.fast_irq"
|
||||
end="i2c_opencores_1.interrupt_sender">
|
||||
<parameter name="irqNumber" value="2" />
|
||||
</connection>
|
||||
<connection
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
start="ibex_0.fast_irq"
|
||||
end="jtag_uart_0.irq">
|
||||
<parameter name="irqNumber" value="0" />
|
||||
</connection>
|
||||
<connection
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.timer_irq"
|
||||
end="timer_0.irq">
|
||||
<parameter name="irqNumber" value="3" />
|
||||
<parameter name="irqNumber" value="0" />
|
||||
</connection>
|
||||
<connection
|
||||
kind="reset"
|
||||
|
||||
525
sys.sopcinfo
525
sys.sopcinfo
@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EnsembleReport name="sys" kind="sys" version="1.0" fabric="QSYS">
|
||||
<!-- Format version 24.1 1077 (Future versions may contain additional information.) -->
|
||||
<!-- 2025.05.03.12:04:14 -->
|
||||
<!-- 2025.06.16.21:04:21 -->
|
||||
<!-- A collection of modules and connections -->
|
||||
<parameter name="AUTO_GENERATION_ID">
|
||||
<type>java.lang.Integer</type>
|
||||
<value>1746263054</value>
|
||||
<value>1750097061</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
@ -2249,15 +2249,55 @@ the requested settings for a module instance. -->
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="AUTO_INTERRUPT_RECEIVER_INTERRUPTS_USED">
|
||||
<parameter name="AUTO_SOFTWARE_IRQ_INTERRUPTS_USED">
|
||||
<type>java.math.BigInteger</type>
|
||||
<value>15</value>
|
||||
<value>0</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
<sysinfo_type>INTERRUPTS_USED</sysinfo_type>
|
||||
<sysinfo_arg>interrupt_receiver</sysinfo_arg>
|
||||
<sysinfo_arg>software_irq</sysinfo_arg>
|
||||
</parameter>
|
||||
<parameter name="AUTO_TIMER_IRQ_INTERRUPTS_USED">
|
||||
<type>java.math.BigInteger</type>
|
||||
<value>1</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
<sysinfo_type>INTERRUPTS_USED</sysinfo_type>
|
||||
<sysinfo_arg>timer_irq</sysinfo_arg>
|
||||
</parameter>
|
||||
<parameter name="AUTO_EXTERNAL_IRQ_INTERRUPTS_USED">
|
||||
<type>java.math.BigInteger</type>
|
||||
<value>0</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
<sysinfo_type>INTERRUPTS_USED</sysinfo_type>
|
||||
<sysinfo_arg>external_irq</sysinfo_arg>
|
||||
</parameter>
|
||||
<parameter name="AUTO_FAST_IRQ_INTERRUPTS_USED">
|
||||
<type>java.math.BigInteger</type>
|
||||
<value>7</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
<sysinfo_type>INTERRUPTS_USED</sysinfo_type>
|
||||
<sysinfo_arg>fast_irq</sysinfo_arg>
|
||||
</parameter>
|
||||
<parameter name="AUTO_NOT_MASKABLE_IRQ_INTERRUPTS_USED">
|
||||
<type>java.math.BigInteger</type>
|
||||
<value>0</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
<sysinfo_type>INTERRUPTS_USED</sysinfo_type>
|
||||
<sysinfo_arg>not_maskable_irq</sysinfo_arg>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
@ -2512,7 +2552,221 @@ parameters are a RESULT of the module parameters. -->
|
||||
<role>core_sleep_o</role>
|
||||
</port>
|
||||
</interface>
|
||||
<interface name="interrupt_receiver" kind="interrupt_receiver" version="24.1">
|
||||
<interface name="software_irq" kind="interrupt_receiver" version="24.1">
|
||||
<!-- The connection points exposed by a module instance for the
|
||||
particular module parameters. Connection points and their
|
||||
parameters are a RESULT of the module parameters. -->
|
||||
<parameter name="associatedAddressablePoint">
|
||||
<type>com.altera.entityinterfaces.IConnectionPoint</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedClock">
|
||||
<type>java.lang.String</type>
|
||||
<value>clk_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedReset">
|
||||
<type>java.lang.String</type>
|
||||
<value>reset_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqMap">
|
||||
<type>java.lang.String</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqScheme">
|
||||
<type>com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme</type>
|
||||
<value>INDIVIDUAL_REQUESTS</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
<value>UNKNOWN</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="generateLegacySim">
|
||||
<type>boolean</type>
|
||||
<value>false</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<type>interrupt</type>
|
||||
<isStart>true</isStart>
|
||||
<port>
|
||||
<name>irq_software_i</name>
|
||||
<direction>Input</direction>
|
||||
<width>1</width>
|
||||
<role>irq</role>
|
||||
</port>
|
||||
</interface>
|
||||
<interface name="timer_irq" kind="interrupt_receiver" version="24.1">
|
||||
<!-- The connection points exposed by a module instance for the
|
||||
particular module parameters. Connection points and their
|
||||
parameters are a RESULT of the module parameters. -->
|
||||
<parameter name="associatedAddressablePoint">
|
||||
<type>com.altera.entityinterfaces.IConnectionPoint</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedClock">
|
||||
<type>java.lang.String</type>
|
||||
<value>clk_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedReset">
|
||||
<type>java.lang.String</type>
|
||||
<value>reset_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqMap">
|
||||
<type>java.lang.String</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqScheme">
|
||||
<type>com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme</type>
|
||||
<value>INDIVIDUAL_REQUESTS</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
<value>UNKNOWN</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="generateLegacySim">
|
||||
<type>boolean</type>
|
||||
<value>false</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<type>interrupt</type>
|
||||
<isStart>true</isStart>
|
||||
<port>
|
||||
<name>irq_timer_i</name>
|
||||
<direction>Input</direction>
|
||||
<width>1</width>
|
||||
<role>irq</role>
|
||||
</port>
|
||||
<interrupt>
|
||||
<isBridge>false</isBridge>
|
||||
<moduleName>timer_0</moduleName>
|
||||
<slaveName>irq</slaveName>
|
||||
<name>timer_0.irq</name>
|
||||
<interruptNumber>0</interruptNumber>
|
||||
</interrupt>
|
||||
</interface>
|
||||
<interface name="external_irq" kind="interrupt_receiver" version="24.1">
|
||||
<!-- The connection points exposed by a module instance for the
|
||||
particular module parameters. Connection points and their
|
||||
parameters are a RESULT of the module parameters. -->
|
||||
<parameter name="associatedAddressablePoint">
|
||||
<type>com.altera.entityinterfaces.IConnectionPoint</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedClock">
|
||||
<type>java.lang.String</type>
|
||||
<value>clk_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedReset">
|
||||
<type>java.lang.String</type>
|
||||
<value>reset_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqMap">
|
||||
<type>java.lang.String</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqScheme">
|
||||
<type>com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme</type>
|
||||
<value>INDIVIDUAL_REQUESTS</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
<value>UNKNOWN</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="generateLegacySim">
|
||||
<type>boolean</type>
|
||||
<value>false</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<type>interrupt</type>
|
||||
<isStart>true</isStart>
|
||||
<port>
|
||||
<name>irq_external_i</name>
|
||||
<direction>Input</direction>
|
||||
<width>1</width>
|
||||
<role>irq</role>
|
||||
</port>
|
||||
</interface>
|
||||
<interface name="fast_irq" kind="interrupt_receiver" version="24.1">
|
||||
<!-- The connection points exposed by a module instance for the
|
||||
particular module parameters. Connection points and their
|
||||
parameters are a RESULT of the module parameters. -->
|
||||
@ -2580,13 +2834,6 @@ parameters are a RESULT of the module parameters. -->
|
||||
<width>15</width>
|
||||
<role>irq</role>
|
||||
</port>
|
||||
<interrupt>
|
||||
<isBridge>false</isBridge>
|
||||
<moduleName>i2c_opencores_1</moduleName>
|
||||
<slaveName>interrupt_sender</slaveName>
|
||||
<name>i2c_opencores_1.interrupt_sender</name>
|
||||
<interruptNumber>0</interruptNumber>
|
||||
</interrupt>
|
||||
<interrupt>
|
||||
<isBridge>false</isBridge>
|
||||
<moduleName>i2c_opencores_0</moduleName>
|
||||
@ -2596,19 +2843,88 @@ parameters are a RESULT of the module parameters. -->
|
||||
</interrupt>
|
||||
<interrupt>
|
||||
<isBridge>false</isBridge>
|
||||
<moduleName>jtag_uart_0</moduleName>
|
||||
<slaveName>irq</slaveName>
|
||||
<name>jtag_uart_0.irq</name>
|
||||
<moduleName>i2c_opencores_1</moduleName>
|
||||
<slaveName>interrupt_sender</slaveName>
|
||||
<name>i2c_opencores_1.interrupt_sender</name>
|
||||
<interruptNumber>2</interruptNumber>
|
||||
</interrupt>
|
||||
<interrupt>
|
||||
<isBridge>false</isBridge>
|
||||
<moduleName>timer_0</moduleName>
|
||||
<moduleName>jtag_uart_0</moduleName>
|
||||
<slaveName>irq</slaveName>
|
||||
<name>timer_0.irq</name>
|
||||
<interruptNumber>3</interruptNumber>
|
||||
<name>jtag_uart_0.irq</name>
|
||||
<interruptNumber>0</interruptNumber>
|
||||
</interrupt>
|
||||
</interface>
|
||||
<interface name="not_maskable_irq" kind="interrupt_receiver" version="24.1">
|
||||
<!-- The connection points exposed by a module instance for the
|
||||
particular module parameters. Connection points and their
|
||||
parameters are a RESULT of the module parameters. -->
|
||||
<parameter name="associatedAddressablePoint">
|
||||
<type>com.altera.entityinterfaces.IConnectionPoint</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedClock">
|
||||
<type>java.lang.String</type>
|
||||
<value>clk_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedReset">
|
||||
<type>java.lang.String</type>
|
||||
<value>reset_sink</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqMap">
|
||||
<type>java.lang.String</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="irqScheme">
|
||||
<type>com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme</type>
|
||||
<value>INDIVIDUAL_REQUESTS</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
<value>UNKNOWN</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="generateLegacySim">
|
||||
<type>boolean</type>
|
||||
<value>false</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<type>interrupt</type>
|
||||
<isStart>true</isStart>
|
||||
<port>
|
||||
<name>irq_nm_i</name>
|
||||
<direction>Input</direction>
|
||||
<width>1</width>
|
||||
<role>irq</role>
|
||||
</port>
|
||||
</interface>
|
||||
<interface name="avalon_master_bus_instr" kind="avalon_master" version="24.1">
|
||||
<!-- The connection points exposed by a module instance for the
|
||||
particular module parameters. Connection points and their
|
||||
@ -3262,7 +3578,7 @@ parameters are a RESULT of the module parameters. -->
|
||||
<slaveName>avalon_s</slaveName>
|
||||
<name>sc_config_0.avalon_s</name>
|
||||
<baseAddress>139264</baseAddress>
|
||||
<span>64</span>
|
||||
<span>2048</span>
|
||||
</memoryBlock>
|
||||
<memoryBlock>
|
||||
<isBridge>false</isBridge>
|
||||
@ -11558,7 +11874,7 @@ parameters are a RESULT of the module parameters. -->
|
||||
</parameter>
|
||||
<parameter name="addressSpan">
|
||||
<type>java.math.BigInteger</type>
|
||||
<value>64</value>
|
||||
<value>2048</value>
|
||||
<derived>true</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>false</visible>
|
||||
@ -11857,7 +12173,7 @@ parameters are a RESULT of the module parameters. -->
|
||||
<port>
|
||||
<name>avalon_s_address</name>
|
||||
<direction>Input</direction>
|
||||
<width>4</width>
|
||||
<width>9</width>
|
||||
<role>address</role>
|
||||
</port>
|
||||
<port>
|
||||
@ -12032,6 +12348,69 @@ parameters are a RESULT of the module parameters. -->
|
||||
<role>sl_config3_o</role>
|
||||
</port>
|
||||
</interface>
|
||||
<interface name="lc_ram_if" kind="conduit_end" version="24.1">
|
||||
<!-- The connection points exposed by a module instance for the
|
||||
particular module parameters. Connection points and their
|
||||
parameters are a RESULT of the module parameters. -->
|
||||
<parameter name="associatedClock">
|
||||
<type>java.lang.String</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="associatedReset">
|
||||
<type>java.lang.String</type>
|
||||
<value></value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
<value>UNKNOWN</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="generateLegacySim">
|
||||
<type>boolean</type>
|
||||
<value>false</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<type>conduit</type>
|
||||
<isStart>false</isStart>
|
||||
<port>
|
||||
<name>lumacode_clk_i</name>
|
||||
<direction>Input</direction>
|
||||
<width>1</width>
|
||||
<role>lumacode_clk_i</role>
|
||||
</port>
|
||||
<port>
|
||||
<name>lumacode_addr_i</name>
|
||||
<direction>Input</direction>
|
||||
<width>9</width>
|
||||
<role>lumacode_addr_i</role>
|
||||
</port>
|
||||
<port>
|
||||
<name>lumacode_rden_i</name>
|
||||
<direction>Input</direction>
|
||||
<width>1</width>
|
||||
<role>lumacode_rden_i</role>
|
||||
</port>
|
||||
<port>
|
||||
<name>lumacode_data_o</name>
|
||||
<direction>Output</direction>
|
||||
<width>32</width>
|
||||
<role>lumacode_data_o</role>
|
||||
</port>
|
||||
</interface>
|
||||
</module>
|
||||
<module
|
||||
name="timer_0"
|
||||
@ -14374,45 +14753,10 @@ parameters are a RESULT of the module parameters. -->
|
||||
<endConnectionPoint>clock_sink</endConnectionPoint>
|
||||
</connection>
|
||||
<connection
|
||||
name="ibex_0.interrupt_receiver/i2c_opencores_1.interrupt_sender"
|
||||
name="ibex_0.fast_irq/i2c_opencores_0.interrupt_sender"
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
end="i2c_opencores_1.interrupt_sender">
|
||||
<parameter name="irqNumber">
|
||||
<type>int</type>
|
||||
<value>0</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
<value>UNKNOWN</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="generateLegacySim">
|
||||
<type>boolean</type>
|
||||
<value>false</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<startModule>ibex_0</startModule>
|
||||
<startConnectionPoint>interrupt_receiver</startConnectionPoint>
|
||||
<endModule>i2c_opencores_1</endModule>
|
||||
<endConnectionPoint>interrupt_sender</endConnectionPoint>
|
||||
</connection>
|
||||
<connection
|
||||
name="ibex_0.interrupt_receiver/i2c_opencores_0.interrupt_sender"
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
start="ibex_0.fast_irq"
|
||||
end="i2c_opencores_0.interrupt_sender">
|
||||
<parameter name="irqNumber">
|
||||
<type>int</type>
|
||||
@ -14439,16 +14783,16 @@ parameters are a RESULT of the module parameters. -->
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<startModule>ibex_0</startModule>
|
||||
<startConnectionPoint>interrupt_receiver</startConnectionPoint>
|
||||
<startConnectionPoint>fast_irq</startConnectionPoint>
|
||||
<endModule>i2c_opencores_0</endModule>
|
||||
<endConnectionPoint>interrupt_sender</endConnectionPoint>
|
||||
</connection>
|
||||
<connection
|
||||
name="ibex_0.interrupt_receiver/jtag_uart_0.irq"
|
||||
name="ibex_0.fast_irq/i2c_opencores_1.interrupt_sender"
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
end="jtag_uart_0.irq">
|
||||
start="ibex_0.fast_irq"
|
||||
end="i2c_opencores_1.interrupt_sender">
|
||||
<parameter name="irqNumber">
|
||||
<type>int</type>
|
||||
<value>2</value>
|
||||
@ -14474,19 +14818,19 @@ parameters are a RESULT of the module parameters. -->
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<startModule>ibex_0</startModule>
|
||||
<startConnectionPoint>interrupt_receiver</startConnectionPoint>
|
||||
<endModule>jtag_uart_0</endModule>
|
||||
<endConnectionPoint>irq</endConnectionPoint>
|
||||
<startConnectionPoint>fast_irq</startConnectionPoint>
|
||||
<endModule>i2c_opencores_1</endModule>
|
||||
<endConnectionPoint>interrupt_sender</endConnectionPoint>
|
||||
</connection>
|
||||
<connection
|
||||
name="ibex_0.interrupt_receiver/timer_0.irq"
|
||||
name="ibex_0.fast_irq/jtag_uart_0.irq"
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.interrupt_receiver"
|
||||
end="timer_0.irq">
|
||||
start="ibex_0.fast_irq"
|
||||
end="jtag_uart_0.irq">
|
||||
<parameter name="irqNumber">
|
||||
<type>int</type>
|
||||
<value>3</value>
|
||||
<value>0</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
@ -14509,7 +14853,42 @@ parameters are a RESULT of the module parameters. -->
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<startModule>ibex_0</startModule>
|
||||
<startConnectionPoint>interrupt_receiver</startConnectionPoint>
|
||||
<startConnectionPoint>fast_irq</startConnectionPoint>
|
||||
<endModule>jtag_uart_0</endModule>
|
||||
<endConnectionPoint>irq</endConnectionPoint>
|
||||
</connection>
|
||||
<connection
|
||||
name="ibex_0.timer_irq/timer_0.irq"
|
||||
kind="interrupt"
|
||||
version="24.1"
|
||||
start="ibex_0.timer_irq"
|
||||
end="timer_0.irq">
|
||||
<parameter name="irqNumber">
|
||||
<type>int</type>
|
||||
<value>0</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="deviceFamily">
|
||||
<type>java.lang.String</type>
|
||||
<value>UNKNOWN</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<parameter name="generateLegacySim">
|
||||
<type>boolean</type>
|
||||
<value>false</value>
|
||||
<derived>false</derived>
|
||||
<enabled>true</enabled>
|
||||
<visible>true</visible>
|
||||
<valid>true</valid>
|
||||
</parameter>
|
||||
<startModule>ibex_0</startModule>
|
||||
<startConnectionPoint>timer_irq</startConnectionPoint>
|
||||
<endModule>timer_0</endModule>
|
||||
<endConnectionPoint>irq</endConnectionPoint>
|
||||
</connection>
|
||||
@ -15026,7 +15405,7 @@ parameters are a RESULT of the module parameters. -->
|
||||
<version>17.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<instanceCount>9</instanceCount>
|
||||
<instanceCount>10</instanceCount>
|
||||
<name>conduit_end</name>
|
||||
<type>com.altera.entityinterfaces.IElementClass</type>
|
||||
<subtype>com.altera.entityinterfaces.IMutableConnectionPoint</subtype>
|
||||
@ -15050,7 +15429,7 @@ parameters are a RESULT of the module parameters. -->
|
||||
<version>1.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<instanceCount>1</instanceCount>
|
||||
<instanceCount>5</instanceCount>
|
||||
<name>interrupt_receiver</name>
|
||||
<type>com.altera.entityinterfaces.IElementClass</type>
|
||||
<subtype>com.altera.entityinterfaces.IMutableConnectionPoint</subtype>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user