• 0
SigProcbro

Best FPGA board to start with?

Question

Hi guys, I am looking at getting a cheaper FPGA board (<250), preferably less than $150.

I'm a little confused on what I should buy. The Basys 3 is popular and has a number of courses posted online which makes it attractive, but sadly it lacks DDR ram which somewhat limits its use(maybe that's irrelevant for someone starting out, I don't know).

I also looked at the two versions of Arty: The Spartan 7 and the Atrix 7. It looks like the Spartan 7 is cheaper for a bigger FPGA but I'm not sure how these compare but the bigger Atrix-7 is much more expensive. 

What do you guys suggest? Is having onboard DDR important for someone starting out? Having a course to follow which uses the Basys 3 is super nice but I kinda feel I will run out of memory super quick, even more so if I try adding a camera and doing vision stuff. 

Share this post


Link to post
Share on other sites

22 answers to this question

Recommended Posts

  • 0

My views - if you want to learn low-level stuff (eg. VHDL/Verilog coding), buy a board with lots of buttons, LEDs, switches and different I/O over a more application specific development board. I think think that the Basys3 is pretty good for this and better than the Arty. Once you have sharpened your skills, then look for a board that will support your projects.

If you want to initially work at a systems level, using IP blocks and so on, then look for a board that has interfaces that supports your area of interest. Debugging H/W when you are also debugging FPGA designs is no fun. A Zynq based board (e.g. Zybo) would be good, as it already a CPU, that is much better (faster, less power, better features) than a CPU you could implement in the FPGA fabric. Just be warned that with a Zynq system the SDRAM memory is usually on the far side of the processor system, so you don't get direct access to it - you need to access it over an AXI interface and compete with the CPU for bandwidth.

Share this post


Link to post
Share on other sites
  • 0
1 hour ago, hamster said:

My views - if you want to learn low-level stuff (eg. VHDL/Verilog coding), buy a board with lots of buttons, LEDs, switches and different I/O over a more application specific development board. I think think that the Basys3 is pretty good for this and better than the Arty. Once you have sharpened your skills, then look for a board that will support your projects.

If you want to initially work at a systems level, using IP blocks and so on, then look for a board that has interfaces that supports your area of interest. Debugging H/W when you are also debugging FPGA designs is no fun. A Zynq based board (e.g. Zybo) would be good, as it already a CPU, that is much better (faster, less power, better features) than a CPU you could implement in the FPGA fabric. Just be warned that with a Zynq system the SDRAM memory is usually on the far side of the processor system, so you don't get direct access to it - you need to access it over an AXI interface and compete with the CPU for bandwidth.

Thanks, I was actually little worried about the Basys 3 when it cames to I/O since it seems to only have pmod connectors and no female hookups or Arduino interface thingy(lol). 

I was also interested in the SoC products both here and the Altera one DE-10 nano. But since I'm just starting FPGA programming it seems like adding a hard processor into the mix with its own architecture which the FPGA will need to do interact with will make things even more difficult versus straight VHDL programming. 

I haven't used the FPGA tools before but the IP generator seems somewhat confusing for all the boards. 

Share this post


Link to post
Share on other sites
  • 0

I'd look at simple, cheap boards like CMOD A7. Don't think too long, get whatever low-end board and consider it disposable. Human nature is the enemy - we tend to use too much time for selecting the perfect FPGA board and too little time to actually use it 🙂

if you are disciplined, you can manage without hardware for a long time,  use Vivado (no cost) up to to bitstream generation, analyze the implemented design, read timing reports and warnings (!).  Adding hardware then gives you some feedback "it does work" or (most likely) "it does not". If the latter, you get little additional information out of it (unless you use integrated logic analyzer, which is like shooting sparrows with cannons for simple projects ) so it's back to the simulator...

Share this post


Link to post
Share on other sites
  • 0
11 hours ago, SigProcbro said:

What do you guys suggest? Is having onboard DDR important for someone starting out? Having a course to follow which uses the Basys 3 is super nice but I kinda feel I will run out of memory super quick, even more so if I try adding a camera and doing vision stuff. 

I agree with all of the preceding advice. Your goals are quite wide so picking a specific board is tough. Also, we don't know what skills and experience you bring to the problem.

If you are just starting out learning FPGA development I do suggest that you try putting off any purchase and dive into development with the tools. Start off by figuring out how to verify your designs with simulation. That's all one really needs and if you don't count the cost of downloading the tools it's all free, except for your time.

If you just have to have some positive 'tactile' satisfaction as motivation buy the cheapest thing available. The Arty 7 is almost ideal, a CMOD cheaper but with some issues and limitations. Personally, I've found the Terasic DE0 Nano to be most useful for prototyping... but that's another universe. With even minimal hardware that connects to Vivado you can try out other verification tools like the ILA IP.

There's nothing wrong with having long term goals but please do avoid trying to hit a homer on the first pitch. You might well find that developing FPGA  skills is more bother and effort than you are prepared to invest. You don't have to spend any money to find that out. Series7 devices have enough internal memory to keep a novice happy until they have the skills to venture to more complicated endeavors like external memory or connecting peripheral devices. DDR is complicated, SDRAM less so. One nice thing about Digilent low end boards like the ARTY is that they come with a lot of peripherals and possibilities and are relatively cheap and well supported compared to other vendors.

What you don't want to do is pick a mid-priced board hoping to add functionality that isn't already properly supported. This is usually more complicated than it should be because few FPGA boards come with lots of demo projects exercising all of their capabilities; and even then there are strings attached like time-limited licensed IP dependencies. The good news is that you don't have to buy hardware to try out the demos and see what you are getting (into). In fact I recommend building all available demos for a board prior to purchasing it.

Once you start thinking about cameras and video you ought to be pretty competent with an HDL and self-sufficient in terms of your verification skills. Likely, you will have to spend more than your current budget for something like a Nexys Video or Genesys2. I've connected both boards to cameras using the HDMI input ports, but this isn't a trivial endeavor. Never assume that you can add capability to an FPGA development board unless you've already done the homework including building a bitstream for that board.

What I am saying is that, especially on the low end, there are no 'one-board-does-all-things' platforms out there so expect to have a few boards in your arsenal by the time you start doing complicated development projects.

ARM based FPGAs like ZYNQ and Microblaze are promoted as a quick and painless way to to amazing things. My view is different. Learn an HDL flow and then expand to more complicated flows like ZYNQ development. Being able to replicate someone else's idea of a project will get boring real soon and massaging one of those into something that you want to do isn't as easy as you want to think; especially if you don't have the basic skills.

Edited by zygot

Share this post


Link to post
Share on other sites
  • 0

It's not well known but I have a pretty amazing skill at predicting the future for most FPGA developers.

Generally, based on hopes and dreams of future glory they choose a board that they hope will support basic learning and some complicated project goal. The decision is not based on anything but price, conjecture and promising sales hype. The first thing that they do after unpacking their new toy is download some demo project; assuming that one is available, so that they can see their investment do something. About a day to a week later comes the realization that this is a lot more complicated than expected. If they are lucky, they will find that with perseverance, many simple projects, and a lot of searching for help that doing what was the intended goal isn't possible for their board. A year out there's probably a 1% chance that would conclude that their purchase was everything that they hoped for; perhaps a bit higher if the original goal has been replaced with something more realistic after gaining some knowledge of what's required to achieve it.

This is all bass-ackwards.

DO:

  1. Progress in stages. Start with learning an HDL, verification methodologies and the tools. It help to read your vendors reference material and tutorials. Download the tools and try out some projects based on tutorials or provided by the community.
  2. When you can design, simulate, and debug your own code think about an inexpensive hardware platform for the next stage. This stage is when your RTL skills are good enough but getting designs to work in hardware involves a higher understanding of the details. Learn about constraints and timing closure. Learn about debug IP and designing your own debug solutions.
  3. Take the time to examine any source code that your tools create. It's script generated and not usually easy to read. Sometimes it encrypted and unreadable. Pore over interesting Applications Note project code for clues as to how complicated a given concept is. You can learn a lot from freely available material from a number of vendors.
  4. When your ready to do something complicated like video or DSP you are ready to select a platform to develop your skills on.
    1. Make sure that someone has created a demo proving that you can accomplish your goals before spending money. That means compiling demo projects. Be aware the it is likely that the demo uses IP requiring a license. Unless you are prepared to purchase a license be aware that being able to use a temporary license for 30 days or so won't be very useful as it's likely to take longer than that to do anything original. Intel is a much worse universe as far as IP dependencies go. A good rule of life is: "Figure out the bad news as soon as possible".
    2. If you are going to spend $500 or more on an FPGA platform you likely want the best FPGA device that you can afford. Xilinx allows you to purchase permanent licenses for a particular device at a reasonable cost. Intel doesn't. In fact, unless you are using only the lowest end devices you will have to buy annual Quartus licenses.  Even then you can spend the money to support, say the Arria family, and find that it doesn't support Cyclone 10 GX. In terms of development costs and IP Intel has a lot more traps to fall into.  Were talking about $3500 and up per year for a limited device support.
    3. Always take a test drive before signing a sales agreement. Know what you are getting. This implies that you have sufficient knowledge to ask the pertinent questions.
    4. There are people who can design their own IP as a replacement for commercial IP in projects requiring complicated design sources. Don't assume that you are one of them. Some vendor IP has encrypted sources, even the free ones. Reading script generated HDL is a pain but well worth the effort. Don't assume that a file with a .v or .vhd extension is readable or usable without a paid license.

I don't want to endorse or recommend products. Really, what work for me may not be all that useful for you. I can list some FPGA development boards that have survived over the years as continually useful.

  • ATLYS for video, USB 2.0, Etherent, general concept prototyping
  • GENESYS for USB 2.0, Etherent, general concept prototyping
  • Nexys Video for video, USB 2.0, Etherent, general concept prototyping
  • GENESYS2 for video, USB 2.0, Etherent, transceivers, general concept prototyping
  • Terasic DE0 Nano as a component in a prototype
  • Cyclone V GT for PCIe, Ethernet, DSP,, transceivers and general concept prototyping
  • KC705 for PCIe, Ethernet and gerneral concept prototyping
  • ZEDBOARD for ZYNQ experimentation

I expect that there will be others added to the list once I've spent enough time with them. I'm currently involved with the C5P from Terasic for PCIe and the MAX10 Development Kit ( though it's old enough to use the ES device )

 

Edited by zygot

Share this post


Link to post
Share on other sites
  • 0

Thanks, I don't consider 130$ to be too much of an investment. I understand on the lower end devices both Intel and Xlinix have free software but the standard or pro costs are ridiculously high.

 

The Arty S7 vs Arty A7 - is there something wrong with the Spartan? Unless you need an ethernet port or looks like you get more from the Spartan for the same price.

To be honest I'm not that interested in being a digital designer but a lot of jobs in my field want someone with some background in CUDA and VHDL since FPGA and GPU are often what sensors feed into.

In terms of popularity it looks like Xlinix still has an edge, I don't know though which is better to start with.

The Basys 3 has such little ram(of either type) that IDK about getting it. The de0 has 32 MB of ram which isn't a lot but it's enough to not run out immediately on smaller projects but the FPGA doesn't have any dsp slices.

 

 

Share this post


Link to post
Share on other sites
  • 0
26 minutes ago, SigProcbro said:

is there something wrong with the Spartan

Spartan 6 is still a viable family. Unfortunately, it is not supported with current tools or on WIN10. On Linux you can use ISE. I just don't see the cost benefit for Spartan7

26 minutes ago, SigProcbro said:

The de0 has 32 MB of ram which isn't a lot

The De0 Nano has 32 MB of SDRAM which is fast enough to source/sink data transfers at 40+ MB/s from a FT232H USB 2.o bridge device. It's also a lot less complicated. You'll have to offer specifics as to why you think that this is "not a lot" for FPGA applications. Sure if you want to use an embedded processor perhaps. In that case I'd just use a ZYNQ device. For FPGA applications the memory depth is not one of the more critical parameters. Digilent board usually support PMOD modules but I haven't had much use for them. There are a number of add-on boards for the 40-pin headers on the De0. If you want to do something sophisticated then you need HSMC or FMC. This is a much higher price tier and be aware that neither offers a guarantee of compatibility for any particular FPGA board.

It's not uncommon for me to be doing one project with Quartus and one with Vivado concurrently. Sometimes for the same project. I've also used Lattice, Actel. My preference is definitely Xilinx for a number of reasons. A particular need may require any particular vendor. Frankly, most of the time they are all a pain in the neck. FPGA development is complicated, especially if you aren't particularly interested in digital design.

 

26 minutes ago, SigProcbro said:

To be honest I'm not that interested in being a digital designer but a lot of jobs in my field want someone with some background in CUDA and VHDL since FPGA and GPU are often what sensors feed into

Then I'd really encourage you to spend a few months with the free version of Quartus or Vivado before spending a dime on hardware. Push button FPGA development is highly touted by the vendors and is a total hoax. But you need to figure out for yourself if that's a true statement.

P.S. I've wasted tons of time and money on Jetson tools mainly because of the way that the tools work. I'm sure that there are some who have the experience with cross-compilation tools to navigate past the obstacles. I'm also sure that ther are more like me who just couldn't see beneath the surface to see what's lurking about. That's technology. The FPGA world is more complicated and hungry for prey.

 

Edited by zygot

Share this post


Link to post
Share on other sites
  • 0

Can you do a complete design only in software without first purchasing a board? I was thinking if I wanted to try implementing a DSP application or do something with object detection the 32mb ram would be a problem, though I admit it's not absurdly small like the basys 3. I admit I don't know how hard it will be to interface to the DDR ram on the Arty either directly(which maybe will be too much work considering the DDR3 timing stuff looks hard) or using the memory interface. I'm actually really confused on how you can take an IP block and interface it with your own VHDL code since all the project examples have people dragging and dropping IP blocks which are already designed to work with each other.   

TBH Cuda is way easier and probably will dominate over FPGA, the only hurdle that needs to be gotten over is the lack of deterministic performance which is a serious problem for any real time application which requires certain performance bounds(ex anything in real time communications or control). 

Edited by SigProcbro

Share this post


Link to post
Share on other sites
  • 0

If you're talking about real-time video DSP, you might not need any external memory at all if you pipeline your design well enough. Through typically external memory is used as a framebuffer to smooth out any differences in throughput between different parts of your design. Typically in video designs a bandwidth is the limiting factor and not the memory capacity as just to stream out [email protected] video you need about 500 MBytes/s of memory bandwidth, multiply it by at least two since you will need to write the next frame's data to the memory at the same time as you read out the current one and outputting it, and you will see that only DDR2 and above can provide such throughput at reasonable price.

You might also want to take a look at Vivado HLS, as it seems to be more of your's cup of tea so to speak. It can translate C/C++/SystemC source code directly into RTL as long as said code meets certain requirements.

Finally, there are those things Xilinx calls "Accelerator cards", which are super-expensive PCIE cards (AFAIK the cheapest option is $3500), but they take high level synthesis another notch up and provide unified software-hardware development environment.

Share this post


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

Can you do a complete design only in software without first purchasing a board?

Yes. Can you verify that the tools will build a configuration file for a particular board? Yes. Can you verify it in simulation? That's a bit more complicated. If you are dependent on tons of external memory then using the normal simulation tool to see it run over 10's or 100's of milliseconds will be difficult and take a very long time; but I've done it. There are cycle based simulation tools that might be more useful for a system verification. If you are using IP that requires a license then this is one way to find out... you won't get a bitstream or in the Quartus world you might get a time-limited bitstream. But yes, in a normal FPGA design flow you'd do this anyway before even trying to use the bitstream in hardware.

If your simulation is too burdensome you can figure out ways to cut the problem into smaller more manageable versions to verify the key parts. The recommended verification approach is to verify all modules or components before trying to simulate the whole system. There is more than one simulation strategy and simulation objective. Generally, even with careful simulation complicated designs have issues when running on real hardware so at some point you probably want hardware. But typically most of the work is done before hardware gets involved.

The more you reveal the more I'm inclined to encourage you to dedicate a few months to using the free version of the tools and get to understand the size of the task that you have in mind. At least you'll have more specific questions and perhaps more specific answers.

Edited by zygot

Share this post


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

I'm actually really confused on how you can take an IP block and interface it with your own VHDL code since all the project examples have people dragging and dropping IP blocks which are already designed to work with each other.   

Before you do anything take a moment and get acquainted with exactly what an FPGA is. Then you can start trying to evaluate what constitutes IP.

2 hours ago, SigProcbro said:

the only hurdle that needs to be gotten over is the lack of deterministic performance which is a serious problem for any real time application

Well, deterministic performance is FPGAs strong suit. Unfortunately, the price is complexity; and a complexity that gets worse with with bigger designs due to limited routing, clocking, BRAM, and DSP resources. FPGAs are generally more sensitive to environmental factors like temperature as well verses say a GPU or specialty processor. An ideal system probably has a very capable processor for most duties with one or more FPGAs to deal with time critical functionality. Complicated problems need a flexible and well thought out system approach.

Share this post


Link to post
Share on other sites
  • 0

Ok I have some specific examples:

1. I want to implement a transceiver, I will assume the analog frontend is already outputting I and Q channels with a set of bits 8, 12 or 16. There are a couple DSP functions the device will need to do: carrier synchronization, timing synchronization and channel equalization.

I already have the algorithms I just want to play around with how it would work on the FPGA. Carrier synch will use two FIR filters and do band edge recovery, timing recovery will probably use muller and muller. 

2. I want to implement STFT on incoming data streams and track the center frequency. 

3. I want to do something with beam forming, not sure what exactly. 

Dunno about the computer vision part though, just wanted an option tbh. 

 

Share this post


Link to post
Share on other sites
  • 0

@SigProcbro,

These all sound like fun projects!

  1. I implemented a STFT algorithm some time ago, so feel free to look at that design for reference if you'd like.  That design wrote the STFT results to a framebuffer in memory--something the Basys3 doesn't have.  I used a Nexys Video--but that might not be within your budget as a beginner.  Still, if you skip the framebuffer you might still do quite well with the STFT on the Basys3.
  2. Signal processing is one of my favorite applications.  I've written about filter design, testing, and even (logic) PLL designs--you can read all about these at ZipCPU.com.  You should be able to test/verify all of these designs in software at your desktop without any hardware.
  3. For any computer vision applications, I'd make certain you understand your memory requirements.  The Basys3 is quite limited on memory, and so can't handle a lot of image processing requirements very well.  Well, that and it doesn't have any video inputs.  The Nexys Video is a good board for video input/output/processing, but like I said above it's a touch pricey--especially for a beginner.
  4. Can you build your designs in software without any hardware?  I personally use Verilator a lot myself.  Verilator translates Verilog to C++, which I can then test and simulate on my bench.  I've used this method often for testing video, serial ports, and other things.  Indeed, when I bought a Basys3 board for myself, I had my design running on it within about two days simply because I had all the details worked out in simulation ahead of time.
  5. I've personally found the Arty A7 more satisfying than the Basys3 board, but that's partly application specific.  I'm personally very interested in CPU design and its related bus-based development.  The Arty provides this capability for me.  I've also used the network with success, so again--it's something I"ve personally been very pleased with.  As for the memory interface, I've been using Xilinx's memory interface generator (MIG) generated controller.  I've used the AXI bus interface again to great success.  I personally don't give Xilinx high marks for their various AXI implementations, but this one seems to have been done well--even if the latency through the core is horrible.  (20+ clocks at 82MHz)
  6. If you are at all interested in Verilog, I've written a tutorial on the topic.  Feel free to check it out.

So my vote is for the Arty A7, but I'll readily admit a certain bias.

Dan

Share this post


Link to post
Share on other sites
  • 0
16 minutes ago, [email protected] said:

@SigProcbro,

These all sound like fun projects!

  1. I implemented a STFT algorithm some time ago, so feel free to look at that design for reference if you'd like.  That design wrote the STFT results to a framebuffer in memory--something the Basys3 doesn't have.  I used a Nexys Video--but that might not be within your budget as a beginner.  Still, if you skip the framebuffer you might still do quite well with the STFT on the Basys3.
  2. Signal processing is one of my favorite applications.  I've written about filter design, testing, and even (logic) PLL designs--you can read all about these at ZipCPU.com.  You should be able to test/verify all of these designs in software at your desktop without any hardware.
  3. For any computer vision applications, I'd make certain you understand your memory requirements.  The Basys3 is quite limited on memory, and so can't handle a lot of image processing requirements very well.  Well, that and it doesn't have any video inputs.  The Nexys Video is a good board for video input/output/processing, but like I said above it's a touch pricey--especially for a beginner.
  4. Can you build your designs in software without any hardware?  I personally use Verilator a lot myself.  Verilator translates Verilog to C++, which I can then test and simulate on my bench.  I've used this method often for testing video, serial ports, and other things.  Indeed, when I bought a Basys3 board for myself, I had my design running on it within about two days simply because I had all the details worked out in simulation ahead of time.
  5. I've personally found the Arty A7 more satisfying than the Basys3 board, but that's partly application specific.  I'm personally very interested in CPU design and its related bus-based development.  The Arty provides this capability for me.  I've also used the network with success, so again--it's something I"ve personally been very pleased with.  As for the memory interface, I've been using Xilinx's memory interface generator (MIG) generated controller.  I've used the AXI bus interface again to great success.  I personally don't give Xilinx high marks for their various AXI implementations, but this one seems to have been done well--even if the latency through the core is horrible.  (20+ clocks at 82MHz)
  6. If you are at all interested in Verilog, I've written a tutorial on the topic.  Feel free to check it out.

So my vote is for the Arty A7, but I'll readily admit a certain bias.

Dan

Thanks,

How do you feel about the cheaper Arty A7(T35) vs the more expensive Arty S7(T50)? I understand the S7(T50) has a bigger FPGA with more DSP splices, other than lacking an ethernet port I'm not sure how they compare but they are the same price currently and I'm not sure what the other benefits of the A7 are. 

Do you think the A7 T35 has enough logic elements in it to keep me busy for a while? 

Share this post


Link to post
Share on other sites
  • 0

@SigProcbro,

I have the Arty A735T device.  It has certainly kept me busy for a while.

The one place I have struggled a bit is with the number of DSPs available.  It hasn't stopped me, however.  Instead it's taught me creativity.  For example, most of the FIR filters I work with tend to be symmetric--that knocks the DSP requirement down by 2x.  Further, I've been able to get away with combinations of CIC filters and half-band filters, again knocking the requirement down further--sometimes another 2x.  Finally, when working with audio samples, there's plenty of time to timeshare the DSPs across filter coefficients.

There's a lot you can do with it--all depending on what you want to do.

If your goal is processing a 75MHz+ band of spectrum with -90dB stopbands, you might want something more powerful.  If your goal is 100kHz or below, you'll be just fine.

Dan

Share this post


Link to post
Share on other sites
  • 0
1 hour ago, SigProcbro said:

I want to implement a transceiver, I will assume the analog frontend is already outputting I and Q channels with a set of bits 8, 12 or 16. There are a couple DSP functions the device will need to do: carrier synchronization, timing synchronization and channel equalization.

I've done (most of) these things for a target DSP and in VHDL for a modem application. All were based on OCTAVE algorithms written with a digital implementation in mind. All were simulated in ModelSim ( this was before Xilinx went with their own simulation tool)

So, there are a number of things to consider here. One is trying to actually implement a transceiver in hardware. You need the IO to do that. An HMSC or FMC equipped board might do just fine. Alternately, instead of having A/D and D/A hardware attached to your FPGA board you could use a parallel USB 2.0 interface to feed A/D samples and capture D/A samples.

An alternate approach, if you just want to play with prototyping VHDL in hardware would be to use PCIe for data in/out. Check out the Terasic C5P GT version (OpenVino Starter Kit). It comes with a Windows or Linux driver and API for PCIe which is almost unheard of. It has 1 GB of DDR and 4 lanes of Gen2 PCIe. You could connect this to an Application written in C/C++ for a pretty nice and fast exercise of algorithms. A word of caution is that PCIe has to be detected at the BIOS stage so you typically have to boot-configure-re-boot every time you change the FPGA configuration. There's probably a way to reduce the headache but partial reconfiguration isn't free from Quartus.

It's not always necessary to connect to a real data source to achieve experimental results and verify an algorithmic approach.

Implementing Viterbi or a DFE from scratch would be a challenging thing to do; but certainly not impossible. Just be prepared to deal with all of the minutiae that tools like MATLAB add-ons or software libraries handle for you in the background.  This is not an ideal project for an FPGA newbie even if you are really really smart and knowledgeable.  You won't be the first one to do it however.

Even as we get more specific keep in mind that all of this can be done without hardware using the tools and simulation. You can change the target device to see what happens when you use a really expensive device; all at not cost. It's a good way to ascertain how much of the design you want to do on your own and how much might require a commercial IP for. Time, cost, expertise are all trade-offs.

Edited by zygot

Share this post


Link to post
Share on other sites
  • 0
5 minutes ago, zygot said:

I've done (most of) these things for a target DSP and in VHDL for a modem application. All were based on OCTAVE algorithms. All were simulated in ModelSim ( this was before Xilinx went with their own simulation tool)

So, there are a number of things to consider here. One is trying to actually implement a transceiver in hardware. You need the IO to do that. An HMSC or FMC equipped board might do just fine. Alternately, instead of having A/D and D/A hardware attached to your FPGA board you could use a parallel USB 2.0 interface to feed A/D samples and capture D/A samples.

An alternate approach, if you just want to play with prototyping VHDL in hardware would be to use PCIe for data in/out. Check out the Terasic C5P GT version (OpenVino Starter Kit). It comes with a Windows or Linux driver and API for PCIe which is almost unheard of. It has 1 GB of DDR and 4 lanes of Gen2 PCIe. You could connect this to an Application written in C/C++ for a pretty nice and fast exercise of algorithms. A word of caution is that PCIe has to be detected at the BIOS stage so you typically have to boot-configure-re-boot every time you change the FPGA configuration. There's probably a way to reduce the headache but partial reconfiguration isn't free from Quartus.

It's not always necessary to connect to a real data source to achieve experimental results.

Implementing Vertibi or a DFE from scratch would be a challenging thing to do; but certainly not impossible. Just be prepared to deal with all of the minutiae that tools like MATLAB add-ons or software libraries handle for you in the background.  This is not an ideal project for an FPGA newbie even if you are really really smart and knowledgeable.  You won't be the first one to do it however.

Hi Thanks,

I would just use synthetic data, interfacing a highspeed circuit is outside the scope of what I'm interested in doing currently but I did see that Terasic has some boards/addon boards which include the full analog front end. If I was going to spend 500+ I would probably get one of those.

I have an analog discovery so what I think I could do is connect the logic out to the FPGA and load the decoded symbols to RAM to be transferred back through the USB connection.

I have a pretty solid background in theory but very little hardware experience but I want to try to fix that. I guess the question is should I get a cheapy FPGA like the De0 nano just to try out and then buy a nicer one later or get an arty for ~130 which can do some more stuff(if I get serious I'm sure I'm going to buy something else but maybe the Arty will last longer). 

 

Share this post


Link to post
Share on other sites
  • 0
9 minutes ago, SigProcbro said:

but maybe the Arty will last longe

Hey, if an Arty 35T can keep @[email protected]occupied for a few years it probably can do the same for you.  But no one knows you like you do.... If you're not hard up for cash I can't see spending what a decent textbook goes for these days as a waste of money ( unlike the textbook once you've gotten a chance to read through it )

P.S. Even a USB UART at 921600 baud would probably work out fine for transferring data between your FPGA board and PC.

Edited by zygot

Share this post


Link to post
Share on other sites
  • 0
3 hours ago, zygot said:

Hey, if an Arty 35T can keep @[email protected]occupied for a few years it probably can do the same for you.  But no one knows you like you do.... If you're not hard up for cash I can't see spending what a decent textbook goes for these days as a waste of money ( unlike the textbook once you've gotten a chance to read through it )

P.S. Even a USB UART at 921600 baud would probably work out fine for transferring data between your FPGA board and PC.

Yeah!

So I looked at the specs and I guess the Arty S7 lacks the transceiver modules? I'm not completely sure what they do because they are clearly not wireless transceivers. Otherwise its specs are better, maybe I should get that one.

Independent of FPGA, what VHDL simulator do you like best? 

Share this post


Link to post
Share on other sites
  • 0
10 hours ago, SigProcbro said:

So I looked at the specs and I guess the Arty S7 lacks the transceiver modules?

Transceivers in FPGA devices are it own thing; and vary not only between vendors but families from the same vendor. Today's reading assignment is UG476_7Series_Transceivers.pdf. Typically they support a number of interfaces such as PCIe or XAUI and have their own equalization options. Transceivers are separate from the rest of the FPGA resources and have their own clocking pins so you have to be careful when selecting a platform that does employ them. The KC705, for example, brings out a few channels to SMA connectors. The Genesys2 provides them in the form of DisplayPort or FMC connectivity. The Genesys2 only offers a clock source of 270 MHz for the DP but if you use the FMC the user can provide a suitable clock for other things like XAUI or Infiniband. This is a whole discussion on it's own. If you're looking for wireless transceivers you might look into some of the nifty SDRs available these days. The cheapest way to play with FPGA transceivers is probably the Terasic Cyclone V GX Starter Kit. I had to provide my own SMA connectors... FPGA transceivers aren't something that you can connect to any external logic the way that normal IO can.

10 hours ago, SigProcbro said:

Independent of FPGA, what VHDL simulator do you like best? 

I've only used ModelSim and Xilinx simulator. These are essential for behavioral, RTL and timing simulation. I know why Xilinx ditched ModelSim. It's a bit dated, written for mainframe and ported to the PC, and expensive, especially if you want to target devices from multiple vendors. Intel still uses ModelSim and for the most part the free version is sufficient. There's also Aldec but I have no experience with it. A secondary simulation methodology are the cycle based simulators and are quicker, but less capable, for system simulation. @[email protected]is the evangelist for that approach. Be aware that some FPGA IP, typically external memory cores, can only be simulated with the normal tools using Verilog which is a lot friendlier to simulation than VHDL.

Note that my comment about the Arty 35T keeping Dan occupied was a complement :) ; to both Dan and the Arty A7..

 

Edited by zygot

Share this post


Link to post
Share on other sites
  • 0

@zygot,

1 hour ago, zygot said:

Note that my comment about the Arty 35T keeping Dan occupied was a complement :) ; to both Dan and the Arty A7..

That's certainly how I took it--it brought quite the smile to my face, even though it's not quite true.  I've used other boards as well, but I do enjoy my Arty as a nice all around board.  Other boards include: Digilent's Nexys Video, Lattice's ECP5 Versa, the TinyFPGA BX (iCE40 8k), Arrow's MAX1000 (actually Trenz's) featuring an Intel Max10, a Cyclone V DE10 Nano, Folknology's IceCore (iCE40 8k), and more.  In general, I like the Xilinx Verilog flow better and find Digilent's documentation more thorough for my purposes.  I find it disappointing that Arrow sold the MAX1000 before getting a JTAG loader to work for it, that Lattice did not provide a DDR3 driver for their SDRAM (they wanted more money to get their DDR3 support), that the buttons keep getting torn off of my MAX1000, etc.  I guess you get what you pay for.

10 hours ago, SigProcbro said:

Independent of FPGA, what VHDL simulator do you like best? 

I don't generally use VHDL, but I would note that many folks have used ghdl as a VHDL simulator and have been quite pleased by it.  I'm also aware that of work that's being done to take the output of the ghdl parser and put it straight into an open source synthesizer (Yosys).  While this might not be a big deal in comparison to Vivado, it can be a great help when trying to recover from ISE's out-of-date language support or manage projects across multiple platforms without needing multiple synthesis tools.

Dan

Share this post


Link to post
Share on other sites
  • 0

I've experimented with Lattice ECP5 and Actel ( now Microchip ) mainly for the PCIe. I've found their tool licensing to be less accommodating and free licenses for the tools are time limited. The M2GL-EVAL-KIT works well in a Linux box if you treat it as a device. It's FLASH based logic so it's always ready to go by the time BIOS wants to know who's alive. Actel doesn't have a Windows driver. My experiences with Lattice PCIe ( only windows is supported ) never got to the point where I wanted to spend the time developing my own applications for it. The top 2 FPGA vendors clearly have larger war chests to attract customers. Actel has the space application niche that will keep it alive, for better or worse....

In terms of transceiver technology I think Xilinx, then Intel.

Beware of FPGA platforms designed and sold by distributors... ( clearly a personal observation ) The one exception is an old Spartan 3 DSP board from Avnet that got shelved for years until I discovered that I could use it through it's 1GbE PHY as an extension to any of my other 1 GbE PHY equipped boards. The Spartan3 was a remarkable product and still has some IO tricks that it can do to make Series7 devices envious. To be fair I recently did try an buy an Avnet Kintex Ultrascale board but amazingly Avnet US  won't bother to sell you inventory sitting around in Avnet European warehouses... go figure.

[edit] CAUTION: Just because a platform uses an FPGA with transceivers doesn't mean that the transceivers are available. I have a GENESYS with a Virtex 50T (sweet!) and no way to use those xceivers (bummer!). You aren't going to doing any transceiver experiments with the CMODA7-35T (for those with unmitigated optimism and a habit of not doing one's homework)

Edited by zygot

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