LZX sync signal standard (RCA) formalisation?

Is there a (relatively) formal definition somewhare of what exactly a “correct” LZX-standard RCA sync signal is?

I know I can guesstimate it from some info I can find (mainly schematics), but it would be good to have it officially confirmed.

Info I found so far:

Supported video timings from LZX’s “Getting started”

The current generation of LZX Modular supports 15 video sync formats.

  • NTSC
  • PAL
  • 480p
  • 576p
  • 720p50
  • 720p5994
  • 720p60
  • 1080p2398
  • 1080p24
  • 1080p25
  • 1080p2997
  • 1080i50
  • 1080i5994
  • 1080i60

Products released before 2020 supported 2 video sync formats.

  • NTSC
  • PAL

Similarly, from Syntonie’s VU007 product page:

Sync generator capable of the following formats:

  • 288p50
  • 240p59.94
  • 576i50 (PAL)
  • 480i59.94 (NTSC)
  • 576p50
  • 480p59.94
  • 720p50
  • 720p60
  • 1080i50
  • 1080i60
  • 1080p25
  • 1080p30

Inputs:

  • 0-700mV Sync in, 75 ohm, RCA (rear)

Outputs:

  • 0-700mV Sync out, 75 ohm, RCA (rear)

The Visual Cortex docs say:

The Sync Generator section is a broadcast specification video sync generator which can operate in NTSC/480i or PAL/576i timing formats. It can provide the master timing reference for an entire video synthesizer system, and its timing may be synchronized to an external video source.

Which still doesn’t help me with what exact specification it is…

A better hint was finding LMH1980 in both VU003B and VU009 BOM/schematics, but also mentioned in some DIY threads.

Here’s the part of its datasheet I found most relevant:


So if I put it all together, my guess at what sync signal the LZX Gen3 / new Syntonie modules expect would be:

One channel of a regular Composite / S-Video / Component (the one that carries the sync signal) video signal, as long as LMH1980 handles it

Is that right? It feels like it should be, but still leaves me with some questions:

  • What’s with the 0 - 700mV range in Syntonie docs? Isn’t Composite sync in the range of around -300mV to +700mv, with the sync part being negative?
  • What’s with the possibly inverted values coming from some LZX modules? I found some docs stating that it was basically an accident, but are the modern modules expected to handle the inverted signal?
  • Does that mean that if I made VGA encoder/decoder modules most of the existing effects / function generator modules would work with them as long as the signal was RGsB and included in the correct VESA Standards doc? (I’m not saying I want to)

The main reason I’m asking is that while I’m pretty sure I’m going to buy VU007B or ESG3 (I really don’t feel like learning how to FPGA right now), and a bunch of other modules, I’d like to know I’d be capable of designing/making simple video modules that would be compatible with the current RCA sync standard, not just using other people’s designs.

I’m not overly ambitious but making my own composite luma input module, a synced function generator or a keyboard/internet enabled OSD generator would be pretty cool.

The sync signals that the LZX and Syntonie modules are expecting are just video signals with an all-black image. That said, I’m fairly sure that most/all the modules that take sync use a sync separator, so they can actually take a non-black video signal as well. I’ve definitely fed composite video into my ESG3’s sync input, when I wanted to sync it to external stuff. So, ultimately, to learn more about the specs of the sync signals in the LZX/Syntonie world, you just need to look into the specs of the supported composite and component video signals, and just pay attention to the sync part.

I know that doesn’t answer all of your questions, but that at least is what a “correct” LZX-standard RCA sync signal is. A lot of your other questions I think are things only LZX/Syntonie can answer. (I can make educated guesses if you want, but it sounds like you’re looking for authoritative answers.)

5 Likes

You’re right, those are a bit confusing and will look into changing them to something more clear. I think I just copy pasted it from VU003 info, to show that, in addition to Component to RGB color space conversion, it also does 0-700mV to 0-1V scaling, and more generally to differentiate minijack 1V IO and RCA IO.

Front panel 1V sync inputs and outputs are positive leading pulses, whereas sync embedded in Composite/SD Component are negative going (Component HD is tri-level sync but that’s another subject). Then front panel sync is kind of obsolete, so RCA sync IO at the rear is the way to go now.

Some will, some won’t, mostly as frame rates and resolutions are different in VGA than in Composite/Component (there might some overlap though).

“Simpler” signal generators like analog oscillators can generally work with any resolution/frame rate, as long as hsync and vsync pulses are provided, the oscillator will just reset on the pulse. Then for ramp generator, it gets tricky as the ramp frequency is related to resolution and framerate, in the case of Rampes, which is a digitally controlled analog ramp gen, it only support the formats supported by VU007B/ESG3 (as there is a FPGA detecting the format switching the ramp gens to the right freq), and for the LZX Gen3 ramp gens, they’re generated digitally, so once again, only supports the formats supported by sync gens/encoders.
Then if you only need the ramps to support a single format/fixed timing, it can be made simpler and only requires hsync and vsync (like Cadet IV).

For analog function generators, you’ll only need a sync extractor to separate the sync pulses from the incoming RCA sync or full Composite/Component Y, so LM1881 or LMH1980.
Then for a digital generator like OSD, it will need to be genlocked to the external sync, so usually it will ask for a sync extractor, PLL and VCXO, which is a bit more complex.

To resume, LZX RCA sync standard follows the ITU/SMPTE specifications for Composite/Component/S-video, so you can find all those specs in those documentations:

BT.1700 : Characteristics of composite video signals for conventional analogue television systems (PAL 576i Composite)
https://pub.smpte.org/doc/st170/20041130-pub/st0170-2004_stable2010.pdf (NTSC 480i Composite)
BT.601 : Studio encoding parameters of digital television for standard 4:3 and wide screen 16:9 aspect ratios (Component 576i/480i)
BT.1358 : Studio parameters of 625 and 525 line progressive television systems (Component 576p/480p)
BT.1847 : 1 280 × 720, 16:9 progressively-captured image format for production and international programme exchange in the 50 Hz environment (Component 720p50)
BT.1543 : 1 280 × 720, 16:9 progressively-captured image format for production and international programme exchange in the 60 Hz environment (Component 720p60)
BT.709 : Parameter values for the HDTV standards for production and international programme exchange (Component 1080p/1080i)

Definitely, that’s why RCA sync makes the most sense in my opinion. This way, a system can be built around an external video signal without a sync generator/encoder necessarily. I’m thinking scan processing (video input + ramp generator) or Composite/Component video processing (Stable has a RCA sync output which is basically the input signal buffered, so generators modules can sync to it).

5 Likes

Thank you Bastien, that’s really helpful!

That was very thorough and more than enough for my needs. I realise me just barging in and demanding answers might have been a little annoying, which makes your response even more appreciated :pray:

I think I have enough info to reason about what in the LZX system is trivial, what’s possible, and what’s best left to the professionals :smiley: I already have a bunch of ideas for modules that should be interesting and doable (doing some interesting stuff with 8bit binary signals from Xaoc modules?), but first I need to get and assemble some modules from you guys to see how it’s done and to finally play with the analog video synthesis

If I work on any modules I’ll be sure to share it with with the community and document them on GitHub - the way you guys do it is the quality I aspire to :smiley:

1 Like

Ohh Amazing!!
I was seeing some glitches with my sync generator (rp2040 based) in 720p mode into TBC2, and didn’t know why.
Probably because of it just being simple negative sync (VGA H and V OR’ed) instead of trisync.
I guess I’ll need 2 bits for HSync and another 2 for VSync.
Could something like this work?
2bit tri-sync sim

The sequence being:
bit 0 starts high ; bit 1 starts low. → 0V
bit 0 goes low ; bit 1 remains low → -300mV
bit 0 goes high ; bit 1 goes high → +300mV
bit 0 remains high ; bit 1 goes low → 0V

1 Like

Hope my answer didn’t sounded like I was being annoyed, though I suppose jumping straight to the hardcore technical stuff may sound like it :upside_down_face:
Always happy to help, in the same way I’ve been helped and still being helped. Also, you made research before asking questions, which shows your genuine interest in the topic!

Sync is a bit complex to apprehend at first sight and can be intimidating/overwhelming, I admit that even if I was already messing a bit with Composite signals before getting into video modular, I didn’t really understood how sync between modules worked and why it was needed. Until I started building the Cadets and it began to make more and more sense. I think it’s great to have production/DIY options available for sync gen/encoder, so you can make abstraction of how the inner of it works at first, and focus on understanding it at a higher level before diving deep into it. As a matter of fact, it took VU001 to VU006 before I released my first modules that required sync (VU007/VU009) :wink:

So I would suggest starting with processing/utility modules that doesn’t require sync first, so you can get used to IO impedance, levels, etc… Then get into an analog function generator that can work with a sync extractor only, so you don’t have to worry about the various formats. An oscillator will always oscillate at the frequency it is set to, regardless of the format, it will just reset more or less often depending on the resolution/frame rate.
Talking about OSD, I now remember that there is some Arduino projects that allows to overlay text over a Composite video signal, and only uses a LM1881 (and probably some way to insert it to the original video, like a multiplexer/analog switch), so a sync-locked digital system might not be totally required.

Definitely do logic modules! I love the Castle series and more generally digital logic modules, straight retro computer vibe! Also, logic is great for DIY in the sense that CMOS ICs are cheap and can work at high speed, whereas analog processing usually involves high-speed op-amps, which are pricy. A logic module will still ask for a couple high speed op-amps/comparators for the IO, but else everything in-between can happen in the digital logic realm, and there is a lot to explore there.
Also once you’ll have worked on a couple digital logic designs, you’ll have learned a good part of what you need to get into FPGA :wink:

Had to correct that :stuck_out_tongue:

2 Likes

I haven’t tried it, but it’s possible that TBC2 partly recognizes it as a valid format, even if there is negative sync only. However, it happened to me a couple time to have the Composite output of VU007B connected to Analog to SDI + Video Assist while having the sync gen set to an HD format, so it would only output the negative sync, and the format would briefly show up on the screen, though not stable because of the missing positive sync.

Lars posted interesting circuits around the LMH1980 here DIY Circuit Snippets with the LMH1980: Frame Sync Extractor, Trisync/Csync Regenerator, Interlaced Detector, Activity Detector
including a trisync regenerator :wink:
It has a couple additional features, like output enable and it also turns off the positive sync when in SD mode, features that you might not need if you’re generating your sync digitally instead of extracting it from an external source.
So it is basically summing the negative sync (labelled csync) and the positive sync (labelled hsync) using an op-amp and voltage dividers to bring them to the desired level. Since you’re dealing with +3.3V and the schematic is +5V, you’ll need to adapt both divider to reach the right level.
Also note that since the resulting sync output is 75R output impedance, and the receiving device will have 75R input impedance, you need +/-600mV sync amplitude at the output of the op-amp, which will then be divided by two when the transmitting device is connected to the receiving device (resulting in +/-300mV).

In VU007B, I’ve used +/- 600mV reference voltages and analog switches, with the switches controlled by the sync signals, though seems like the op-amp summing/scaling is more straightforward.

2 Likes

Well I was going to share some notes, but it seems @syntonie really covered everything well and accurately!

You can disambiguate between the positive/negative syncs by saying that standard embedded sync is “active low” hsync/vsync, and that these trigger outputs are “active high” hsync/vsync. In HDL code I usually label them like hsync (active high) and hsync_n (active low.)

Only other thing to suggest! Do not use modular video gear as your reference for what is standard or valid sync. Get a broadcast sync generator like the Blackmagic Design Sync Generator in their mini converters series. Use that as your reference for comparison about whether your sync timings and level/amplitudes are correct. Syntonie and LZX generators are accurate and within standards, but by all deferring to external test gear, we have the best possible reference for compatibility.

5 Likes

This! When testing/sanity checking VU007B sync gen against various converters, I was quite amazed by the liberties some of the cheaper ones would take (missing burst pulses, pulse width/subcarrier frequencies that were a bit out of tolerance, etc…). Then I suppose they had to do it to keep them cheap, while still producing a somewhat valid signal (for CRTs at least). Modular sync generators doesn’t have as much of those concerns, so their output is closer to the standards, but probably not as close as broadcast gear for sure.

3 Likes

Thanks!
Those snippets from Lars are really interesting. The trysinc regenerator circuit made me realise I can use the opamp’s negative input directly, instead of the 2bit DAC approach I was using.
Updated sim here:
Tri-sync from 3.3V MCU
Now the levels are ok, and its also a bit easier to control.

3 Likes