barrym95838 wrote:
Bill, can you provide some links to your designs? I'm not much of a hardware guy, but I enjoy at least the opportunity to expand my horizons.
My favorite set-up would probably be the example of a small "auto-start" ROM mapped in by default at power-up and mapped out after it's done. It looks for a valid boot device signature in the I/O space and passes control when it finds one. If none are there, it can try to map in a larger ROM and punt.
For 65xx family I only have two bootstrap designs. If you are interested in other processors (68000, Z80, Z280), I have more examples. The parenthesis indicates which types of bootstrap scheme: Bootstrap ROM, ROM-less, or Hybrid.
For 65xx:
CRC65 (Bootstrap ROM) has 64 bytes of ROM, serial port, and CF interface in the CPLD. The normal sequence of bootstrapping is 6502 executes CPLD ROM code which initializes CF and load code in CF's master boot record which then loads code from other sectors in CF disk. In case of a blank CF disk, the CPLD ROM can boot from serial port and load utility program to initialize the new CF disk. Because codes are executed out of CPLD, RAM or CF disk, CRC65 is small and quite fast, reliable operation at 29.5MHz and can operate to 33MHz if CF disk is fast enough.
G8PP+6502 (ROM-less) has a battery-backed RAM. Normally 6502 boots from the program on battery-backed RAM; in case RAM is not loaded with program, a jumper selects serial bootstrap mode where 6502 is tri-stated and 255 byte of serial data is DMA into memory then 6502 is released to run.
------------------------------------------------
For processors other than 65xx:
Tiny68K (ROM-less): CPLD holds 68000 in reset and use I2C bus to pre-load 32K program from one of two serial EEPROM into DRAM, then release 68000 to run. The serial EEPROM needs to be programmed offline with a TL866 programmer.
Z280RC (ROM-less): CPLD holds Z280 in reset and initializes CF disk so 256 bytes of data is ready to be read out. Z280 is released and directly executes the 256-byte data streaming out of CF disk (a bit of tricky programming here); it then loads more data from rest of the CF disk.
Z80SBC64 (ROM-less) has battery-backed RAM and 2 modes of perations very similar to G8PP+6502. Normal mode is boot out of the RAM; if RAM is not programmed, it boots out of serial port and load the appropriate program to initialize RAM.
ZRCC (Bootstrap ROM) has 64 bytes of ROM in CPLD and normally boots from CF disk, but when CF disk is blank, it can boot from serial port and load the appropriate program to initialze CF disk.
There are many other designs in my
homepage but their bootstrap schemes are similar to the ones I've described.
Bill
Note: packing 32-64 bytes of bootstrap ROM in CPLD is my current favorite scheme. It is counter-intuitive, but 32-64 byes of ROM lookup table takes very little macrocell resources due to the very roubust CPLD logic fabric so most of CPLD resources are still available for other logic designs.
Edit: I changed the "Hybrid" to "ROM-less". On further examination, I don't have example of Hybrid design in the list above.