Fixed vga & sound via the buzzer. A & D output on leds

This commit is contained in:
byrtolet 2018-08-29 19:48:40 +03:00
parent 00515cd931
commit 64673306fa
6 changed files with 530 additions and 445 deletions

View File

@ -1,5 +1,5 @@
all:
./makemy.sh
time -p ./makemy.sh |tee out
clean:
rm -rf COREn.ZX1 _impact.cmd _impact.log makemy.sh~ _ngo oric.bgn oric.bit oric_bitgen.xwbt \
oric.bld oric.drc ORIC.lso oric_map.map oric_map.mrp oric_map.ncd oric_map.ngm ORIC_map.xrpt \
@ -7,3 +7,5 @@ clean:
oric_pad.txt oric.par ORIC_par.xrpt oric.pcf oric.ptwx oric_summary.xml oric.syr oric.twr \
oric.twx oric.unroutes oric_usage.xml oric.v4.bit oric.xpi ORIC_xst.xrpt out out.my par_usage_statistics.html \
projnav.tmp usage_statistics_webtalk.html webtalk.log xlnx_auto_0_xdb _xmsgs xst
last:
time -p ./makemylast.sh |tee out

View File

@ -15,3 +15,7 @@ vhdl work "../source/m6522.vhd"
vhdl work "../source/keyboard/keyboard.vhd"
vhdl work "../source/dac.vhd"
vhdl work "../source/oricatmos.vhd"
vhdl work "../source/led_multiplex.vhd"
vhdl work "../source/led_output.vhd"
vhdl work "../source/onebitadc.vhd"
vhdl work "../source/clkdiv.vhd"

View File

@ -3,22 +3,23 @@ NET "CLK_50" LOC="P126" | IOSTANDARD = LVCMOS25 | PERIOD=20.0ns;
#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS25;
# Video output
NET O_VIDEO_R(2) LOC="P100" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
#NET O_VIDEO_R(1) LOC="P80" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
#NET O_VIDEO_R(0) LOC="P79" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
NET O_VIDEO_G(2) LOC="P99" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
#NET O_VIDEO_G(1) LOC="P83" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
#NET O_VIDEO_G(0) LOC="P82" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
NET O_VIDEO_B(2) LOC="P98" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
#NET O_VIDEO_B(1) LOC="P92" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
#NET O_VIDEO_B(0) LOC="P88" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
NET O_HSYNC LOC="P95" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
NET O_VSYNC LOC="P97" | IOSTANDARD = LVCMOS25 | DRIVE = 12 | SLEW = SLOW;
NET O_VIDEO_R(2) LOC="P100" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
#NET O_VIDEO_R(1) LOC="P80" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
#NET O_VIDEO_R(0) LOC="P79" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
NET O_VIDEO_G(2) LOC="P99" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
#NET O_VIDEO_G(1) LOC="P83" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
#NET O_VIDEO_G(0) LOC="P82" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
NET O_VIDEO_B(2) LOC="P98" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
#NET O_VIDEO_B(1) LOC="P92" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
#NET O_VIDEO_B(0) LOC="P88" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
NET O_HSYNC LOC="P95" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
NET O_VSYNC LOC="P97" | IOSTANDARD = LVCMOS25 | DRIVE = 6 | SLEW = SLOW;
#NET O_NTSC LOC="P66" | IOSTANDARD = LVCMOS25;
#NET O_PAL LOC="P67" | IOSTANDARD = LVCMOS25;
# Audio
NET "AUDIO_OUT" LOC="P94" | IOSTANDARD = LVCMOS25;
NET "AUDIO_OUT2" LOC="P8" | IOSTANDARD = LVCMOS25;
NET "K7_TAPEOUT" LOC="P115" | IOSTANDARD = LVCMOS25;
NET "K7_TAPEIN" LOC="P116" | IOSTANDARD = LVCMOS25;
@ -49,6 +50,7 @@ NET "PS2DAT1" LOC="P104" | IOSTANDARD = LVCMOS25 | PULLUP;
#NET "sram_addr<17>" LOC="P140" | IOSTANDARD = LVCMOS25;
#NET "sram_addr<18>" LOC="P142" | IOSTANDARD = LVCMOS25;
#NET "sram_addr<19>" LOC="P105" | IOSTANDARD = LVCMOS25;
#NET "sram_addr<20>" LOC="P143" | IOSTANDARD = LVCMOS25;
#NET "sram_data<0>" LOC="P132" | IOSTANDARD = LVCMOS25;
@ -76,6 +78,26 @@ NET "PS2DAT1" LOC="P104" | IOSTANDARD = LVCMOS25 | PULLUP;
#NET "sd_mosi" LOC="P74" | IOSTANDARD = LVCMOS25;
#NET "sd_miso" LOC="P78" | IOSTANDARD = LVCMOS25;
NET "segment(0)" LOC="P81" | IOSTANDARD = LVCMOS25;
NET "segment(1)" LOC="P80" | IOSTANDARD = LVCMOS25;
NET "segment(2)" LOC="P79" | IOSTANDARD = LVCMOS25;
NET "segment(3)" LOC="P78" | IOSTANDARD = LVCMOS25;
NET "segment(4)" LOC="P75" | IOSTANDARD = LVCMOS25;
NET "segment(5)" LOC="P74" | IOSTANDARD = LVCMOS25;
NET "segment(6)" LOC="P12" | IOSTANDARD = LVCMOS25;
NET "segment(7)" LOC="P14" | IOSTANDARD = LVCMOS25;
NET "position(0)" LOC="P82" | IOSTANDARD = LVCMOS25;
NET "position(1)" LOC="P83" | IOSTANDARD = LVCMOS25;
NET "position(2)" LOC="P84" | IOSTANDARD = LVCMOS25;
NET "position(3)" LOC="P85" | IOSTANDARD = LVCMOS25;
NET "position(4)" LOC="P87" | IOSTANDARD = LVCMOS25;
NET "position(5)" LOC="P88" | IOSTANDARD = LVCMOS25;
NET "position(6)" LOC="P92" | IOSTANDARD = LVCMOS25;
NET "position(7)" LOC="P93" | IOSTANDARD = LVCMOS25;
# JOYSTICK
#NET "joyup" LOC="P1" | IOSTANDARD = LVCMOS25 | PULLUP;
#NET "joydown" LOC="P5" | IOSTANDARD = LVCMOS25 | PULLUP;

File diff suppressed because it is too large Load Diff

View File

@ -58,7 +58,7 @@ entity VGA_SCANCONV is
hC : integer range 0 to 1023 := 48; -- h back porch
hD : integer range 0 to 1023 := 640; -- visible video
-- vA : integer range 0 to 1023 := 16; -- v front porch
vA : integer range 0 to 1023 := 16; -- v front porch
vB : integer range 0 to 1023 := 2; -- v sync
vC : integer range 0 to 1023 := 33; -- v back porch
vD : integer range 0 to 1023 := 480; -- visible video
@ -198,7 +198,7 @@ begin
begin
wait until rising_edge(CLK_x2);
-- V sync timing
if (vcnt < vB) then
if (vcnt < vB+vA) and (vcnt >= vA) then
O_VSYNC <= '0';
else
O_VSYNC <= '1';
@ -210,7 +210,7 @@ begin
begin
wait until rising_edge(CLK_x2);
-- visible video area doubled from the original game
if ((hcnt >= (hB + hC + hpad)) and (hcnt < (hB + hC + hD + hpad))) and ((vcnt > 2*(vB + vC + vpad)) and (vcnt <= 2*(vB + vC + vD + vpad))) then
if ((hcnt >= (hB + hC + hpad)) and (hcnt < (hB + hC + hD + hpad))) and ((vcnt > 2*(vA + vB + vC+vpad)) and (vcnt <= 2*(vA + vB + vC + vD + vpad))) then
hpos_o <= hpos_o + 1;
else
hpos_o <= (others => '0');
@ -222,7 +222,7 @@ begin
begin
wait until rising_edge(CLK_X2);
-- active video area 640x480 (VGA) after padding with blank borders
if ((hcnt >= (hB + hC)) and (hcnt < (hB + hC + hD + 2*hpad))) and ((vcnt > 2*(vB + vC)) and (vcnt <= 2*(vB + vC + vD + 2*vpad))) then
if ((hcnt >= (hB + hC)) and (hcnt < (hB + hC + hD + 2*hpad))) and ((vcnt > 2*(vA + vB + vC)) and (vcnt <= 2*(vA + vB + vC + vD + 2*vpad))) then
O_CMPBLK_N <= '1';
else
O_CMPBLK_N <= '0';

View File

@ -1,9 +1,11 @@
#!/bin/bash
#call %ruta_bat%mypath
ngdbuild -intstyle ise -dd _ngo -sd ipcore_dir -nt timestamp -uc "$ruta_ucf"_zxuno_"$1".ucf -p xc6slx9-tqg144-"$speed" "$machine".ngc "$machine".ngd
map -intstyle ise -w -ol high -mt 2 -p xc6slx9-tqg144-"$speed" -logic_opt off -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -ir off -pr off -lc off -power off -o "$machine"_map.ncd "$machine".ngd "$machine".pcf
par -intstyle ise -w -ol high -mt 4 "$machine"_map.ncd "$machine".ncd "$machine".pcf
trce -intstyle ise -v 3 -s "$speed" -n 3 -fastpaths -xml "$machine".twx "$machine".ncd -o "$machine".twr "$machine".pcf
bitgen -intstyle ise -f "$machine".ut "$machine".ncd
bit2bin "$machine".bit COREn."$2"
cp "$machine".bit "$machine"."$1".bit
# map -intstyle ise -w -ol high -mt 2 -p xc6slx9-tqg144-"$speed" -logic_opt off -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -ir off -pr off -lc off -power off -o "$machine"_map.ncd "$machine".ngd "$machine".pcf
# par -intstyle ise -w -ol high -mt 4 "$machine"_map.ncd "$machine".ncd "$machine".pcf
# trce -intstyle ise -v 3 -s "$speed" -n 3 -fastpaths -xml "$machine".twx "$machine".ncd -o "$machine".twr "$machine".pcf
# bitgen -intstyle ise -f "$machine".ut "$machine".ncd
# bit2bin "$machine".bit COREn."$2"
# cp "$machine".bit "$machine"."$1".bit
"$ruta_bat"generarlast.sh "$1" "$2"