ben-blinkenlights/ubb-vga
Werner Almesberger 9942f62cb8 ubb-vga/regs4740.h: add some more register locations 2012-07-22 02:31:38 -03:00
..
web ubb-vga/web/index.html: correction - it's the response we fake, not the "busy" 2011-05-07 17:48:30 -03:00
Makefile ubb-vga/Makefile (vga-ben-back.png): also generate the PCB back side image 2011-05-04 14:13:04 -03:00
README ubb-vga/README: first 640x480 success with the 206NW; housekeeping 2011-05-03 12:09:11 -03:00
README.old ubb-vga/README: moved old content away and added new compatibility test results 2011-05-02 20:06:46 -03:00
ccube.c ubb-vga2: replaced threshold-based color mapping with color cube model 2011-04-28 01:18:03 -03:00
grabfb.c ubb-vga2: non-contiguous allocation of frame buffer memory 2011-04-29 13:04:02 -03:00
mapping.fig renamed ubb-vga/res.fig to mapping.fig 2011-04-24 23:56:29 -03:00
physmem.c physmem.c: improved correctness and efficiency of alignment 2011-05-02 04:43:18 -03:00
ppm.c ubb-vga2: added support for showing a PPM image 2011-04-28 00:38:13 -03:00
ppm.h ubb-vga2: added support for showing a PPM image 2011-04-28 00:38:13 -03:00
ppmimg.c ubb-vga2: non-contiguous allocation of frame buffer memory 2011-04-29 13:04:02 -03:00
prod-assembly-draft.fig ubb-vga: added draft of "productized" assembly 2011-05-04 13:45:19 -03:00
regs4740.h ubb-vga/regs4740.h: add some more register locations 2012-07-22 02:31:38 -03:00
tstimg.c tstimg.c (tstimg): adjust size and position of parameters according to yres 2011-05-01 23:19:57 -03:00
ubb-vga-old.c renamed ubb-vga.c to ubb-vga-old.c, ubb-vga2.c to ubb-vga.c; updated Makefile 2011-04-29 14:03:07 -03:00
ubb-vga.c ubb-vga.c (usage): correct synopsis (-r is now called -m) 2011-07-04 15:09:22 -03:00
ubb-vga.h ubb-vga: test image now shows detailed horizontal and vertical timing 2011-05-01 21:50:20 -03:00
ubb-vga.pro ubb-vga.pro: commit pcbnew preferences (from local layout experiments) 2011-04-28 02:10:58 -03:00
ubb-vga.sch ubb-vga.sch: fixed typo in comment 2011-04-28 16:45:29 -03:00
vga-ben.brd ubb-vga: added draft for "productized" design 2011-05-04 12:46:34 -03:00
vga-ben.cmp ubb-vga: added draft for "productized" design 2011-05-04 12:46:34 -03:00
vga-ben.pro ubb-vga: added draft for "productized" design 2011-05-04 12:46:34 -03:00
vga-ben.sch ubb-vga: added draft for "productized" design 2011-05-04 12:46:34 -03:00

README

UBB-VGA - VGA-like output via UBB
=================================

Sources
-------

Timing and the idea for the voltage divider is from:
http://faculty.lasierra.edu/~ehwang/public/mypublications/VGA Monitor Controller.pdf

More timing parameters:
http://tinyvga.com/vga-timing/640x480@60Hz

For the signal assignment, see ubb-vga.sch
Also available as a PDF:
http://projects.qi-hardware.com/schhist/ubb-vga/pdf_ubb-vga.pdf
http://en.wikipedia.org/wiki/VGA_connector


Compatibility
-------------

Tested with the timing of commit 36861539431445b80e64f03218f352752338de52
Timings will change in the future and may get better or worse. The
purpose of this compatibility chart is to indicate what kind of results
one can expect with different types of monitors.


Display			Monitor size	Age (estimated)
-----------------------	---------------	---------------
Xenon XEN-1510T		15", 1024x768	~9 years
Samsung LN32R71B (TV)	32", 1360x768	~5 years
Samsung 206NW		20", 1680x1050	~4 years
LG W2243C		22", 1920x1080	~1 year
LG W2243L		22", 1920x1080	a few months

Mode		Monitor		Image   Hor. noise	Cleanliness
				  Stable Pixel FIFO
---------------	---------------	--------------------------------------------
640x480		XEN-1510T	y y	1     20, 25%	very distorted
		LN32R71B	y y	1     20, 25%	very distorted
		206NW		y y	2-3   20, 20%	very distorted
		W2243C		y y	2-3   20, 25%	very distorted
		W2243L		y y	2-3   20, 20%	very distorted

640x480/58	XEN-1510T	y y	1     large	very distorted
		LN32R71B	y n	1     large	very distorted
		206NW		y y	2-3   large	distorted
		W2243C		y y	2-4   large	very distorted
		W2243L		y y	2-3   large	very distorted

640x480/61	XEN-1510T	y y	1     -/10, 20%	very good/distorted (5)
		206NW		y y	2-4   -		jittery, sometim. waves

640x480/70	XEN-1510T	y (2)	1     10, 25%	distorted, flickery
		LN32R71B	n -	"not supported mode"
		206NW		y (2)	3-8   -		very jittery
		W2243C		n -	"out of range"
		W2243L		n -	"out of range"

800x600/54	XEN-1510T	n -
		LN32R71B	n -	"not supported mode"
		206NW		y n	(only flashes)
		W2243C		n -	(screen stays dark)
		W2243L		n -	(screen stays dark)

800x600/56	XEN-1510T	y (3)	1-2   -		good
		LN32R71B	n -	"not supported mode"
		206NW		y (1)	1-3   -		jittery
		W2243C		y y	3-4   20, 50%	unusable
		W2243L		y y	3-4   -		very jittery with waves

800x600/72	XEN-1510T	y y	1-3   -		good, slight flicker
		LN32R71B	y (4)	1     -		image very good (4)
		206NW		y y	2-6   -		jittery with bounces
		W2243C		n -	(DMA lockup)
		W2243L		(not tried)

1024x768	XEN-1510T	y y	1-2		good
		LN32R71B	n -	"not supported mode"
		206NW		(not tried)
		W2243C		n -	"out of range"
		W2243L		n -	"out of range"

1024x768/53	XEN-1510T	n -	(screen stays dark)
		LN32R71B	n -	"not supported mode"
		206NW		n -	(screen stays dark)
		W2243C		n -	(screen stays dark)
		W2243L		n -	(screen stays dark)

1024x768/50	XEN-1510T	y y	1-2   -		good
		LN32R71B	n -	"not supported mode"
		206NW		y y	2-4   -		jittery
		W2243C		y y	3-5   -		moves a lot
		W2243L		y y	3-5   -		moves a lot

Results:

  Image 	does it show an image, yes/no ?
  Stable	is the image shown all the time or does the monitor
		"catch" it only sometimes ?
  Hor. noise	horizontal jitter/vibration; distance in pixels
    Pixel	small pixel deviation, looking like analog noise
    FIFO	shift of a line or part of it by a large number of pixels

For qualitative assessment, "jittery" means that the image is visible
unstable but doesn't look too bad from a distance. "Bounces"/"waves"
are deviations that appear in groups. "distorted" means that artefacts
are visible. "good" means that the image has only small pixel jitter.

Merely "jittery", "bounces", or "distorted" mean that the test image
and the parameters it shows can be recognized. More severe problems
mean that the test image looks clearly troubled. "Unusable" means
that the screen content cannot be recognized.

(1) Auto-sync places the image way too high. Can be corrected manually.
(2) Image it stable but monitor shows a complaint (occasionally)
(3) Auto-sync places the image too far to the left. Can be corrected
    manually.
(4) Places the image too far to the left. Cannot be sufficiently
    corrected.
(5) about 70% of all session have a clean stable image. The remaining
    30% suffer significant FIFO noise.


To do
-----

- use timer half interrupt and WAIT to synchronize (less bus traffic and
  hopefully better granularity)
- recover from DMA lockup
- use color cube map (5x5x5 bits)
- read/write raw frame buffer
- consider prefetching first word of each line, to make DRAM controller
  open the row and reduce DMA startup latency
- add option to not disable the LCD (works with some modes if reducing
  the LCD controller's burst size)
- find out why 640x480 has so much FIFO noise
- fix modes 800x600/54 and 800x600/72, broken by the timer change