EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

Some preliminary help for an FPGA selection

Started by Dimiter_Popoff August 7, 2020
It will be the first FPGA for me. What I want to do is not complex,
I have done similar controllers (more complex really)numerous times
using logic parts, PLD, CPLD-s etc.
I need to put together a display controller, to just do framebuffer
memory -> display interface. Framebuffer memory will be some sort of
DDRAM (DDR-which depending on the FPGA type), I'll be happy with
a 1920x1080 framebuffer, 32 bits per pixel (likely just 24 will
be used initially). The framebuffer will be updated via PCIe by the
processor so the FPGA has to be large enough to allow me to do
say 2k words fifos for access (2 of them).
How the output will go is unclear yet; probably HDMI (which adds
some complexity of course but looks doable).
The LVDS cable drivers are another unknown - is it a good idea
(if possible at all) to have them on-chip (chip being the fpga)?
Sounds a bit risky but this will not be a consumer product, not
initially at least, so it does not have to be the most abuse
proof unit in the galaxy (but I don't want it to be too easy to
be killed either... I am just looking for people's experience
in the area).
Which way should I go? The tools must be free, I guess this
narrows the choice, we are not a large company.
I will have to do plenty of iterations until I have the thing
work obviously so I want the processor to be able to initialize
the FPGA logic from a file (it has a disk, ethernet, tcp/ip etc.).

I guess I would prefer lower power, too - if I have multiple
choices of similar devices.
 From what I saw there are FPGA-s which come with some hardwired
DDRAM interface and PCIe, I'd go for one of these (doing DDRAM
myself sounds like a waste of effort unless it proves necessary,
having to do PCIe myself would probably make me look at other
options).

Thanks,

Dimiter

======================================================
Dimiter Popoff, TGI             http://www.tgi-sci.com
======================================================
http://www.flickr.com/photos/didi_tgi/

On Friday, August 7, 2020 at 5:35:32 PM UTC-4, Dimiter wrote:
> It will be the first FPGA for me. What I want to do is not complex, > I have done similar controllers (more complex really)numerous times > using logic parts, PLD, CPLD-s etc. > I need to put together a display controller, to just do framebuffer > memory -> display interface. Framebuffer memory will be some sort of > DDRAM (DDR-which depending on the FPGA type), I'll be happy with > a 1920x1080 framebuffer, 32 bits per pixel (likely just 24 will > be used initially). The framebuffer will be updated via PCIe by the > processor so the FPGA has to be large enough to allow me to do > say 2k words fifos for access (2 of them). > How the output will go is unclear yet; probably HDMI (which adds > some complexity of course but looks doable). > The LVDS cable drivers are another unknown - is it a good idea > (if possible at all) to have them on-chip (chip being the fpga)? > Sounds a bit risky but this will not be a consumer product, not > initially at least, so it does not have to be the most abuse > proof unit in the galaxy (but I don't want it to be too easy to > be killed either... I am just looking for people's experience > in the area). > Which way should I go? The tools must be free, I guess this > narrows the choice, we are not a large company. > I will have to do plenty of iterations until I have the thing > work obviously so I want the processor to be able to initialize > the FPGA logic from a file (it has a disk, ethernet, tcp/ip etc.). > > I guess I would prefer lower power, too - if I have multiple > choices of similar devices. > From what I saw there are FPGA-s which come with some hardwired > DDRAM interface and PCIe, I'd go for one of these (doing DDRAM > myself sounds like a waste of effort unless it proves necessary, > having to do PCIe myself would probably make me look at other > options).
I would love to recommend an FPGA for you, but I'm no expert on PCIe or LVDS. They both seem pretty important to your needs. For low power you might look at a Lattice product. The iCE40 parts are intended for very low power, but might not be enough for your needs. They have the LVDS but I don't recall any PCIe or memory interfaces as hard IP. I'm sure they have an SDRAM interface as a soft core. They have a variant of the iCE40 line with various hard IP, but I seem to recall it is oriented to some particular interface for embedded stuff, video maybe. I think the name is Cross... something. The iCE40 line has RAM configuration memory with non-volatile backup, one time programmable. They also have a line of RAM configurable parts not unlike the Xilinx line (that's what it is derived from, the old Orca products licensed from Xilinx by Lucent). I seem to recall they have a new product line in that technology. Lattice is focused on low power, so that might be a good place to start looking. The tools are free, but you need to obtain an annual license. I guess they want to keep control... which is what they all do, even if you buy a perpetual license. I learned that back when I bought my first Mentor system, circa '90. Even though we paid big bucks for it and the software was usable forever (only the maintenance required annual payments) we had to ask for a license each year. I only use the tools when I have a current job at hand. It seems I sit down on a Friday night to use the tools and find the license is expired but can't get a new one until Monday! lol They may have automated that so it processes on the weekend, but I'm not sure. You probably have more interesting things to do on the weekends. -- Rick C. - Get 1,000 miles of free Supercharging - Tesla referral code - https://ts.la/richard11209
fredag den 7. august 2020 kl. 23.35.32 UTC+2 skrev Dimiter:
> It will be the first FPGA for me. What I want to do is not complex, > I have done similar controllers (more complex really)numerous times > using logic parts, PLD, CPLD-s etc. > I need to put together a display controller, to just do framebuffer > memory -> display interface. Framebuffer memory will be some sort of > DDRAM (DDR-which depending on the FPGA type), I'll be happy with > a 1920x1080 framebuffer, 32 bits per pixel (likely just 24 will > be used initially). The framebuffer will be updated via PCIe by the > processor so the FPGA has to be large enough to allow me to do > say 2k words fifos for access (2 of them). > How the output will go is unclear yet; probably HDMI (which adds > some complexity of course but looks doable). > The LVDS cable drivers are another unknown - is it a good idea > (if possible at all) to have them on-chip (chip being the fpga)? > Sounds a bit risky but this will not be a consumer product, not > initially at least, so it does not have to be the most abuse > proof unit in the galaxy (but I don't want it to be too easy to > be killed either... I am just looking for people's experience > in the area). > Which way should I go? The tools must be free, I guess this > narrows the choice, we are not a large company. > I will have to do plenty of iterations until I have the thing > work obviously so I want the processor to be able to initialize > the FPGA logic from a file (it has a disk, ethernet, tcp/ip etc.). > > I guess I would prefer lower power, too - if I have multiple > choices of similar devices. > From what I saw there are FPGA-s which come with some hardwired > DDRAM interface and PCIe, I'd go for one of these (doing DDRAM > myself sounds like a waste of effort unless it proves necessary, > having to do PCIe myself would probably make me look at other > options). > > Thanks, > > Dimiter > > ====================================================== > Dimiter Popoff, TGI http://www.tgi-sci.com > ====================================================== > http://www.flickr.com/photos/didi_tgi/
https://www.bhphotovideo.com/c/product/964120-REG/blackmagic_design_decklink_mini_monitor.html/overview The free ISE webpack works with spartan6
On 07/08/2020 22:35, Dimiter_Popoff wrote:
> It will be the first FPGA for me. What I want to do is not complex, > I have done similar controllers (more complex really)numerous times > using logic parts, PLD, CPLD-s etc. > I need to put together a display controller, to just do framebuffer > memory -> display interface. Framebuffer memory will be some sort of > DDRAM (DDR-which depending on the FPGA type), I'll be happy with > a 1920x1080 framebuffer, 32 bits per pixel (likely just 24 will > be used initially). The framebuffer will be updated via PCIe by the > processor so the FPGA has to be large enough to allow me to do > say 2k words fifos for access (2 of them). > How the output will go is unclear yet; probably HDMI (which adds > some complexity of course but looks doable). > The LVDS cable drivers are another unknown - is it a good idea > (if possible at all) to have them on-chip (chip being the fpga)? > Sounds a bit risky but this will not be a consumer product, not > initially at least, so it does not have to be the most abuse > proof unit in the galaxy (but I don't want it to be too easy to > be killed either... I am just looking for people's experience > in the area). > Which way should I go? The tools must be free, I guess this > narrows the choice, we are not a large company. > I will have to do plenty of iterations until I have the thing > work obviously so I want the processor to be able to initialize > the FPGA logic from a file (it has a disk, ethernet, tcp/ip etc.). > > I guess I would prefer lower power, too - if I have multiple > choices of similar devices. > From what I saw there are FPGA-s which come with some hardwired > DDRAM interface and PCIe, I'd go for one of these (doing DDRAM > myself sounds like a waste of effort unless it proves necessary, > having to do PCIe myself would probably make me look at other > options). > > Thanks, > > Dimiter > > ====================================================== > Dimiter Popoff, TGI             http://www.tgi-sci.com > ====================================================== > http://www.flickr.com/photos/didi_tgi/ >
My advice would be to download the free FPGA tools (Quartus, Vivado, Libero, Diamond) first and see which ones offers the high-level (free) IP you need (PCIe, DDR controller, HDMI, Display controller, FIFO etc). Then run through a small design to see if you like the IDE, when you are happy build/simulate/P&R your design and if it is all working (probably next year) then start looking for a board. There are many to choose from and some offer a custom route as well if you need it. Like many FPGA engineers I have a box full of FPGA boards from all vendors which I bought for "projects" I never completed, the fun part is always buying the board. I now have the Arduino bug and a second box is slowly filling up with all sorts of breakout boards.... Good luck, Hans www.ht-lab.com
On 08/08/2020 09:24, HT-Lab wrote:
> On 07/08/2020 22:35, Dimiter_Popoff wrote: >> It will be the first FPGA for me. What I want to do is not complex, >> I have done similar controllers (more complex really)numerous times >> using logic parts, PLD, CPLD-s etc. >> I need to put together a display controller, to just do framebuffer >> memory -> display interface. Framebuffer memory will be some sort of >> DDRAM (DDR-which depending on the FPGA type), I'll be happy with >> a 1920x1080 framebuffer, 32 bits per pixel (likely just 24 will >> be used initially). The framebuffer will be updated via PCIe by the >> processor so the FPGA has to be large enough to allow me to do >> say 2k words fifos for access (2 of them). >> How the output will go is unclear yet; probably HDMI (which adds >> some complexity of course but looks doable). >> The LVDS cable drivers are another unknown - is it a good idea >> (if possible at all) to have them on-chip (chip being the fpga)? >> Sounds a bit risky but this will not be a consumer product, not >> initially at least, so it does not have to be the most abuse >> proof unit in the galaxy (but I don't want it to be too easy to >> be killed either... I am just looking for people's experience >> in the area). >> Which way should I go? The tools must be free, I guess this >> narrows the choice, we are not a large company. >> I will have to do plenty of iterations until I have the thing >> work obviously so I want the processor to be able to initialize >> the FPGA logic from a file (it has a disk, ethernet, tcp/ip etc.). >> >> I guess I would prefer lower power, too - if I have multiple >> choices of similar devices. >>  From what I saw there are FPGA-s which come with some hardwired >> DDRAM interface and PCIe, I'd go for one of these (doing DDRAM >> myself sounds like a waste of effort unless it proves necessary, >> having to do PCIe myself would probably make me look at other >> options). >> >> Thanks, >> >> Dimiter >> >> ====================================================== >> Dimiter Popoff, TGI             http://www.tgi-sci.com >> ====================================================== >> http://www.flickr.com/photos/didi_tgi/ >> > > My advice would be to download the free FPGA tools (Quartus, Vivado, > Libero, Diamond) first and see which ones offers the high-level (free) > IP you need (PCIe, DDR controller, HDMI, Display controller, FIFO etc). > Then run through a small design to see if you like the IDE, when you are > happy build/simulate/P&R your design and if it is all working (probably > next year) then start looking for a board. There are many to choose from > and some offer a custom route as well if you need it. > > Like many FPGA engineers I have a box full of FPGA boards from all > vendors which I bought for "projects" I never completed, the fun part is > always buying the board. I now have the Arduino bug and a second box is > slowly filling up with all sorts of breakout boards.... > > Good luck, > > Hans > www.ht-lab.com > >
That sounds like quite an ambitious project for a first FPGA design. How to go at it depends a lot on your other experience - if you are OK with designing PCIE and DDRAM hardware, 400+ 0.8mm pitch pin BGA then working at chip level is OK. If not then use a ready made module with at least the FPGA, PSU, DDRAM and maybe HDMI on board. For this I would probably go with Xilinx, Spartan 7 or Artix. The free tools do a lot, and there is IP for dev boards from Digilent or Trenz Electronic gmbh. If you have to pay for Xilinx software it's about £3k for a license , updates for a year but it goes on working forever. I actually prefer Altera or Lattice software to Vivado (its just mind bendingly complicated - get training - its worth it). Unfortunately the general support for Xilinx parts (IP, dev boards, general community help etc) in this area is much better. There are some nice cheap dev boards for Artix and Spartan 7 (Arty and Artys7) - we used them (and Digilent Nexus) when we did a an Artix based design as a sanity checker. MK
On 08/08/2020 10:44, Michael Kellett wrote:
> On 08/08/2020 09:24, HT-Lab wrote: >> On 07/08/2020 22:35, Dimiter_Popoff wrote: >>> It will be the first FPGA for me. What I want to do is not complex, >>> I have done similar controllers (more complex really)numerous times >>> using logic parts, PLD, CPLD-s etc. >>> I need to put together a display controller, to just do framebuffer >>> memory -> display interface. Framebuffer memory will be some sort of >>> DDRAM (DDR-which depending on the FPGA type), I'll be happy with >>> a 1920x1080 framebuffer, 32 bits per pixel (likely just 24 will >>> be used initially). The framebuffer will be updated via PCIe by the >>> processor so the FPGA has to be large enough to allow me to do >>> say 2k words fifos for access (2 of them). >>> How the output will go is unclear yet; probably HDMI (which adds >>> some complexity of course but looks doable). >>> The LVDS cable drivers are another unknown - is it a good idea >>> (if possible at all) to have them on-chip (chip being the fpga)? >>> Sounds a bit risky but this will not be a consumer product, not >>> initially at least, so it does not have to be the most abuse >>> proof unit in the galaxy (but I don't want it to be too easy to >>> be killed either... I am just looking for people's experience >>> in the area). >>> Which way should I go? The tools must be free, I guess this >>> narrows the choice, we are not a large company. >>> I will have to do plenty of iterations until I have the thing >>> work obviously so I want the processor to be able to initialize >>> the FPGA logic from a file (it has a disk, ethernet, tcp/ip etc.). >>> >>> I guess I would prefer lower power, too - if I have multiple >>> choices of similar devices. >>>  From what I saw there are FPGA-s which come with some hardwired >>> DDRAM interface and PCIe, I'd go for one of these (doing DDRAM >>> myself sounds like a waste of effort unless it proves necessary, >>> having to do PCIe myself would probably make me look at other >>> options). >>> >>> Thanks, >>> >>> Dimiter >>> >>> ====================================================== >>> Dimiter Popoff, TGI             http://www.tgi-sci.com >>> ====================================================== >>> http://www.flickr.com/photos/didi_tgi/ >>> >> >> My advice would be to download the free FPGA tools (Quartus, Vivado, >> Libero, Diamond) first and see which ones offers the high-level (free) >> IP you need (PCIe, DDR controller, HDMI, Display controller, FIFO >> etc). Then run through a small design to see if you like the IDE, when >> you are happy build/simulate/P&R your design and if it is all working >> (probably next year) then start looking for a board. There are many to >> choose from and some offer a custom route as well if you need it. >> >> Like many FPGA engineers I have a box full of FPGA boards from all >> vendors which I bought for "projects" I never completed, the fun part >> is always buying the board. I now have the Arduino bug and a second >> box is slowly filling up with all sorts of breakout boards.... >> >> Good luck, >> >> Hans >> www.ht-lab.com >> >> > That sounds like quite an ambitious project for a first FPGA design. > How to go at it depends a lot on your other experience - if you are OK > with designing PCIE and DDRAM hardware, 400+ 0.8mm pitch pin BGA then > working at chip level is OK. If not then use a ready made module with at > least the FPGA, PSU, DDRAM and maybe HDMI on board. > > For this I would probably go with Xilinx, Spartan 7 or Artix. The free > tools do a lot, and there is IP for dev boards from Digilent or Trenz > Electronic gmbh. > If you have to pay for Xilinx software it's about £3k for a license , > updates for a year but it goes on working forever. > > I actually prefer Altera or Lattice software to Vivado (its just mind > bendingly complicated - get training - its worth it). Unfortunately the > general support for Xilinx parts (IP, dev  boards, general community > help etc)  in this area is much better. > > There are some nice cheap dev boards for Artix and Spartan 7 (Arty and > Artys7) - we used them (and Digilent Nexus) when we did a an Artix based > design as a sanity checker. > > MK > > >
Oh look, someone has done it all for you already ! (Might be worth a look for ideas - and unless you need quite a few will be cheaper than rolling your own !) https://www.aliexpress.com/item/32963893871.html There are other references on the web, search 'AX7103 fpga' MK MK
Thanks everyone for the pointers and suggestions.
It will take a while of looking and head scratching until I
can say anything with certainty but at the moment I am
looking at spartan 6 and spartan 7 (yet to look at artix).

Looks like spartan 7 does not have a hardwired DDRAM thingie;
how much of a problem will that be?
I have yet to evaluate the tools but I suppose I will be able
to write low level logic, sort of this.d = that.q & whatever,
I have no idea what the syntax will be but I am sure everyone
gets what I mean. Once I am there I'll find my way (and I
fear getting there will not be easy, especially talking to
hardwired stuff like DDR and PCIe).
But "not easy"is not a problem, I fear the "not possible",
especially finding out the latter too late (a friend once quoted
a friend of his - both engineers - about the "oh shit" factor
being applicable to every project; you either say it at the beginning
or at the end... :-).

As you see I am wondering about the basics at this stage,
I'll be grateful for any hints from you people with experience
before I start downloading toolchains and wrestling to
evaluate which and how...

Thanks,

Dimiter
On Saturday, August 8, 2020 at 3:22:55 PM UTC-4, Dimiter wrote:
> Thanks everyone for the pointers and suggestions. > It will take a while of looking and head scratching until I > can say anything with certainty but at the moment I am > looking at spartan 6 and spartan 7 (yet to look at artix). > > Looks like spartan 7 does not have a hardwired DDRAM thingie; > how much of a problem will that be? > I have yet to evaluate the tools but I suppose I will be able > to write low level logic, sort of this.d = that.q & whatever, > I have no idea what the syntax will be but I am sure everyone > gets what I mean. Once I am there I'll find my way (and I > fear getting there will not be easy, especially talking to > hardwired stuff like DDR and PCIe). > But "not easy"is not a problem, I fear the "not possible", > especially finding out the latter too late (a friend once quoted > a friend of his - both engineers - about the "oh shit" factor > being applicable to every project; you either say it at the beginning > or at the end... :-). > > As you see I am wondering about the basics at this stage, > I'll be grateful for any hints from you people with experience > before I start downloading toolchains and wrestling to > evaluate which and how...
Try a few simple projects in the tools to see which you prefer. Maybe that won't matter since you seem to be zeroed in on the Xilinx parts. If you are going to do a serious project, maybe start with a few simple pieces. You can design the RAM interface along with a test bench to test it with. In fact, design the test bench first since that will help you learn about the RAM without worrying about synthesis. Then you can write the RAM interface code and test it to the test bench knowing what you need it to do. This code will need to be synthesizable. That's not a huge issue, but ignoring that in test benches makes them easier to design. None of this requires hardware or downloading or any of the BS you should not even think about until you have the design fully coded and verified in simulation. I don't know your background, but many software people give short shrift to simulation. In FPGAs it pay huge dividends making debugging 100 times easier than on the bench. I've completed projects that needed hardly any debug time on the bench because the design was 99.99% working after simulation. Have you picked a language yet? I like VHDL mostly because that is what I'm used to. It is strongly typed, so requires dealing with conversions. It requires you to be explicit so nothing is assumed. Verilog is much less wordy, but has defaults you need to know and understand or it may not give you the results you expect. I keep saying I'm going to learn Verilog and Linux but never do. -- Rick C. + Get 1,000 miles of free Supercharging + Tesla referral code - https://ts.la/richard11209
On Saturday, August 8, 2020 at 2:22:55 PM UTC-5, Dimiter wrote:
> Thanks everyone for the pointers and suggestions. > It will take a while of looking and head scratching until I > can say anything with certainty but at the moment I am > looking at spartan 6 and spartan 7 (yet to look at artix). > > Looks like spartan 7 does not have a hardwired DDRAM thingie; > how much of a problem will that be? > I have yet to evaluate the tools but I suppose I will be able > to write low level logic, sort of this.d = that.q & whatever, > I have no idea what the syntax will be but I am sure everyone > gets what I mean. Once I am there I'll find my way (and I > fear getting there will not be easy, especially talking to > hardwired stuff like DDR and PCIe). > But "not easy"is not a problem, I fear the "not possible", > especially finding out the latter too late (a friend once quoted > a friend of his - both engineers - about the "oh shit" factor > being applicable to every project; you either say it at the beginning > or at the end... :-). > > As you see I am wondering about the basics at this stage, > I'll be grateful for any hints from you people with experience > before I start downloading toolchains and wrestling to > evaluate which and how... > > Thanks, > > Dimiter
One choice is to use a small FPGA module with DRAM and other interfaces already provided (along with RTL examples of their usage). The module should use a FPGA suitable to your needs and should be from a vendor that provides long term (several years or a decade or mode) of availability. Then you have a simpler PCB design situation: provide the connectors to plug in the module.
On 08/08/2020 20:22, Dimiter_Popoff wrote:
> Thanks everyone for the pointers and suggestions. > It will take a while of looking and head scratching until I > can say anything with certainty but at the moment I am > looking at spartan 6 and spartan 7 (yet to look at artix). > > Looks like spartan 7 does not have a hardwired DDRAM thingie; > how much of a problem will that be? > I have yet to evaluate the tools but I suppose I will be able > to write low level logic, sort of this.d = that.q & whatever, > I have no idea what the syntax will be but I am sure everyone > gets what I mean. Once I am there I'll find my way (and I > fear getting there will not be easy, especially talking to > hardwired stuff like DDR and PCIe). > But "not easy"is not a problem, I fear the "not possible", > especially finding out the latter too late (a friend once quoted > a friend of his - both engineers - about the "oh shit" factor > being applicable to every project; you either say it at the beginning > or at the end... :-). > > As you see I am wondering about the basics at this stage, > I'll be grateful for any hints from you people with experience > before I start downloading toolchains and wrestling to > evaluate which and how... > > Thanks, > > Dimiter
Xilinx support DD3RAM up to 800MHz on Spartan 7 - it doesn't much matter to you how much of the support is hard wired and how much is FPGA gates since you just use their IP (free I think for DDRAM on S7). And you will use their IP for DDR3RAM because it represents multiple man years of work. I agree with Rick about the importance of simulation - but I think you should buy a cheap dev board (like the Arty if you go for Xilinx.) For two reasons, one because there is quite a lot between a working VHDL or Verilog simulation and hardware (and its good to learn that from day 1) and secondly because it keeps the interest up when stuff actually works. (But don't ever bother even trying stuff on the chip until the best simulation you can do is good.) MK

The 2024 Embedded Online Conference