Create ULA for €5?

Discussions about Sinclair ZX80 and ZX81 Hardware
User avatar
mrtinb
Posts: 1910
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Create ULA for €5?

Post by mrtinb »

It's single sided, because then anyone can make the pcb.

My idea was to make it work first, and then simplify the circuit afterwards by changing the pins. (That way I know the CPLD code is working - as I have not touched it.)
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
mrtinb
Posts: 1910
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Create ULA for €5?

Post by mrtinb »

RetroTechie wrote:
mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.
Arghhh... :twisted: Friends don't let friends use Fritzing. Especially not for pcb layout. :lol: There's some (limited, imho) purposes for this program. But for laying out pcb's, literally any pcb layout software out there is better suited. Try Eagle, or Kicad, or ..., ...., ....

Some tips:
* Double sided board makes layout much easier.
* Any signal that goes to a regular CPLD I/O pin, can be swapped with another I/O pin on the CPLD. Yes, you'd need to re-do the synthesize ('compile') CPLD design step. But that isn't as hard as you might think. Swapping pins means you can basically lay out most traces nicely next to each other as you want.

Strictly speaking, swapping pins may influence timing. And not any desired pinout may be possible in the first place. But in practice, this isn't much of an issue, and you can try in ISE before actually doing a pcb layout or configuring the CPLD.

Basically: 1) Lay out traces in the easiest/simplest manner. 2) Feed that pinout to ISE, and re-do the synthesize step(s). 3) If that doesn't work & a few pins are changed (or need changing), repeat those steps in ISE. 4) Use 'ISE-approved' pinout to finalize the pcb layout.

Sticking to a CPLD pinout that I once used for a pcb layout I did in a way you wouldn't want to repeat anyway, just makes your job harder than it needs to be. :)
I'm very pleased with your comments. I have thought about it before, but it was a goal for me to have the board single sided. And as mentioned above, I thought about changing the pins, but were afraid to mess it up. I would rather use your compiled binary that I know works. Then I can change the pins afterwards, and simplify the design.

About the Fritzing software it might be limiting for experienced users. As this is my second PCB I design (ZXBKB3 was the first), I prefer the simplicity of Fritzing, and I'm beginning to learn it's quirks.
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
mrtinb
Posts: 1910
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Create ULA for €5?

Post by mrtinb »

RetroTechie wrote:
mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.
I look at device_settings.ucf, but seem to miss where some connections go.

ULA:
  • Pin 16 tv/tape
XC9572:
  • Pin 1 Csync
  • Pin 3 luminance
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: Create ULA for €5?

Post by PokeMon »

So luminance is the video data signal while csync is the combined sync of horizontal hsync and vertical sync.
These can be combined to a composite video signal while using resistors for adding them to create a composite sync and a transistor to amplify this signal for the 75R video output. Using a 1k resistor (luminance) and a 2k2 resistor (csync) while connecting both resistors together and the other ends to the appropriate pins could be a good start. This should be a good start. Don't know how this behaves to the mic output.

Pin 16 of ULA is a tri-voltage-output with sync level, black level and white level. Target at the output should be 0V (sync level), 0.3V (black level) and 1.0V (white level) when connecting it to 75R resistor (standard video input). I would avoid using output capacitors and would try to match the levels manually. TV's using normally a clamp circuit to eliminate eventually DC offsets while too much DC offset should be avoided.

This is a good source about video levels.
https://www.maximintegrated.com/en/app- ... vp/id/1184

Code: Select all

PAL
Setup	0mV
R'G'B'	700mV (Peak Luma, 100% White)
Sync	-300mV 
Officially the black level is defined as 0V and sync level as -0.3V but this could be easily simplified to 0.3V and 0V as adding a 0.3V offset to the signal. A capacitor is a bad choice as the level is depending on the video contents (black screen vs. white screen) which could give pumping effects in some circumstances.
User avatar
mrtinb
Posts: 1910
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Create ULA for €5?

Post by mrtinb »

mrtinb wrote:
RetroTechie wrote:
mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.
I look at device_settings.ucf, but seem to miss where some connections go.

ULA:
  • Pin 16 tv/tape
XC9572:
  • Pin 1 Csync
  • Pin 3 luminance
I read the instructions again and found this section section, that describes how do the connections. :oops:
Composite video output

In true Sinclair fashion, composite video output is kept to a bare minimum:
  • A 220 Ω resistor is tied to the luminance output pin.
  • A 390 Ω resistor is tied to the Csync output pin.
  • The other ends of these resistors are tied together, and to the ULA socket pin (16).
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: Create ULA for €5?

Post by PokeMon »

You should check the output drive capabilities of your circuit as direct driving 75R input requires currents of about 10-12mA for the luminance output with a white background.
User avatar
mrtinb
Posts: 1910
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Create ULA for €5?

Post by mrtinb »

PokeMon wrote:You should check the output drive capabilities of your circuit as direct driving 75R input requires currents of about 10-12mA for the luminance output with a white background.
I hope RetroTechie thought about that when he designed the CPLD and board.
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
mrtinb
Posts: 1910
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Create ULA for €5?

Post by mrtinb »

And here we have the final version of the single sided PCB. :shock:

Image
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
mrtinb
Posts: 1910
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Create ULA for €5?

Post by mrtinb »

RetroTechie wrote:
mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.
Arghhh... :twisted: Friends don't let friends use Fritzing. Especially not for pcb layout. :lol: There's some (limited, imho) purposes for this program. But for laying out pcb's, literally any pcb layout software out there is better suited. Try Eagle, or Kicad, or ..., ...., ....
Next time I'll try easyeda.com or upverter.com so I'm not limited to edit the design at home.
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
daybyter
Posts: 17
Joined: Wed Nov 23, 2016 11:03 pm

Re: Create ULA for €5?

Post by daybyter »

Hi!

Found this forum and your thread after some googling. Have 2 zx81 at home with broken ULAs and I know no source to buy them at the moment.

So I appreciate your idea to create a (cheap) replacement a lot.

But do you think a smaller 2-sided PCB, that could be manufactured in china would be such a big problem? I see an offer of 10$ for 10 boards at pcbway.com as an example. Order 20 and everyone interested pays 1$ plus shipping for the pcb?

Maybe use a SMD version of the CPLD, like the XC9572XL-VQ64 ?

The free Eagle version allows boards up to 100x80mm, so that would fit.

I'm interested to help.
Post Reply