cmucam3-hardware (#1) - Eliminate Video Frame Buffer Option (#14) - Message List

Eliminate Video Frame Buffer Option

The video FIFO chip draws 52 of the 130 mA for the CMUCAM3 (http://www.cmucam.org/wiki/Hardware). Here's a suggestion for future redesign that could eliminate this chip.

ARM chips have a very efficient high-priority interrupt (FIQ) capability with separate set of FIQ CPU registers so that the overhead of entering interrupt handler is only a few cycles. There's a good example of using the FIQ capability to implement a "software DMA" on the Atmel ARM web site that should apply equally well to the Philips ARM chip in the CMUCAM3. Basically, it works as follow:

1. Use the "video data ready" I/O pin to trigger a FIQ interrupt.

2. FIQ interrupt handler reads the color data for a pixel -- i.e read 8-bit parallel port data -- and stores it in RAM frame buffer in the Phillips ARM chip and increments the "pointer" index.

Total interrupt handler time is maybe six to 10 instrucitons. CMUCAM3 is executing 60 instructions per microsecond? At lower resolution (aout 120 x 160) and lower frame rate (5 fps) the interrupt handler consumes around 10 - 15% of ARM CPU cycles. The value of this features is the reduced power drain and lower cost without the video FIFO chip.

  • Message #29

    It is always great to hear design ideas and get some feedback on the current system. We actually do have aspirations to eventually remove the FIFO. In the current design, the FIFO makes programming a little easier (our primary focus at first). It frees processing from camera based timing dependencies and lets us operating on higher resolution images. Also, the camera image quality is not as clean when the sensor is operating at lower frame rates. The other problem we have is that the lpc2106 has particularly slow GPIO. Reading the 8bit pixel value has to get passed over the internal AMBA bus to the cpu core which takes quite a few cycles (14 I think). Some of the newer NXP processors in the same line now have “fast I/O” which bypasses the on-chip peripheral bus. We are hoping to eventually make a CMUcam with one of the newer chips and no FIFO. It would be a slimmed down version of the CMUcam3. Most of our current code would basically work on that with minor modification to the HAL.

    -Anthony