Skip to content

Commit

Permalink
Merge branch 'ns32k'
Browse files Browse the repository at this point in the history
  • Loading branch information
hoglet67 committed Feb 28, 2016
2 parents e268540 + 98d854b commit 99bab1f
Show file tree
Hide file tree
Showing 35 changed files with 36,048 additions and 120 deletions.
476 changes: 476 additions & 0 deletions LX9Co-32016.xise

Large diffs are not rendered by default.

28 changes: 0 additions & 28 deletions README.md

This file was deleted.

28 changes: 28 additions & 0 deletions README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Matchbox CoPro
==============

A family of designs for the Matchbox Co Pro for the BBC Micro.

For more details on the designs, see:
http://stardot.org.uk/forums/viewtopic.php?t=8852&f=44

For Jason's LX9 Hardware, see:
http://stardot.org.uk/forums/viewtopic.php?t=8932&f=8

DIP Switch Settings:
0 0 0 0 - 4MHz 65C102 ( 64KB internal RAM, AlanD core)
0 0 0 1 - 8MHz 65C102 ( 64KB internal RAM, AlanD core)
0 0 1 0 - 16MHz 65C102 ( 64KB internal RAM, AlanD core)
0 0 1 1 - 32MHz 65C102 ( 64KB internal RAM, AlanD core)
0 1 0 0 - 8MHz Z80 ( 64KB external RAM, T80 core)
0 1 0 1 - 32MHz Z80 ( 64KB internal RAM, NextZ80 core)
0 1 1 0 - 56MHz Z80 ( 64KB internal RAM, NextZ80 core)
0 1 1 1 - 112MHz Z80 ( 64KB internal RAM, NextZ80 core)
1 0 0 0 - 16Mhz 80286 (896KB external RAM, Zet core)
1 0 0 1 - 4MHz 6809 ( 64KB external RAM, SYS09 core)
1 0 1 0 - 16MHz 68000 ( 1MB external RAM, TG68 core)
1 0 1 1 - 32MHz PDP11 ( 64KB internal RAM, PDP2011 core)
1 1 0 0 - 32MHz ARM2 ( 2MB external RAM, Amber23 core)
1 1 0 1 - 32MHz 32016 ( 2MB external RAM, m32632 core)
1 1 1 0 - Null / SPI ( Raspberry Pi soft core)
1 1 1 1 - BIST ( for manufacturing test purposes)
40 changes: 20 additions & 20 deletions gen_mcs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,35 @@
# The S25FL032P has space for ~12 designs if they are uncompressed
#
# multiboot loader - 0x000000 - working/ICAP_reboot.bit
# design 0000 - 0x054000 - working/LX9CoPro6502.bit
# design 0001 - 0x0a8000 - working/LX9CoProZ80.bit
# design 0010 - 0x0fc000 - working/LX9CoPro6809.bit
# design 0011 - 0x150000 - working/LX9CoPro80186.bit
# design 0100 - 0x1a4000 - working/LX9CoProSPI.bit
# design 0101 - 0x348000 - working/LX9CoPro68000.bit
# design 0110 - 0x2f4000 - working/LX9CoProNull.bit
# design 0111 - 0x2a0000 - working/LX9CoProPDP11.bit
# design 1000-1011 - 0x1f8000 - working/LX9CoPro6502fast.bit (32/16/8/4MHz)
# design 1100-1110 - 0x24c000 - working/LX9CoProZ80fast.bit(36/24/12)
# design 1111 - 0x39c000 - working/LX9CoProARM2.bit
# design 0000-0011 - 0x054000 - working/LX9CoPro6502fast.bit (4/8/16/32MHz)
# design 0100 - 0x0a8000 - working/LX9CoProZ80.bit (8MHz)
# design 0101-0111 - 0x0fc000 - working/LX9CoProZ80fast.bit (16/56/112MHz)
# design 1000 - 0x150000 - working/LX9CoPro80186.bit
# design 1001 - 0x1a4000 - working/LX9CoPro6809.bit
# design 1010 - 0x1f8000 - working/LX9CoPro68000.bit
# design 1011 - 0x24c000 - working/LX9CoProPDP11.bit
# design 1100 - 0x2a0000 - working/LX9CoProARM2.bit
# design 1101 - 0x2f4000 - working/LX9CoPro32016.bit
# design 1110 - 0x348000 - working/LX9CoProSPI.bit
# design 1111 - 0x39c000 - working/LX9Co_BIST.bit

NAME=multiboot/LX9CoProCombined_$(date +"%Y%m%d_%H%M")_$USER

mkdir -p multiboot

promgen \
-u 0 working/ICAP_reboot.bit \
-u 54000 working/LX9CoPro6502.bit \
-u 54000 working/LX9CoPro6502fast.bit \
-u A8000 working/LX9CoProZ80.bit \
-u FC000 working/LX9CoPro6809.bit \
-u FC000 working/LX9CoProZ80fast.bit \
-u 150000 working/LX9CoPro80186.bit \
-u 1A4000 working/LX9CoProSPI.bit \
-u 1F8000 working/LX9CoPro6502fast.bit \
-u 24C000 working/LX9CoProZ80fast.bit \
-u 2A0000 working/LX9CoProPDP11.bit \
-u 2F4000 working/LX9CoProNull.bit \
-u 348000 working/LX9CoPro68000.bit \
-u 39C000 working/LX9CoProARM2.bit \
-u 1A4000 working/LX9CoPro6809.bit \
-u 1F8000 working/LX9CoPro68000.bit \
-u 24C000 working/LX9CoProPDP11.bit \
-u 2A0000 working/LX9CoProARM2.bit \
-u 2F4000 working/LX9CoPro32016.bit \
-u 348000 working/LX9CoProSPI.bit \
-u 39C000 working/LX9Co_BIST.bit \
-o $NAME.mcs -p mcs -w -spi -s 8192

rm -f $NAME.cfi $NAME.prm
Expand Down
23 changes: 13 additions & 10 deletions ise_build_all.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,44 @@
project open LX9Co.xise
process run "Generate Programming File"
project close
project open LX9Co-6502.xise
#project open LX9Co-6502.xise
#process run "Generate Programming File"
#project close
project open LX9Co-6502fast.xise
process run "Generate Programming File"
project close
project open LX9Co-z80.xise
process run "Generate Programming File"
project close
project open LX9Co-6809.xise
project open LX9Co-z80fast.xise
process run "Generate Programming File"
project close
project open LX9Co-x86.xise
process run "Generate Programming File"
project close
project open LX9Co-BIST.xise
process run "Generate Programming File"
project close
project open LX9Co-6502fast.xise
project open LX9Co-6809.xise
process run "Generate Programming File"
project close
project open LX9Co-z80fast.xise
project open LX9Co-68000.xise
process run "Generate Programming File"
project close
project open LX9Co-PDP11.xise
process run "Generate Programming File"
project close
project open LX9Co-68000.xise
project open LX9Co-ARM2.xise
process run "Generate Programming File"
project close
project open LX9Co-Null.xise
project open LX9Co-32016.xise
process run "Generate Programming File"
project close
project open LX9Co-SPI.xise
process run "Generate Programming File"
project close
project open LX9Co-ARM2.xise
project open LX9Co-BIST.xise
process run "Generate Programming File"
project close
#project open LX9Co-Null.xise
#process run "Generate Programming File"
#project close
exit

23 changes: 13 additions & 10 deletions ise_clean_all.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,43 @@
project open LX9Co.xise
project clean
project close
project open LX9Co-6502.xise
#project open LX9Co-6502.xise
#project clean
#project close
project open LX9Co-6502fast.xise
project clean
project close
project open LX9Co-z80.xise
project clean
project close
project open LX9Co-6809.xise
project open LX9Co-z80fast.xise
project clean
project close
project open LX9Co-x86.xise
project clean
project close
project open LX9Co-BIST.xise
project clean
project close
project open LX9Co-6502fast.xise
project open LX9Co-6809.xise
project clean
project close
project open LX9Co-z80fast.xise
project open LX9Co-68000.xise
project clean
project close
project open LX9Co-PDP11.xise
project clean
project close
project open LX9Co-68000.xise
project open LX9Co-ARM2.xise
project clean
project close
project open LX9Co-Null.xise
project open LX9Co-32016.xise
project clean
project close
project open LX9Co-SPI.xise
project clean
project close
project open LX9Co-ARM2.xise
project open LX9Co-BIST.xise
project clean
project close
#project open LX9Co-Null.xise
#project clean
#project close
exit
54 changes: 28 additions & 26 deletions src/ICAP_core.v
Original file line number Diff line number Diff line change
Expand Up @@ -330,21 +330,22 @@ module ICAP_core
case (design_num)
5'b10000: icap_din = 16'h0000;
5'b00000: icap_din = 16'h4000;
5'b00001: icap_din = 16'h8000;
5'b00010: icap_din = 16'hC000;
5'b00011: icap_din = 16'h0000;
5'b00100: icap_din = 16'h4000;
5'b00101: icap_din = 16'h8000;
5'b00111: icap_din = 16'h0000;
5'b01000: icap_din = 16'h8000;
5'b01001: icap_din = 16'h8000;
5'b00001: icap_din = 16'h4000;
5'b00010: icap_din = 16'h4000;
5'b00011: icap_din = 16'h4000;
5'b00100: icap_din = 16'h8000;
5'b00101: icap_din = 16'hC000;
5'b00110: icap_din = 16'hC000;
5'b00111: icap_din = 16'hC000;
5'b01000: icap_din = 16'h0000;
5'b01001: icap_din = 16'h4000;
5'b01010: icap_din = 16'h8000;
5'b01011: icap_din = 16'h8000;
5'b01100: icap_din = 16'hC000;
5'b01101: icap_din = 16'hC000;
5'b01110: icap_din = 16'hC000;
5'b01011: icap_din = 16'hC000;
5'b01100: icap_din = 16'h0000;
5'b01101: icap_din = 16'h4000;
5'b01110: icap_din = 16'h8000; // The Null Co Processor
5'b01111: icap_din = 16'hC000;
default: icap_din = 16'h4000;
default: icap_din = 16'h8000; // The Null Co Processor
endcase

end
Expand All @@ -366,21 +367,22 @@ module ICAP_core
case (design_num)
5'b10000: icap_din = 16'h0300;
5'b00000: icap_din = 16'h0305;
5'b00001: icap_din = 16'h030a;
5'b00010: icap_din = 16'h030f;
5'b00011: icap_din = 16'h0315;
5'b00100: icap_din = 16'h031a;
5'b00101: icap_din = 16'h0334;
5'b00111: icap_din = 16'h032a;
5'b01000: icap_din = 16'h031f;
5'b01001: icap_din = 16'h031f;
5'b00001: icap_din = 16'h0305;
5'b00010: icap_din = 16'h0305;
5'b00011: icap_din = 16'h0305;
5'b00100: icap_din = 16'h030a;
5'b00101: icap_din = 16'h030f;
5'b00110: icap_din = 16'h030f;
5'b00111: icap_din = 16'h030f;
5'b01000: icap_din = 16'h0315;
5'b01001: icap_din = 16'h031a;
5'b01010: icap_din = 16'h031f;
5'b01011: icap_din = 16'h031f;
5'b01100: icap_din = 16'h0324;
5'b01101: icap_din = 16'h0324;
5'b01110: icap_din = 16'h0324;
5'b01011: icap_din = 16'h0324;
5'b01100: icap_din = 16'h032a;
5'b01101: icap_din = 16'h032f;
5'b01110: icap_din = 16'h0334; // The Null/SPI Co Processor
5'b01111: icap_din = 16'h0339;
default: icap_din = 16'h032f; // The Null Co Processor
default: icap_din = 16'h0334; // The Null/SPI Co Processor
endcase

end
Expand Down
99 changes: 99 additions & 0 deletions src/LX9Co_6SLX25.ucf
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
NET "fastclk" IOSTANDARD = LVCMOS33 ;
NET "h_phi2" IOSTANDARD = LVCMOS33 ;

NET "fastclk" TNM_NET = fastclk;
TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%;
NET "h_phi2" TNM_NET = h_phi2;
TIMESPEC TS_h_phi2 = PERIOD "h_phi2" 500 ns HIGH 50%;

PIN "inst_dcm/CLKFX_BUFG_INST.O" CLOCK_DEDICATED_ROUTE = FALSE;
PIN "h_phi2_BUFGP/BUFG.O" CLOCK_DEDICATED_ROUTE = FALSE;

NET "h_cs_b" IOSTANDARD = LVCMOS33 ;

NET "h_rdnw" IOSTANDARD = LVCMOS33 ;
NET "h_rst_b" IOSTANDARD = LVCMOS33 ;

NET "h_addr<0>" IOSTANDARD = LVCMOS33 ;
NET "h_addr<1>" IOSTANDARD = LVCMOS33 ;
NET "h_addr<2>" IOSTANDARD = LVCMOS33 ;

NET "h_irq_b" IOSTANDARD = LVCMOS33 ; # Not connected

NET "h_data<0>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "h_data<1>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "h_data<2>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "h_data<3>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "h_data<4>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "h_data<5>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "h_data<6>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "h_data<7>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;

NET "ram_cs" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_lb_b" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_oe" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_ub_b" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_wr" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<0>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<1>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<2>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<3>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<4>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<5>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<6>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<7>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<8>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<9>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<10>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<11>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<12>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<13>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<14>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<15>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<16>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<17>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_addr<18>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<0>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<1>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<2>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<3>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<4>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<5>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<6>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<7>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<8>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<9>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<10>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<11>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<12>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<13>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<14>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<15>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<16>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<17>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<18>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<19>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<20>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<21>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<22>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<23>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<24>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<25>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<26>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<27>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<28>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<29>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<30>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "ram_data<31>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<1>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<2>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<3>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<4>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<5>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<6>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<7>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "test<8>" IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ;
NET "sw<0>" IOSTANDARD = LVCMOS33 ;
NET "sw<1>" IOSTANDARD = LVCMOS33 ;
NET "sw<2>" IOSTANDARD = LVCMOS33 ;
NET "sw<3>" IOSTANDARD = LVCMOS33 ;
Loading

0 comments on commit 99bab1f

Please sign in to comment.