http://neil.franklin.ch/Projects/FPGA-PC/Hardware author Neil Franklin, last modification 2002.09.10 Hardware Ideas Braindump Situation at present I am not definitely going to make an custom hardware board but I may in the future decide to do so, so users can get complete boards without having to get an prototyping board and solder memory and IO onto it not to mention that a special board is cleaner than an experiment setup so I am collectiong board design ideas for the case I do want to make one and designing hardware specs is fun anyway there is actually not much PDP-10 clone specific stuff in this list so better aim for making an generic 36/72bit computer cloning board will also work for 32/64bit or 24/48bit if one leaves memory bits unused 8/12/16/18 bit will better use an simpler board that this this board may even be usable as base for an X Terminal or SunRay style box FPGA Selection XC2S200, or if too small XCV300..800 (these 2 series are given, by using JBits) preferably the TQFP208|TQFP240 (140|166 user IO) versions but possibly need more pins, use FBGA456|BGA352 (284|260 user IO) versions or pair it with an second small (XC2S50) TQFP208 chip, for the IO devices voltage converters 5->3.3V and 5->2.5V (given by AT/ATX 5/12V power supplies) clocks 1 programmable, 2 DIP sockets for fixed freq, 1 debug from devel system Configuring loading of FPGA direct from an PC par port, serial or SelectMAP or JTAG programming circuit built in, just 25pin header for cable to dev sys parallel programming interface with support for debuging control of FPGA ev include all lines for driving by XHWIF driver or even XVPI adapter or from serial (EE)PROM, which is first programmed from par port ev use PC power LED and Reset switch to control/monitor FPGA config loading perhaps multiple/large (EE)PROMs with "option" switch to select config to use ev use PC "Turbo" button to select which config perhaps make serial EEPROM (re-)writable by the running FPGA preferably min 2 EEPROMs so that new/works boot selection is possible or from standard parallel Flash with CPLD to load FPGA, XAPP137 style with space for multiple/many configs, switch selectable which to use interface from FPGA to CPLD/Flash for run-time downloading of new configs but neither Linux CPLD tools, nor known bitstream format to write some alternative use an PAL, as the PAL programming format is known use external reset/count/OE address counter because of small PAL pin count or from standard parallel Flash with microcontroller (uC) XAPP138 SelectMAP, XAPP502 config from microprocessor or possibly compressed bitfile (ca 1/10th size) in larger uC flash memory for selecting what bitfile to (re)boot use uC as front end processor (FEP) like the 11/40 in the KL-10 or the 8080 in the KS-10 were used uC share access to all PC front switches and LEDs with FPGA uC share access to RS232 so user can interact directly with the uC uC share AT or PS/2 keyb, VGA only from FPGA doing simple glass TTY or possibly an very primitive VGA display from the uC, if possible at all interface from FPGA to uC/Flash for run-time downloading of new configs also use for initial loading of uC firmware, from FPGA booted from par port unlikely switches/LEDS/RS232/keyb only on uC or from floppy/HD/PCMCIA/CF with microcontroller (uC) if using CF could also use Xilinx SystemACS instead of uC configs only from devices, only EEPROM is in uC for firmware shared access to these devices with FPGA this is what floppies were invented for, FPGA config is similar CPU microcode makes drive-less sys impossible, but flash drives are small and solid-state ev unused rest of (EE)PROM readable by FPGA for simulating ROMs in RAM, for external microcode or firmware unlikely support for partial reload of the "drivers" used with slots/connectors/buses for variable hardware expansion Memory for small up to 256kWord/18bit SRAM 9*4bit or 5*8bit (4 bits waste or parity) or SyncSRAM 2*18bit or 1*36bit for large 16MWord/22bit to 64GWord/36bit SIMM FP/EDO-DRAM 36*1bit, or dual-wide 72*1bit or DIMM ECC-SDRAM 72bit, ev connect as 2*36bit or 40+32bit to save pins large DRAM with smaller SRAM as external (L2) cache shared address/data bus and just separate control pins large amount of memory access pins, particularly if dual/quad-wide memory and parity/ECC makes it even worse with only 140|166 FPGA user IO pins in TQFP208|240 that is too much possibly multiplexed addr/data bus, or use half-wide memory and 2 accesses User IO Devices lamps and switches PC turbo/HDD LEDs, turbo/keylock switches, for any type of usage signals just single in or out pins ev console operators panel LEDs/switches (most likely reduced) and even indicator panel LEDs (definitely reduced) to reduce pins use TTL decoders to scan them from data/clock/reset pins or interface to second FPGA, small one like XC2S50, boots from first FPGA or overlay console terminal VGA, or use 2nd VGA display for operators panel AT or PS/2 connector for console terminal keyboard signals simply 2 IO pins (data and clock) and 5V and GND pins ev 2nd PS/2 for mouse, or use an 9pin RS232 connector and mouse unlikely joystick or paddle connectors, either DB9 digital or DB15 analog VGA connector for console terminal video monitor signals 3 2bit or 4bit bunch-of-resistors DACs and 2 IOs for H/V or less likely an RAMDAC chip, 8 data IOs and clocking and programming ev 2nd VGA for dual displays or showing operators console on it unlikely composite or SVHS video output for TV standard video monitor PC beep speaker, for terminal bell/beep, is simply 1pin amplified to speaker or sound out connector with 1 or 2 8/12/16bit bunch-of-resistors DACs sound in ADC requires hold and sample with logarithmic approximation or sound out/in connector special 2*44.1kHz*16bit serial DAC/ADC audio chip just 1 line-out and 1 line-in, unlikely mixer and headphones and microphone could also be used as slow but high resolution DAC/ADC for analog controls or sound out connector with 2 1bit delta with RC lowpass filter as integrator sound in requires DAC+comparer+feedback and record feedbacks ev S/P-DIF digital sound out/in connectors RS232 9pin or 25pin, for terminal for system console or user terminal signals simply a few 1488+1489 or MAX233 and GND pins ev n*8 RS232 ports for multiuser terminals and/or comms devices but better put these on an expansion board, not on main board also use for simulating paper tape reader/puncher with an PC at other end LPT 25pin, for printer, signals simply 17 straight IO pins and 8 GND pins very unlikely IEEE488, simple but not enough devices around to bother doing it ev Ethernet for remote connection, just simulated RS232 login or full NIC definitely 10Mbit/s, possibly not 100Mbit/s (because autonegotiation stuff) signals requires an special Ethernet phy layer chip very unlikely modem or ISDN, as difficult, regulatory problems use an RS232/Ethernet connected modem/ISDN/ADSL/CaTV instead Storage Devices floppy connector for drive for small amounts of user data, install, backup signals simply 17 straight IO pins (2,4,..,34) and 17 GND pins (1,3,..,33) unlikely MFM/RLL/ESDI drive controller derived from this also use floppy for simulating DECtape or even paper tape reader/puncher also use to load processor microcode, is what floppies were invented for only needed for microcode in external memory, internal BRAM loads in config ATA/EIDE connector for disk or tape drives, ev UDMA connector signals set of bus driver chips share data pins with RAM, as ATA is AT bus possibly 2 sets of control pins, 2 ATA connectors, for 4 drives, mirror cheaper drives than SCSI, also possibly more similar to old controllers or PCMCIA for memory cards or flash drives or microdrives possibly also (or only) the reduced size CompactFlash variant signals like ATA/EIDE, data pins can also be shared with them or SCSI connector for disk or tape drives, ev W-SCSI connector needs high power drivers because of terminators, more work than ATA not shared with RAM, unlikely 2 buses, for mirror with no write speed loss only used in servers and they need mirrored Ethernet and dual processor so for them better connect 2 FPGA boards with an Ethernet or NUMA link ev also external connector, at least be able to run internal cable to slot or perhaps both ATA/PCMCIA and SCSI, so the user can chose bus type but shared pins between both may be problem with driver chips and independant sets of pins give 2 buses, but run into pin count limits LPT 25pin, (miss)used for external parallel port disk drives very unlikely USB or firewire or FibreChannel for disk drives very unlikely SSFD/SmartMedia or MemoryStick or Smartcards use PCMCIA as IO slot with an adapter if these are wanted Expansion Options example use for: plugable facultative operators console, driving 2nd FPGA expanding console terminal with joystick, or 2nd VGA DAC, or sound DAC/ADC entire key/mouse/VGA/sound console, or these for 2nd (user) terminal multi-RS232 adapter for large terminal collection, any control circuits prototype area for random IO circuits, block of generic IO pins leading to it just add analog stuff and connectors or block of generic IO pins on 25+pin slot connector(s) for expansion card(s) perhaps per connector one 17/18pin 1/8th of IO group of FPGA pins plus 2.5/3.3/5/12V/-5V/-12V power, GND pins, VCCIO (back)feed connectors can go into slot holes, does not need punch-out in case all soldering are done on cards, are removable, no board modifactions expansion card(s) should be makable with simple hobby technology simple 2.54mm wire wrap boards, so no edge connectors, as difficult to make or block of generic IO pins on external connector(s), in ATX port hole as 25+pin connector, with anchoring for extern analog/connector unit or multiple LPT 25pin, missuse them as 17pin data plus 8pin GND general ports but no power pins, requires LPT implemented without anti-short resistors or AT/ISA bus slot(s) for cards, including prototyping cards or FPGA cards good for cloning computers that had ISA, less so for others only PC compatible, not original interfaces, like KS-10 uses PDP-11 cards bus any bus uses shared lines for all slots requires decoder circuits not in FPGA, makes IO devices more work or instead of ISA use an wire header in PC-104 pinout good as PC-104 cards will be longer available than ISA or both ISA and PC-104 as both use the same signals or PCMCIA (is an ISA bus) for IO slots, possibly shared with ISA/PC-104 possibly also (or only) the reduced size CompactFlash variant or very unlikely PCI, as too complicated and requires PCISIG membership same no CardBus (is PCI expanded PCMCIA) or prototype/slot/connector and ISA/PC-104/PCMCIA, using shared FPGA pins user can chose to use the FPGA pins for either method of expansion most universal, but also most work and most unused stuff Case and Form Factor standard BabyAT or more likely ATX PC case, ev board capable of fitting both lots of space, multiple drives can be put in case, particularly large ones but large cases with 8 slot space mostly/entirely wasted ev case front replacable by console panel smaller standard MicroATX or FlexATX MicroATX or FlexATX fit very small cases, with only 3 or 1 slots only 1 3.5 HD and 1 3.5 FD space in small cases but can also be put in large ATX cases if you want the drive space processor board itsself in PC104 size, possibly 1.5 or 2 times PC-104 size expandable with normal PC104 devices, and proto boards can use industrial power supplies and cases, is small space usage or can use an entirely self made case, for the total individual look but this also requires the most ironwork, from each user making one or at least scouting around for industrial components just CPU/memory/power box as old historical use, just a lot smaller box use an external SCSI drive case, using its power supply and SCSI connectors processor board goes in like it would be 1/2 hight 5 1/4" drive with all other connectors on front out through the drive slot no internal drives, all drives external (must be SCSI) has disadvantage of most cabling and largest cost is cool looking, not standard PC case look FPGA based notebook or better palmtop/keyboardPDA size device just 640x200 or x240 screen, calculator keys, RS232, flashdisk or PCMCIA expansion PCMCIA for Ether/Floppy/CDROM/Sound/ext-Console/etc coolest variant of all, but largest amount of work for mechanics/battery/disp