Jump to content

Starting with FPGAs

Javilen

I have a couple project I am working on. Some for work but most of them are for fun/education.  I was wondering what would be the best route to lean how to use FPGAs and how to use/program them.  Are there also affordable development kits to start out using them?

Link to comment
Share on other sites

Link to post
Share on other sites

16 hours ago, Javilen said:

I have a couple project I am working on. Some for work but most of them are for fun/education.  I was wondering what would be the best route to lean how to use FPGAs and how to use/program them.  Are there also affordable development kits to start out using them?

The Fipsy is a very cheap way of taking your first steps. Cheap enough that even if you broke one it wouldn't sting much!

Hand, n. A singular instrument worn at the end of the human arm and commonly thrust into somebody’s pocket.

Link to comment
Share on other sites

Link to post
Share on other sites

On 11/4/2018 at 2:33 PM, Javilen said:

I have a couple project I am working on. Some for work but most of them are for fun/education.  I was wondering what would be the best route to lean how to use FPGAs and how to use/program them.  Are there also affordable development kits to start out using them?

https://store.arduino.cc/usa/arduino-vidor-4000

16k Gates at $60

"The FPGA contains 16K Logic Elements, 504 KB of embedded RAM, and 56 18x18 bit HW multipliers for high-speed DSP. Each pin can toggle at over 150 MHz and can be configured for functions such as UARTs, (Q)SPI, high resolution/high frequency PWM, quadrature encoder, I2C, I2S, Sigma Delta DAC, etc."

Link to comment
Share on other sites

Link to post
Share on other sites

I've never used an FPGA before myself, but I have learned a little about them. A lot of FPGAs have a separate controller to bootstrap the FPGA. 

In the case of the Arduino, the FPGA is like a GPU in a PC. You can run a normal program on the main processor and offload tasks to the FPGA. It's also more of a learning platform rather than a serious development platform.

If you're looking for a more professional entry look at the xilinx dev boards. They can be had for under $100 and will use the same IDE as what you'd likely use in a work environment. 

Link to comment
Share on other sites

Link to post
Share on other sites

Really what you want to do is learn a hardware descriptor language first such as Verilog HDL.  You don't necessarily need an expensive FPGA for this, you can purchase a CPLD (CMOS Programmable Logic Device) to get started.  You can usually get one for much cheaper than an FPGA.  You can then get a digital design book and start learning how to configure simple circuits on it, adders and things like that.  I built a simple 8-bit processor with a handful of instructions using a CPLD when I took a digital electronics class, it was pretty fun.
 

An FPGA is a very powerful prototyping tool.  An FPGA isn't something you program per se, it's something you configure. It's not a processor, it doesn't take commands and manipulate data the way a CPU does, it's actually a digital circuit that re-configures itself to match the description you provide. You can configure it for a single task and it can be faster than both a CPU or GPU at that task.

Companies will use an FPGA to prototype digital circuits before they pay fab to make the chip for them.  Or, if you just need a one-off prototype and don't plan to mass manufacture a capability, you can just implement a solution on an FPGA and get excellent performance that way.  They are very common for instrumentation and feedback control where a nano/microsecond response time matters or where mass quantities of data need to be handled extremely quickly.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, ShredBird said:

Really what you want to do is learn a hardware descriptor language first such as Verilog HDL.  You don't necessarily need an expensive FPGA for this, you can purchase a CPLD (CMOS Programmable Logic Device) to get started.  You can usually get one for much cheaper than an FPGA.  You can then get a digital design book and start learning how to configure simple circuits on it, adders and things like that.  I built a simple 8-bit processor with a handful of instructions using a CPLD when I took a digital electronics class, it was pretty fun.
 

An FPGA is a very powerful prototyping tool.  An FPGA isn't something you program per se, it's something you configure. It's not a processor, it doesn't take commands and manipulate data the way a CPU does, it's actually a digital circuit that re-configures itself to match the description you provide. You can configure it for a single task and it can be faster than both a CPU or GPU at that task.

Companies will use an FPGA to prototype digital circuits before they pay fab to make the chip for them.  Or, if you just need a one-off prototype and don't plan to mass manufacture a capability, you can just implement a solution on an FPGA and get excellent performance that way.  They are very common for instrumentation and feedback control where a nano/microsecond response time matters or where mass quantities of data need to be handled extremely quickly.

Looks similar to SIMULINK which I am familiar with.  I want to configure the FPGA to act as the logic for a brushless motor controller.  Something that can take in position (+ velocity), back emf and requested power and have it output to an IGBT driver.  Maybe using a FPGA is overkill for this application.

Link to comment
Share on other sites

Link to post
Share on other sites

18 hours ago, Javilen said:

Looks similar to SIMULINK which I am familiar with.  I want to configure the FPGA to act as the logic for a brushless motor controller.  Something that can take in position (+ velocity), back emf and requested power and have it output to an IGBT driver.  Maybe using a FPGA is overkill for this application.

I mean if you're just looking to learn something it doesn't matter how you solve it.  An FPGA is probably overkill, but it's always fun learning to something in a new way!

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 weeks later...
On 11/3/2018 at 8:33 PM, Javilen said:

I was wondering what would be the best route to lean how to use FPGAs and how to use/program them.  Are there also affordable development kits to start out using them?

The kits that my university use to teach with are the TerASIC DE0-CV boards. This is in the $100 price range. 

Selecting an FPGA development board can actually get quite complex. Besides configuring it to run a sensored brushless motor, what else do you think you would want to do with it? Are you more interested in vehicle control, sensor decoding, designing processors, radio stuff? How much and what types of I/O would you like the board to have, do you need/want features like program on startup, so that you don't have to reprogram the FPGA every time you power it down? Do you need/want the board or the chip to have a discrete processor as well? If so, which processor?

What's your budget? Generally, for anything but the absolute most basic FPGA chips and boards, you should be in the $100-$200 price range. 

If you really only want to do simple things like control brushless motors and stuff, an FPGA is overkill, overly expensive, and overly difficult. If your goal is to start learning about how hardware works, I might suggest microcontrollers instead. Not like a full arduino, but just the "processor" that's in it. These generally cost a few cents to a few dollars a piece, and are usually available with the same kind of built in features that FPGAs have, like ADC, DACs, Multiply Adders, external or internal clock control, stuff like that. I'm most familiar with the PIC type of Microchip microcontrollers. They also offer AVR (the type that's in non ARM arduinos), and ARM based microcontrollers, in a variety of different configurations.

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×