Jump to content

Most powerful FPGA / SoC board with max peripherals AND external I/O connections?


Recommended Posts

Hello everyone!  I'm new to the forum.

I am looking for recommendations for the most powerful FPGA / SoC development board that still brings out external I/O connections.

As a retired software application engineer with an EE degree, I believe the introductory boards will end up being too simplistic for me, but the more powerful boards have great peripherals but little-to-no external I/O.  Having some external I/O leaves opportunities for growing the experimenting with external features other than the peripherals themselves.

(Or can I access internal FPGA digital I/O via the PMod connectors?)

So which Digilent board maximizes both of these?

I am thinking the Arty Z7: Zynq-7000 board best maximizes everything I'm looking for.  Does anyone have any other / better recommendations?

Thanks!

 

Link to comment
Share on other sites

Hi @OldGuyBry,

Most powerful is slightly subjective for various reasons. I suppose my questions would be along the lines of:

  • Is budget a concern?
  • When you say external I/O connections, what are you thinking of?
    • Just random I/O pins? 
    • Dedicated I/O pins like buttons, switches
    • Form factor random I/O like Pmod ports, SYZYGY, FMC connector
    • How many I/O pins?
  • You mentioned peripherals, what ones are you needing? (I realize this might be hard to answer if you are planning just doing whatever strikes your fancy so you don't have anything definitive in mind for the future)
  • Are you needing properly differentially matched I/O pairs for high speed connections or just I/O pins?
  • Since you mentioned the Arty Z7, are you planning on running some sort of processor (either baremetal or embedded OS like Petalinux)?

Thanks,
JColvin

Link to comment
Share on other sites

Hi JColvin!

Thank you so much for responding.

I am retired, so my goal is to learn FPGA programming on my own time and money.  My budget would be up to $400. I have no specific peripheral needs, but am comfortable with USB and Ethernet and might enjoy tinkering with HDMI.  I like the expansion capability of Pmod ports, but know nothing about SYZYGY or FMC connectors.

A few differentially matched I/O pairs would be nice, and would like 20 or so standard I/O pins.

I also like the Cortex A9 processor on the Zynq, as I feel it would complement the FPGA portion.

To summarize, this board would be a tool for self-educating and tinkering. I like how you phrased it "doing whatever strikes your fancy" - that is pretty accurate for now. I can start with the buttons, switches and LEDs, then grow into the peripherals later.  I/O pins would allow breadboarding options should I go in that direction.

Like I said, right or wrong, my impression is that the introductory boards are strong on I/O options but weak on on-board peripherals, yet the higher-level boards have good peripherals support but at the cost of (seemingly) reduced off-board I/O.

Hopefully this diatribe helps you understand where I am heading here.  Basically I'm trying to maximize my tinkering options 🙂.  There is no wrong answer other than picking a playground that gives me as much to play with as practical.

Thanks!

 

Link to comment
Share on other sites

Arty Z7 or the Zybo Z7 (https://digilent.com/reference/programmable-logic/zybo-z7/start, though it costs more) would probably be your best option then out of what Digilent has, though I would note that while the board as differential pairs of I/O pins, these are not impedance matched. Presuming you are talking about the USB Type A Host port, it's also worth nothing that USB OTG and USB device modes are not supported (https://digilent.com/reference/programmable-logic/arty-z7/reference-manual#usb_host).

While it does not contain a ARM processor nor is a Digilent board, I know that @zygot is a fan of the Numato Labs Mimas-A7 (he details a bit more about it on this post here: https://forum.digilent.com/topic/23509-cmod-a7-with-more-io/?do=findComment&comment=69791), which might be of interest to you as well especially if you are trying things out and are more into the FPGA side of things.

I guess another question for you to consider, though it sounds like you've put some thought into it already, if you are wanting to do FPGA development with a dedicated processor on the side for some stuff, or if you want to do application development on a processor with some FPGA resources available to you (community discussion on the topic here: https://forum.digilent.com/topic/22509-zynq-when-does-it-become-useful/).

It's true though that higher end boards, at least from Digilent, do tend to drop off on the collection non-dedicated I/O (not counting boards with an FMC connector which has 20+ I/O pins). Maybe one day that offering line up from Digilent will shift from dedicated peripherals (though things like DDR take up a lot of pins), but I haven't heard of anything (at least from where I sit).

Let me know if you have any questions.

Thanks,
JColvin

 

 

Link to comment
Share on other sites

1 hour ago, OldGuyBry said:

my goal is to learn FPGA programming on my own time and money.  My budget would be up to $400. I have no specific peripheral needs,

Your budget limit is the controlling factor here. But let's back up a bit.

In order to learn FPGA development the same advice applies to every one; you don't need to spend any money to do this. You can spend a good year reading the AMD/XILINX documentation, learning how the devices work, how to use the tools, how to use an HDL to create designs, how to simulate designs, etc, etc. I'd interpret your use of "programming" as an indication that you are short on knowledge about how programmable logic works and what's in it. This not a good position to be in when spending money.

Until you have a specific purpose in mind, forget about IO and "most powerful". Figure out an objective first. Before you can do that you need to have a good sense of what's involved in getting to that objective. Take my advice and learn the basics and tools before setting objectives. You can make better decisions in that position. Self-education is going to require some effort, so start off willing to put in the work.

What makes an FPGA suitable for a particular purpose is the internal resources and IO capability. FPGA devices in higher speed grades and having more resources cost more money, no surprise there. Then there are the IO. For using advanced IO features like LVDS, SERDES, transceivers, etc. the cost is in the board design. The PMOD ecosystem is for low performance IO. SYZYGY, FMC HSMC, PCIe, etc, is for high speed IO. You pay a good premium for being able to use these, and connecting FPGA carrier board connectors to add-on boards is well beyond your budget.

 

Edited by zygot
Link to comment
Share on other sites

A lot of FPGA devices come with embedded ARM cores ( actually, for Xilinx it's more like ZYNQ has ARM cores with a connection to programmable logic ).

Do you want to do software development or learn logic design and development? This is important because a ZYNQ device just complicates the development effort ( you have to do a HW stage and then a SW stage using different tools ). There's a steep learning curve to using both the HW tools and SW tools. If you want to learn "FPGA" I'd advise starting off with an FPGA device with no ARM cores. If you want to do software development, then why do you need programmable logic? 

I'm just trying to suss out what you are imagining that you are getting yourself into here.

Link to comment
Share on other sites

3 hours ago, OldGuyBry said:

I believe the introductory boards will end up being too simplistic for me,

I know a few people with better credentials and more focused objectives who would disagree with that assessment and found the Arty A7-35 to be enough to keep themselves busy for quite a long time. If your background is software, be prepared to re-invent yourself in the world of programmable logic. Seriously....

Link to comment
Share on other sites

While it is true that I spent the vast majority of my career developing application software (and therefore prone to invoke software terms by default), I did earn a degree in Electrical Engineering.  I have vivid memories of using Karnaugh maps and 74XX series logic gates. Early in my career I was paid to develop a pulse width stretcher board (and won a spot award for the result).

So whether you believe me or not, I do actually understand that HDL "code" is configuring hardware.

Working with FPGAs has been an interest of mine for some years.  My former company had dedicated firmware people who did all FPGA work, but for whatever reason was perpetually understaffed.  Because I understood the basic concepts and to minimize the personal impact of waiting months for FPGA support, out of desperation I went to the firmware group leaders and volunteered to assist.

They turned me down cold.  The manager also told me that I could not possibly understand what they do, and then went out of her way to make sure I understood she would not support training me in any way.

As desperate as they claimed to be for firmware people, they were never desperate enough to try a software guy with a EE degree.

So consequently I have a notion of unfinished business regarding FPGAs, and now that I'm retired I would like to learn what circumstances previously prevented me from doing.  I've already installed Vivado, and I'm in the process of selecting a development board that will challenge me.

And yes, I would like to tinker with something a bit beefier than using a switch to light an LED.

 

Link to comment
Share on other sites

16 hours ago, OldGuyBry said:

And yes, I would like to tinker with something a bit beefier than using a switch to light an LED.

Hey, looks like I unintentionally touched a nerve. I apologize for that. I took the whole of your wording in context.

The great thing about learning after your working career is that you get to learn about what interests you. During an engineering career people expect you to spend most of your time doing whatever they think is consistent with your defined function in the organization. I've learned a few very interesting things doing what other people have told me to do... but I've learned a lot more between jobs and in personal time exploring on my own. Good for you to embrace your newfound freedom to define who it is that you want to be.

The bad news about learning technology without getting paid for it is that, usually, you have a small budget to work with. My objective is to help you spend you money wisely. In the end, it's all your choice.

Buttons, switches and LEDs are usually the stuff of introductory digital logic courses. But LEDs might be more complicated and interesting to work with than you suspect...

Given a $400 budget and a determination to have some hardware to use before you know what it is that you want to do with said hardware, I'd go with the cheapest board you can find. Don't knock the Arty ( the 35T is no more ) as it has external memory, an Ethernet PHY, access to the internal 12-bit XADC, at least 32 user IO pins for things like UARTs and whatever you can connect to the board with 16 pins in a not very friendly configuration. There's plenty to keep you busy.

Of course keeping busy depends on what it is that you want to do. So to repeat my earlier comments, in a slightly different way I say think about that.

  • Do you want to do low level digital design, where you have to do all of the lowest level design, like binary arithmetic, implement your own custom interfaces and learn how do everything for yourself? Or do you want to just integrate free IP that does all of that for you?
  • Do you want to implement complex algorithms in logic that you design and understand or use programmable logic as a means of getting data into a processor to do all of the hard stuff in software?

There are no wrong answers to those questions. The smallest Artix device can let you do that; think CMOD-A35T. What the cheap boards won't let you do is implement all of the advanced IO features or play with 100 MHz ADC and DAC mixed signal kinds of projects. Well, there's the AD2, but you can't reprogram that with your own logic. But for a lot less than $400 you can see what that FPGA based platform can do.

I suggest that you browse the Cyclone IV or V stuff that Terasic has. The Cyclone V GX Starter board has all of the basic educational stuff plus a 40-pin header and a HSMC connector, external memory etc. Even though Cyclone board prices have doubled in the past 2 years it's still under your budget. The DE0-Nano or DE0-CV might be interesting to look at. Terasic boards generally don't have Ethernet PHYs.

The FPGA field is like being in the middle rung of a huge ladder... you can look downward toward the most basic atomic level of digital design or look up toward the most esoteric high level applications. Look either direction and there's almost no limit to where exploring might take you.. up or down. The problem with up is that the esoteric stuff cost lots of money and without the in depth knowledge that you get from a bit of time in the depths of low level digital design, the more limited you will be in what you can do in the more pricey realm.

So, do you know VHDL, Verilog or System Verilog? Do you care?

 

Edited by zygot
Link to comment
Share on other sites

2 hours ago, OldGuyBry said:

HDL "code" is configuring hardware

Not to make too fine a point of it, but HDL "code" isn't configuring hardware. Using an HDL to describe your logic design to a tool that then synthesizes, and then places your logic into the FPGA resources as an implementation is not what I'd call 'configuring hardware'. Unlike programming something like a micro-controller, which is creating a set of machine language instructions, digital logic has almost no boundaries, at least in terms of how complicated you want to go. In terms of absolute performance, yes that'll cost you lots of coin. In terms of learning new stuff? No boundaries. You might see this as a nonsensical quibble; that's OK with me.

BTW, even though the FPGA has been around for 40 years or so, no one has actually created an HDL that's designed specifically for synthesis and implementation. We're still dependent on simulation languages co-opted as design flow input. That's a whole topic that's been bopping between my ears for a while now.

Edited by zygot
Link to comment
Share on other sites

14 hours ago, zygot said:

So, do you know VHDL, Verilog or System Verilog?

I have the book "VHDL for Programmable Logic" by Kevin Skahill.  About twenty-five years ago I took an existing VHDL design and successfully tweaked a couple of its elements for a maintenance program (probably again because no firmware people were available).

While it is very similar in syntax to the programming language Ada (which itself is based on Pascal), I cannot honestly assert that I "know" VHDL.  When I purchase my development board, my goal is to develop each project first with VHDL, then when it is completely working, as an exercise re-implement it in Verilog.

No clue what System Verilog is - I'll cross that bridge when I come to it.

14 hours ago, zygot said:
  • Do you want to do low level digital design, where you have to do all of the lowest level design, like binary arithmetic, implement your own custom interfaces and learn how do everything for yourself? Or do you want to just integrate free IP that does all of that for you?
  • Do you want to implement complex algorithms in logic that you design and understand or use programmable logic as a means of getting data into a processor to do all of the hard stuff in software?

The short answer is "yes".  More accurately, the board will be a playground for my bored, retired engineering mind.  To answer questions like:

  • What can an FPGA realistically do?
  • How can an FPGA augment and enhance tasks I used to do purely in software?
  • Can I use an FPGA to perform image processing?

This is why I tend to be biasing to the more interface-rich boards - they offer more opportunities for learning and tinkering.

 

Link to comment
Share on other sites

26 minutes ago, OldGuyBry said:

When I purchase my development board, my goal is to develop each project first with VHDL, then when it is completely working, as an exercise re-implement it in Verilog.

Be aware that VHDL has become a bit aged. It still only supports integers up to signed 32-bit for instance. There are IP that you might not want to do for yourself, like DDR controllers, that require Verilog. Of course you can, with some limitations, do mixed HDL designs. The big difference comes in simulation. Simulation and testbench writing isn't widely covered in public and is a bit of an art form. In FPGA design you should have a 1:1 ratio of source/trestbench files.

Link to comment
Share on other sites

6 hours ago, OldGuyBry said:

Can I use an FPGA to perform image processing?

Of course. On a $400 budget? Perhaps. If you confine yourself to VGA, then absolutely. HDMI has some options within your budget. Check out Will Flux's Project F website ( and find out what System Verilog is ). The Nexys Video is a good platform, but a bit over your budget. The Mimas A7 has similar functionality but I wouldn't consider it to be a good platform for beginners. For experienced FPGA developers? Sure. FPGA vendors tend to be stingy with free video IP and it might be available in one version but not the next one. If you want to have control over all of you source files then no there's a huge arena to play in.

[edit] I didn't really finish my thought here so... creating a video source is something that even really cheap FPGA boards can do. Acquiring video so that you can manipulate it in logic tends to be a much more expensive enterprise. You may have to fudge your budget limitations. The Nexys Video has in and out HDMI connectors. There are power supply issues with HDMI on this board ( when the HDMI cable is connected to other hardware with its own power supply ), but nothing that prevents it's use. I use it with a SDI 3G 1080p camera and SDI to HDMI converter. Don't discount the expense of finding a usable video source for use with a particular FPGA platform. There are options, but not as cheap as for perhaps the Raspberry Pi ecosystem. You don't need video input of course to do lots of image processing projects.

If I haven't been clear about it, most of my comments are subtle warnings that it's easy to under estimate the total cost of doing anything, especially if you don't have a clear goal and path in mind.

 

Edited by zygot
Link to comment
Share on other sites

Regarding image processing, though not quite 'processing' (as in processing an incoming image), here's an example from a different Forum member where they were able to do real time fractals on a Cmod A7 35 (same FPGA as the Basys 3 / Arty A7 35):

Thanks,
JColvin

Link to comment
Share on other sites

On 7/25/2023 at 5:10 PM, zygot said:

Be aware that VHDL has become a bit aged. It still only supports integers up to signed 32-bit for instance.

This is incorrect. VHDL prescribes its scalar integer type to be able to cover at least the range [-(2**31-1), +(2**31-1)], but specific implementations are free to support a larger range. In addition, the standard library provides "signed" and "unsigned" types that implement bit-arrays with arbitrary bit-width. If you need a 1000-bit integer, you can have it; synthesizable and all.

I don't know much about Verilog myself, but from where I stand the two languages mostly just reflect two different families in programming language design, with VHDL falling in the Algol/Pascal/Modula/Ada school in terms of its syntax and type system, with Verilog having less clear heritage, although its operator set suggesting its designers hail mostly from the C school. In terms of semantics and expressive power, I think both languages are pretty comparable; with perhaps a small edge to VHDL from its more elaborate type system and support for operator overloading, making its type system more powerful (but I don't know Verilog well enough to say that with any level of certainty, having no intimate knowledge of its type system). Also, generally, VHDL code appears to just be more verbose than Verilog, which is mostly a matter of taste if you like that.

I would be interested to hear some other examples of why you think VHDL has become aged, especially compared to Verilog.

Link to comment
Share on other sites

1 hour ago, reddish said:

This is incorrect. VHDL prescribes its scalar integer type to be able to cover at least the range [-(2**31-1), +(2**31-1)], but specific implementations are free to support a larger range.

And which FPGA vendor do you use who supports the integer type having a larger range? For synthesis, most people don't use type integer for a variety of reasons. When you have to cast a std_logic_vector or any other array type to integer, then you have have problems to deal with. This is especially true for simulation if you want to print the contents of a 64-bit std_logic_vector to a file whenever it changes as the simulation runs.

If you tools don't support a language feature that you want to use, what good is it?

Personally, I'm a lot more comfortable designing in VHDL, because that's what was required when I started doing FPGA development. Knowing just VHDL these days makes you pretty inefficient in my experience. BTW, though Fortran was what they taught ( or not in the case of the course that I took ) when I was in school, Pascal was the only language available for the first PC that I owned (MC6800 based). I know the lineage.

Edited by zygot
Link to comment
Share on other sites

1 hour ago, reddish said:

I think both languages are pretty comparable; with perhaps a small edge to VHDL from its more elaborate type system and support for operator overloading, making its type system more powerful (but I don't know Verilog well enough to say that with any level of certainty, having no intimate knowledge of its type system)

Perhaps you should learn Verilog? You could then tell us for yourself. By the way, I'm not as conversant in Verilog or System Verilog as VHDL by a long stretch. It's impossible to implement a Cyclone DDR controller hard block or soft IP using only VHDL and get it to work ( I've tried ). I've instantiated Verilog DDR IP ( both hard controllers for Startan 6 and soft-controllers for later families ) in a VHDL entity for a variety of logic vendors. Try simulating that with any of the vendor supplied simulators using VHDL as the toplevel entity.

Today, I encourage newcomers to programmable logic to start with Verilog. I doubt that VHDL is required by anyone these days. A few decades ago some government related customers required source code to be in ADA and VHDL. No more, as far as I can tell.

I don't see a point to having a Ajax sucks, FC Volendam are great debate. My comment was merely a reflection of frustration that I currently experience using tools and HDL friendly IP from various logic vendors.

Edited by zygot
Link to comment
Share on other sites

9 hours ago, zygot said:

 

> And which FPGA vendor do you use who supports the integer type having a larger range?

Your comment was a blanket statement about the language VHDL, not about a specific implementation. It's in everyone's best interest to be precise in your statements on a public forum. Also, the availability of the signed and unsigned types in the standard library makes the range of the integer type largely immaterial.

> I don't see a point to having a Ajax sucks, FC Volendam are great debate.

Indeed. So perhaps it is best to refrain from comments like "Ajax used to be great in the 1970s but they suck now". Although, that would at least have the benefit of being true.

It was you who said: "It still only supports integers up to signed 32-bit for instance", which is not only false, but it also suggests that you have several examples at hand. I would truly be interested to hear them, but I figure that was merely a figure of speech, right? So really we're stuck to a single example that turns out to be false.

> My comment was merely a reflection of frustration that I currently experience

I'm sorry to hear that, but that's a pretty bad excuse for uttering untrue blanket statements. Personally, I have found that the best way to avoid being called on bullshit is not producing it in the first place.

Cheers, Sidney

Link to comment
Share on other sites

7 hours ago, reddish said:

Your comment was a blanket statement about the language VHDL, not about a specific implementation.

Obviously, that's what you inferred. It's not what I intended for anyone to infer. Frankly, I just use HDLs to the limits that the FPGA and simulation tools allow me to use. I couldn't care less about the other stuff that isn't available for completing a task at hand. The context of my comment was a discussion of FPGA related issues as it relates to choosing a platform with a limited budget, not HDLs per se. I, incorrectly as it turns out, assumed that people would read my comments in the context of using FPGA development tools. It's generally well known that programmable logic vendor tool only support a subset of VHDL, Verilog or System Verilog. BTW, I didn't make any comment on VHDL types other than integer, you brought up that subject. Perhaps you might read my treacherous 'slander' about VHDL integer type in the context of encouraging the OP in his quest to become conversant in both VHDL and Verilog; that was the intention.

Simulation languages like computer software languages all have features that might be good or bad depending on what you are doing with them. I'm not a language theorist, just a working stiff who has to use them.

I'll assume that all of my comments and questions that you chose to ignore mean that you agree with me, not that it matters at all.

There's nothing about this little exchange that's useful to this thread. You can always start a new thread that people might want to read...

Edited by zygot
Link to comment
Share on other sites

> Obviously, that's what you inferred.

I didn't infer; I just read what you wrote, which was incorrect. In a technical context, on a public forum, I feel it's best to err on the side of being precise.

Also, I would have been genuinely interested to have an exchange of ideas about the extent to which VHDL shows its age, especially in comparison with Verilog, given that I know not much about the latter. But such an exchange was never on the table it turns out, even though your words suggested you had some things to say on that topic. Pity.

Of course, I will join you in lamenting the state of current-day HDL toolage. The days that FPGAs were the exciting-new-technology-on-the-block are gone for good I'm afraid, even when you and I would like to see it differently. The innovation of the chips has slowed to a crawl, as has the progression of the HDLs. I think that's true for both Verilog and VHDL (the languages as defined by their respective standards committees) and for the hardware synthesizers. Tough luck for us; we'll just have to make do with the imperfect languages and tools that we have, or find another hobby or line of work.

Link to comment
Share on other sites

I'm regrettably late to this, but I'm going to ask that discussions around nuances, feasibility, and accessibility of toolchains and languages to configure hardware be relegated to their own thread in https://forum.digilent.com/forum/32-technical-based-off-topic-discussions/.

On an alternate note, while I am inclined to think that it is warranted to mention to fellow humans wanting to get into FPGAs for the first time that FPGA design is distinct from other aspects of EE or CS (as many new users on this Forum alone are surprised to learn that they cannot simply jump into machine learning with an FPGA), it is not appropriate to presume the other person overestimating what they are getting into because, last I checked, pretty much nobody on this Forum has met somebody else on the Forum in a professional setting.

Thanks,
JColvin

Link to comment
Share on other sites

7 hours ago, reddish said:

I didn't infer; I just read what you wrote, which was incorrect.

You read what I wrote out of context and inferred the wrong thing. What I wrote in the context of FPGA development and the discussion with the OP was correct. Fear not, I've started a new thread for discussion about HDL ( in the context of FPGA development ). https://forum.digilent.com/topic/26425-hdl-topics/

 

Edited by zygot
Link to comment
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
×
×
  • Create New...