RetroBrew Computers Forum
Discussion forum for the RetroBrew Computers community.

Home » RBC Forums » General Discussion » Multicomp Cyclone IV (Preliminary design thoughts)
Multicomp Cyclone IV [message #1009] Tue, 26 July 2016 07:16 Go to next message
dr_acula is currently offline  dr_acula
Messages: 68
Registered: October 2015
Location: Adelaide
Member
Grant Searle's Cyclone II multicomp http://searle.hostei.com/grant/Multicomp/index.html is an amazingly versatile machine. I have had one running now for over a year without a reboot, collecting data from a radio network of arduino's and then talking to an ESP8266 and uploading data to the internet. CP/M, Wordstar (to write the program) and BDS C (to compile the program) are actually practical solutions for a real world problem.

But it is possible to run up against the limitations of the Cyclone II FPGA and the current design (being discussed on other threads) is 99% full. No room for any more serial ports, for instance. Max Scane and I have built several boards using the Cyclone IV FPGA and this has more pins and a lot more internal space for VHDL. Max has software that is compatible with both boards (and with some of the boards that use real Z80 chips too). However, with a similar number of pins to the Cyclone II, it is possible to still run out of pins.

This is a very early discussion on the possibilities of the Waveshare system. The complete package is very expensive http://www.waveshare.com/product/fpga-tools/altera/altera-bo ards/openep4ce10-c-package-b.htm and contains every peripheral you might want. But it is possible to buy the individual boards for prices that are competitive with similar Cyclone IV packages. It still is expensive, but prices will come down and peripherals can be made for low cost.

The package comes with a sdram board which has lots of capacity, but there are no drivers as yet. However there is potential to port over existing "sram to sdram" vhdl and make it look like something that us old-skool tinkerers understand - ie a data bus, address bus and /rd, /wr and /cs eg http://codehackcreate.com/archives/444

Meanwhile, I thought I would throw together a few peripheral boards that would enable someone to get Grant's project up and running with not much more than recompiling with the pin numbers changed. These boards may have mistakes, and are not perfect, but could be a useful starting point. I'm taking a punt and getting some made. One nice thing I like about the Waveshare system is they do have some sort of standard for peripherals. They have an 8 bit peripheral, which is 10 pins in a single row, 3V, 0V then 8 pins. Then there is a 16 bit peripheral which is 3V (in pairs), 0V (in pairs) then 16 pins. And a 32 bit peripheral that is the same.

I'd like to get a few more things working on these boards - in particular a touchscreen, and maybe audio, 16x2 LCDs, multiple serial ports for a true MP/M machine etc.

I have a crazy vision that CP/M can be expanded to something that is in color, with pictures, and even a GUI. But maybe that is a bit controversial...

Thoughts would be most appreciated.

Cheers,

James Moxham
Re: Multicomp Cyclone IV [message #1012 is a reply to message #1009] Tue, 26 July 2016 12:57 Go to previous messageGo to next message
positron is currently offline  positron
Messages: 78
Registered: November 2015
Location: Buenos Aires, Argentina
Member
James, regarding your vision, "I have a crazy vision that CP/M can be expanded to something that is in color, with pictures, and even a GUI. But maybe that is a bit controversial..." I think many of us in the retro community share it, even though being controversial.

Maybe a "crossbreed" between a classic CP/M machine and a Sinclair Spectrum...

As a side project I'm also exploring the capabilities of other FPGA platforms. In the past I worked with the Xilinx Spartan 3E using Gadget's Factory Papilio One board. Now in particular I started a porting project of Grant's Multicomp to the Xilinx Spartan 6 FPGA, using Gadget's Factory Papilio Duo board [ http://papilio.cc/index.php?n=Papilio.PapilioDUOHardwareGuid e], in combination with the Classic Computing Shield [ http://papilio.cc/index.php?n=Papilio.ClassicComputingShield].

It looks like a perfect fit because out of the box it has all the hardware subsystems and interfaces needed for the Multicomp (SRAM, VGA, SD Card, Keyboard, RS-232, etc... even an Arduino thrown in !Wink and an FPGA fabric capacity that exceeds the one in the Cyclone IV.

I´ll post following my progress.

Cheers.

[Updated on: Tue, 26 July 2016 12:58]

Report message to a moderator

Re: Multicomp Cyclone IV [message #1021 is a reply to message #1012] Sun, 31 July 2016 05:35 Go to previous messageGo to next message
dr_acula is currently offline  dr_acula
Messages: 68
Registered: October 2015
Location: Adelaide
Member
Reading through the links above now. *very* interesting, thanks positron

Attached is another board design for Waveshare, this time a touchscreen board.

Max has got something preliminary working with a simple version of Grants Multicomp.

[Updated on: Sun, 31 July 2016 05:35]

Report message to a moderator

Re: Multicomp Cyclone IV [message #1031 is a reply to message #1012] Tue, 16 August 2016 04:04 Go to previous messageGo to next message
JonB is currently offline  JonB
Messages: 92
Registered: August 2016
Location: UK
Member
positron wrote on Tue, 26 July 2016 12:57
Maybe a "crossbreed" between a classic CP/M machine and a Sinclair Spectrum...


Take a look at the Amstrad PCW16. It's a sort of clone of a Macintosh, with a monochrome screen, GUI and (I believe) a 16Mhz Z80. There's supposed to be an unofficial CP/M implementation for it, too. Also, the PCW 8256 and its derivatives do have a bit mapped display that can be used for GUIs (and some have been written, working with aftermarket mice), but they're a little bit slow.
Re: Multicomp Cyclone IV [message #1039 is a reply to message #1031] Tue, 16 August 2016 12:06 Go to previous messageGo to next message
positron is currently offline  positron
Messages: 78
Registered: November 2015
Location: Buenos Aires, Argentina
Member
jonb wrote on Tue, 16 August 2016 06:04

Take a look at the Amstrad PCW16. It's a sort of clone of a Macintosh, with a monochrome screen, GUI and (I believe) a 16Mhz Z80. There's supposed to be an unofficial CP/M implementation for it, too. Also, the PCW 8256 and its derivatives do have a bit mapped display that can be used for GUIs (and some have been written, working with aftermarket mice), but they're a little bit slow.


Thanks jonb, very interesting machine indeed ! There's an extensive article in Wikipedia covering sw and hw details. One thing surprised me...

"Unusually, the Z80 CPU in the PCW 8256, 8512, 9512, 9256 and 9512+ had no directly connected ROM, which most computers used to start the boot process. Instead, at startup, the ASIC (customised circuit) at the heart of the PCW provided access to part of the 1k ROM within the Intel 8041 microcontroller used to drive the printer. The Z80 would copy 256 bytes via the ASIC into RAM, providing sufficient instructions to load the first sector from a floppy.[50] The ROM-based code cannot display text, being too small to support character generation; instead it displays a bright screen which is progressively filled by black stripes as the code is loaded from floppy."

So using an ASIC and a 8041 microcontroller to boot the Z80... Shocked amazing, just like the things we do here with FPGA's Very Happy
Re: Multicomp Cyclone IV [message #5566 is a reply to message #1039] Thu, 22 November 2018 00:51 Go to previous messageGo to next message
JonB is currently offline  JonB
Messages: 92
Registered: August 2016
Location: UK
Member
I'm sorry to resurrect an old topic but wanted to add some colour to the PcW comments.

I acquired a PcW16 last year for the princely sum of £5 and yes, it does look like a Mac, sort of. Has a cur down office suite but no command line. There is a version of CP/M Plus for it, written by John Elliot, but it doesn't feel any faster in operation than the CP/M Plus on the PCW8000 machines (these have 4Mhz Z80s). Looking at John's documentation, it looks like there is a lot of memory paging or mapping going on behind the scenes, as the CP/M implementation doesn't run natively (it's an application running under Anne, the PcW16's operating system). Nevertheless it is an impressive achievement. The "16 Mhz Z80" appears to be a core built into a larger chip on the PcW16's board (which, tantalisingly, seems to have the capability to support an IDE drive).

The 8000 series boot process description is correct. When in "boot mode" every instruction fetched comes from the printer controller irrespective of what is on the address bus. So the CPU is kind of "force fed" the boot code. This makes alternative boot approaches (such as the holy grail of booting from a hard disk) difficult to implement (not impossible, though). As I have implemented a simple IDE interlace for the PCW8000/9000 computers I would really like to build this feature.
Re: Multicomp Cyclone IV [message #5572 is a reply to message #5566] Thu, 22 November 2018 09:00 Go to previous messageGo to next message
plasmo is currently offline  plasmo
Messages: 916
Registered: March 2017
Location: New Mexico, USA
Senior Member
The native CF interface is 16-bit wide so if you have a uP with 16-bit wide databus such as Z280, it is possible to boot off the CF. This is the way the ROM-less Z280RC normally boot up. I've written a description of how that is done here:
https://github.com/Plasmode/Z280RC/blob/master/How%20Z280RC% 20bootstraps%20from%20CF.md

For the 8-bit Z80, the process is more complicated as you'll need to multiplex the 16-bit CF data bus to 8-bit Z80 bus, but if you have a Cyclone class FPGA, then there are plenty of logic to implement the data multiplexer.

On the other hand, Z280 needs two boot ROM so there is sufficient motivation to eliminate the two chips where possible, whereas Z80 only need one boot ROM so perhaps the complexity of CF bootstrapping is not justified.
Bill
Re: Multicomp Cyclone IV [message #5574 is a reply to message #5572] Thu, 22 November 2018 09:35 Go to previous messageGo to next message
JonB is currently offline  JonB
Messages: 92
Registered: August 2016
Location: UK
Member
The CF card standard defines an 8-bit transfer mode and my IDE board uses it. So there is no need to implement 16->8 bit multiplexing or discard 8 bits of each word retrieved from the card. Not all CF cards seem to implement this but I found that DOMs do. More info here: http://www.cpcwiki.eu/index.php/UIDE_Universal_IDE_adapter_c ards_for_Z-80_computers

Although the device has been aimed at PCW users, it is in fact universal because it adopts the Z80 footprint as a bus; hence it can be retrofitted to any Z80 (A/B) computer by means of a shim. For example, here it is running on an Intertec Superbrain: https://stardot.org.uk/forums/viewtopic.php?f=45&t=12875 &hilit=superbrain&start=180#p172726

This only shows the test and formatting programs working; I've yet to work out how to integrate the drivers with the Superbrain's CP/M (which does not support MOVCPM so its BIOS needs to be reverse engineered so it can be assembled at a different offset to make space for drivers and buffers).
Re: Multicomp Cyclone IV [message #5575 is a reply to message #5574] Thu, 22 November 2018 09:49 Go to previous messageGo to next message
norwestrzh is currently offline  norwestrzh
Messages: 196
Registered: November 2015
Senior Member
That's correct, jonb ... some CFs can operate in 8-bit mode. I use it in some of my Z80 designs. At first I thought that it might reduce the capacity of the CF in some way, but I have found that (at least in some cases) it does not. It must be handled internally somehow by the CF.

But .... there might not be any need to worry about 8- vs. 16-bit I/O to a CF from a Z80. Phil Ruston (retroleum.co.uk) designed a TTL interface to CF that is a full 16-bits. Requires two I/Os from the Z80 (of course) to make it work. Uses a handful of TTL. Why not translate that logic to an FPGA? I have the TTL interface built into a Z80 SBC, and it is running (very reliably) at 16 MHz. My SBC is described on my Web site (www.hanscom.us). It is a very nice, and responsive, system.

Roger
Re: Multicomp Cyclone IV [message #5577 is a reply to message #5575] Thu, 22 November 2018 10:31 Go to previous messageGo to next message
JonB is currently offline  JonB
Messages: 92
Registered: August 2016
Location: UK
Member
norwestrzh wrote on Thu, 22 November 2018 09:49
Why not translate that logic to an FPGA?


In a word... overkill. The uIDE design is ridiculously simple. It uses a 74LS688 comparator to decode the Z80 address and control signals plus a 74LS02 to handle /RD and /WR signals.. There is an inverter implemented with a transistor and that is about it. You could drop that if you were prepared to forego the drive activity light, and it's possible the 74LS02 isn't needed, either (hmm, would be an interesting experiment). Implementing that in an FPGA would be pretty wasteful. Maybe the 16 bit multiplexer design might be worth doing, if it is complicated enough to warrant the cost, but you could use a CPLD or PAL, surely?

[Updated on: Thu, 22 November 2018 10:36]

Report message to a moderator

Re: Multicomp Cyclone IV [message #5579 is a reply to message #5577] Thu, 22 November 2018 11:13 Go to previous messageGo to next message
plasmo is currently offline  plasmo
Messages: 916
Registered: March 2017
Location: New Mexico, USA
Senior Member

Is there a way to power up the CF in 8-bit mode? I have implemented a Z80 with 8-bit CF interface (https://github.com/Plasmode/Z80SBCRCWink, but I found it necessary to issue a "set feature" command to change the CF from its native power-on 16-bit to 8-bit mode. This is easy to do once you have Z80 up and running, but needs more complex state machine to initialize the CF if it is to serve as the bootstrap ROM. I do like the idea of discarding the upper byte; it simplifies the state machine (my state machine is CPLD-based) but does reduce the bootstrap code to 256 bytes, but that should be enough to get Z80 up and running.

My above mentioned Z80 is running at 22Mhz and I find it very zippy with a 8-bit CF interface, but I don't have a benchmark I can run against the 16-bit mode. Can someone suggest a disk access benchmark?
Bill
Re: Multicomp Cyclone IV [message #5593 is a reply to message #5579] Fri, 23 November 2018 04:30 Go to previous message
JonB is currently offline  JonB
Messages: 92
Registered: August 2016
Location: UK
Member
The problem with not initialising the CF card is that it might not be in a known state when you bootstrap. My CP/M driver initialises it as follows:


  • Performs a test to ensure it is present (invokes the wait loop checking the busy flag on the status register, times out if not clear). Not sure this is really a valid test.
  • Issues the "8 bit mode" set feature command (feature code 01h)
  • Issues the "no write cache" set feature command (feature code 82h)

[Updated on: Fri, 23 November 2018 04:31]

Report message to a moderator

Previous Topic: SmallZ80
Next Topic: Board inventory ?


Current Time: Thu Mar 26 05:36:18 PDT 2026

Total time taken to generate the page: 0.02681 seconds