For generating sync pulses or other repetitive waveforms, a notion I find promising is to use the bitstream regurgitated by an SPI-based EEPROM. Used for HSync and VSync, the circuit would behave like a pair of counter/dividers but in fact it's based entirely on the recall of stored information.
My first pass on the idea (not shown) was a mild case of overkill, although it'd be a good solution for a more complex problem. I'll describe the idea briefly in this paragraph, then move on to a simpler solution. The first pass design used a single SPI EEPROM whose serial output fed a 'HC4015 shift register whose parallel outputs drove a 74_259 octal addressable latch. An extended serial string of zeros would be NOP -- no change. Action results only when the bitstream encounters 5-bit commands in the form of a Start Bit and 4 data bits, with the latter interpreted as 1-bit data and 3-bit address for a write to the '259 output register. So, the command could say things like, "Set the '259 pin that's designated as VSync," or reset it, or set or reset the HSync output instead... Highly flexible, really. The '259 gives you eight outputs to play with, so you'd have quite the little sequencer, and with only a handful of chips!
Schematic available on request. But if you only need two outputs there's a simpler way.
Subsequent doodling (below) slashed the chip count even further, despite doubling the EEPROM count to two. (These 8-pin EEPROMs are pretty darn small anyway -- also quite affordable.) As you can see, the bitstream is used as-is, without any encoding (except that the falling edge of VSync is used as a signal to restart the regurgitation).
Attachment:
HSyns-VSync sequencer.png [ 22.11 KiB | Viewed 1615 times ]
In order to start (or restart) regurgitation, the EEPROM needs to be sent an 8-bit Read opcode followed by a 24-bit Start Address, and generating that 32-bit sequence would be unduly bothersome
if you want the start address to be zero. But it just so happens that a Read opcode followed by a start address of $FFFFFF is
easy to generate, and that's what I've configured the '164 shift register to do.
Following reset or restart the '164 sends the EEPROM a sequence which is
just a single low-to-high transition (this is the waveform applied to the D input, as shown in the timing diagram). As you can see, /CS falls and stays low, and six clocks later D rises and stays high. The framing is such that the EEPROM sees the string as opcode $03 (a Read command) followed by the first address that'll be read: $FFFFFF.
I'm pleased with how lean the design is.... Maybe someone can put this idea (or the 259-based sequencer) to use...
-- Jeff
Edit: improved text, and an update. Some while ago I built the circuit and was happy to find the idea successful. The only thing that bothered me was the active-low pulse applied to /CLR, whose duration needs to be controlled in order to keep the '164 clear for a predictable number of cycles. I didn't trust the simple RC shown in the schematic above, so here's how I trimmed the pulse width in order to keep the '164 clear for exactly one cycle.
_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html