zx80nut wrote:Yeah, I've been looking (glazed over a bit) at bodo's sourcecode.
Yeah, couldn't make much sense of it either...

then again, I've started reading snippets of Verilog & VHDL here & there, but not really dived into it. The small projects I've done so far, were done using schematic entry. Since you can divide design up in modules (as I have in ULA project), there isn't much you
can't do using schematic entry. It's just not the easiest way to do things as a design gets bigger (but at least it can be read by people who don't know a HDL). In Xilinx' ISE suite you can mix & match modules created with schematic entry, Verilog or VHDL as desired (I assume that's true for Quartus as well). Probably I'll move to using Verilog soon...
Andy, Retrotechie, are you guys going to be publishing your sourcecode sometime ?
Planning to, but I'd want to have a 'clean' & feature-complete design before doing so. Right now the hardest steps are done, but design does not yet behave
exactly the same as a ZX81, nor is it very robust timing-wise. I understand the philosophy of 'release early, release often', but I don't want to publish a half-baked design, and have others base their 'products' on it. Shouldn't be too difficult to
significantly improve what I have now.
Currently I don't know what size chip to get, though, as I don't know how many macrocells are needed. Retrotechie seemed to need more than Bodo, as I the Mach 210 only has 64.
A Mach 210 macrocell != an XC9500 macrocell != an Altera LE. You can't always say up-front whether a design will fit into a specific device. But there's an easy way to check: select a device, go through design -> synthesize -> fit process, and (if it doesn't fit) you'll be sure to get errors stating that chosen device doesn't have enough macrocells or I/O pins. And there's many ways to optimize a design, so far I used few of those...
If you just want to dabble a bit with programmable logic, get an
XC9572 (5V) or
XC9572XL (3.3V) in 44-pin PLCC, or XC9572 (5V) in
84-pin PLCC if you want an easy-to-handle package AND be sure to fit a ZX81 ULA in there. 34 I/O's should be enough to replace most ULA pins, but for a full 1:1 ULA replacement I think you'll need a few more I/O's...
If you're aiming for a plug-in ZX81 ULA replacement board, get an XC9572XL in 64-pin QFP housing.
This part (seems like Farnell doesn't have it) would be ideal in terms of logic & number of I/O's, but a fitting adapter board would be
absolute necessity since it has very fine pitch (0.5mm) between pins.
FWIW: a decent design should be easy to move from one to device to another when the need arises. If you go Altera route I'm sure they have similar parts but I wouldn't know which... maybe Andy knows more?