Add LED module and address decoding; disable LA
The Logic analyzer isn't that useful anyway since it does not track rising and falling edges.
This commit is contained in:
12
hw/efinix_fpga/addr_decode.sv
Normal file
12
hw/efinix_fpga/addr_decode.sv
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
module addr_decode
|
||||||
|
(
|
||||||
|
input [15:0] i_addr,
|
||||||
|
|
||||||
|
output o_rom_cs,
|
||||||
|
output o_leds_cs
|
||||||
|
);
|
||||||
|
|
||||||
|
assign o_rom_cs = i_addr >= 16'hf000 && i_addr <= 16'hffff;
|
||||||
|
assign o_leds_cs = i_addr == 16'hefff;
|
||||||
|
|
||||||
|
endmodule
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
{
|
{
|
||||||
"name": "la0",
|
"name": "la0",
|
||||||
"type": "la",
|
"type": "la",
|
||||||
"uuid": "244dbd2d34ea40fba571b257d0a2bb75",
|
"uuid": "7ac38c47d15d4906b7e4dfa4b8e0f620",
|
||||||
"trigin_en": false,
|
"trigin_en": false,
|
||||||
"trigout_en": false,
|
"trigout_en": false,
|
||||||
"auto_inserted": true,
|
"auto_inserted": true,
|
||||||
@@ -19,42 +19,52 @@
|
|||||||
{
|
{
|
||||||
"name": "cpu_addr",
|
"name": "cpu_addr",
|
||||||
"width": 16,
|
"width": 16,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "button_reset",
|
"name": "button_reset",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpu_data_in",
|
"name": "cpu_data_in",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpu_rwb",
|
"name": "cpu_rwb",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpu_sync",
|
"name": "cpu_sync",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpu_data_out",
|
"name": "cpu_data_out",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpu_data_oe",
|
"name": "cpu_data_oe",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpu_phi2",
|
"name": "cpu_phi2",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"probe_type": 1
|
"probe_type": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "w_rom_cs",
|
||||||
|
"width": 1,
|
||||||
|
"probe_type": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "boot_rom/re",
|
||||||
|
"width": 1,
|
||||||
|
"probe_type": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -409,6 +419,18 @@
|
|||||||
"name": "la0_probe8",
|
"name": "la0_probe8",
|
||||||
"net": "cpu_phi2",
|
"net": "cpu_phi2",
|
||||||
"path": []
|
"path": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "la0_probe9",
|
||||||
|
"net": "w_rom_cs",
|
||||||
|
"path": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "la0_probe10",
|
||||||
|
"net": "re",
|
||||||
|
"path": [
|
||||||
|
"boot_rom"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -437,7 +459,7 @@
|
|||||||
"name": "cpu_addr",
|
"name": "cpu_addr",
|
||||||
"width": 16,
|
"width": 16,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": [],
|
"path": [],
|
||||||
"net_idx_left": 15,
|
"net_idx_left": 15,
|
||||||
@@ -447,7 +469,7 @@
|
|||||||
"name": "button_reset",
|
"name": "button_reset",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": []
|
"path": []
|
||||||
},
|
},
|
||||||
@@ -455,7 +477,7 @@
|
|||||||
"name": "cpu_data_in",
|
"name": "cpu_data_in",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": [],
|
"path": [],
|
||||||
"net_idx_left": 7,
|
"net_idx_left": 7,
|
||||||
@@ -465,7 +487,7 @@
|
|||||||
"name": "cpu_rwb",
|
"name": "cpu_rwb",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": []
|
"path": []
|
||||||
},
|
},
|
||||||
@@ -473,7 +495,7 @@
|
|||||||
"name": "cpu_sync",
|
"name": "cpu_sync",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": []
|
"path": []
|
||||||
},
|
},
|
||||||
@@ -481,7 +503,7 @@
|
|||||||
"name": "cpu_data_out",
|
"name": "cpu_data_out",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": [],
|
"path": [],
|
||||||
"net_idx_left": 7,
|
"net_idx_left": 7,
|
||||||
@@ -491,7 +513,7 @@
|
|||||||
"name": "cpu_data_oe",
|
"name": "cpu_data_oe",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": [],
|
"path": [],
|
||||||
"net_idx_left": 7,
|
"net_idx_left": 7,
|
||||||
@@ -501,9 +523,27 @@
|
|||||||
"name": "cpu_phi2",
|
"name": "cpu_phi2",
|
||||||
"width": 1,
|
"width": 1,
|
||||||
"clk_domain": "clk_2",
|
"clk_domain": "clk_2",
|
||||||
"selected_probe_type": "DATA AND TRIGGER",
|
"selected_probe_type": "DATA ONLY",
|
||||||
"child": [],
|
"child": [],
|
||||||
"path": []
|
"path": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "w_rom_cs",
|
||||||
|
"width": 1,
|
||||||
|
"clk_domain": "clk_2",
|
||||||
|
"selected_probe_type": "DATA ONLY",
|
||||||
|
"child": [],
|
||||||
|
"path": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "re",
|
||||||
|
"width": 1,
|
||||||
|
"clk_domain": "clk_2",
|
||||||
|
"selected_probe_type": "DATA ONLY",
|
||||||
|
"child": [],
|
||||||
|
"path": [
|
||||||
|
"boot_rom"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"top_module": "super6502",
|
"top_module": "super6502",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ input integer index;//Mode type
|
|||||||
input integer val_; //Port A index, Port B Index, Number of Items in Loop, Port A Start, Port B Start, reserved
|
input integer val_; //Port A index, Port B Index, Number of Items in Loop, Port A Start, Port B Start, reserved
|
||||||
case (index)
|
case (index)
|
||||||
0: bram_ini_table=
|
0: bram_ini_table=
|
||||||
(val_== 0)?256'h0000000000000000000000000000000000000000000000000000010004c000ea:
|
(val_== 0)?256'h00000000000000000fe00080000fa000d00003a000ef000ff0008d000ff000a9:
|
||||||
(val_== 1)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_== 1)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
(val_== 2)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_== 2)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
(val_== 3)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_== 3)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
@@ -23,7 +23,7 @@ case (index)
|
|||||||
(val_==16)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_==16)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
(val_==17)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_==17)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
(val_==18)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_==18)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
(val_==19)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_==19)?256'h0000000000000ff0000000000000000000000000000000000000000000000000:
|
||||||
(val_==20)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_==20)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
(val_==21)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_==21)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
(val_==22)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
(val_==22)?256'h0000000000000000000000000000000000000000000000000000000000000000:
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
ea
|
a9
|
||||||
4c
|
ff
|
||||||
01
|
8d
|
||||||
|
ff
|
||||||
|
ef
|
||||||
|
3a
|
||||||
|
d0
|
||||||
|
fa
|
||||||
|
80
|
||||||
|
fe
|
||||||
00
|
00
|
||||||
00
|
00
|
||||||
00
|
00
|
||||||
@@ -244,13 +251,6 @@ ea
|
|||||||
00
|
00
|
||||||
00
|
00
|
||||||
00
|
00
|
||||||
|
ff
|
||||||
00
|
00
|
||||||
00
|
00
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
29
hw/efinix_fpga/leds.sv
Normal file
29
hw/efinix_fpga/leds.sv
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
module leds
|
||||||
|
(
|
||||||
|
input clk,
|
||||||
|
input [7:0] i_data,
|
||||||
|
output logic [7:0] o_data,
|
||||||
|
input cs,
|
||||||
|
input rwb,
|
||||||
|
|
||||||
|
output logic [7:0] o_leds
|
||||||
|
);
|
||||||
|
|
||||||
|
logic re, we;
|
||||||
|
assign re = rwb & cs;
|
||||||
|
assign we = ~rwb & cs;
|
||||||
|
|
||||||
|
logic [7:0] _data;
|
||||||
|
|
||||||
|
assign o_leds = ~_data;
|
||||||
|
|
||||||
|
always @(negedge clk) begin
|
||||||
|
if (re) begin
|
||||||
|
o_data <= _data;
|
||||||
|
end
|
||||||
|
else if (we) begin
|
||||||
|
_data <= i_data;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<efxpt:design_db name="super6502" device_def="T20F256" location="/home/byron/Projects/super6502/hw/efinix_fpga" version="2022.1.226" db_version="20221999" last_change_date="Tue Dec 20 12:11:38 2022" xmlns:efxpt="http://www.efinixinc.com/peri_design_db" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.efinixinc.com/peri_design_db peri_design_db.xsd ">
|
<efxpt:design_db name="super6502" device_def="T20F256" location="/home/byron/Projects/super6502/hw/efinix_fpga" version="2022.1.226" db_version="20221999" last_change_date="Tue Dec 20 17:56:46 2022" xmlns:efxpt="http://www.efinixinc.com/peri_design_db" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.efinixinc.com/peri_design_db peri_design_db.xsd ">
|
||||||
<efxpt:device_info>
|
<efxpt:device_info>
|
||||||
<efxpt:iobank_info>
|
<efxpt:iobank_info>
|
||||||
<efxpt:iobank name="1A" iostd="3.3 V LVTTL / LVCMOS"/>
|
<efxpt:iobank name="1A" iostd="3.3 V LVTTL / LVCMOS"/>
|
||||||
@@ -130,12 +130,37 @@
|
|||||||
<efxpt:gpio name="cpu_sync" gpio_def="GPIOL_67" mode="input" bus_name="" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
<efxpt:gpio name="cpu_sync" gpio_def="GPIOL_67" mode="input" bus_name="" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
<efxpt:input_config name="cpu_sync" name_ddio_lo="" conn_type="normal" is_register="false" clock_name="" is_clock_inverted="false" pull_option="none" is_schmitt_trigger="false" ddio_type="none"/>
|
<efxpt:input_config name="cpu_sync" name_ddio_lo="" conn_type="normal" is_register="false" clock_name="" is_clock_inverted="false" pull_option="none" is_schmitt_trigger="false" ddio_type="none"/>
|
||||||
</efxpt:gpio>
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[0]" gpio_def="GPIOR_104" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[0]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[1]" gpio_def="GPIOR_105" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[1]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[2]" gpio_def="GPIOR_117" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[2]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[3]" gpio_def="GPIOR_118" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[3]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[4]" gpio_def="GPIOR_153" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[4]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[5]" gpio_def="GPIOR_154" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[5]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[6]" gpio_def="GPIOR_155" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[6]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
|
<efxpt:gpio name="leds[7]" gpio_def="GPIOR_156" mode="output" bus_name="leds" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
|
<efxpt:output_config name="leds[7]" name_ddio_lo="" register_option="none" clock_name="" is_clock_inverted="false" is_slew_rate="false" tied_option="none" ddio_type="none" drive_strength="3"/>
|
||||||
|
</efxpt:gpio>
|
||||||
<efxpt:gpio name="pll_in" gpio_def="GPIOR_157" mode="input" bus_name="" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
<efxpt:gpio name="pll_in" gpio_def="GPIOR_157" mode="input" bus_name="" is_lvds_gpio="false" io_standard="3.3 V LVTTL / LVCMOS">
|
||||||
<efxpt:input_config name="pll_in" name_ddio_lo="" conn_type="pll_clkin" is_register="false" clock_name="" is_clock_inverted="false" pull_option="none" is_schmitt_trigger="false" ddio_type="none"/>
|
<efxpt:input_config name="pll_in" name_ddio_lo="" conn_type="pll_clkin" is_register="false" clock_name="" is_clock_inverted="false" pull_option="none" is_schmitt_trigger="false" ddio_type="none"/>
|
||||||
</efxpt:gpio>
|
</efxpt:gpio>
|
||||||
<efxpt:global_unused_config state="input with weak pullup"/>
|
<efxpt:global_unused_config state="input with weak pullup"/>
|
||||||
<efxpt:bus name="cpu_data" mode="inout" msb="7" lsb="0"/>
|
<efxpt:bus name="cpu_data" mode="inout" msb="7" lsb="0"/>
|
||||||
<efxpt:bus name="cpu_addr" mode="input" msb="15" lsb="0"/>
|
<efxpt:bus name="cpu_addr" mode="input" msb="15" lsb="0"/>
|
||||||
|
<efxpt:bus name="leds" mode="output" msb="7" lsb="0"/>
|
||||||
</efxpt:gpio_info>
|
</efxpt:gpio_info>
|
||||||
<efxpt:pll_info>
|
<efxpt:pll_info>
|
||||||
<efxpt:pll name="pll_cpu_clk" pll_def="PLL_BR0" ref_clock_name="" ref_clock_freq="50.0000" multiplier="16" pre_divider="1" post_divider="8" reset_name="pll_cpu_reset" locked_name="pll_cpu_locked" is_ipfrz="false" is_bypass_lock="true">
|
<efxpt:pll name="pll_cpu_clk" pll_def="PLL_BR0" ref_clock_name="" ref_clock_freq="50.0000" multiplier="16" pre_divider="1" post_divider="8" reset_name="pll_cpu_reset" locked_name="pll_cpu_locked" is_ipfrz="false" is_bypass_lock="true">
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ module super6502
|
|||||||
output logic cpu_rdy,
|
output logic cpu_rdy,
|
||||||
output logic cpu_resb,
|
output logic cpu_resb,
|
||||||
output logic pll_cpu_reset,
|
output logic pll_cpu_reset,
|
||||||
output logic cpu_phi2
|
output logic cpu_phi2,
|
||||||
|
|
||||||
|
output logic [7:0] leds
|
||||||
);
|
);
|
||||||
|
|
||||||
assign pll_cpu_reset = '1;
|
assign pll_cpu_reset = '1;
|
||||||
@@ -39,15 +41,47 @@ always @(posedge clk_2) begin
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
logic w_rom_cs;
|
||||||
|
logic w_leds_cs;
|
||||||
|
|
||||||
|
addr_decode u_addr_decode(
|
||||||
|
.i_addr(cpu_addr),
|
||||||
|
.o_rom_cs(w_rom_cs),
|
||||||
|
.o_leds_cs(w_leds_cs)
|
||||||
|
);
|
||||||
|
|
||||||
|
logic [7:0] w_rom_data_out;
|
||||||
|
logic [7:0] w_leds_data_out;
|
||||||
|
|
||||||
|
always_comb begin
|
||||||
|
if (w_rom_cs)
|
||||||
|
cpu_data_out = w_rom_data_out;
|
||||||
|
else if (w_leds_cs)
|
||||||
|
cpu_data_out= w_leds_data_out;
|
||||||
|
else
|
||||||
|
cpu_data_out = 'x;
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
efx_single_port_ram boot_rom(
|
efx_single_port_ram boot_rom(
|
||||||
.clk(clk_2), // clock input for one clock mode
|
.clk(clk_2), // clock input for one clock mode
|
||||||
.addr(cpu_addr[7:0]), // address input
|
.addr(cpu_addr[7:0]), // address input
|
||||||
.wclke('0), // Write clock-enable input
|
.wclke('0), // Write clock-enable input
|
||||||
.byteen('0), // Byteen input
|
.byteen('0), // Byteen input
|
||||||
.we('0), // Write-enable input
|
.we('0), // Write-enable input
|
||||||
|
|
||||||
.re(cpu_rwb), // Read-enable input
|
.re(cpu_rwb & w_rom_cs), // Read-enable input
|
||||||
.rdata(cpu_data_out) // Read data output
|
.rdata(w_rom_data_out) // Read data output
|
||||||
|
);
|
||||||
|
|
||||||
|
leds u_leds(
|
||||||
|
.clk(clk_2),
|
||||||
|
.i_data(cpu_data_in),
|
||||||
|
.o_data(w_leds_data_out),
|
||||||
|
.cs(w_leds_cs),
|
||||||
|
.rwb(cpu_rwb),
|
||||||
|
.o_leds(leds)
|
||||||
);
|
);
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<efx:project name="super6502" description="" last_change_date="Tue December 20 2022 17:26:24" location="/home/byron/Projects/super6502/hw/efinix_fpga" sw_version="2022.1.226" last_run_state="pass" last_run_tool="efx_pgm" last_run_flow="bitstream" config_result_in_sync="true" design_ood="change" place_ood="sync" route_ood="sync" xmlns:efx="http://www.efinixinc.com/enf_proj" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.efinixinc.com/enf_proj enf_proj.xsd">
|
<efx:project name="super6502" description="" last_change_date="Tue December 20 2022 19:24:38" location="/home/byron/Projects/super6502/hw/efinix_fpga" sw_version="2022.1.226" last_run_state="pass" last_run_tool="efx_pgm" last_run_flow="bitstream" config_result_in_sync="true" design_ood="sync" place_ood="sync" route_ood="sync" xmlns:efx="http://www.efinixinc.com/enf_proj" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.efinixinc.com/enf_proj enf_proj.xsd">
|
||||||
<efx:device_info>
|
<efx:device_info>
|
||||||
<efx:family name="Trion"/>
|
<efx:family name="Trion"/>
|
||||||
<efx:device name="T20F256"/>
|
<efx:device name="T20F256"/>
|
||||||
@@ -13,6 +13,8 @@
|
|||||||
<efx:design_file name="ip/bram/bram_ini.vh" version="verilog_2k" library="default"/>
|
<efx:design_file name="ip/bram/bram_ini.vh" version="verilog_2k" library="default"/>
|
||||||
<efx:design_file name="ip/bram/efx_single_port_ram.v" version="verilog_2k" library="default"/>
|
<efx:design_file name="ip/bram/efx_single_port_ram.v" version="verilog_2k" library="default"/>
|
||||||
<efx:design_file name="ip/bram/bram_wrapper_mwm.v" version="verilog_2k" library="default"/>
|
<efx:design_file name="ip/bram/bram_wrapper_mwm.v" version="verilog_2k" library="default"/>
|
||||||
|
<efx:design_file name="leds.sv" version="default" library="default"/>
|
||||||
|
<efx:design_file name="addr_decode.sv" version="default" library="default"/>
|
||||||
<efx:top_vhdl_arch name=""/>
|
<efx:top_vhdl_arch name=""/>
|
||||||
</efx:design_info>
|
</efx:design_info>
|
||||||
<efx:constraint_info>
|
<efx:constraint_info>
|
||||||
@@ -77,7 +79,7 @@
|
|||||||
</efx:bitstream_generation>
|
</efx:bitstream_generation>
|
||||||
<efx:debugger>
|
<efx:debugger>
|
||||||
<efx:param name="work_dir" value="work_dbg" value_type="e_string"/>
|
<efx:param name="work_dir" value="work_dbg" value_type="e_string"/>
|
||||||
<efx:param name="auto_instantiation" value="on" value_type="e_bool"/>
|
<efx:param name="auto_instantiation" value="off" value_type="e_bool"/>
|
||||||
<efx:param name="profile" value="debug_profile.wizard.json" value_type="e_string"/>
|
<efx:param name="profile" value="debug_profile.wizard.json" value_type="e_string"/>
|
||||||
</efx:debugger>
|
</efx:debugger>
|
||||||
</efx:project>
|
</efx:project>
|
||||||
|
|||||||
Reference in New Issue
Block a user