16:9 WVGA 800 x 480 pixels 16-bit, 64k colors possible on P2?
T Chap
Posts: 4,223
I need to find a solution to upgrade out of the P1 to higher res LCD touch panel graphics. How possible is this spec on P2? Or is a video controller going to be needed?
JRetSapDoog posted this a few days back for 640x480.
640x480 @ 16 bpp (65536 colors)
640x480 @ 8 bpp (256 colors) with an additional frame buffer
640x480 @ 4 bpp (16 colors) with 4 separate "frames"
All of these consume 614400 bytes and leave a sizable 172032 bytes for code space.
http://www.newhavendisplay.com/nhd70800480efasxvctp-p-9500.html
JRetSapDoog posted this a few days back for 640x480.
640x480 @ 16 bpp (65536 colors)
640x480 @ 8 bpp (256 colors) with an additional frame buffer
640x480 @ 4 bpp (16 colors) with 4 separate "frames"
All of these consume 614400 bytes and leave a sizable 172032 bytes for code space.
http://www.newhavendisplay.com/nhd70800480efasxvctp-p-9500.html
Comments
Simple litmus check says 800*480*16/8 = 768000
So no, not quite directly, to that resolution.
If you halve the pixels to 400, then yes, it then fits, or if you do 400x240 on that display, it is also practical.
Do you need every one of 800x480 pixels ?
http://www.techtoys.com.hk/Components/SSD1963QL9/SSD1963QL9.htm
P1 has a lot of examples related to videogame development.
Some systems do skirt this, with a display list processor which can work ok with a large stable background.
P2 could probably do that quite well as it needs to run at BG until it hits a icon boundary, then flip to icon playback, then revert to BG.
Needs some nimble timing, but only has to store the unique Icons, and for that you can do the simple area ratio calc.
Gets complex quickly if you have many Icons, and overlapping Icons are non trivial, but for simple HMI this might do ?
Another approach I wondered about, for a Pixel-Image ram, was to push the Streamer and LUT operating points, to make best use of the P2 resource.
eg reading 3 pixels LUT index from ever 32b, and indexing a 1024 x 16 LUT, would give you 65k colours from a decent palette of 1024, and need
either
a) Simple 3 pixels per 32b, not packed, wastes 2b
2^19-(800*480*32/8/3) = 12288 bytes spare HUB
b) Packed 10b pixel index - frees up quite a bit of HUB RAM
2^19-(800*480*10/8) = 44288 bytes spare HUB
Problem is, neither has direct silicon support at the moment, I think there is only 1,2,4,8 LUT indexing
Adding 3 x 10 in 32b is probably very little logic, but has ~6% waste.
A packed 10b would need to start on a 32b boundary, and keep a 10b cache it adds 2b to, and every 5 reads, it can output that, and pause 1 read.
More logic, but not a lot more - it buys you 32000 bytes of HUB ( a whole P1 !)
16 pixels (10b palette) pack into every 5 32b locations, & most displays are some multiple of 16
Note that P2 is still some ways of, so you might be better to look at the FTDI EVE series, which have just bumped to 800x480, and squeeze a bit more life out of your P1 design.
Easy enough to flip to a P2 if you need to later...
It has 1 MB of video RAM
If you want something that can store several screens, you might consider the MD070SD LCD module that uses a CPLD + SDRAM, if it's still available, that is. I've not used it, but it seems like it would be a dream to use. However, if memory serves correctly, it needs 16 data lines, whereas the SSD1963 can get by with 8 (at a slower image transfer rate, of course). But if you've got the pins, you could flip through your stored screens instantly (it has 8MB of memory, so I guess you could have at least 8 WVGA, full-color screens). Be careful when searching on EBAY for this, as some of the modules advertised may be SSD1963-based rather than the CPLD + SDRAM design. Here's one link for the CPLD-based module that shows some pictures:
http://www.ebay.com/itm/7-inch-Touch-TFT-LCD-Module-MCU-Bus-Super-Anti-jamming-MD070SD-/271631068277?hash=item3f3e792c75:g:NngAAOSwU9xUNoWY
Again, I haven't tried this, but I like its advertised capability and ease-of-use. Actually, I came upon this at least two years ago, and I'm not sure about its current availability. Another place to search is Taobao.
PS: I believe this is (or was) available with either 5" and 7" LCD screens.
support displays directly from SDRAM. At 160MHz clkfreq, I can easily imagine using line buffers in HUB ram to support display output. Without an intermediary CPLD, this will consume a lot of pins, but we have a lot pins:)
We won't know what the limits are until we have SDRAM integrated into the current design.
And we don't know whether Parallax's first P2 boards will deliver SDRAM.
Maybe I'd add one to the USB board I'm thinking about for A9...
http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_VM810C.pdf
Connect with SPI, then you'd have to use the I2C cap touch direct to your P1/2 as it does not currently have an FPC connector for that. I like this concept as I can be using the 7" displays now on products without waiting. Theoretically. They recommended this of the 63. I will get one and see what is involved. What I yet to understand is how to quickly load in a new fully scree or specific graphics. They said if I am using a color BG, then you are refreshing the full screen at 60FPS, and will need to reload the full frame buffer if you want to change any part of it. So even if making a change to one icon, I understand that you have to load in the full screen data to the controller. TBD How fast can P1/2 load out 800x480 x 18 bits on SPI? Where is P1/2 getting the data SD/SDRAM?
On the other hand, you can also buy displays with SSD1963 chips onboard and I've posted code for P1 to make them work. Downside is that full screen updates aren't particularly fast.
Eve would give you the advantage of faster screen updates.
http://www.vlsi.fi/en/products/vs23s010.html
I'm not sure that is true ?
It is often easiest to refresh if you are doing many changes, but provided you keep the bounding box the same, something like a pulse-on-touch icon should need just that area changed ?
It's pretty clever actually, because it eliminates the need for a screen buffer.
At least, that's the way I understood it.
I think that is correct, ie rather than a pixel-ceiling the EVE devices have a Display-List limit.
Docs say : "The display list length must be less than 2048 instructions"