Create ULA for €5?
Re: Create ULA for €5?
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.)
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.)
Re: Create ULA for €5?
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.RetroTechie wrote:Arghhh...mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.Friends don't let friends use Fritzing. Especially not for pcb layout.
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.
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.
Re: Create ULA for €5?
I look at device_settings.ucf, but seem to miss where some connections go.RetroTechie wrote:mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.
ULA:
- Pin 16 tv/tape
- Pin 1 Csync
- Pin 3 luminance
Re: Create ULA for €5?
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
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.
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
Re: Create ULA for €5?
I read the instructions again and found this section section, that describes how do the connections.mrtinb wrote:I look at device_settings.ucf, but seem to miss where some connections go.RetroTechie wrote:mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.
ULA:XC9572:
- Pin 16 tv/tape
- Pin 1 Csync
- Pin 3 luminance

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).
Re: Create ULA for €5?
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.
Re: Create ULA for €5?
I hope RetroTechie thought about that when he designed the CPLD and board.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.
Re: Create ULA for €5?
And here we have the final version of the single sided PCB.



Re: Create ULA for €5?
Next time I'll try easyeda.com or upverter.com so I'm not limited to edit the design at home.RetroTechie wrote:Arghhh...mrtinb wrote:I've started to setup RetroTechie's circuit in Fritzing.Friends don't let friends use Fritzing. Especially not for pcb layout.
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 ..., ...., ....
Re: Create ULA for €5?
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.
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.