ECE4703 B Term Laboratory Assignment 1

Similar documents
ECE4703 Mid-term Exam B-16. Name: Box #:

ECE4703 B Term Laboratory Assignment 2 Floating Point Filters Using the TMS320C6713 DSK Project Code and Report Due at 3 pm 9-Nov-2017

Digital Signal Processing and Applications with the TMS320C6713 DSK

Workshop Goals. Page 2 of 68

Lab 1 Introduction to TI s TMS320C6713 DSK Digital Signal Processing Board

ECE4703 Real-Time DSP Orientation Lab

Digital Signal Processing Laboratory 7: IIR Notch Filters Using the TMS320C6711

ECE 5655/4655 Laboratory Problems

Lab 6 : Introduction to Simulink, Link for CCS & Real-Time Workshop

Lab 0 Introduction to the MSP430F5529 Launchpad-based Lab Board and Code Composer Studio

ECE4703 Laboratory Assignment 5

DSP Laboratory (EELE 4110) Lab#6 Introduction to Texas Instruments DSK TMS320C6711

Lab 4- Introduction to C-based Embedded Design Using Code Composer Studio, and the TI 6713 DSK

ECE2049: Embedded Systems in Engineering Design Lab Exercise #3 C Term Making a Time and Temperature Display

Create and Debug a CCSv5.5 Project for DSK6713- or DUETT-Board1

ECGR 4101/5101, Fall 2016: Lab 1 First Embedded Systems Project Learning Objectives:

D. Richard Brown III Associate Professor Worcester Polytechnic Institute Electrical and Computer Engineering Department

ECE 487 LAB 1 ÇANKAYA UNIVERSITY Overview of DSP Board

Classification of Semiconductor LSI

Dual Tone Multi-Frequency (DTMF) Generation with TI-DSP TMS320C6713 Processor

ECE2049 Embedded Computing in Engineering Design. Lab #0 Introduction to the MSP430F5529 Launchpad-based Lab Board and Code Composer Studio

D. Richard Brown III Professor Worcester Polytechnic Institute Electrical and Computer Engineering Department

Cypress FM4 Tools Set-up with Keil 5.x

Objectives. Part 1: forward kinematics. Physical Dimension

Lab P-1: Introduction to MATLAB. 3. Learn a little about advanced programming techniques for MATLAB, i.e., vectorization.

Lab 1 Implementing a Simon Says Game

ECE 3793 Matlab Project 1

Using the DSK In CalPoly EE Courses - Dr Fred DePiero

Digital Signal Processor 2010/1/4

Experiment 6 Finite Impulse Response Digital Filter (FIR).

SignalMaster Manual Version PN: M072005

Mechatronics Laboratory Assignment 4 Parallel Communication Glue Logic, Hardware Interrupts, Analog to Digital Conversions, and Board Fab

2008/12/23. System Arch 2008 (Fire Tom Wada) 1

DSP Development Environment: Introductory Exercise for TI TMS320C55x

Real-Time DSP for Educators

Chapter 7. Hardware Implementation Tools

Lab 1 Implementing a Simon Says Game

ECE 2036 Lab 4 Setup and Test mbed I/O Hardware Check-Off Deadline: Thursday, March 17, Name:

University of Saskatchewan 5-1 EE 392 Electrical Engineering Laboratory III

EE 314 Spring 2003 Microprocessor Systems. Parallel Printer Port Use and Digital-to-Analog Conversion

Embedded Target for TI C6000 DSP 2.0 Release Notes

Mechatronics Laboratory Assignment #1 Programming a Digital Signal Processor and the TI OMAPL138 DSP/ARM

Introducing Audio Signal Processing & Audio Coding. Dr Michael Mason Snr Staff Eng., Team Lead (Applied Research) Dolby Australia Pty Ltd

Grade 8 FSA Mathematics Practice Test Guide

Copyright 2015 by Stephen A. Zajac & Gregory M. Wierzba. All rights reserved..spring 2015.

SR3_Analog_32. User s Manual

Setup the environment for first time use

APPENDIX A. CODE COMPOSER STUDIO (CCS) v5: A BRIEF TUTORIAL FOR THE DSK6713

PHY 351/651 LABORATORY 1 Introduction to LabVIEW

LAB 1 Machine Perception of Music Computer Science , Winter Quarter 2006

Lab 2: Introduction to LabVIEW 8.5

Homework Assignment 9 LabVIEW tutorial

By the end of Class. Outline. Homework 5. C8051F020 Block Diagram (pg 18) Pseudo-code for Lab 1-2 due as part of prelab

Further Studies of a FFT-Based Auditory Spectrum with Application in Audio Classification

Small rectangles (and sometimes squares like this

Conclusions. Introduction. Objectives. Module Topics

ESE 150 Lab 08: Machine Level Language

Exercise 4: Developing signal generators in real time using the C5510 DSK

Implementation Techniques for DSP

Tips from the experts: How to waste a lot of time on this assignment

1-- Pre-Lab The Pre-Lab this first week is short and straightforward. Make sure that you read through the information below prior to coming to lab.

George Mason University Signals and Systems I Spring 2016

Laboratory 2: Programming Basics and Variables. Lecture notes: 1. A quick review of hello_comment.c 2. Some useful information

Outline for Today. Lab Equipment & Procedures. Teaching Assistants. Announcements

Exercise 4-1. DSP Peripherals EXERCISE OBJECTIVES

FSA Algebra 1 EOC Practice Test Guide

New Concepts. Lab 7 Using Arrays, an Introduction

ECSE-323 Digital System Design. Lab #1 Using the Altera Quartus II Software Fall 2008

GE420 Laboratory Assignment 3 More SYS/BIOS

CPSC 150 Laboratory Manual. Lab 1 Introduction to Program Creation

Final Exam. Date: May 14, Printed Name:

Image Manipulation in MATLAB Due Monday, July 17 at 5:00 PM

Lab 2: Basic Assembly Programming and Debugging using AVR Studio. Due: December 13, 2011

ECE 353 Lab 4. General MIDI Explorer. Professor Daniel Holcomb Fall 2015

Chris Riesbeck, Fall Introduction to Computer Systems

Floating-Point Unit. Introduction. Agenda

475 Electronics for physicists Introduction to FPGA programming

MTRX3700 Mechatronics

ECE 5655/4655 Laboratory Problems

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019

3 TUTORIAL. In This Chapter. Figure 1-0. Table 1-0. Listing 1-0.

FSA Geometry EOC Practice Test Guide

CPE 323: Laboratory Assignment #1 Getting Started with the MSP430 IAR Embedded Workbench

Welcome to Lab! You do not need to keep the same partner from last lab. We will come around checking your prelabs after we introduce the lab

Lab 2: Performance Measurement Date: 12 June 2009 Number of Problems: 4

The NetBeans IDE is a big file --- a minimum of around 30 MB. After you have downloaded the file, simply execute the file to install the software.

Code::Blocks Student Manual

RVDS 4.0 Introductory Tutorial

(Refer Slide Time: 1:40)

Platinum Studio ADC Users Manual

EE 341 Spring 2013 Lab 4: Properties of Discrete-Time Fourier Transform (DTFT)

Familiarity with data types, data structures, as well as standard program design, development, and debugging techniques.

Lab 4: Interrupts and Realtime

Here is the data collected.

Audio Controller i. Audio Controller

A Sequence of courses using 8, 16, and 32 bit Microcontroller/DSP Boards

Introducing Audio Signal Processing & Audio Coding. Dr Michael Mason Senior Manager, CE Technology Dolby Australia Pty Ltd

Code Composer Studio Operation Manual

Timer Interrupt Programming

TUTORIAL Auto Code Generation for F2803X Target

Transcription:

ECE4703 B Term 2017 -- Laboratory Assignment 1 Introduction to the TMS320C6713 DSK and Code Composer Studio The goals of this laboratory assignment are: Project Code and Report Due at 3 pm 2-Nov-2017 to familiarize you with the TMS320C6713 DSK hardware platform, to familiarize you with the process of creating, building, and testing some simple projects in the Code Composer Studio (CCS) integrated development environment (IDE), to familiarize you with some of the debugging, profiling, and visualization tools available within the CCS IDE, and to develop a code framework that you can re-use for the remaining laboratory assignments in ECE4703. Preliminaries This lab assignment is intended to familiarize you with most of the tools used to develop interesting real-time DSP systems in ECE4703. A portion of this assignment is, as all lab assignments in this course are, self-study and is necessary to give you a better understanding of the capabilities of the hardware used in ECE4703. The remainder of this assignment is a hands-on exploration of the lab tools where you will develop three projects that will run on the TMS320C6713, interface with the basic I/O on the DSK, and perform some simple signal processing functions. Self-Study: Familiarization with TMS320C6713 DSK First, read through this entire assignment. Then begin familiarizing yourself with the TMS320C6713 DSK technical reference (available as a PDF file on the course website under the Lab 1 assignment and on the Useful Links page). You do not need to memorize everything in this document but you should become familiar with the key features and basic operation of the DSK. In Chapter 2, focus on the AIC23 codec (Section 2.2) and the LEDs and DIP switches (Section 2.5). Also be sure to check out the board layout and connector information in Ch 3. You should know the function of the connectors on the DSK and where the main components are located. Programming Assignments: Familiarization with CCS The following three programming assignments will help you develop familiarity with Code Composer Studio including the development process and the debugging tools. Program 1 is the simplest possible program that you can run on the DSK and gives a gentle introduction to the development process. Program 2 will provide a framework for almost all of the signal processing algorithms you will develop later in the course. Program 3 is your first real-time DSP program, and builds on the framework developed in Program 2. NOTE: The tutorials that you will follow were originally developed by Prof. Brown using Windows 7 and Code Composer Studio 5. This past summer the ECE lab computers were brought to Windows 10 and Code Composer Studio 7.2 (CCS 7). As a result there are a few changes from tutorials that are highlighted in this document.

Program 1: Hello World In this part of the assignment, you will compile and run the simplest possible program for the TMS320C6713 DSK. The goal is to simply generate the output Hello World on the CCS console. A Hello World template program is included with CCS 7. If this is the first time CCS has been run on your computer, you may need to configure CCS to work with the DSK first. Please see this tutorial to set up a target configuration and connect to the DSK (the target configuration only needs to be set up once). There are no changes to this tutorial for CCS 7. http://spinlab.wpi.edu/courses/ece4703/configureccsv5.html. To create a new project from the helloworld template, follow the steps of the tutorial below. However, there are 3 changes for CCS7 that are not shown in the tutorial. First, before starting the helloworld tutorial, you need to check that the proper compiler for the C6713 is available. Look under Windows/Preferences/CodeComposerStudio/Build/Compiler. The GUI should look like this with the path to C:\WPIAPPS\c6000_7.4.23\ checked in the pane above and two compilers v8.1.3 and v7.4.23 listed under C6000 in the lower pane. Select the v7.4.23 compiler and click apply. If the compiler is not visible, add the path to C:\WPIAPPS\c6000_7.4.23\ in the upper pane then you should see the compiler in the lower pane. If not then ask the course staff. Whatever you do, DO NOT ATTEMPT TO DOWNLOAD/INSTALL ANY COMPILERS FROM INSIDE CCS-7!!!

You are now ready to start the helloworld demo. After selecting File New New Project, fill out the New CCS Project GUI as shown below rather than as shown in the tutorial. http://spinlab.wpi.edu/courses/ece4703/helloworld.html. NOTICE THE COMPILER VERSION is TI v7.4!! Our board does not work with CCS7's default C6000 compiler version TI v8.1. If the TI v7.4 compiler does not appear in the drop-down menu STOP! Do the steps above. If that doesn't work, tell the course staff and move to another machine. You will also need to open the Advanced Options and set the Linker Command File. Click the down arrow and select C6713.cmd from the menu. If you decide to install CCS on your own computer (it's free) make sure you install CCS 7.2 and then install the v7.4.23 C6000 Code Generation Tools. When you build the helloworld project (with the proper C6713.cmd specified), it should compile with no errors or warnings. You might get some warnings about stack and heap sizes but the configuration tutorial explains how to fix this. This program is the simplest possible program to get running on the

DSK and ensures that you can successfully build, load, and run a program on the DSK without errors. This is the same process that we will be using for more complicated signal processing programs, so please make sure you play around with this program a bit to see what else you can do before proceeding. Try the various debug tools to step through the code. What's the different between Step, Step Into and Step Over buttons?. If you want to run the program again, what should you do? Try exiting CCS and then coming back in. How can you run the helloworld program now? Try printing Hello World 20 times in a loop. Try setting a breakpoint. Try profiling the execution time of the printf statement. Note that you may find the printf function (which, by the way, only works within the console!) handy in the future for debugging your code. Demonstrate your functional helloworld program to the course staff for sign-off. Program 2: Stereo Loop In this part of the assignment, you will create a new project to run your first signal processing program on the DSK. This project will interface with the outside world through the AIC23 stereo codec. The AIC23 stereo codec is used for analog to digital as well as digital to analog conversion on the DSK. It is optimized for audio applications and is highly configurable. This program will simply read in samples from the left and right channels of the line input through the AIC23 and immediately output these samples (unchanged) through the AIC23 to the left and right channels of the line output. To create a new stereoloop project, follow the steps of the tutorial below. However, in the New CCS Project window you will again need to set the Target to Unclassified Devices then choose the DSK6713. Also, do not set the default C6713.cmd under Advanced Options. You will be using a custom linker command file and should follow the tutorial in specifying it. http://spinlab.wpi.edu/courses/ece4703/stereoloop.html BE SURE TO DOWN LOAD ALL THREE FILES, stereoloop.c, vectors.asm and C6713.cmd. It is important to used the.cmd file downloaded!! You will need the Chip Support and Board Support libraries for this project. See this link for instructions for finding and/or installing these libraries. NOTE: You WILL have to download the zip file versions of CSL and BSL to your R:/ drive as described in the tutorial (follow links). Here's some explanation of how this program works. We will discuss this in more detail in lecture, but here are the basics: This code in main() calls functions in the DSK Board Support Library (BSL) to initialize the DSK, initialize the AIC23 codec, set it up for stereo operation, and sets the sampling frequency. DSK6713_init(); // Initialize the board support library, must be called first hcodec = DSK6713_AIC23_openCodec(0, &config); // open codec & get its handle // Configure buffered serial ports for 32 bit operation // This allows transfer of both right and left channels in one read/write MCBSP_FSETS(SPCR1, RINTM, FRM); MCBSP_FSETS(SPCR1, XINTM, FRM); MCBSP_FSETS(RCR1, RWDLEN1, 32BIT); MCBSP_FSETS(XCR1, XWDLEN1, 32BIT);

// set codec sampling frequency to 44.1KHz DSK6713_AIC23_setFreq(hCodec, DSK6713_AIC23_FREQ_44KHZ); The code uses an interrupt for dealing with the AIC23 codec. This is typically the most efficient way to interface to events that occur infrequently with respect to the clock frequency of the DSP. This code sets up the interrupt interface: // interrupt setup IRQ_globalDisable(); // Globally disables interrupts IRQ_nmiEnable(); // Enables the NMI interrupt IRQ_map(IRQ_EVT_RINT1,15); // Maps an event to a physical interrupt IRQ_enable(IRQ_EVT_RINT1); // Enables the event IRQ_globalEnable(); // Globally enables interrupts Note that this code hooks the interrupt to the interrupt service routine (ISR) called serialportrcvisr. This is done in main() prior to the while loop and also in the file vectors.asm. The initialization code in main() maps physical interrupt event (IRQ_EVT_RINT1) to an interrupt number (INT15) and enables interrupts. The file vectors.asm has some assembly language code that causes execution to branch to serialportrcvisr whenever INT15 is detected. Note the while loop at the end of main(). The DSP is sitting in an infinite loop and basically doing nothing unless it gets an INT15 signal. In the ISR, the codec is accessed through the MCBSP_read and MCBSP_write functions. interrupt void serialportrcvisr() { // a nifty bit of C that allows the same 32-bits to be refered // to 2 different ways, as a uint32 or as 2 signed 16 bit ints union {Uint32 combo; short channel[2];} temp; // read from AIC23 temp.combo = MCBSP_read(DSK6713_AIC23_DATAHANDLE); // Note that right channel is in temp.channel[0] // Note that left channel is in temp.channel[1] } // write to AIC23 MCBSP_write(DSK6713_AIC23_DATAHANDLE, temp.combo); The tricky part here is how to interpret the results returned by the codec. The AIC23 codec returns both channels simultaneously in a 32-bit container, which we store as a Uint32 data type. The first 16 bits of this Uint32 variable are a signed integer representing the sample of one channel and the second 16 are a signed integer for the other channel. A convenient way to separate the channels is to use a union in C. With this structure, you can access the individual channel data via temp.channel[0] and temp.channel[1], and you can access the entire 32 bit chunk containing both channels with temp.combo. This program will serve as a template for almost all of the remaining assignments in ECE4703, so it is important to understand what is going on and to get it working correctly. You may not fully understand all of the initialization details at this point, but we will cover this in more detail in an upcoming lecture. To ensure your code is working correctly, you can test it several ways. You can play music from your

phone into line in and listen with headphones on the TMS320C6713 DSK. You should hear the music unchanged. Now generate a test signal in Matlab with different signals on the left and right channels (help sound or soundsc). The following theoretical development should appear in your lab report. a. What is the equation for a discrete time continuous sinusoid (cosine)? b. What single line of Matlab would you use to create a 2 second long time vector assuming a sampling frequency of 44.1 khz? c. Write an.m file (script file) to implement a two second long 500Hz cosine signal and a 2 second long 300Hz cosine. Assign the 500 Hz signal to the right channel and the 300 Hz signal to the left and play the sound through the computers sound card using Matlab's sound( ) instruction. d. Generate a completely labeled plot (both axes, title and legend) showing 5-10 cycles of your test signals. Include in your report. Play your test signal into the DSK and listen through headphones. You might want to also try swapping the channels in your code and testing that the results are as expected. Make sure the stereoloop program is working before proceeding to Program 3. Demonstrate your program to the course staff for sign-off. Program 3: Squaring the Left Channel This program will build on the stereo loop program above by reading both channels of the AIC23 and then outputting the channels to the AIC23 after squaring the left channel (the right channel will be passed through unmodified). Here are some suggestions on how to achieve this functionality: 1. Squaring the samples on the left input channel is a little bit more complicated than simply multiplying the sample by itself because you are likely to get overflow in the 16-bit signed integer datatype (with range -32768 to +32767) if you do this directly. Instead, consider the processing steps shown in Figure 1. By pre-scaling the samples (and converting to floats), the samples remain in the range [ 1, +1] after squaring. Unscaling and conversion to signed integers is necessary before writing the modified samples to the AIC23 codec. 2. Pass the right input channel samples directly to the right output channel. 3. Your code should compile without any errors or warnings. Load the code to the DSK and run it. Your code should work correctly and should be liberally commented! (like your report grade depends on it, because it does...) 4. What do you expect to happen? Using trigonometric identities to determine the following to help guide your intuition. Include in your report. cos 2 (ω o n) = where ω o is radian frequency and ω o = 2 π f o

Figure 1: Typical steps when processing samples from the AIC23 codec 5. Test your signal-squarer by sending a 300 Hz sinusoidal signal to both channels on the DSK and observing both the signals on both output channels on an oscilloscope. You should also record the output to a.wav using the computer's sound card for analysis in Matlab. Note that there may be some strange things about the recorded signal. Is the recorded signal always positive (as you would expect from a squared quantity)? Does the recorded signal match perfectly with a squared sinusoid in Matlab? You may want to think about the squaring operation in the frequency domain. In your report, explain what is going on. Remember, multiplication in the time domain is convolution in the frequency domain. Careful analysis of the recorded signal will reveal some interesting properties of the AIC23 codec and its circuitry on the DSK. 6. Demonstrate your functional program to the course staff for sign-off. Additional Exploration 1. Even if you get your code working perfectly, it is important that you explore the debugging and code profiling features of CCS. The number one reason for difficulty in ECE4703 is an inability to effectively debug problems with your code. Play around with CCS to better understand the full range of debugging features. As a minimum, make sure that you can: Set breakpoints: It is very easy to set breakpoints in CCS. Just double-click in the gray left margin of the line where you want your code to stop. The breakpoint is indicated by a green circle with a checkmark in the left margin. Note that the execution stops before this line is run. You can clear the breakpoint in the same way by double-clicking the left margin. Watch variables: This is also fairly straightforward. Use the CCS menu to select View Variables. The variables watch window will appear. To add a variable, click under the Name column and type the variable name. You can also specify how you want CCS to display the variable, e.g. decimal, hex, etc. 2. Make sure you are able to profile your code (see videos on Labs webpage). This skill will be very important in later laboratory assignments when you need to ensure that your more complicated DSP algorithms are running in real-time. An interesting profiling experiment is to edit your linker command file (C6713.cmd) to put all code and data for Program 3 in SRAM (your linker command file is probably already set up this way). Profile some code to determine the average number of cycles it takes for your code to complete. Then edit your linker command file to put all code and data for Program 3 in SDRAM. Profile the same code to determine the average number of cycles it takes for your code to complete. Is there any difference? Can you explain why or why not? 3. Finally, try out various signals in your signal-squarer including sinusoids with higher and lower signal frequencies, different sampling frequencies, square waves, and even music or speech (you can use the computer s sound card output or bring in a portable audio player). While you can use Matlab or

the function generators on the lab bench to generate your signals, it may also be convenient to download a function generator app for your phone (and what does the ready availability of such signal generation apps tell you about your phone's processor?). Try listening to the output with a pair of headphones. Refer back to your analysis above. Can you explain what is going on? Specific Items to Discuss in Your Report In lab you will form teams of two. You and your lab partner will submit joint project code and a single lab report. Both lab partners must be present to receive credit for demonstration of any code. Both partners are expected to contribute equally toward the completion of the lab and to writing the report. Only lab partners who contributed to the lab and to the report should appear as authors. By putting you name on the report, you are certifying that the work is yours. Please refer to the general report guidelines provided on the course Labs web page for an overview of the ECE4703 report format. Since the first two programs in this assignment were quite simple and used code written by others, you do not need to discuss them in the report. However, you should include your theoretical development work for generating thee test signals for Program 2. Your report should mainly focus on your methods, solutions, and results obtained with Program 3. Specifically, you should detail your analysis and experiments with the signal-squarer. You must present documentation of your experiments (e.g. screen captures, etc) by which you determined the following. 1. What is the maximum peak-to-peak input voltage (at the line in input) that the AIC23 codec can accept before clipping occurs? 2. What is the maximum peak-to-peak output voltage (at the line out output) the AIC23 codec can generate? 3. What happens when you try to sample a sinusoid with frequency higher than the Nyquist rate? To test this, set the sampling frequency of the codec to 44.1kHz (it should be set to this value already if you use the provided stereoloop.c code) and use the function generator to provide a 25kHz sinusoidal input to the codec. 4. What happens when you sample a signal with DC offset? To test this, use the function generator and apply a one volt offset to a 1kHz sinusoidal input with a one volt peak-to-peak voltage. Can you explain what is going on here? 5. What happens when you try to output a signal with a DC offset? Try generating an output with a DC offset by adding a constant to each sample before writing the sample to the AIC23 codec. Look at the result on a scope. What happens? 6. Discuss your SRAM/SDRAM ISR profiling results. 7. Finally, determine where the codec configuration is written in your code and take a look at the AIC23 codec datasheet (a link is provided under Useful Links). Notice that, among other configuration options, the codec has registers that allow for left/right line input channel volume control in 1.5dB steps. How does this work? In Sections 3.2.1 and 3.2.3 of the datasheet, it is stated that the ADC and DAC each have a full-scale range of 1.0 VRMS. Using what you know about the codec configuration, can you explain how these specifications agree or disagree with the first and second results that you obtained regarding the maximum peak-to-peak input and output voltage?

Final Remarks All work should be saved to the students' network (R:/) drives and not left on the local machine. The machines in the labs can be re-imaged at any time during the term. All material left on the local drive would be lost. The code repository for each lab should be available to both students who contributed to it. Please be aware that each of the laboratory assignments in ECE4703 will require a significant investment in time and preparation if you expect to have a working system by the assignment s due date. Basically, the lab assignment represents the work that must be completed to demonstrate mastery over that week's course topics. Each week you will be expected to move through the sequence from theoretical analysis, to modeling (in Matlab), to implementation. This is a 4000 level course and is run in open lab mode. It is not expected that you will be able to complete the laboratory within just the scheduled, official lab time. It is in your best interest to plan ahead so that you can use your time and the TA and instructor s office hours most efficiently. A zipped version of your signal squarer should be submitted on-line using the instructions provided on the Lab webpage.

ECE4703 Laboratory 1 Grade Sheet (Must be included in report) Grading Criteria : Requirement (max. points) Sign-off Grade All projects build without errors or warnings 10 Helloworld project has correct functionality -- 5 Stereoloop project has correct functionality -- 5 Signal-squaring project has correct functionality -- 10 Code is well commented --10 Report introduction -- 5 Report background and methods -- 5 Report description of solution -- 10 Report description of results -- 15 Report explanation of signal-squaring results -- 10 Report conclusion -- 5 Report references -- 5 Overall report clarity, appearance, grammar, and spelling -- 5 TOTAL = 100 Grader s Comments :