LVDS Single-to-dual converter Hardware

On to the hardware (See the LVDS Single-to-dual converter Background for more information)

The converter consists of three chips:

TI DS90CF366

LVDS single-pixel "deserializer" (aka receiver) Converts LVDS serial data into parallel bits.

TI DS90C387

LVDS "serializer" (aka transmitter)

This particular chip is capable of taking in parallel single-pixel data, and outputting dual-pixel LVDS (FHWEW! It was hard to find!)

Atmel ATtiny45

Used for EDID, instead of a typical serial-eeprom...

(See the avr-edid-spoofer code page)

A) I've never used serial eeproms

B) I like my code to be well-commented and values to be auto-calculated... so having a raw hex-file isn't ideal and would be harder to experiment with different values.

C) Could use it to do other groovy things.

(Original idea: Real-time conversion of the display's built-in "dual-pixel" EDID to its single-pixel equivalent... Turns out this display doesn't have EDID.

And, further, it's come in quite handy to have direct control over the timing)

(I ended up using the extra pins and code-space to implement an RGB LED-fader to test out multiplexing the pins and to experiment with using the DDC bus for non-EDID data-transfer. I guess it could be used to light up the Apple Logo.

The DDC bus can be used to send a specific color-value via a small program.

Was ultimately thinking to use the AVR for converting the Wacom digitizer's RS232 data to transmit via DDC, but that was a no-go due to poorly implemented I2C handling in OSX, causing *each byte* of DDC communication to halt the computer in uninterruptable delay loops for nearly 30ms! )

Schematic: SingleToDualTransmitter19_NewNotes3.pdf

I'd originally intended to get the PCB manufactured on .6mm thick material, in which case, ideally, it would fit right in the LCD's connector. But it was higher-cost, and I wasn't certain it'd fit after the copper and solder. Instead I ordered .8mm and used a dremmel-tool to thin it down at the connector until it fit.

The 20-pin (single-pixel) cable from the computer was a hassle. I managed to find some wire that fit perfectly (actually straightened strands from a stranded-wire). It works, and saved me $5 and delivery time, but it's such a hassle to align that I seldom want to remove it... (e.g. one of the GND pins managed to get missed... there's no way I'm taking it off to try again).

The six-pin header is for programming the "EDID chip." I have had to experiment with different timing values on occasion.

Here's the original prototype (now hanging on my wall). It was a nice proof-of-concept, actually worked great on my main computer for several months, despite hanging out the back of my laptop screen, exposed to the elements (and there are a *lot* of elements on my "workbench." In the meantime I took a break, and intermittently worked on a PCB design (ordered astoundingly cheaply from http://www.seeedstudio.com/service/index.php?r=site/pcbService). To the left is the prototype EDID circuit.

Close-up. Yes, that's some *tiny* spacing. I just *had* to see whether I could do it, having designed so many PCBs in my days... I don't really have that patience as often as I used to. And it's handy to know that I can do one-offs this way if necessary.

This is the only picture I have from those days... I literally used it, my main computer, this way for over half a year... too bulky to put the housing back on, it was just dangling and occasionally getting snagged. We're looking at the back of the LCD. To the left in the image is the top of the display. On the right, in the background, is the Wacom Digitizer's circuitry. Above that is the EDID circuit.

Status:

Using SwitchResX from http://www.madrau.com/ I've done quite a bit of optimizing of the refresh-rate. With the hand-wired circuit, I was able to get refresh rates around 47Hz (as I recall). Worked fine and didn't notice flicker. The only problem was that MacOS 10.5.8 has a particular bit of code in the kernel that causes the mouse to report errors to the console regularly whenever the display refresh is lower than 50Hz. Yeah, thousands of mouse-pointer messages, was probably slowing my system a little bit, and it was quite hard to see other things in the log.

The PCB bumped that up to 54Hz without any noticeable glitches, and got rid of most of those messages. Surely due to better shielding, shorter and matched-length LVDS signal-paths, and maybe the additional capacitors.

I've found that the highest bit-rate that works well with my hardware (motherboard and cables, likely the converter PCB itself) is 100MHz pixel-rate, or 700Mbps on each LVDS signal. That's pretty dang fast... and way faster than designed-for to work with the old display. If it were being transmitted from the computer in dual-pixel, it'd only be 350Mbps! The display itself specifies a 54MHz pixel-clock, but since it's dual-pixel that would require 108Mhz from my computer... Too much for the system to handle. At higher rates, the bits start to sample incorrectly, thus the colors come through wrong, bright colors where they should be dark, etc. Also, sometimes at those higher bit-rates the syncing isn't perfect.

I've since bumped it up to 61Hz refresh by experimenting with the sync widths and porches, leaving the pixel clock at 100MHz, and ultimately writing these new values into the EDID itself so SwitchResX is no longer necessary to override the timing values reported to the computer.

(later note: Apparently the sync-widths and porches necessary for 61Hz with a 100MHz pixel-clock were just at the lower limit of the display's syncing-ability. In most cases it was completely unnoticeable, but in Terminal, with its sharp white-on-black text, it was possible to see from time to time a row "flash". A strange-effect, really, since it was invisible on webpages with black text on white. I've since bumped it back down to 57Hz)

In all, I think the total cost, including the display (with a Wacom digitizer!), custom PCB, and samples from TI, was less than $60. Friggin' amazing.

And, again, this is my main system, I'm writing from it now... so it works pretty durn good. The only other thing is that the display itself is a bit dim in bright daylight. But I'd rather deal with that than low-resolution. (Besides, it seems I'm nocturnal anyhow).

Oh, and I completely forgot to talk about the mounting-hardware... So, suffice-to-say, the actual display panel and circuitry fit just-fine in the old LCD's housing. It was a bit of *delicate* work, and maybe a few cuts to plastic pieces... a bit of sticky-backed tape, cut some metal mounting-tabs off the PCB, and there yah go.

Interesting note: Don't put those LCD backlight filter-sheets back in the wrong order, unless you want this: (Pretty durn cool, if you ask me). Yes, that's a white text-edit background. And, yes, the blue/red pattern is three-dimensional!

----------

I'll probably eventually make the (gnu) pcb (and gerber?) files available. I also still have a few blank PCBs... If you're interested, let me know.

-------

FILES:

SingleToDualTransmitter19_NewNotes3.pdf