Live data from Hacker News

FPGA Design for Software Engineers

walknsqualk.com

71–80 of 84 posts

Re: FPGA Design for Software Engineers

#71
If any of you are interested in FPGA's after reading the article I highly recommend:

Introduction to Logic Circuits & Logic Design with VHDL by Brock J LaMeres

He was my instructor in college and the text itself is extremely helpful for all things FPGA.

Re: FPGA Design for Software Engineers

#72
post #46

Earlier quoted context omitted.

There is no programming in FPGA at all. You describe your hardware using hardware description languages like VHDL or Verilog.

Then no programming exists at all. When writing a C code you are describing a program that runs on the C abstract machine. The same thing holds for all "programming" languages.

Sorry, I am not ready for philosophical discussion. We can take definition from Wikipedia: https://en.m.wikipedia.org/wiki/Computer_programming Programming involves code execution on computer. There is no computer in FPGA.

Re: FPGA Design for Software Engineers

#73
post #72

Earlier quoted context omitted.

Then no programming exists at all. When writing a C code you are describing a program that runs on the C abstract machine. The same thing holds for all "programming" languages.

Sorry, I am not ready for philosophical discussion. We can take definition from Wikipedia: https://en.m.wikipedia.org/wiki/Computer_programming Programming involves code execution on computer. There is no computer in FPGA.

Then why did you start the discussion? An FPGA is a computer just as well as any CPU.

Re: FPGA Design for Software Engineers

#74
post #72

Earlier quoted context omitted.

Sorry, I am not ready for philosophical discussion. We can take definition from Wikipedia: https://en.m.wikipedia.org/wiki/Computer_programming Programming involves code execution on computer. There is no computer in FPGA.

Then why did you start the discussion? An FPGA is a computer just as well as any CPU.

Technically FPGA is a piece of memory. The functionality of the FPGA device depends how the bits in this memory are set. Size of this memory is constant This information is not public, brave hackers are working hard to reverse engineer this. You can make a CPU in FPGA, no way for the opposite performance wise. Complex simulation with couple 4k resolution pictures takes days.

Edit: the people here are decent enough to start a discussion.

Re: FPGA Design for Software Engineers

#75
post #74

Earlier quoted context omitted.

Then why did you start the discussion? An FPGA is a computer just as well as any CPU.

Technically FPGA is a piece of memory. The functionality of the FPGA device depends how the bits in this memory are set. Size of this memory is constant This information is not public, brave hackers are working hard to reverse engineer this. You can make a CPU in FPGA, no way for the opposite performance wise. Complex simulation with couple 4k resolution pictures takes days. Edit: the people here are decent enough to…

Yes an FPGA is a different computer then a CPU. It's still a computer though. This is the definition of a computer:

> An electronic device for storing and processing data, typically in binary form, according to instructions given to it in a variable program. [1]

It fits an FPGA perfectly.

[1] https://www.lexico.com/en/definition/computer

Re: FPGA Design for Software Engineers

#76
post #15
post #6

I recently got a TinyFPGA-BX, and have been slowly working through the tutorials. The amusing thing is that, for the actual applications I'm working on, a contemporary microcontroller can actually keep up just fine, and is easier for me to comprehend. Still, one of these days, a use will for an FPGA will crop up for which I'll be glad that I learned.

Interfacing with arbitrary hardware, for example random LCD devices with sometimes proprietary on the wire protocols. (Don't have a graphics chip for that screen? Make yourself a graphics chip for that screen!) Or Digital Signal Processing.

If you get a high-end microcontroller like a Cortex-M, you can normally just bit-bang the interfaces to devices that you don't have hardware for. DSP is similar - for a hobby project you're normally better off using a high-end device like a Cortex-A and doing the processing in software, rather than futzing with custom digital logic in an FPGA. If you're on a power budget (e.g. for a portable device) you could use a DSP chip like the C6000, but writing the software for it is pretty complicated if you haven't used one before.

If you're building a device that's going to be mass-produced and sold, then the situation is different and using FPGAs can make sense, because you'll amortize the engineering cost for the digital logic across all the units you sell. It can be worth it if it lets you use a cheaper processor or microcontroller.

Re: FPGA Design for Software Engineers

#77
post #74

Earlier quoted context omitted.

Technically FPGA is a piece of memory. The functionality of the FPGA device depends how the bits in this memory are set. Size of this memory is constant This information is not public, brave hackers are working hard to reverse engineer this. You can make a CPU in FPGA, no way for the opposite performance wise. Complex simulation with couple 4k resolution pictures takes days. Edit: the people here are decent enough to…

Yes an FPGA is a different computer then a CPU. It's still a computer though. This is the definition of a computer: > An electronic device for storing and processing data, typically in binary form, according to instructions given to it in a variable program. [1] It fits an FPGA perfectly. [1] https://www.lexico.com/en/definition/computer

There is a term “variable program” in your link. When you add peripherals to the chip on the printed circuit board it looses flexibility very fast. The whole system is made to very specific task. But yes, you convinced me that FPGA might be treated as a computer in an extreme case.

Re: FPGA Design for Software Engineers

#78
post #28

The problem of FPGAs is their proprietary nature, and Verilog/VHDL are far from the best languages. Gladly there is a number of open-source projects aiming to close this gap - Yosys[1], SymbiFlow[2], Chisel3[3]/FIRRTL[4]. Some time ago I suggested[5] different open source projects should unite and reuse the common intermediate language, akin to LLVM in many software development and analysis tools. From my point of vi…

If you're just learning, I'd highly recommend that you stick to the toolchains supported by the manufacturer of the chip you're using. The various open source toolchains are very cool, but they have sharp edges and limitations that won't be obvious to a beginner. Many of them also focus on high-level synthesis, which isn't good for beginners, because you really need to learn the ins and outs of digital logic to be able to debug the output of a high-level synthesis tool.

Re: FPGA Design for Software Engineers

#79
post #77

Earlier quoted context omitted.

Yes an FPGA is a different computer then a CPU. It's still a computer though. This is the definition of a computer: > An electronic device for storing and processing data, typically in binary form, according to instructions given to it in a variable program. [1] It fits an FPGA perfectly. [1] https://www.lexico.com/en/definition/computer

There is a term “variable program” in your link. When you add peripherals to the chip on the printed circuit board it looses flexibility very fast. The whole system is made to very specific task. But yes, you convinced me that FPGA might be treated as a computer in an extreme case.

FPGA accepts "variable program"s. What you are talking about are peripherals. A CPU with certain peripherals can also be completely inflexible. That is completely outside the scope of what a CPU or an FPGA are though.

Re: FPGA Design for Software Engineers

#80
post #6

I recently got a TinyFPGA-BX, and have been slowly working through the tutorials. The amusing thing is that, for the actual applications I'm working on, a contemporary microcontroller can actually keep up just fine, and is easier for me to comprehend. Still, one of these days, a use will for an FPGA will crop up for which I'll be glad that I learned.

I picked up a TinyFPGA BX to make a VU-meter with strips of neopixels for a Halloween project (keystep+volca keytar with lots of reactive lights). You can do this with microcontrollers but I wanted to stretch myself and see if I could get a crazy-responsive 7-band meter working. I'm like 95% of the way there after several months learning verilog, testbenches, how a few modules off github work, the I2C protocol, and h…

Sounds like a fun project.

You might find this video helpful: https://www.youtube.com/watch?v=us2F8wAncw8

I think his design is very interesting, showing how to mix custom peripherals with picosoc so you can get very good response but also be able to program in C.

Post reply on HN