• 0
Jonathon Kay

Would I be able to self learn FPGA programming Zynq 7000 series?

Question

Dear all, 

Would need some affirmation from any engineer out there. Would I be able to self learn FPGA programming? My background is mainly electronics, a jack of few trades but master of none kind. I could understand digital circuitry, did some programming on Perl for CGI scripts and C++. I used to program the good old 8051 microprocessor and Microchip PIC16F84 in assembly. But these are like 20 years ago. I am way behind in terms of technology.

I am thinking deeply to invest in buying the Zedboard as I observed most of the online tutorial are based on this development board. But it will cost me a bomb and I need to be sure I am investing on the correct thing. I understand Zedboard is already in the market for many years, would it still be the right platform to invest in?

Would greatly appreciate any advise on this. In addition, what forum would best serves me in this learning process?

Thanks.

Share this post


Link to post
Share on other sites

19 answers to this question

Recommended Posts

  • 1
Posted (edited)

@Jonathon Kay

You say that you want to teach yourself FPGA development and you gravitate toward a ZYNQ device... so I assume that you want to do software and perhaps ease into FPGA development. FPGA devices with a hard ARM are really uControllers with an attached FPGA in the package.

Is the Zedboard the right platform for what you want to do? I don't know because you don't know what you want to do. Before you buy a board that you consider pricey for you budget you should have a plan for accomplishing short term goals. In fact before you buy any development board it should support some particular application.

If you want to learn FPGA development then you can spend very little on a board with just a plain FPGA device. These are complicated devices. The development tools are complicated. Just to get you thinking I'll propose a plan for you (notice the underlined part of this sentence).

  • Pick an HDL ( generally Verilog or VHDL). If you don't know either I'd suggest Verilog. ( I mostly use VHDL because that's what I'm comfortable using but Verilog definitely has some advantages, including the fact that if you want to simulate some things like DDR memory systems using Xilinx tools you will have to use Verilog)
  • get a good textbook on the fundamentals of HDL design and syntax.
  • Download the free version of the Vivado tools. ( if you are stuck with DSL as I am this task alone might dissuade you from pursuing FPGA development.)
  • Use the Document Navigator to find the users references describing all of the resources for a particular family. I suggest that you start with Artix as there are a number of inexpensive Artix boards. You will see what I mean when I tell you that FPGA devices are complicated. There are manuals for IO, clocking, transceivers, an more that you should have a working knowledge of.
  • Try building a known good demo for an Artix board in Vivado. An all HDL demo with testbench source for simulation included would be ideal.

The truth is that you don't need to buy hardware or even spend any money learning FPGA development. Just use the free tools and learn how to use the included simulator. True, some of us need those blinky LEDs to motivate the work involved but do you really want to spend money on LEDs before you have a really useful project using actual interfaces? If, after following the plan outlined you haven't been frightened off, then you might be ready to think up a project ( how about making your  own PCB oven controller for instance ) and choose a board that suits your needs. Save your money for when you have a specific project and buy a board that let's you accomplish it... or at least until you have enough experience and knowledge to make a well considered general purpose board selection for non-specific development.

I work with FPGA that have ARM cores and FPGAs that don't. The development processes for ZYNQ FPGAs are a lot more complicated than those for HDL development. Why start off with the hardest and most complicated stuff first?

Edited by zygot

Share this post


Link to post
Share on other sites
  • 1

@Jonathon Kay

You definitely can. Just give it some time. It took me three month in the beginning to program my first working VHDL code. Personally, I recommend VHDL because in my view its structure is a closer reflection of hardware.

I agree with zygot that you can learn programming without any board just in Xilinx Vivado. Keep in mind that you will need to learn Vivado and I recommend video tutorials.  Udemy.com is not bad for fast learning.

However, programming a physical board brings more satisfaction than simulations. Zedboard seems to be an overkill for your goals. I had good experience with less expensive  Zybo and, especially, with the MicroZed. The latter is designed with LVDS FPGA I/O thus capable to operate at much higher data rates then the Zybo board. Pretty much everything developed for the Zybo and Zedboard is applicable to the MicroZed.

As zygot explained, Zynq is a combination of two very different hardware:  ARM cores and FPGA. It complicates using it, however, it also allows to achieve better efficiency and functionality in a smaller package. I am convinced that it is worth the effort to learn.

Where to start? I would start with video tutorials explaining Vivado and then would start learning VHDL using the Vivado editor and simulator.

Good luck!

Share this post


Link to post
Share on other sites
  • 1

@Jonathon Kay,

The short answer to your question is that, Yes, you can.  I self learned on the Artix 7, and later on Altera's ARM+FPGA board, the Cyclone V.  It is doable.

The long answer to your question is that there are a lot of things to learn, and not all of them are easily self taught.  Particular lessons include not only the language itself (I also recommend Verilog), but you should also have a good understanding of clock crossings (what they are and how to manage them), design to resource mapping (this can be learned through trial and error--pay attention to how much logic your design uses), how to correct timing problems (you can wait 'til you get some, and write back here for help if need be), how to connect to external pins for both inputs and/or outputs (PMods are good for this), as well as how to design a component using the AXI bus.  I recommend learning how to use AXI-lite first, but the reality is--if you want to use a Zynq device, you'll need to be able to make and integrate AXI peripherals and AXI-lite is a whole lot easier than just AXI.

You'll also need to learn very quickly that FPGA designs are not nearly as easy to debug as software designs--to include microcontroller designs.  Most early/beginner lessons discuss how to use LEDs to debug a design.  These are great for your first lesson or two, but you'll quickly outgrow them.  Make sure you take some time to learn the other debugging methods available to you, or you will really struggle to get any significant design working.  Remember, the simulator is  your friend.  Learn how to use it early, and use it often.

Further, when you get to the point where you want to build an AXI peripheral, I strongly recommend having an understanding of formal methods.  These come for free with Verilog, not so much with VHDL or SystemVerilog.  (It's amazing how easy it is to debug someone else's AXI-lite core using formal methods ... your own core would be easier.)

Just my two cents,

Dan

Share this post


Link to post
Share on other sites
  • 1
Posted (edited)
1 hour ago, D@n said:

The short answer to your question is that, Yes, you can

"Yes." definitely is a short answer. Confusing you ( the questioner ) with I (Dan) might be more than an existential problem. What Dan can do in a short period of time may not be what everyone can do in a period of time that they are willing to commit to. (Dan's a fairly bright guy...). My assumption is that the geniuses out there aren't going to ask for help from unknown sources, if at all. (No offence intended to either of you...) What follows in @D@n's post after the Yes part speaks for itself as far as the complexity of using the Zynq devices.

About the Zynq thing. It is possible to create a design for the Zedboard that doesn't use the ARM cores. It's just not how the tools are set up. Xilinx doesn't even treat the Zynq devices as the same as the families that they are based on. I strongly suggest that beginners reserve Zynq development until after they get some degree of comfort doing HDL development. If you want to use the Zynq PL and tell yourself that you are doing FPGA development then you will have to know how to do logic development in an HDL anyway.... it will just be more complicated, and you will have to learn the SDK tool with all of its problems and bugs. You will also be stuck with the 'board design' development flow and all of its headaches... something that you can avoid with HDL-only designs. Just look at all of the posts to Digilent's site about how users' can't replicated the demos with versions of Vivado that the demos weren't build with ( and sometimes even those that were). HDL-only designs are mostly Vivado version agnostic; and when there is an issue they are easily resolved.

Do the HDL first and if it whets your appetite and you've proven to yourself that you're ready to move onto the next step try the more expensive ( in time and money ) Zynq.

As @Notarobothas pointed out Digilent is not the only vendor to consider once it's time to commit your hard earned bucks to hardware. Look at the Syzygy based stuff from Opal Kelly. They have a Zynq or non-ARM main board and their IO is a lot better thought out, implemented, and functional for real world projects than the typical Digilent boards, unless you are doing video.. or have a really tight budget. Be careful of boards from distributors like Avnet as support and add-on interfaces probably won't be available and they are in the long run much more expensive. In my experience, hands down, the most usable very low cost, general purpose, easy to integrate into a project design FPGA development platform available is the Terasic DE0 Nano ( not a recommendation; just a testimonial ). At least check it out.

[edit] I should mention that one thing that Digilent does do better than any other vendor that I know of ( could still be better yet ) is provide support. Just try to find a place where discussions like this can easily be found somewhere else. You only appreciate having support when you need it and can't get it... then it's invaluable. It's the major reason that I bother to spend the time and effort to contribute to it for free.

Edited by zygot

Share this post


Link to post
Share on other sites
  • 1
2 hours ago, zygot said:

"Yes." definitely is a short answer. Confusing you ( the questioner ) with I (Dan) might be more than an existential problem. What Dan can do in a short period of time may not be what everyone can do in a period of time that they are willing to commit to. (Dan's a fairly bright guy...). My assumption is that the geniuses out there ...

Wow, I'm a genius now!!  :D

Okay, to seriously answer the question, I thought I'd ask those following my twitter feed.

The poll will take approximately a day before Twitter reports the results to everyone.  That said, of the first 16-votes, the results are overwhelmingly self-taught from on-line sources.    While this is hardly a statistically significant sample, and while my twitter feed is probably a touch biased, it's still a fascinating data point.  Feel free to join in with your own vote, and lets see how this turns out!

Dan

Share this post


Link to post
Share on other sites
  • 1
10 minutes ago, D@n said:

Wow, I'm a genius now!!

I've worked with geniuses ( I'm not one ) and I've met you so don't get too excited yet ( I don't know the emotion for playful smirk ). Of course my opinion probably won't mean much to a real genius. I know of a certain POTUS who thinks that he's a genius but constantly proves the opposite. Tricky thing that intelligence assessment is...

Anywhoo... I really started this post to say that this type of question really has no answer. Everyone has different goals for doing FPGA design.

  • Some people just want to expand their range of knowledge or feel a need to update their skill set.
  • Some people just have to get by in a class that their taking.
  • Some people want to build stuff and use an FPGA as a component. I'm in this group though I do like the intellectual challenge. That's why I really like the DE0 Nano and CMOD-A7 modules. I can conceive of, design and layout, and receive a PCB in a week or so onto which these modules are attached to create a solution to a problem not covered by pre-existing hardware.
  • Some people just have an intellectual curiosity.
  • Some people just want to play with FPGA platforms and any interface add-on boards that might be available.
  • Some people want to do all of that.
  • Few of us has an unlimited budget

The answer to such an inquiry is unique to the person asking it. Having a variety of perspectives is very helpful. Covering all of the details one will encounter doing FPGA development is impossible in a forum.

Share this post


Link to post
Share on other sites
  • 1
Posted (edited)
50 minutes ago, D@n said:

That said, of the first 16-votes, the results are overwhelmingly self-taught from on-line sources. 

Hmmm. I'd just point out that being self-taught and being self-taught and able to do something useful with that knowledge are not always the same. Neither is being self-taught and being educated. It depends on where you get your information.  People, even very well educated ones, can come to quite wrong and harmful conclusions being self-taught ( I'm thinking if anti-vaxers and flat-earthers as examples) .I say this as one who is constantly trying to learn independently. Once you know enough about a subject it's easier to do more meaningful self-testing of your self-learning. I suppose that the measure of your self-taught knowledge is the practical outcome or product of knowledge. Of course product that isn't properly tested and verified might not be a good measuring stick either.

Then again being highly educated in academia is no guarantee of ability to do anything useful in a commercial setting.

To confuse things I come from professional experience in designing commercial products that are highly tested. The problem for the professional engineer is that his employer isn't likely to allow him time to pursue educating himself in areas not immediately profit making. I've learned how to do stuff that I never had time to learn as an employee... but now that I have some sense of how to test knowledge I might have an advantage in assessing the worth of what I think that I've learned. 

Edited by zygot

Share this post


Link to post
Share on other sites
  • 1
Posted (edited)

>> But it will cost me a bomb and I need to be sure I am investing on the correct thing.

My entry for the "shortest answer" competition:

Get a CMOD A7 or similar. It's dirt cheap - consider it disposable and save the idea of buying something "more capable" for long term motivation. Starting with an expensive board, then being afraid to use it for fear of breaking it does not help with learning.

Zynq is significantly more complex than Artix and the FPGA part is less accessible.

Edited by xc6lx45
optimized some words out :D

Share this post


Link to post
Share on other sites
  • 1

Wow!  That twitter survey surprised me a bit.  Based upon a (self-selected) sampling of all FPGA designers (who follow my twitter feed), a full 65% of them are self taught!

From that (un)scientific study alone, I would judge that @Jonathon Kay is in good company  😎

Dan

Share this post


Link to post
Share on other sites
  • 1
Posted (edited)
1 hour ago, D@n said:

Based upon a (self-selected) sampling of all FPGA designers (who follow my twitter feed), a full 65% of them are self taught!

Wow!!! Based on a (self-selected) sampling of all FPGA designers ( who are me ) it's un-scienctifically proven that no one cares. It's hard to tell if you are being serious or just in a 'mood'. It could be that no one who does this professionally follows your twitter feed... but all of your qualification may be a hint. Facebook currently needs pollsters with your skills.

No one here is discouraging anyone from learning anything on their own. I can say from experience that it is a lot harder to do in a vacuum than it is in a group ( I've done both ), easier to get bad advice or habits without critiques from  multiple sources and harder to get things right without a historical bedrock of accumulated knowledge proven by experience and testing over many years. It also take more discipline and willingness to assume all of the roles that a group setting provides; like peer reviews, QA testing, customer testing and product misuse etc. Even in the competitive corporate setting we all have different abilities.

Sadly, it's clear that these days the few who know how to manipulate trust and paranoia to control others opinions and viewpoints are gaining a commanding presence in our connected world ( or perhaps,  semi-connected world, considering the rise in numbers of people gripped by totalitarian regimes ).

None of those things are reasons not to pursue new skills and knowledge. In the end none of this matters for individual goals; but differing perspectives might be helpful.

Edited by zygot

Share this post


Link to post
Share on other sites
  • 1

As a member of the self-taught group, I will agree that it is possible to learn how to use a Zynq or any other board. However, you will absolutely run into the fact that that zygot put nicely where you will need:

1 hour ago, zygot said:

 a historical bedrock of accumulated knowledge proven by experience and testing over many years. It also take more discipline and willingness to assume all of the roles that a group setting provides; like peer reviews, QA testing, customer testing and product misuse etc.

You can readily get an understanding of the basics, but you will also need (to loosely quote Dan) "an understanding of the formal methods" to both create and verify work. Otherwise you will run into the mentioned "I ran the demo, but tried to change one thing and now nothing works"; it's hard to know what you're doing if you don't know how it works.

So is it possible to learn? Yes, but if you're wanting to do complex designs (which you only learn which ones are complex by trying to build them yourself) you'll need to dedicate more than just spare time on the weekends to learning. The phrase "reap what you sow" is applicable here I think.

Share this post


Link to post
Share on other sites
  • 1
Posted (edited)

@Jonathon Kay

Well you've gotten some good insights from a number of pretty smart people... and me as well. You are the only one who can evaluate your motivation and ability to learn. Given your preparation you obviously have the ability to learn. The concepts are difficult, the devices are complicated, and the tools are both of those and not always easy to work with. The admission is free but to achieve any kind of satisfaction, as you pointed out, will require a good deal of effort, even if you are a quick study. To tell you otherwise would be cruel.

About simulation. You simply can't effectively design and debug stuff with FPGA devices without having skill using the simulator. It's a good teacher. I've been doing this for over 30 years ( well using programmable logic at least ) and the simulator and I are old friends and constant companions.

You don't have to dedicate all of your free time to learning this stuff but it will be challenging. Fortunately, Digilent provides a community to help ( as you see this might require wading through a lot of verbiage...). There is no point where you can arrive at and say that you know it all.. after 30 years I can't see a finish line. The good news is that you can ease into it and start with simple goals that grow into larger goals as you gain experience. It's  like a marathon or triathlon event. You don't have to be the first to cross the line to accomplish goals that are suitable to your abilities and level of interest to enjoy the benefits of hard work.

My final words: read, read, understand, read, read, experiment..simulate, experiment..simulate.... and occasionally build some stuff in hardware along the way.

Oh, and a warning. You will find this to be very unsatisfying and frustrating if you try to do do anything without proper preparation.

Edited by zygot

Share this post


Link to post
Share on other sites
  • 1
Posted (edited)

@Jonathon Kay

My recommendation is to start with this board and follow tutorials from here. Download and install recommended Vivado versions not the latest.

This board is very affordable and has everything to start. Tutorials will give you a picture of the design process with Vivado. It will help to see integration of the FPGA part in the system. Udemy Zynq tutorials are applicable to this board with minor corrections. I wish to have this when I started.

It might be hard but it is a lot of fun as well and without fun who would do it.

Edited by Notarobot
appendix

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Hi Zygot, Dan, Notarobot, JColvin and xc6lx45, 

Appreciate your response on this post. You guys have brought forward many critical points which requires a lot of reflections on my part. I can't even summarise the points and come to a cohesive conclusion! But let me try to put this old rusted mind in order with these summary -

  1. You don't need to jump into Zynq platform if all I wanted is learning FPGA programming
  2. There are many FPGA development boards around that does not combine both the FPGA and Arm processor (like Zynq) which complicates the entire learning process due to additional resource allocation and configuration. There are cost effective development boards (Artix, Zybo, Microzed, Syzygy, Deo Nano)
  3. You need to burn your weekends and weekdays to have make meaningful progress. Otherwise, don't start. 
  4. You need actual real life projects, otherwise, it will be like learning to drive using a simulator. Or signing up for a trail run but only training through a treadmill.

The prime motivation for this sudden urge to learn FPGA is pretty simplistic -

  1. I feel handicapped at work by my inability to test various components/peripherals/functionality of the boards that my company is developing. We do have a lone FPGA engineer which are tied up with many other projects and things do get complicated when something doesn't work and there is no way to prove that it is NOT a hardware issue. If we are using a ucontroller, I would have independently written a bare firmware to communicate with various modules and verify that all is in order. With the Zynq, I can't even make a pin goes high or low without him providing the bitstream. Things can get very frustrating after wasting a few days of troubleshooting to find that certain pins are not asserted or assigned accordingly. We are using Zynq 7000 series, which explains why Zedboard. 
  2. Expanding my skill set in order not to be irrelevant in the company. Mortgage still has a long way to go while age is fast catching up.

I have my reasons for asking this question in the forum -

  1. I was warned that FPGA programming is difficult. But I refuse to believe it's complexity will defeat me considering I have been surviving the workplace in the past 2 decades self learning all different skills. 
  2. I have my roles and responsibilities in the company and this limits my time to explore and learn during work day. Even weekends, I could only possibly spend 5 hours. 
  3. All learning will be on my own time and cost. So when i saw the price tag of the Zedboard, I know I would be shattered if I failed to make full use of it after a period of time. I would have jump right in if the Zedboard is the price of a Raspberry Pie. 
  4. Most udemy tutorial needed a Zed board. 

Would like to thank all who responded. I would look into some of the development boards mentioned (especially those that utilise Zynq but cheaper versions). 

Good day to all. 

Edited by Jonathon Kay

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Hi,

there's a lot of new information in your last post. You aren't just "trying" FPGA but have a professional interest in Zynq.

Don't let anybody scare you it's "difficult" and go for it, possibly with the cheapest board, no tutorials and low expectations like, blinking LEDs for quite a while.

Given the price tag of any industrial training coarse, an FPGA board for self-study is a no-brainer.

Maybe save some money to buy your FPGA engineer a coffee once a week, with some questions in mind :)

 

Edited by xc6lx45

Share this post


Link to post
Share on other sites
  • 0

@Notarobot, appreciate your recommendation on the board and the tutorials. Will check it out very soon. 
 

@zygot, thanks for the many advice. Based on your explanation (which i agree), the realistic course of learning should be focusing on FPGA before attempting to work on chips like Zynq that added a layer of complexity due to the combination of both the FPGA and Arm. But due to work environments which uses the Zynq 7000 series chip extensively, I would want to quickly be able to work with them.

Share this post


Link to post
Share on other sites
  • 0
2 hours ago, Jonathon Kay said:

due to work environments which uses the Zynq 7000 series chip extensively

I suspected that this is the case. I appreciate the feedback.

You will find your way through this. Have some fun with it!

Share this post


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