Electronics > FPGA

Complete newbie looking for a good practical beginers guide to programming FPGAs

(1/7) > >>

Garry G:
Hello, so I recently bought a cheep Altera Intel FPGA Development Board  to just play around with and hopefully learn to do something simple with. The board I have is a QMTEK Cyclone IV SDRAM Starter Kit (Model: EP4CE15F23).
Now I assume this if fairly rubbish, as it was fairly cheep, but as I said I just want something to learn the basics on. I've been a professional programmer for many years, but only ever an armature with electronics. I would say I only know the basics, although I am familiar with Boolean algebra type logic and assembly level programming. So I didn't think I'd be starting completely from nothing!

However, I'm finding this very confusing so far. Probably because my cheep board came with no instructions, unless you count a bit of paper with Chinese on it! I have googled and found many things, most of which appear to contradict each other.
I downloaded the Quartus II (free) version 13 software with what I believe to be the correct driver for my board, but this is a bit bewildering when you have no idea where to start.

I was hoping someone could point me in the direction of some good beginners resources. I'm sure there must be good beginner books written about starting out with FPGAs.

If I can get to grips with this it could be useful in my day job.


I was in the same boat as you.  I bought the open source Ice Breaker. 


Programming FPGAs has nothing to do with programming CPUs. You don't write instructions which execute in run-time as you would in assembler or in C. Rather you design the hardware, then you describe it. The tools then implement it and configure FPGA accordingly. You also can write test-benches which simulate your code to make sure the hardware you described works as you expected.

There are two routes you can go.

If you want to learn low level things, figure out what are registers (flip-flops) and what is combinatorial logic (LUTs), and how they combine together to produce RTL designs.

If you want to learn from the top, find the IPs you need (IP stands for "Intellectual Property" but in reality these are pre-designed blocks of logic), figure out how to connect them and go from there.

I'm sure there will be posts which recommend languages to start with, but it doesn't really matter - all of them can describe the hardware and do so very similarly. Select the language which is supported by your tools. If you like C, select Verilog or better yet SV. If you like Pascal, select VHDL.

I have the same QMTECH board and I think its good value. Not ideal for SoC/softcore stuff but for learning HDL it should be fine.

You can download the schematics, manual and demo verilog projects here.
You will need a USB Blaster download cable (about £8 on ebay for the knock-offs that I use).
Latest signed driver attached, as you normally have to download Quartus 21 to get it (6GB download).

I've also attached the TCL pinout file I use for this QMTECH board.
After you have created a new project go to Tools > Tcl scripts, select and run it.
All the IO pins used by board hardware are then named as shown in Assignments > Pin Planner.

You can use the latest Quartus if you like, although I use 20.1 which comes with ModelSim rather (newer Quartus uses Questa for sim).

Good luck and have fun.

There are also several online classes on udemy but they usually (obviously) target a specific board.


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version