LVDS on an FPGA could make it possible to reuse laptops LCDs and the like

Search around the Internet and you’ll find a landfill of forum threads asking how to drive the LCD screen from a dead laptop. The answer is always that there is just no way to do it. That’s because most of them use a Low-Voltage Differential Signalling protocol that just isn’t available through the hardware used in hobby projects. But the appearance of this board could signal that things are about to change. We don’t want to get your hopes up too much. This isn’t an open source project, but it is a piece of hardware that can make LVDS available for the 8, 16, and 32-bit microcontrollers you’re used to working with.

It’s a derivative of a project [Thomas Jespersen] worked on for a customer. It uses an FPGA to implement the LVDS standard used by high-pixel-count LCD displays. It contains enough memory for a full frame-buffer, and includes a Motorola-8080 communication standard. [Thomas] gives a full description of how the setup works in the video after the break. Demonstrations start about 7:30 into the video with an STM32 F4 Discovery board driving the display.

Comments

  1. Per Jensen says:

    HAD – Fyi LVDS is not, and have never been the dealbreaker when trying to reuse an laptop lcd panel, as you can just buy an LVDS-transmitter chip than converts single-ended signals to LVDS-signalling. Heck, you could even on the older panels open it up, remove the LVDS-receiver chip and wire it like it were an 18Bit parallel LCD. No, the problem has always been about memory for all the pixel information and generating the 25MHz pixel clock. They way to go is an FPGA that act as an dual-port memory, and generate the necessary timing.

    • nes says:

      Yes. Driving LVDS panels is not hard at all with the appropriate TTL serializer which you can get from TI.

      Generating a TTL video stream is not too difficult either with modern 32bit micros. e.g. larger PIC32s have a 32 bit parallel port and a DMA controller so all you need to do is set a timer for the line scan and set up the DMA registers at the beginning of each line. If you do two pixels per clock cycle, you can drive a reasonably large panel that way.

  2. roboman2444 says:

    would it be possible to use this to convert dvi and other common display protocols into lvds? There are so many laptop screens that i have, they might be useful with this

  3. giomini says:

    Uhm… I think this project it’s too complex. Recently i made a search on my own on how to drive a lcd panel from a dead laptop. I found the datasheet of the panel and in this datasheet (from Samsung) they suggested to use DS90CF383 ic from TI. This is an obsolete chip, but there’s plenty of chip capable of controlling LVDS signaling for LCD panels. On these ic’s datasheet there are references on other chips that can make various interface, for example from DVI. I found an application note too. The only thing I didn’t found is something about the backlight driving…

  4. Joakim Feldt says:

    One solution to the lvds interface is to desolder the transmitter ic from the dead laptop, and then use it in your own project. To drive a lcd panel with dvi one could use tfp401 from ti. Its a small package but its fairly easy to solder with some practice. maybe it isnt compatible with all panels but i had some success with one at home…

  5. Ezra says:
    • Arthur says:

      I have that same board. Used it in a LCD/DVD combo that had a bad main board. A new main board would have cost $100+, for less then $20 I had it back up and working(minus the built in dvd).

  6. colecoman1982 says:

    Yea, I have to agree with everyone else here. Not to take away from the technical achievement of this project, but LVDS driver boards have been available for a while now. If you want tough, find me a MIPI-DSI (the most popular protocol for controlling high res smartphone displays) controller chips that will let you convert to something more standard like VGA or DVI-D/HDMI.

  7. mixadj says:

    Nice project but I am not even past blinking led’s with micros. I will have to file this one away for later.

    I have a question for those comment surfers regarding LVDS. I have a EPIA M embedded mainboard kicking around and it has onboard LVDS support. I also have a dead Toshiba Sattelite Pro CDT from the early 90’s with a good screen. Would I just match the pins or is there something else involved. If I cannot use the Toshiba screen should I be able to use another dead laptops?

  8. 556NATO says:

    “The answer is always that there is just no way to do it.”

    What, are you guys stupid? I know guys who have been using laptop LCD panels from a hobby standpoint for more than a decade. I’m sorry, but this has to be one of the most ignorant statements I’ve seen on HaD lately. GO GET A LVDS transmitter IC! Geeeeeeez.

    • Hitek146 says:

      Yea, I made a comment here within the last year about the $20+ adapter boards that have been available on eBay for probably 10 years now. I really don’t understand why this is such a secret. I mean, you give the guy the model number of your specific LCD panel, and he gives you the custom cable, controller, and inverter for the $20-$60(cost depends on features, ie:VGA/HDMI/ASTC tuner/audio/max resolution/etc.) you pay him..

      • Wilcorp70 says:

        There are a lot of forum posts about this on the internet. For a long time the answer really was “not really,” and I think a lot of people gave up then; unfortunately while cheap solutions have been found, a lot of people still think that the answer hasn’t changed and all of those old forum posts of years of people saying no it can’t be done just reinforce that.

      • Roy.Bear says:

        allright – I would love to pay that specific guy, but maybe I’m to dumb to search with the right words :(
        got me a hint?

  9. DanJ says:

    Despite all the negative nellies here, I think you guys should make the effort to productize this. No solution I saw listed above me provided an easy to use solution for a 8- or 32-bit embedded SOC to use directly.

    It’ll have to be as inexpensive as you can make it but there are an awful lot of LCD displays out there that can be repurposed by makers.

    • Chris C. says:

      +1.

      I can suggest a couple of additional features as well:

      1) MCUs with a limited number of pins will need external shift registers to implement a 16-bit interface. But I’d imagine a shift register (or other serial interface) is pretty easy to build into an FPGA.

      2) Allow any spare memory to be drawn to at off-screen coordinates. And add a blitter. This will really help with MCUs that are slow or using a serial interface. But even with a fast MCU and parallel interface, it can still provide benefit; think how much faster it would make a full-screen scrolling text display. Bonus points if the blitter allows copy modes other than exact; like replacing any two pixel colors with other colors during the copy, with one possibility being don’t copy (transparent).

  10. KillerBug says:

    If they could make an Arduino library and support a variety of the more common LCDs found in HP laptops (which often end up dead because they are made so poorly), it might do well…but as for reusing an old laptop screen as a PC monitor, it is nothing new…it is just a bit pointless since you can get an actual PC monitor with better specs for about the same cost as the parts required for the conversion.

    • Nova says:

      An arduino can’t handle the clock rates needed or have enough RAM to hold all the pixel information. A shield could help solve this issue and I wouldn’t be surprised if one already exists somewhere, pretty sure they already do for VGA etc.

  11. Andrew says:

    3:10 in video. “And a 16 megabyte RAM which is the same as 2 megabyte”

  12. if you could have a base board with an fpga that you could just choose in the source code and then program with the current LCD model, and have a medialink USB ( http://www.displaylink.com/ ) conection on the other side…

    It would be the best of two worlds…

  13. Scatterbrained says:

    I’m curious to see how fast his implementation will go. I did an LVDS design in a spartan 3s a while back and it was tricky to drive a laptop panel 1280×800 at reasonable frame rates with that part due to limitations in how fast you can serialize and shift the data and the internal structure of the DDR IO block.

  14. boz says:

    The open hardware gameduino ( or its olimex mod_vga clone) is widely available around US$25 and will drive standard large VGA displays and directly fits the Arduino, chipkit, Pinguino etc. It also has a real nice graphics and sound library.

  15. cantido says:

    >That’s because most of them use a
    >Low-Voltage Differential Signalling
    >protocol that just isn’t available
    >through the hardware used in hobby projects.

    Really? There a no hobby level FPGA kits that support LVDS? You guys can’t use Google?

  16. lgrunenberg says:

    A bit more technical information would have been nice. For example how the single port ram is converted to dual ports…

  17. jdarling says:

    Hope this doesn’t double post, my WP creds were jacked.

    If they added support for an on card sprite sheet with built in tilling and best fit algos. Then added minimal instructions similar to the HTML5 Canvas object for lines, setting, and blitting this would make driving large dimension LCD’s with an 8 or 16 bit MCU very easy. Most MCU’s could handle simply storing a table of tiles to display. Font mapping would be easy then too. Simply upload your font to the buffer and instead of having to know what pixles to set to print A you just tell it to draw the tile at index “A”.

    Add a few more minor things like screen shifting and you have a nice little video card that should fit most hobbiest needs.

    Then you have something that stands out from the $8+ ebay LVDS offerings.

  18. http://feedproxy.google.com/~r/gadgetfactory/zjHC/~3/TVs3WTUi1sU/

    Seems The papillo people jumped at the oportunity…

  19. Dear Hackaday readers.
    I’m Thomas Jespersen the designer and developer of this board.
    Thank you for all the comments which I have been reading thourougly to get a better understanding on the market and what you hackers requirements are.

    Let me first say that I had never heard about the MIPI-DSI, though a bit about DSI thru the Raspberry Pi. But now I have also noticed the DCS protocol together with larger screen displays that already include a built in framebuffer, such as the one used in the Nokia N900 phone.
    I might have to look at these displays some more later on.

    I know you can get VGA/DVI to LVDS converters board fairly cheap, but the main problem would still be around: driving/controlling the full resolution with a simple microcontroller.
    The Gameduino and Papillo boards have already been around for a while, and these are well designed boards with great features. Especially the Gameduino which can generate a VGA signal and be controlled with an Arduino is a perfect invention – but our main problem persist: we are not able to control all the pixels individually – we are still stuck to a tile map.

    Currently we are using a 66MHz Pixel Clock so for a display with a resolution of 1024×768 pixels this gives us a refresh rate of 60Hz – which is the current scenario.
    So without having done all the math for horizontal and vertical count I would guess that a refresh rate of at least 45Hz would be achivable with the same setup but a 1280×800 pixel display.
    FYI Scatterbrained we are using a 231MHz DCM generated clock frequency for the serialization.

    I understand that more and more of you would like to see a tile based implementation within the FPGA on our board, similar to what the Gameduino is capable of.
    We will for sure have this in mind and might spend some time developing a tile based feature where tilesets could be saved within the rest of the available SRAM.

    Another feature mentioned by Chris would be a Serial option, or at least an option that requires less pins.
    In this case the pixel data transfer would only become much slower, but if the tile based feature was implemented this would definitely become more usefull as it could save you a lot of pins.

    Once again thank you to all for your valuable feedback.

    Best Regards
    Thomas Jespersen

  20. starhawk says:

    Guys? Guys?

    Dunno if this has been pointed out yet (didn’t read ALL the comments) BUT…

    Output as VGA (640×480 or higher resolution) or QVGA (320×240 resolution) with any number of colors (or just B/W). Then use a converter board. There is a great company on eBay selling these under the name njytouch. The only downside is that you’re ordering from China, so it takes a month and you might pay customs fees (there’s a way around this but I really don’t recommend it, as it’s NOT a legit practice).

    These boards already exist for turning laptop screens into homebuilt monitors, and (once they are programmed by the seller [eg njytouch] for your specific panel) you’re good to go.

    As a note, not all panels will work here. Toshiba’s LCD division, for example, keeps their datasheets under wraps for a lot of laptop panels — so it’s rare that you can use one for this, because that’s how njytouch and similar companies get their info. But MOST panels SHOULD work just fine.

  21. Mikey says:

    Gentlemen, the robot uprising is upon us. I can tell from some of the syllables and also from having heard quite a few synthesized voices in my time.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 94,028 other followers