Chandresh said:
Hello everyone,
I am a graduate student in ECE. I took Embedded class(PIC
Microcontroller) and now I want to make a career in Embedded Systems
(Software).
Is VHDL and FPGA class knowledge useful for Embedded engineer or basic
Software development process course would be more useful? I have to
make choice between VHDL +FPGA & Software engineering overview class.
Please guide.
Thanks,
Chandresh
I have been holding off a bit to see what kind of advice you received
before putting in my .02C worth. First, I want to say that I disagree
with the comment that 'embedded systems' is predominantly writing java
or perl for a Win CE platform. I also disagree with the comment that
any company that uses PICs won't bother to higher any real software
engineers. Every company that I have worked for has used a wide range
of processor platforms ranging from PICs to high end DSPs. All of
these companies have had software and hardware engineers working on
these projects. Additionally, just about every project that was
significant in size incorporated programmable logic (VHDL / FPGA), but
not from the perspective of IC design, though this is one area that
VHDL is applicable to.
Over time, I have come to realize that in larger companies, there is
seems to be a strong split between the hardware and software developers
and engineers are typically assigned a specific portion of a project -
and thats it. Smaller companies, though, usually don't have this
luxury and the engineers have to be more versatile. It would be in
your best interests, unless you plan to only work for large or very
large companies, to have as diverse of a background as possible.
There are two reasons why I would recommend the courses on VHDL and
FPGAs. The first is that it has been shown that most successfull
products are successfull at least in part because of their ability to
expanded and adapted to unforseen needs. One of the easiest ways to
provide for this expansion is through programmable logic. The second
reason is that as products are required to provide more features, use
less power, be smaller and faster, the response has been towards higher
levels of integration. Use of programmable logic, such as FPGAs and
CPLDS fits very well with this trend as they are increasingly replacing
other 'glue logic'.
I would also like to say that. one of the other distinctions that I
have seen between a computer science type (programmer) and an embedded
systems (programmer) is that the person developing for the embedded
systems usually has to have a stronger handle on understanding the
hardware. This need to understand the hardware stems from the fact
that you don't always have a well defined operating system providing a
nice clean HAL. Instead, many times the embedded developer has to
control the IO directly and handle hardware events such as interrupts
and raw sensor data.