[Coco] Generating 6847 syncs.....
afra at ramoth.org.uk
Mon Mar 28 10:57:12 EDT 2016
I'm working on an 6847 to SCART RGB board for the 6847, I currently have
a version for the Dragon / CoCo and for the Acorn Atom.
The RGB bit is now working correctly, I'm using a group of comparators
to break up the oA, oB, CHB and Y into a digital representation and send
them to the monitor through a series of emitter followers via a CPLD.
However the Sync is proving to be more problematic. The 6847 generates
the Horizontal sync that I can use however the FS it outputs is
effectively a vertical blank rather than a vertical sync. I should be
able to generate the required vertical sync from the FS signal however.
The 6847 Data sheet tells me that : "the low to high transition of the
FS signal coincides with the trailing edge of the vertical sync pulse.
The data sheet also seems to indicate that the FS signal is 32 HS
periods in length. So it should just be a matter of waiting for the
falling edge of FS, counting an appropriate number of HS pulses, driving
VS low for 3 pluses and then high again?
However when I do this (in my CPLD) I don't get a consistent VS signal
and the image "jumps" (moves up and down between frames). This seems to
happen more on graphics screens with a lot of movement on e.g. pmode 3/ 4.
If I just make VS=FS then the image is rock steady but just shifted
partly off the bottom of the screen.
The section of my CPLD code that generates the sync is :
HS and FS are straight inputs from the 6847.
reg [7:0] vscount;
always @(negedge HS)
vscount <= vscount + 1;
vscount <= 8'b0;
// There are 32 HS periods in a FS, the vsync should be the last HS
assign vs_period = ((vscount > 28 ) && (vscount < 32)) ? 1'b0 : 1'b1;
assign vs_out = FS | vs_period;
assign CSYNCO = (HS ^ ~vs_out);
Does anyone have any idea what might be causing this problem ?
Phill Harvey-Smith, Programmer, Hardware hacker, and general eccentric !
"You can twist perceptions, but reality won't budge" -- Rush.
More information about the Coco