New Board - Easy Z80 SBC [message #6027] |
Fri, 01 March 2019 12:06 |
Sergey
Messages: 236 Registered: October 2015 Location: Portland, OR
|
Senior Member |
|
|
We can't have too many Z80-based SBCs, right?
Well, here is another one - Easy Z80. This one was created by my son Max, under my supervision. His goal was to understand how a microprocessor system works, what it takes to design and build one. And we also wanted to make it a useful system - one that can run CP/M software - Zork?! and with an option to expand the system in the future. I also wanted him to learn a thing or two about programmable logic, so we decided to use an SPLD for glue logic (and save some ICs by doing so).
Specs:
- Z80 CPU - runs at 10 MHz, but can run at any other frequency
- Z80 SIO/O - provides two serial ports. Two MAX232A transceivers are included on the board.
- Z80 CTC - timer interrupt and optionally baud rate generation for SIO
- 512 KB Flash ROM / 512 KB battery backed SRAM - same paging as implemented in Zeta SBC V2
- MAX693 microprocessor supervisor that provides reset generation, SRAM battery backup, power failure monitoring (and NMI), and an optional watchdog
- RC2014 compatible extension connector
- Runs RomWBW. Wayne had kindly merged a couple of small changes required to support the board into his RomWBW repo.
- All this fit into a very busy 10 cm x 10 cm board.
The project documentation (work in progress), EDA files, and everything else is here: https://github.com/skiselev/easy_z80/
Thanks,
Sergey
|
|
|
|
|
|
|
|
Re: New Board - Easy Z80 SBC [message #6038 is a reply to message #6037] |
Thu, 07 March 2019 13:08 |
etchedpixels
Messages: 333 Registered: October 2015
|
Senior Member |
|
|
There is a spreadsheet for RC2014 maintained by Steve Cousins steve.cousi at gmail.com that might be the best thing to consult. It's all a bit adhoc (too adhoc IMHO..
I guess the other question is whether you also have pullups somewhere so non IM2 using RC2014 devices don't jump to random vectors, and/or mess up when they are IM2 capable but don't have IE*
Alan
[Updated on: Thu, 07 March 2019 13:24] Report message to a moderator
|
|
|
|
|
|
Re: New Board - Easy Z80 SBC [message #6048 is a reply to message #6041] |
Fri, 08 March 2019 10:41 |
Sergey
Messages: 236 Registered: October 2015 Location: Portland, OR
|
Senior Member |
|
|
Phil,
Making an ECB version out of it will likely increase the board size... well... to ECB (16 cm x 10 cm) dimensions.
I've just put a bunch of recommendations on your ECB Z80 SBC redesign work, which basically will bring it to Easy Z80 + ECB.
Except of the SIO... So here comes the SIO vs 16550A UART discussion:
Pros of SIO:
- Two serial ports
- More flexible as far as the modes of operation go. It supports either asynchronous or synchronous communications (synchronous mode not likely to be used in our SBC)
- Z80 interrupt mode 2 support
Cons of SIO:
- Baud rate generator can only divide the input clock by 1, 16, 32, or 64. This makes it difficult to support both 115200/57600 and 9600/19200/38400 bit rates at the same time. It is possible to use the Z80 CTC to generate the Tx/Rx clock, but that complicates the software.
- No FIFO (I don't think it is currently used by RomWBW, not sure about FUZIX)
Pros of 16550A UART:
- Much more capable baud rate generator
- FIFO available
- Backward compatible with 8250 and 16450
- Already used in the ECB SBC
Cons of 16550A UART:
- No interrupt mode 2 support. It is possible to use one of the CTC channels to generate interrupts.
- Single port (but do we need two?
Frankly, I am not sure which poison to pick here
Thanks,
Sergey
[Updated on: Fri, 08 March 2019 10:42] Report message to a moderator
|
|
|
Re: New Board - Easy Z80 SBC [message #6049 is a reply to message #6048] |
Fri, 08 March 2019 11:59 |
etchedpixels
Messages: 333 Registered: October 2015
|
Senior Member |
|
|
The SIO baud can only do 1x for synchronous serial, so you are stuck with 16/32/64. It does have a very small receive FIFO that is automatic and always active (3 bytes). It and the CTC and other stuff are also available in one chip (KIO).
The 16550A also has the problem of needing a lot of I/O ports per channel. IM2 ought to be doable somewhat. Certainly there were systems using Intel 8250 and the like with IRQ logic and resistors to pull the bus to a default IM2 vector. Not sure I'd use a CTC as you get a lot more interrupt lines out of a Z80 PIO and still have enough bits left for SD card support and a bit banged RTC (and probably even simple MMU).
The other option is the Z85230 which gives you 4 bytes transmit, 8 bytes receive FIFO and a proper baud rate generator - and can do IM2.
A second port is very useful for networking (CP/NET or TCP/IP or kermit)
Alan
[Updated on: Fri, 08 March 2019 12:11] Report message to a moderator
|
|
|
|
|
|
Re: New Board - Easy Z80 SBC [message #6055 is a reply to message #6053] |
Fri, 08 March 2019 16:01 |
Sergey
Messages: 236 Registered: October 2015 Location: Portland, OR
|
Senior Member |
|
|
The support for Easy Z80 had been merged to RomWBW 2.9.1. When building the image select RC2014 platform, and then ezz80 configuration.
Note that CTC is wired a bit differently in Easy Z80 vs. Zeta SBC V2:
- In Easy Z80, CTC channels 0 and 1 can be wired to SIO clock inputs (they are not connected by default - the default is to get 1.8432 MHz clock signal straight from the oscillator), and CTC channels 2 and 3 are chained together, and channel 3 can be used to generate periodic timer interrupt.
- In Zeta SBC V2, CTC channels 0 and 1 are chained together, and are used to generate periodic timer interrupt, channels 2 and 3 are used as IM2 interrupt inputs from the UART and the PPI respectively,
[Updated on: Fri, 08 March 2019 16:02] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: New Board - Easy Z80 SBC [message #6422 is a reply to message #6413] |
Tue, 23 July 2019 18:33 |
mscane
Messages: 111 Registered: October 2015
|
Senior Member |
|
|
I think from memory, if the battery is not connected the first memory write will fail. It is used to tell the system that the battery is missing or needs replacement. It is in the data sheet I think.
Cheers!
Max
|
|
|