<< 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.

Code overview

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 .

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.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Ece 320 - spring 2003. OpenStax CNX. Jan 22, 2004 Download for free at http://cnx.org/content/col10096/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ece 320 - spring 2003' conversation and receive update notifications?

Ask