0

I would like to get into FPGAs. I'm a computer engineer student and I have knowledge of electronic, electromagnetism, circuit, architecture, microcontroller, software development... but I studied them only in a summary way.

What are relevant and preliminary topic I must know to understand FPGAs?

e.g. I found that Digital Design is an important aspect of the story.

NOTE: I'm NOT asking about FPGAs itself. I'm asking about things AROUND FPGAs, that are requirements to understand it.

user61801
  • 65
  • 5
  • 2
    Digital design is the thing, really. I'm confused by the "around" aspect of this question. – pjc50 Jun 05 '15 at 09:52
  • Only digital design? Nothing else? About the around: if you want to study probability theory you need to know integrals and derivates (among other things). Those are requisites, instead random variable is something that is 'inside' probability theory. Right now I'm only interested in requirements rather than foundation aspects of FPGA. – user61801 Jun 05 '15 at 10:05
  • 1
    You could say that Boolean logic was a prerequisite, in that sense. – pjc50 Jun 05 '15 at 11:25
  • Timing, timing constraints and io timing constraints, basically understanding the timing and signaling of your fpgas external interfaces. Like a memory bus for example. Maybe lookup cross clock domain too. – Some Hardware Guy Jun 05 '15 at 13:37

4 Answers4

1

You mentioned that you have some background in electronics. Did you ever have to study transistor logic? Did you ever make AND OR NOT and other logic gates out of transistors?

enter image description here

Did you work with theoretical logic circuits where you were given several gates, inputs, and you had to calculate what will be on the output?

enter image description here

This is what an FPGA is all about - field programmable gate array. Thus, it's just an array of logic gates which you could utilize to build a system off of them, which will do some simple or complex function. To make it easier, you can use hardware description language, which can be then synthesized and implemented as the transistor logic on an FPGA.

Thus, you need to know logic design techniques. What are the counters, flipflops, memories, types of logical operations, etc., and most important - how can you use all that to create a system that can perform desired function.

As mentioned in the other answers, the FPGA is a pure logic device and you can not work with analog signals directly. Instead, FPGA is usually accompanied with different peripherals including ADCs and DACs, and certainly an oscillator that provides the FPGA with the logical clock - that you need to know as well.

There is certainly more to it than just digital logic design, however I would suggest to get a strong grip on it first. Eventually, the rest of the aspects will come as you learn more.

Nazar
  • 3,142
  • 4
  • 35
  • 62
0

Have a read of FPGA programming, where to begin; it does what it says on the tin.

There is some ambiguity in your question, and I'm not sure if your question is too broad - "I'm asking about things AROUND FPGAs" - what do you mean by 'around'?

An FPGA by itself is somewhat useless. It's not a microcontroller, so it doesn't come with practical things like Analogue-to-Digital convertors, Digital-to-Analogue convertors, PWM controllers, UART/USART/SPI/I2C/I2S/CAN communication modules, etc., and there's no real memory/storage on board. Some of them can be written in code, but some will always require external circuitry.

ADC is (probably) the most popular of add-ons that people need. As an example, FPGA development boards seem to always have a Wolfson audio IC [example datasheet] included which allows you to connect a line-in source, line-out/headphones, and PC-type microphone to the FPGA via a choice of comminucation protocols. Have a read through the above datasheet and it will help you to understand the concept of integrating an external device, and just how simple it is.

From there it's only a small jump to interfacing the FPGA with another type of IC, like a FLASH memory or EEPROM IC - it's all about the communication between the two. You read the datasheet and then implement a controller in software on the FPGA.

I hope the above has been in the direction of your question. If not, please edit your question to be more specific.

CharlieHanson
  • 1,624
  • 10
  • 14
  • The fact I'm not English native speaker doesn't help. I'm not asking the hardware nor the software aspects of an FPGA. I'm not asking help at all about the FPGA itself as I stated in my question. I'll try with another analogy: if you want to study circuits you can grab alexandre/sadiku's book and you're good. But if you want a deeper understanding of how circuits work you have to study also electromagnetism and of course mechanic. So, which are the counterparts of electromagnetism/mechanic for FPGAs? I really don't know how to put my question in another way – user61801 Jun 05 '15 at 10:39
0

Things you need to know to get started with FPGAs are digital electronics circuits and their working principles [GOOD COURSE ON THIS TOPIC], hardware programming languages such as VHDL, Verilog and a solid knowledge in electronics generally.

Here is the list of most famous FPGAs manufacturers. So, choose&buy one, and start with the research.

Laki
  • 513
  • 1
  • 3
  • 20
0

I know how the website is against posting links, but I don't think there is a short answer to your question.

Basically you would want to go over this class: Introductory Digital Systems Laboratory. I'm sure your university also offers a class (or two) that covers the same topics. During my studies I had 3 classes covering the core materials required - Intro to digital systems, Digital systems & VHDL. Intro is about Boolean algebra and simple logic gates and how to implement and minimize simple functions. Digital systems is about more advanced topics, such as advanced implementations and components. VHDL is where you bring almost all of this material together to create something useful in today's terms. Good luck!

user34920
  • 1,872
  • 2
  • 22
  • 44