<< Chapter < Page | Chapter >> Page > |
The TI C6711 DSP uses a different instruction set than the 5400 DSP's you are familiar with in lab. The IDK environmentwas designed with high level programming in mind, so that programmers would be isolated from the intricacies of assemblyprogramming. Therefore, we strongly suggest that you do all your programming in C. Programs on the IDK typically consistof a main program that calls an image processing routine. The image processing routine may make several calls to specializedfunctions. These specialized functions consist of an outer wrapper and an inner component. The component performsprocessing on one line of an image. The wrapper oversees of the processing of the entire image, using the IDM to move databack and forth between internal memory and external memory. In this lab, you will modify a component to implement theflipping and inverting algorithm.
In addition, the version of Code Composer that the IDK uses is different from the one you have used previously. The IDK usesCode Composer Studio v2.1. It is similar to the other version, but the process of loading code is slightlydifferent.
The program flow for these image processing applications may
be a bit different from your previous experiences in Cprogramming. In most C programs, the main function is where
program execution starts and ends. In this real-timeapplication, the main function serves only to setup
initializations for the cache, the CSL, and the DMA channel.When it exits, the main task,
tskMainFunc()
, will
execute automatically, starting the DSP/BIOS. This is whereour image processing application begins.
The
tskMainFunc()
, in
main.c
, opens
the handles to the board for image capture(
VCAP_open()
) and to the display
(
VCAP_open()
) and calls the grayscale function.
Here, several data structures are instantiated that aredefined in the file
img_proc.h
. The IMAGE
structures will point to the data that is captured by the FPGAand the data that will be output to the display. The
SCRATCH_PAD structure points to our internal and externalmemory buffers used for temporary storage during processing.LPF_PARAMS is used to store filter coefficients for the low
pass filter.
The call to
img_proc()
takes us to the file
img_proc.c
. First, several variables are
declared and defined. The variable quadrant will denote onwhich quadrant of the screen we currently want output;
out_ptr
will point to the current output spot in
the output image; and pitch refers to the byte offset betweentwo lines. This function is the high level control for our
image-processing algorithm. See
algorithm flow .
The first function called is the
pre_scale_image
function in the file
pre_scale_image.c
. The
purpose of this function is to take the 640x480 image andscale it down to a quarter of its size by first downsampling
the input rows by two and then averaging every two pixelshorizontally. The internal and external memory spaces in the
scratch pad are used for this task. The vertical downsamplingwill occur when only every other line is read into the
internal memory from the input image. Within internal memory,we will operate on two lines of data (640 columns/line) at a
time, averaging every two pixels (horizontal neighbors) andproducing two lines of output (320 columns/line) that are
stored in the external memory.
Notification Switch
Would you like to follow the 'Ece 320 - spring 2003' conversation and receive update notifications?