4 ms·
I think a lot of people posting here don't realize that programming an FPGA means programming how the gates are set up on the FPGA, not software programming. V
by viccuad 12y ago
I think a lot of people posting here don't realize that programming an FPGA means programming how the gates are set up on the FPGA, not software programming.
VHDL/Verilog etc are descriptive languages, not software languages ala C/Python/Java/etc. You should have enough hardware design knowledge (at RT level) to be able to sketch your HW design in a piece of paper, and then, you are apt for writting VHDL/Verilog and putting it into the FPGA.
- beeworker 12y agoWhile this is sort of true, this attitude contributes to the problem another commenter mentioned about how working with FPGAs is like taking a trip to the 70s. There's no reason you can't use a full-fledged programming language like Python to specify your hardware with the strict HDL subset at the RT Level, then use the full language's power to test it off-FPGA, and use all the software tooling around your full language to make the whole experience as pleasant as possible. In fact, that's the approach of MyHDL: http://www.myhdl.org/ http://www.myhdl.org/
- aprdm 12y agoYup, made an experiment with it -> http://www.eetimes.com/author.asp?doc_id=1323837 http://www.eetimes.com/author.asp?doc_id=1323837 I really like MyHDL!
- noselasd 12y agoI'm sure a lot of knowledge of hardware design helps, but it's not necessary. I've toyed around with VHDL on a DE0-Nano board, and while I have a lot of C experience I have none with HW design. I can still program enough to do simple things, e.g. sample an analog temperature sensor, drive a simple led display that display current temperature, average of last hour etc.
- viccuad 12y agoI would argue that for the job you are aiming for, you could do it more than fine with a microncontroller like a 3 bucks ATMEGA or Arduino. You would program it in C, and you don't need a 60 bucks FPGA + a 200 bucks for the FPGA controller. If you are learning, meddling with FPGAs your way is awesome. But nobody is going to use that approach for serious work on production.
- vkjv 12y agoWhile, I do have an EE degree, I play with FPGAs fairly frequently and rarely think about the hardware that I'm laying out. In my experience, unless you are building something either very large and need to worry about your gate count, or something very time sensitive and need to work about component distance, you can just program and enjoy real concurrency. :)
- viccuad 12y agoBut the point of FPGAs is to be cost effective. They are a substitute for custom PCB designs with RT components and somewhat low production numbers (500~5.000 devices, depends on the FPGA etc). Either you build something big enough that it doesn't make sense to make a PCB + components, and mass produce them on a medium level using FPGAs, or you aren't using FPGAs for what they are. It's fine if you are learning and toying with them, we like to hack on things, but you are never going to use them that way in a job, in production.
- jeremycw 12y agoI disagree that you need that much hardware knowledge. I also think that statements like these can be discouraging to people that don't have a background in hardware. That's a shame because for me playing around with HDLs was one of the most mind opening experiences for a software developer. I wrote tetris in Verilog that outputs to VGA[0]. I definitely encourage anyone interested in HDLs and FPGAs to start learning. [0] https://github.com/jeremycw/tetris-verilog https://github.com/jeremycw/tetris-verilog
- anewhnaccount 12y agoAnother way to think of a register transfer level hardware description languages is as a type of dataflow programming language.