ValMor

LCD protocol sniffer and analyser

6 posts in this topic

Hi.

First of all, great compliments for all of your work; the Papilio seems a very powerful signal processing/interfacing hardware with a good software support (libraries, etc).

My newby question is just to analyse if the Papilio could be used for a particular application we are going to implement.

We need an hardware to sniff and decode signals going to an LCD, in order to get into a PC the images being represented on the LCD. We will use two types of LCDs; the first one has a standard 6800/8080 bus (8bits + handshaking), the second has a 3x6bit bus (RGB, each 6 bits) + horizontal, vertical and pixel clocks. So we can get all signals within a 32 bit input in both cases.

We cannot understand if we could do the application inside the FPGA of the Papilio, having then enough bandwidth to send out the results (the images) through the USB channel to the host PC.

The worst case is getting images from the bus of a 320x240 colour LCD, so each image is done of 320x240x3 = 230kbytes. We could not store it into the local memory, do you think it could be possible to put out the data on the fly through the USB port, let's say at about 10 images/s?

What IDE should we use to develop into the FPGA the firmware for such task, is it Papilo Designlab IDE?

Many thanks and kind regards,

VALERIO

Share this post


Link to post
Share on other sites

Posted (edited)

disclaimer - i only play games with the fpga.. i dont do any vhdl/verilog... most of my hardware work i do with microchip PIC or arduino..

 

regardless, the amount of data you are talking about you would probably need to write the data to an SD card and read it out again later for post processing.

assuming you could run the fpga fast enough to capture the data.

the papilio usb interface is an FTDI chip so you would need to output that serially. (which wont work.. its too slow for 10 images/sec.. even @ max speed)

that is to say, 10 images/second is a lot of data .. you wont be able to transfer that over serial port of the papilio.

 

you could probably use the esp wifi wing that ?alvie? designed and send out the data that way

 

if it was me, personally i would try using a vhdl/verilog implementation of a 74hc165 shift register with D0-D7 tapping the 8 bit bus and whatever pin the lcd uses as input from the mcu  to say data is there, display it (RS i assume)

either straight or inverted logic, to the clock pin on the shift register so you know when the bits are set and you can read them.  

 

you will need to use resistors and pull ups since iirc the papilio is LVTTL

write data to SD card or sent out via wifi, and process later.

pretty sure Zpuino can do it but not sure if it can do it fast enough.   @alvieboy would be the one to ask about zpuino and esp8266

 

i dont know enough about the lcd protocol used to decode the data but i would guess it wouldnt be

that hard to find online.

 

if i may ask, what are you trying to capture data from ?

 

@ anyone - feel free to correct me if anything seems off.  i am honestly not sure if the fpga can read the bits fast enough or if the SD interface is fast enough to write the bits/bytes to the card.

 

Edited by Felix
brain farted

Share this post


Link to post
Share on other sites

Hello,

The USB channel on the Papilio is a max of 3Mb/s so it will probably not be fast enough for what you are wanting to do.

Alvie has created a USB wing that is a PHY and a USB core for the FPGA but it is just USB 1.1 I think so probably not fast enough. If we can get a USB 2.0 USB PHY wing then that would open up a lot more possibilities for projects like this one...

Jack.

Share this post


Link to post
Share on other sites

Hi Felix and Jack.

Many-many thanks for your replies, you gave a lot of info.

Yes, I had the idea to use an ESP8266 but in the past I've used some just with serial interface (ESP-01) and in such case you get a very low throughoutput. I know the ESP8266 could be interfaced directly through it's SPI, but it seems to be poorly documented. Furthermore, such developement could stole too much time from the whole project...

About saving to SD: i need to process the data on the fly: my system will sniff the data on the LCD bus and send it to a PC, where the images directed to the LCD are checked to control if the circuit/uP driving the LCD is doing a good job... The test will run for hours and may also change if something is not going ok, so I cannot get all the data later...

Do you think getting out data with an ethernet module could be a feasible solution? I'm thinking at the http://store.gadgetfactory.net/ethernet-module/ based on the Microchip ENC28J60, or some similar module... Would it have enough bandwith to get out 230kbytes x 10fps (it's about 23 Mbit/s)? I'm reading that the ENC28J60 could get data at 20Mhz SPI clock, so it's surely not fast enough to receive a 23Mbit/s stream, but it could perhaps work with half such framerate, let's say at 5 frames per second. What do you think?

I dont' want to abuse of your time, so just one more questions and I'll free you...; in the case one should find a praticable interface to get out the data (ethernet or else), what IDE should we use to develop into the FPGA the firmware for such task, is it Papilo Designlab IDE?

Many thanks again, and kind regards,

VALERIO

Share this post


Link to post
Share on other sites

It may be possible with an USB3300 transceiver. I have a couple, but unfortunately had no time to put those to work.

I may need to in a recent future, I'll let you know.

 

Alvie

Share this post


Link to post
Share on other sites

This thread is a bit stale, but I'm pretty sure I've seen some MPEG encoder cores that can be implemented in an FPGA so while it's beyond my current abilities I think what you want to do should be easily manageable with the hardware. Capture the image in RAM, compress it and then pump it out over USB to the host PC. Another option is to use an ethernet core and pump the data out over IP. 320x240 is quite low bandwidth by modern standards, especially if you are only transmitting what changes from frame to frame.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now