gamesfairy ([info]gamesfairy) wrote,
@ 2008-10-25 04:36:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:fyp, university

Well, I appear to have 'dodged a bullet' with my Final Year Project - when I actually started work on the project, I discovered it was pretty much impossible to do what I wanted to do, in the way I wanted to do it.

While I was aiming to 'hide' my extra encryption/decryption logic in the extra CAS latency cycle gained by using CL2 RAM in an CL3 system, I overlooked the fact that cas latency timings are used only during data writes, and not during reads, as their intention is to allow an error-free comparison of charges in memory to reference values. There's a timing parameter which specifies a minimum time after a write, but that doesn't seem to be widely supported. Because of this, and some other issues (mainly relating to wanting to run 'proper' strong encryption instead of just a simple xor scheme) I had to look in to other approaches.

My 'backup plan' of using 'registered' memory, at the expense of mainstream motherboard compatibility, was rapidly shot down as I realised that only control lines - not the data/address buses - are registered in such a scheme.

I hastily fabricated a new plan - to attatch an FPGA in between the CPU and motherboard of the system, and did a few days research and all-out panic-driven studying. I finally concluded that this was also a bad idea, as it relies heavily on work in areas I'm not confident in (such as high-speed PCB design) and I was eventually forced to drop the whole project idea - two days before I was due to hand in a 'project plan' document detailing the project, and containing a detailed plan of how I was going to perform it.

I did, however, somehow manage to think of a new project, and build this plan. I'm not entirely sure how I achieved this (besides the obvious 'I didn't actually sleep').

The new project is a study in to the ease of design, speed, and power usage of an FPGA-based hardware implimentation of various encryption algorithms. Put simply, I'm going to develop FPGA cores for six or so crypto schemes, benchmark them all in as many different areas as I can (including in a fairly 'real-world' application), in as reproducible a way as possible, and then write a nice report about it.

It's a lot less star-spangled, I think, but it should be orders of magnitude easier than the previous proposition. I don't need to do any of the stuff that I'm really inexperienced at - ie, PCB design - which would normally be a bad thing, but the previous project disaster has really brought home how much I need to be careful not to overstretch myself, and keep the project as do-able as possible. Having said that, there are a few things in there that I haven't done before, which should prove challenging. I've got around 30 weeks to do it, and since I've planned my time really generously, I'm hoping I'll get a couple of weeks spare to 'enhance' the project with extra algorithms, or benchmarks on different hardware.

Wish me luck!




(4 comments) - (Post a new comment)


[info]arron_shutt
2008-10-25 10:58 am UTC (link)
It does sound a lot better than your previous project for a multitude of reasons.

One piece of helpful advice I can offer is to do a literature search to determine what has been done before in this field. For a degree project, you don't need to spend a lot of time on it, but a day or two will give you a good idea of what is already out there before you start developing any electronics or code.

The first reason is to protect yourself from any claims of plagiarism so you avoid duplicating work that has already been completed and published. As my supervisor says "Reference rather than copy".

The second is that supervisors like to see relevance in the project to the real world and so if you can point to a series of journal papers and articles as part of your introduction/theory then you've demonstrated that. My last project student managed to give a clear understanding of her project field and how important what she was working on is to a much larger field of work, and she got >80% in her project mark in the end.

The third reason is if you have a project viva, it is much easy to defend yourself to some pointed questions like "what was the point of developing this?". Well, you can then point at all these other people who obviously thought it was worth doing who work in organisations building products. Their work backs your work up. That's how science works because the work you do today is based on work done in the past :)

The fourth reason is the advantage you can use their work to take shortcuts. If someone has developed a technique to do XYZ, it is easier to use XYZ and say "I used XYZ as in this paper here" and is saves you effort and writing up to use other people's work. If you don't read the literature then you can spend ages inventing a wheel from scratch when someone probably has spend years doing so.

The fifth reason is employment. Employers like to see people who have a in-depth grasp of the field. If someone was to be interviewed on one of my interview panels and be able to explain what they do fits into my business and including relevant elements to support their reasoning, I'd be looking for a reason to employ that person.

The sixth reason is that you can write the theory part of the thesis ahead of time, which is a real time saver. My last student submitted her thesis a week before the deadline because she'd done as much up front with planning her project, sticking to a schedule and writing all the fixed parts of the thesis (introduction,theory, references etc) as soon as she was able.

A spoonful of planning can save a metric shedload of crunch time later. And you don't want to get half-way through the project and find that what you've done so far is already yesterdays news, causing you to have a costly mid-project rethink.

(Reply to this) (Thread)


[info]gamesfairy
2008-10-25 11:01 am UTC (link)
That all sounds like really solid advice - I think the "what was the point of developing this?" point is something I often overlook in my rush to find excuses to do fun stuff.

Thanks - your points are both heeded and taken to heart!

(Reply to this) (Parent)


[info]the_stony_1
2008-10-25 07:33 pm UTC (link)
Your new project sounds like it could be an example in a list of sensible final year projects. Good work!

Aaron gives good advice. Also worth noting that 'I used XYZ as in this paper here' is a handy shortcut for the examiners to see that you've bothered to actually read and understand all the background literature that you reference. Anyone can list a bunch of Googled references, implementing an algorithm from them shows you know what's going on :)

And also, it gives you a lot of scope for 'x algo is being a pain in the arse, so I'll leave it to one side for a bit and do something else'. Nothing more depressing than having to slave away at code that you've grown to hate! Sounds like something you can really get your teeth into, anyway.

G'luck :)

(Reply to this)


[info]matthewrwright
2008-10-26 10:27 pm UTC (link)
Good luck ! As you know, I'm always here if you need any help or even a sounding post for ideas!

Depending what you come out with hardware wise, I'd be happy to give it some real world leg-work to do :)

Matthew

(Reply to this)


(4 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…