程序代写代做代考 assembly AI scheme arm algorithm Page 1 of 6

Page 1 of 6

ECE 243S – 2016

Project Structure

The project is an opportunity to have fun and to express your creativity by applying what you have learned

in this course. You remain working in the same group of two and with the same TA. The project portion

of the course is worth 10% of the course grade.

There are multiple project lab sessions, in which you will be working under a supervision of your TA.
However, there will be quite a bit of work that you will have to do outside the lab session, such as writing
your project proposal and debugging your code. You will demonstrate your result during the third project
lab session.

Be as creative as you would like with your project, and have fun with it! You only need to make sure you
keep it relevant to the course material and unique.

Marking
The marking scheme for the project is shown in the table with more details about each component further
below. Although the project is a group effort, the individual contribution of each student will be taken
into account when marking.

Idea 1 mark Coming up with a unique project idea.

Proposal 1 mark Completing the project proposal and getting your TA’s approval.

Progress Report 2 marks You will email your code and a log of your project’s progress to your TA.

Difficulty 6 marks How challenging your project is (determined subjectively by TA).

Functionality 10 marks Your success in completing the project core.

Idea
The first step in your project is to come up with a unique/original idea. Use this opportunity to be as

creative as you can, but of course, stay relevant to the course. You should be writing assembly, interacting

with peripherals, handling interrupts, interfacing C/assembly, etc. Spending a lot of time on mechanical

structures or electrical circuits does not give you any additional credit from a course point of view, and

hence is mostly discouraged if time is an issue. Some of the project themes are listed at the end of this

document.

Your project should be unique, that is, different than everyone else’s in the class. Although we strongly

encourage you to try to come up with a truly original project, similar ideas are OK, as long as there are

some distinctive features/approaches that make your project stand out. For example, one can use a Lego-

made car in many ways: to follow a line, to sense walls; the car can be controlled using the keyboard,

pushbuttons, switches, etc. Project uniqueness will be determined on a first-come-first-served basis.

Please strictly adhere to the guidelines below to make this process manageable.

There will be a note on Piazza regarding project proposals. Starting Mar 10 at 8:00am [too

early=>rejected], you are to make a non-anonymous follow-up discussion on that post that includes:

Page 2 of 6

 Identification. This should include your lab day and station number.

 Content should be a very short but yet informative-enough description of your project. “Car” or

“Video game” are not good titles. “Keyboard-controlled car with obstacle detection and

backtracking” or “VGA Tic-Tac-Toe with hexkeypad” are good summary lines.

Before posting, make sure that your project idea has not been claimed by searching the posts. You can

post only one project idea. After posting, monitor your post: TAs will check your idea and comment on

your post with one of the following messages:

 project_accepted – Your project idea has been accepted!,

 project_already_taken – Your project idea has already been claimed by someone else. In this

case, you are to post another follow-up with a new project idea.

 project_not_enough_info – You must provide more details in order to allow differentiation of

other, similar projects.

You are to post a unique idea by March 13 at 5:00 pm. You are expected to have made progress on the

project by the first lab project session on the week of March 14, so doing this early is to your advantage.

Proposal
After ensuring that your project idea is unique, you are to fill the Project Proposal Form (can be found on

Blackboard) Submit it to Blackboard at least 2 days before your first project lab session and give it to

your TA at the beginning of the first project lab session.

Your TA will help you to determine the scope/effort required for the project during the first project lab

session. The TA will advise you on what to add/remove from your project proposal so it is sufficiently, but

not overly challenging. After you implement the changes, the TA will then approve and sign your project

proposal. You will then make two copies of the final filled form: one will be held onto by the TA, and the

other one will be for your reference. Your ability to successfully implement all that was approved in your

proposal will determine your project functionality and difficulty marks.

Progress Report
Before coming to the labs during the first, second and third lab sessions, you will need to email two

things to your TA:

 a copy of your code excluding large data files, and

 a running changelog file that documents the progress made by each partner. The changelog

should act as a sort of journal that chronicles the development of your project and must be

consistent with the code submitted. A sample changelog file snippet is shown below; you should

follow this format and list which partner contributed.

Page 3 of 6

Sample changelog for Henry and Julie:

Mar 22, 2012
– Henry: Fixed bug with button 1 not triggering interrupt
– Julie: Implemented line drawing on the VGA

Mar 21, 2012
– Julie: Got timer to work in a simple test program, will integrate later
– Henry: Connected button interrupts to lego arm movement
– Julie: Wrote function to draw individual pixels on VGA

In total, you will submit 3 changelogs, one for each of the project labs. The TA will use this documentation,

as well as his/her observations of your time spent in the lab to grade you on the consistency of your time

spent and the workload balance between partners.

Difficulty
The difficulty of your project will be determined relative to a predefined minimum difficulty (see project

core below) and the difficulty of other projects by your peers. The minimum difficulty will be determined

by your TA. You can increase the difficulty by adding features and enhancing functionality.

It is important to note that difficulty is rewarded only when it is

a) Achieved and demonstrated not just proposed, and

b) Relevant to the course material.

Building a fancy electronic circuit and having the Nios II turn it on is not a difficult project in the eyes of

your TA. Your project should be mostly written in assembly and should communicate with many devices,

preferably using interrupts, and have them all work together in some meaningful way.

Project Core

As a general guideline, a project core should consist of:

 Two new devices (ones than you haven’t used in the labs) of moderate complexity,

o Can include the Lego controller in state mode.

 At least one meaningful interrupt

 Make use of subroutines

You may propose a project core that does not fit this template if you feel it is of equivalent difficulty.

Discuss this with your TA.

Some common project cores are:

 VGA game: VGA pixel buffer + PS/2 keyboard using interrupts

 Lego device: Lego controller in state mode using interrupts, controlled by PS/2 keyboard

Adding Complexity

Once you get your project core working, you can increase the complexity of your project by:

Page 4 of 6

 adding more devices

 using multiple interrupts, using nested interrupts (if it makes sense to do so)

 using more complex algorithms

 adding new modes of operation

You can mix C and assembly but the complexity of your algorithm will be judged primarily on your

assembly code.

Some examples of additional features to add:

 audio notifications or background music

 VGA heads up display

 For VGA games: complex shapes, animations

 Multiplayer or AI mode

The list below is not meant to be a quantitative measurement of difficulty; rather, it helps you understand
roughly how some devices stack up against others.

Device Difficulty

Seven Segment Display 1

Push Buttons 1

JTAG UART 2

Timer 2

Lego 2 (value) – 3 (state)

VGA 2 (character buffer) – 5 (complex shapes, animation)

Digital Protoboard (GPIO) 3

Hex keypad (GPIO) 3 (rows or columns) – 4 (rows and columns)

Audio 3-4 (different waveforms, prerecorded samples)

PS/2 2-3 (number of keys, press and release) – 4 (PS/2 Mouse)

Video input 3

ADC 4

Custom Instruction 5

IrDA UART 3

Custom Bus Component 5

SD Card 5

Ethernet 5

Certain devices can have a varying difficulty depending on how you use them. For example, the lego

controller is more difficult with multiple motors and sensors. PS/2 complexity increases when you use

support multiple key presses and holding keys.

The difficulty mark (out of 6) is determined by your TA. If you achieve the project core agreed on with

your TA you will get 3 marks. Additional marks are awarded when you go beyond your project core. These

additional marks are determined relative to the other projects in the class. Typically around 10-15% of the

projects will earn 6 marks for difficulty.

Page 5 of 6

Functionality
Your functionality grade will be determined by how successful you were at implementing the core of your

project. How you are penalized when your project core is not fully functional will depend on:

 the severity of the bug;

 the contribution of that component to the overall function of your project; and

 the contribution of that component to your project’s difficulty.

To get credit for part of your project working you need to be able to demonstrate it to your TA during the

final lab. Therefore it is important to create unit tests for each component in your project, so if you are

unable to integrate your code and get the components to work together, you can still show that different

components work in isolation.

You can also substitute some components of your project with simpler ones in order to get the project

working. E.g. substituting the PS/2 Keyboard with JTAG UART for input. This will decrease the difficulty

but may still be worth full functionality marks.

You will not receive your project mark during the lab because the TAs will meet at a later date to discuss

all the projects and come up with a consistent marking scheme.

Example Project Themes

Microsoft Paint w/ Mouse

Dance Dance Revolution type game

BlackJack

Space Invaders

Tetris

Light tracking Lego car

Lego scanner/detector

Audio visualization

Oscilloscope on VGA

Duckhunt w/ Lego light sensor

Asteroids

Wireless DE1-DE1 communication w/ laser & light sensor

Voice recognition

Digital Musical Instrument

One good way to come up with your own idea is to look at the DESL->Nios II->Devices webpage, and try

to think of something neat you can do with some combination of those peripherals.

Page 6 of 6

Golden Project Rules
1. Design incrementally. Get the bones working as early as possible and then keep adding new

features and new peripherals to it. For example, if the project intends to control a figure on the

screen with a PS/2 keyboard, build the game so that you can control the figure with the DE1

switches while your partner figures out how to use the PS/2 controller, and then merge the two.

2. Have a backup plan. If the project’s success is heavily dependent on a single but rather

complicated task, be sure you are prepared for the possibility of that task failing. In the above

example, make sure you are prepared to fall back on the switches if you don’t get the keyboard

working.

3. Demonstrate something. The worst thing you can do is have nothing to demonstrate. No matter

what it is, get SOME PIECE of your project working on demo day.

Notice how 2 and 3 come naturally if you follow Rule 1, so please DESIGN INCREMENTALLY!

Other words to the wise:

1. Keep backups or use version control software

2. Comment and organize code (You will suffer from spaghetti code with unclear function)

3. Spend time building test facilities so you can easily debug modules.

4. Allow time for last-minute problems.

Schedule Summary (Please see details in instructions above)

Date / Time Deliverable

March 10, 8am – March 13, 5pm  Unique project idea posted on Piazza

2 days before first project lab session  Submit Project Proposal form on Blackboard

Before first project lab session  Email TA code and changelog (see instructions)

First project lab session
(week of March 14)

 Give TA copy of posted Project Proposal form. Make
two copies after approval; give one to TA

Before second project lab session
(week of March 28)

 Email TA code and changelog (see instructions)

Before third project lab session
(week of April 4)

 Email TA code and changelog (see instructions)

Note: In the lab between the first and the second project lab sessions there is another general lab.