
Journal Journal: What does it take to build a camera interface for PCIe?
I was wondering exactly what would it take to learn to build and program a camera interface based on PCIe?
I'm still more than a few semesters away from getting my BS in Mechanical Engineering, but I'm thinking ahead to possible projects for a MS (more interesting job opportunities). I started out as a CS major with a few semesters in C++ and although those skills are immediately lacking, the thought of learning how to get software to talk to the card does not seem scary. My friend suggests that it wouldn't be unrealistic to make a simple interface card basically connecting an Altera Stratix or Cyclone (or equivalent) chip to the PCIe bus.
The basic setup right now is a four channel high speed infrared camera run off of a few older Altera controllers. The apparatus is 13 years old and still seems to be at the relative forefront of infrared camera technology because of the smaller demand for it (and we're still not fully utilizing the full frame rate that the cameras are capable of). We were thinking of adding more channels to it to do some better combustion analysis (the camera is pointed to a Bowditch-type optically accessible internal combustion engine - better understanding of combustion can lead to a fundamentally more fuel efficient engine and better fuels). This would mean adding capabilities past what our old Matrox Meteor II (and the pci bus) cards can handle.
At this point the project has passed too many hands of people that wanted to scrape something together to get their degree and get out, and starting over with newer technology is not out of the question. It seems like a huge task but if I start to get a feel for it now, it may actually be a good possibility for me.
I understand that by using an Altera or similar programmable chip that once the hardware interface is done, making changes should be fairly easy. Also, being involved with it in the beginning and not building on other peoples' dissimilar work would mean not having to work around someone else's restricted framework. I already have a rudimentary idea of how to pull data from a CCD, but it seems that the computer interface part is what would be the most challenging. An Altera or similar chip should be more than adequate for performing pre-processing and all it would need to do is dump images to a hardware buffer and then to the file system.
Where should I start? I've had a semester of basic EE, and I already plan on studying digital circuits (at my school, from a few books, and the MIT online course videos). What are the specific areas that I should concentrate on that will make a big difference in the outcome of the project? The logical ideas used in programming a FPGA seems similar to programming in C++ (addressing, how the data logically needs to move around, etc.) I have access to using C# in MS Visual Studio (tab key anyone?), but seeing as I'd basically have to refresh and/or relearn programming, the language is open. Options for what platform to use are open too. I've taught myself basic Server 2003 domain stuff as a hobby (which leads to XP and
Lastly, if any Slashdotter has quite a bit of experience in the area and would advise a different course of action, then by all means let me know before I head down a road to failure.