User`s manual

from 100 to get the correct value. The playback of the percentage was often
incorrect for some reason (never identified). Initially, we were keen on fixing
the issue from the audio end, since pixels lost was a known correct module.
However, we had no luck fixing it from the audio end, so instead we renamed
pixels lost to pixels kept and removed the subtraction from 100. This somehow
fixed the issue.
Much easier was the integration with the accelerometer. This went flaw-
lessly after we agreed upon the clock frequencies used by the accelerometer and
the system. We made sure that the clocks used by the accelerometer and the
accel lut (to which the accelerometer readings are sent) were integer multiples
of one another to prevent any setup or hold time violations when clocks were
out of phase.
Integration of the transformation logic with the memory interface was also
extremely smooth, apart from the subtle bug in address computation uncovered
by our TA Jos´e.
One of the most tedious aspects was the collection of data values for the look-
up table. It took around 2 hours of fiddling with the manual correction to get
12 readings for doing the interpolation. Lacking the appropriate measurement
equipment, it is difficult to verify that the vertical edges of the checkerboard are
exactly parallel to the vertical edges of the screen. Furthermore, we also needed
to ensure that the 4:3 aspect ratio was not distorted.
8 Future Work
Although our projector tilt compensation system met most of our initial goals,
there are a wide variety of extensions and modifications to the project that we
would have liked to implement.
On the image side, we would like to take some steps to improve the quality
of the projected image. As noted earlier, one of our key design decisions was
the use of reduced resolution (320 × 240) and reduced color depth (12 bit as
opposed to 24 bit). This can be achieved with either a labkit with more dual-
ported memory, or our existing labkit with a sophisticated ZBT based memory
design (with an arbiter). Another improvement that can be made to the images
is the use of some sort of anti-aliasing filter. For instance, when we compute
the coordinates in the pixel
map module, we only look at the integer part of
the division (corresponding to a single pixel index). By looking at the fractional
part, we could interpolate the color values at neighboring pixels and use that to
reduce the “jagged edges” associated with aliasing in images.
Another significant unknown is how well the accelerometer approach works
when the projector is not kept at a fixed distance from the screen. We have
not tested whether this would affect the quality of the automatic correction. If
this does affect quality, we are confident that by adding an additional distance
sensor, we could simply incorporate the distance values into the lookup table
and make the automatic correction usable again. Of course, the lookup table
could become very large if we do this. There are two avenues around this:
27