Files
Anton Gale 8e358bdecd new file: .gitattributes
new file:   .gitignore
	new file:   Arcade-SlapFight.old.sdc
	new file:   Arcade-SlapFight.out.sdc
	new file:   Arcade-SlapFight.qpf
	new file:   Arcade-SlapFight.qsf
	new file:   Arcade-SlapFight.sdc
	new file:   Arcade-SlapFight.srf
	new file:   Arcade-SlapFight.sv
	new file:   LICENSE
	new file:   README.md
	new file:   clean.bat
	new file:   docs/KiCAD/SlapFight/CPUA.kicad_sch
	new file:   docs/KiCAD/SlapFight/CPUA.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/Connectors.kicad_sch
	new file:   docs/KiCAD/SlapFight/SlapFight.kicad_prl
	new file:   docs/KiCAD/SlapFight/SlapFight.kicad_pro
	new file:   docs/KiCAD/SlapFight/SlapFight.kicad_sch
	new file:   docs/KiCAD/SlapFight/SlapFight.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/SlapFight.pdf
	new file:   docs/KiCAD/SlapFight/SlapFight.pro
	new file:   docs/KiCAD/SlapFight/SpriteRAM.kicad_sch
	new file:   docs/KiCAD/SlapFight/SpriteRAM.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/SpriteROM.kicad_sch
	new file:   docs/KiCAD/SlapFight/SpriteROM.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/aucpu.kicad_sch
	new file:   docs/KiCAD/SlapFight/aucpu.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/background.kicad_sch
	new file:   docs/KiCAD/SlapFight/background.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/clock.kicad_sch
	new file:   docs/KiCAD/SlapFight/clock.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/cpu_wait.kicad_sch
	new file:   docs/KiCAD/SlapFight/foreground.kicad_sch
	new file:   docs/KiCAD/SlapFight/foreground.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/jtkicad/.gitignore
	new file:   docs/KiCAD/SlapFight/jtkicad/LICENSE
	new file:   docs/KiCAD/SlapFight/jtkicad/README.md
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_101_Shield.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Due_Shield.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Leonardo_Shield.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Mega2560_Shield.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Micro_Socket.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Mini_Socket.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Nano_Socket.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Uno_Shield.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/Arduino.pretty/Arduino_Zero_Shield.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/jtlogos.pretty/JTlogo.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/jtlogos.pretty/JTlogo_22x8.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/footprints/jtlogos.pretty/JTlogo_small.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/74extra.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/74extra.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Intel.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Intel.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Mod_KC_Symbols.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Mod_KC_Symbols.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/NKD.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/NKD.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Nec.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Nec.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Sharp.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Sharp.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Signetics.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/Signetics.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/0402-X4_1X2mm_P0.5mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/16P8B_1.6X4mm_P0.5mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/JAMMA_CONN.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/SO-14_4.20X8.75mm_P1.27mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/SO-16_4X10mm_P1.27mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/SOIC-20_5.3x12.9_P1.27mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/SOP-14_4.80X8.70mm_P1.27mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/SOP-16_4.40X10mm_P1.27mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/SOP-28_8,6X18,5mm_P1,27mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/SOT-762_2.60X3mmX0.85mm_P0.5mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/TSSOP-20-PW_5.10X6.60mm_P0.65mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arcade.pretty/VSSP-20_3.40X5.25mm_P0.5mm.kicad_mod
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arduino.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/arduino.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/capcom.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/data_east.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/data_east.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/fujitsu.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/fujitsu.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/hitachi.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/hitachi.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/jt74.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/jt74.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/konami.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/konami.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/mitsubishi.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/mitsubishi.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/oki.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/oki.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/sega.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/sega.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/seta.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/singapore.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/singapore.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/texas_instruments.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/tms_texas.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/tms_texas.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/toaplan.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/toaplan.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/toshiba.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/toshiba.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/yamaha.dcm
	new file:   docs/KiCAD/SlapFight/jtkicad/lib/yamaha.kicad_sym
	new file:   docs/KiCAD/SlapFight/jtkicad/sym-lib-table
	new file:   docs/KiCAD/SlapFight/pixels.kicad_sch
	new file:   docs/KiCAD/SlapFight/pixels.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/spLinebuff.kicad_sch
	new file:   docs/KiCAD/SlapFight/spLinebuff.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/spradd.kicad_sch
	new file:   docs/KiCAD/SlapFight/spradd.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/sym-lib-table
	new file:   docs/KiCAD/SlapFight/untitled.kicad_sch
	new file:   docs/KiCAD/SlapFight/video_out.kicad_sch
	new file:   docs/KiCAD/SlapFight/video_out.kicad_sch-bak
	new file:   docs/KiCAD/SlapFight/vpixels.kicad_sch
	new file:   docs/KiCAD/SlapFight/vpixels.kicad_sch-bak
	new file:   files.qip
	new file:   releases/Arcade-SlapFight.rbf
	new file:   releases/SlapFight Bootleg.mra
	new file:   rtl/T80/GBse.vhd
	new file:   rtl/T80/README
	new file:   rtl/T80/T80.qip
	new file:   rtl/T80/T80.vhd
	new file:   rtl/T80/T8080se.vhd
	new file:   rtl/T80/T80_ALU.vhd
	new file:   rtl/T80/T80_MCode.vhd
	new file:   rtl/T80/T80_Pack.vhd
	new file:   rtl/T80/T80_Reg.vhd
	new file:   rtl/T80/T80a.vhd
	new file:   rtl/T80/T80as.vhd
	new file:   rtl/T80/T80pa.vhd
	new file:   rtl/T80/T80s.vhd
	new file:   rtl/T80/T80se.vhd
	new file:   rtl/T80/T80sed.vhd
	new file:   rtl/dpram_dc.vhd
	new file:   rtl/firjt49.hex
	new file:   rtl/hiscore.v
	new file:   rtl/jt49/LICENSE
	new file:   rtl/jt49/filter/jt49_dcrm.v
	new file:   rtl/jt49/filter/jt49_dcrm2.v
	new file:   rtl/jt49/filter/jt49_dly.v
	new file:   rtl/jt49/filter/jt49_mave.v
	new file:   rtl/jt49/jt49.qip
	new file:   rtl/jt49/jt49.v
	new file:   rtl/jt49/jt49.yaml
	new file:   rtl/jt49/jt49_bus.v
	new file:   rtl/jt49/jt49_cen.v
	new file:   rtl/jt49/jt49_div.v
	new file:   rtl/jt49/jt49_eg.v
	new file:   rtl/jt49/jt49_exp.v
	new file:   rtl/jt49/jt49_noise.v
	new file:   rtl/jtframe_dcrm.v
	new file:   rtl/jtframe_fir.v
	new file:   rtl/jtframe_jt49_filters.v
	new file:   rtl/pause.v
	new file:   rtl/pll.qip
	new file:   rtl/pll.v
	new file:   rtl/pll/pll_0002.qip
	new file:   rtl/pll/pll_0002.v
	new file:   rtl/rom_loader.sv
	new file:   rtl/roms/ROM82S129sv.sv
	new file:   rtl/slap_background.v
	new file:   rtl/slap_foreground.v
	new file:   rtl/slap_ram.v
	new file:   rtl/slap_roms.v
	new file:   rtl/slap_sprites.v
	new file:   rtl/slapcore.v
	new file:   rtl/ttl_chips.v
	new file:   sprites.stp
	new file:   sys/alsa.sv
	new file:   sys/arcade_video.v
	new file:   sys/ascal.vhd
	new file:   sys/audio_out.v
	new file:   sys/build_id.tcl
	new file:   sys/ddr_svc.sv
	new file:   sys/f2sdram_safe_terminator.sv
	new file:   sys/gamma_corr.sv
	new file:   sys/hps_io.sv
	new file:   sys/hq2x.sv
	new file:   sys/i2c.v
	new file:   sys/i2s.v
	new file:   sys/iir_filter.v
	new file:   sys/ltc2308.sv
	new file:   sys/math.sv
	new file:   sys/mcp23009.sv
	new file:   sys/mt32pi.sv
	new file:   sys/osd.v
	new file:   sys/pll.13.qip
	new file:   sys/pll_audio.13.qip
	new file:   sys/pll_audio.qip
	new file:   sys/pll_audio.v
	new file:   sys/pll_audio/pll_audio_0002.qip
	new file:   sys/pll_audio/pll_audio_0002.v
	new file:   sys/pll_cfg.qip
	new file:   sys/pll_cfg.v
	new file:   sys/pll_cfg/altera_pll_reconfig_core.v
	new file:   sys/pll_cfg/altera_pll_reconfig_top.v
	new file:   sys/pll_hdmi.13.qip
	new file:   sys/pll_hdmi.qip
	new file:   sys/pll_hdmi.v
	new file:   sys/pll_hdmi/pll_hdmi_0002.qip
	new file:   sys/pll_hdmi/pll_hdmi_0002.v
	new file:   sys/pll_hdmi_adj.vhd
	new file:   sys/pll_q13.qip
	new file:   sys/pll_q17.qip
	new file:   sys/scandoubler.v
	new file:   sys/scanlines.v
	new file:   sys/sd_card.sv
	new file:   sys/shadowmask.sv
	new file:   sys/sigma_delta_dac.v
	new file:   sys/spdif.v
	new file:   sys/sys.qip
	new file:   sys/sys.tcl
	new file:   sys/sys_analog.tcl
	new file:   sys/sys_dual_sdram.tcl
	new file:   sys/sys_top.sdc
	new file:   sys/sys_top.v
	new file:   sys/sysmem.sv
	new file:   sys/vga_out.sv
	new file:   sys/video_cleaner.sv
	new file:   sys/video_freak.sv
	new file:   sys/video_freezer.sv
	new file:   sys/video_mixer.sv
2022-12-26 08:39:30 -06:00

110 lines
1.9 KiB
Systemverilog

// result = num/div
module sys_udiv
#(
parameter NB_NUM,
parameter NB_DIV
)
(
input clk,
input start,
output busy,
input [NB_NUM-1:0] num,
input [NB_DIV-1:0] div,
output reg [NB_NUM-1:0] result,
output reg [NB_DIV-1:0] remainder
);
reg run;
assign busy = run;
always @(posedge clk) begin
reg [5:0] cpt;
reg [NB_NUM+NB_DIV+1:0] rem;
if (start) begin
cpt <= 0;
run <= 1;
rem <= num;
end
else if (run) begin
cpt <= cpt + 1'd1;
run <= (cpt != NB_NUM + 1'd1);
remainder <= rem[NB_NUM+NB_DIV:NB_NUM+1];
if (!rem[NB_DIV + NB_NUM + 1'd1])
rem <= {rem[NB_DIV+NB_NUM:0] - (div << NB_NUM),1'b0};
else
rem <= {rem[NB_DIV+NB_NUM:0] + (div << NB_NUM),1'b0};
result <= {result[NB_NUM-2:0], !rem[NB_DIV + NB_NUM + 1'd1]};
end
end
endmodule
// result = mul1*mul2
module sys_umul
#(
parameter NB_MUL1,
parameter NB_MUL2
)
(
input clk,
input start,
output busy,
input [NB_MUL1-1:0] mul1,
input [NB_MUL2-1:0] mul2,
output reg [NB_MUL1+NB_MUL2-1:0] result
);
reg run;
assign busy = run;
always @(posedge clk) begin
reg [NB_MUL1+NB_MUL2-1:0] add;
reg [NB_MUL2-1:0] map;
if (start) begin
run <= 1;
result <= 0;
add <= mul1;
map <= mul2;
end
else if (run) begin
if(!map) run <= 0;
if(map[0]) result <= result + add;
add <= add << 1;
map <= map >> 1;
end
end
endmodule
// result = (mul1*mul2)/div
module sys_umuldiv
#(
parameter NB_MUL1,
parameter NB_MUL2,
parameter NB_DIV
)
(
input clk,
input start,
output busy,
input [NB_MUL1-1:0] mul1,
input [NB_MUL2-1:0] mul2,
input [NB_DIV-1:0] div,
output [NB_MUL1+NB_MUL2-1:0] result,
output [NB_DIV-1:0] remainder
);
wire mul_run;
wire [NB_MUL1+NB_MUL2-1:0] mul_res;
sys_umul #(NB_MUL1,NB_MUL2) umul(clk,start,mul_run,mul1,mul2,mul_res);
sys_udiv #(NB_MUL1+NB_MUL2,NB_DIV) udiv(clk,start|mul_run,busy,mul_res,div,result,remainder);
endmodule