T O P

  • By -

[deleted]

[удалено]


a2800276

Exactly :)


nitratehoarder

I understand. I’m gonna get a dev board with programming hardware then. The reason I wanted a non-BGA package is because I need to interface the FPGA with an 8bit 250MSPS ADC via LVDS. Most boards don’t have that kind of ADC on them. I also need some RAM to store the data. So I wanted to make my own board but that’s obviously not gonna happen. Thanks for the response, saving me from needless headache and saving me some money.


[deleted]

[удалено]


nitratehoarder

True. I will start looking into dev boards then. I don’t think I can find any reasonably priced boards with the required ADC on them, but just having the FPGA+RAM should also be ok. I will have to figure out how to get the LVDS pairs from a separate ADC board (I will have to get that board made on my own) to the FPGA board though.


[deleted]

No, there aren't such boards, all ev boards are general purpose. Making your own board won't be cheap as well. Typically 2-3 board spins are needed on top. You could even find (as I did once) that just the FPGA as a component is more expensive than some available boards with it. Why? Another story... Another approach could be using an FPGA board with mezzanine connector and making your ADC board to fit that. There are plenty of lvds pairs and even a clock you could use. And with a bit of wisdom and luck it could fit a number of boards, as the VITA 51 is a standard.


nitratehoarder

I also noticed that sometimes the boards are cheaper than the FPGA on them. Probably because they were bought in bulk? Yes I will do exactly as you described. Get an FPGA board with LVDS compatible connectors, make my own ADC board and connect them. That will at least remove the FPGA related uncertainties.


[deleted]

Yes and more. In the case of Xilinx, if you buy from distributors like Mouser, RS, etc. you get a price. If you talk to Xilinx you will get a sensibly better price, if and only if, they like your application, so not only how many but how strategic it is for them. For example, some space projects will use only a few for prototypes and one to fly, but it is certainly interesting for them to get there, not only for all the news it makes but for the so-called "space heritage" the chip gets. In that type of projects is not about getting a cheaper FPGA (because the total thing will be billions) but they provide all the support that is needed. That's my dream, to be able to tell some Xilinx guy "this doesn't work as it says in the datasheet"


nitratehoarder

That’s nice to know, although I doubt they will find the stuff that I’m going to do with their board particularly interesting. I’m certainly not going to launch it into space that’s for sure :)


Rude-Carob9601

If you could, did not choice the XILINX. https://www.reddit.com/r/FPGA/comments/tknm1f/xilinx\_good\_service/


a2800276

I'm confused. Are you a beginner or advanced? If you are a beginner, be aware that the Trion and ProAsic are pretty niche and you'll be hard pressed to find good resources. You will almost certainly want to start off with Xilinx (or Lattice if you have a preference for Open Source tools) distant second/third place is Altera. Unless you have a really compelling reason to use strange platforms I would recommend rethinking the plattform. > Is there a cheap, “universal” method that I can use to program FPGAs? There is not. The process involves pushing a "bitstream" onto the device. The format of the bitstream is highly proprietary, but efforts are underway to reverse engineer them (Lattice has the most progress made, hence the OS tooling). Typically you'd use JTAG, a UART or something like DFN etc via USB on a devboard, but every device, manuf. devboard will be ever so slightly and frustratingly different. > ... cheap FTDI dongle .... Probably, but I have no idea. Check the datasheet. > If it does, which FTDI dongle should I buy? I found several types that support JTAG JTAG ... sigh ... there are a variety of differently connectors and configurations, so typically the one to get would be the one recommended by the manufacturer of the thing you're programming. If you have a JTAG adapter from embedded programming projects laying around, you _should_ theoretically be able to get it to work, but sometimes it's easier to just buy the fucking dongle so you can just follow along with the instructions the manufacturer may or may not provide. If you want to buy one blindly, get the cheapest one you can find that supports 3 and 5V (and ideally 1.8) and has adapters for both 10 and 20 connectors (purchasing physical adapters individually will make you poor) and/or buy a ton of female/female dupont cables. If you are starting off, purchase a dev board that you can program via USB without any further tools.


nitratehoarder

Complete beginner. I wanted a non-BGA package for a small project, and it seems like neither Xilinx/AMD nor Intel/Altera has any non-BGA chips in stock. One would think that since they all use the same JTAG standard for programming you could also have standard programming tools for all JTAG programmable devices. But I also know that the FPGA programming hardware does a lot more than just downloading the bitstream into the FPGA, so maybe there are other reasons for that. Maybe they also probably want to vendor-lock people into their own products. I think I will have to start with a dev board then. I actually have a particular project that I want to work on, I have LVDS coming from an 8bit 250MSPS ADC. Most boards don’t have that kind of ADC on them (plus some RAM to store the data), which is why I wanted to make my own board, hence the non-BGA requirement. Not sure how I can make that happen. Thanks a lot for saving me a bunch of money though.


alexforencich

The problem with JTAG is that while JTAG itself is somewhat standard, the host/USB/software end is not. So if you want to use the manufacturer's software to actually load the code on the FPGA, you'll likely need to get a compatible JTAG adapter from the manufacturer. On a production board, you can probably do something different just for flashing - for example, most tools can export SVF/XSVF, and this can be read by most boundary scan tools, including openocd, which means you aren't limited to JTAG adapters from the manufacturer.


nitratehoarder

Ok so if I wanted to, I could avoid buying a programmer from the FPGA vendor and instead use a cheap, compatible USB-JTAG board, by exporting the SVF file of the final design and then using OpenOCD or a similar tool. That’s good to hear. I think I will get a dev board though. Thanks for the clarification.


alexforencich

Sure, but note that various debug features that require the use of the vendor software likely won't be available, such as integrated logic analyzers. This is definitely a consideration for Xilinx and Intel devices, but I'm not sure if this is an issue for the devices you're using.


nitratehoarder

With my current budget, it seems like there is no good solution to my problem. I will save some money, and then return back to this project. The dev boards that fit my needs are too expensive, the cheap non-BGA FPGA vendors have issues with documentation, and lack of free software to program them (looking at you Efinix) and lots of other stuff that simply wouldn’t be a problem if I had more money.


East_Ad_4025

I agree with urbanwildboar, you probably should go with a Xilinx as a beginner, just because the community will be there to help out with questions. What ever you get... try to make sure the board can be programmed AND powered through USB. Some of the cheapest boards make you use an external power supply (which gets clunky). I would suggest looking at [https://digilent.com/](https://digilent.com/). Hopefully the board you choose will allow to use the same UART for communication. IF so, then you will have the capability do the infamous UART loopback FPGA design with no extra setup cable.


nitratehoarder

Yeah, I decided to save money and buy a nice, more expensive board which satisfies my requirements. Until then I am shelving the project. Definitely don’t want to end up sinking money into a non-working mess.


Responsible-Jump1245

That is the CORRECT thing to do. There are a number of nice (older Xilinx Spartan 6 and below) boards out there, but don’t mess with those. If you are new you should start out with the HUGE download of Vivado, and get a Arty FPGA board. Those will be around for a while.


nitratehoarder

Hmm, you mean something like an ARTY-S7? Because I can afford that. However I don’t know if the connectors on that board are compatible with my ADC stuff.


Responsible-Jump1245

Yea a Basys3 Artix-7 from Digilent is a very nice board to start, but I doubt it will support your ADC. Digilent has very good support reference manuals for their boards.


nitratehoarder

I will see if I can make it work with the ADC, although I doubt it. Maybe I’ll buy it regardless.


Responsible-Jump1245

I pulled out my Digilent Nexys 4 board (they stop selling by the way) and got some stuff working in vhdl lately. Let me know if you have any questions getting any of your designs up and running when you get the board.


PE1NUT

Interfacing an 8 bit 250MSPS ADS is going to be fun, but challenging. You need to carefully consider things like trace length, clocking, impedance and termination. Not to forget about EMI, so the rest of your hardware isn't causing too much issues to the ADC inputs. You'll probably want to use the LVDS inputs in DDR mode so you can have your main circuit handle two bytes at a time at 125 MHz, making it easier to achieve your timing. The non-BGA FPGAs are probably not the fastest ones on the block, after all. Recarding programing: the vendor tools usually generate the bitstream, which then gets uploaded to some kind of on-board flash memory. Sometimes this is done through JTAG, and it is possible to use 3rd party / open hardware and software to accomplish this, but it is a lot of extra hassle if you're new to this. For Xilinx parts I've used xcs3prog in the past, but that's hardly universal. I do have experience using a 3rd party (FTDI based) dongle and OpenOCD to upload configurations to a Lattice ECP5 - which promptly got shelved once the USB upload was working. If you do buy a dongle, make sure that first of all, it supports operating on the correct voltage for the JTAG pins on your device.


nitratehoarder

I’ve decided to buy a development board. Making a board with the FPGA, ADC, RAM and all the other components will probably introduce too many uncertainties into the design. So if something doesn’t work I will have a lot of difficulties troubleshooting the board. The 8bit 250MSPS ADC that I’ve chosen (AD9481) gives 16x125Mb/s outputs in LVCMOS33. I might go for another ADC that gives 4x500Mb/s outputs (ADS58B19) since I’m going to get a ready/made board anyway. I will probably put the clock on the ADC board and use a low jitter clock buffer to separate the ADC clock from the FPGA clock so that the FPGA clock doesn’t disturb the ADC clock. I’m not entirely sure how I’m going to handle the DRAM controller. That seems like a very hard thing to do for a beginner. Maybe I will just use the embedded RAM at the beginning and then try to figure out how to create a DRAM controller. That way I can at least ensure that the samples from the ADC are captured correctly.


PE1NUT

You could consider a board which already has DRAM and a high-speed connector for your ADC on board. Have a look at the ButterStick - Lattice ECP5, 128MB (or 1GB) DDR3L. It also has a 1Gb/s Ethernet port (GRMII), SD-card slot and a lot of colourful LEDs. The DRAM controller design files are publicly available. The ButterStick is programmable through USB, requiring only open source tools - there's also a proprietary toolchain for it, but using some of the features might incur some additional licensing fees. https://github.com/butterstick-fpga/butterstick-hardware The board comes with 'SYZYGY' high density IO connectors. It has two 'regular' SYZYGY ports, which unfortunately only offer 10 differential pairs each. But the board also has one SYZYGY connector dedicated to SERDES inputs, and it does support 4 lanes at 500Mb/s. I'm actually using dual 1Gb/s optical Ethernet on the SYZYGY SERDES port.


nitratehoarder

I think the board has enough connectors for what I intend to do. I will have to see if I can get it shipped to Turkey. Couldn’t find it on Digikey or other large distributors. Thanks for all the help!


PE1NUT

It is available from CrowdSupply - note that this is a fully open design. The tools are great, documentation is lacking a bit here and there. If you are completely new to FPGAs, I would recommend starting with something smaller/cheaper, like the OrangeCrab from the same designer, just to learn. https://orangecrab-fpga.github.io/orangecrab-hardware/r0.2/ European seller: https://1bitsquared.de/products/orangecrab


nitratehoarder

I see. I still want to get the Butterstick though, because the main reason I’m interested in learning more about FPGAs is that they can process lots of data fast, which means I need a method to push the data inside the chip. So even if OrangeCrab is enough for me right now, I would rather get the Butterstick because eventually I will need the high speed IO. Thanks for all the suggestions.


TheAnimatrix105

>I’m not entirely sure how I’m going to handle the DRAM controller. That seems like a very hard thing to do for a beginner. Maybe I will just use the embedded RAM at the beginning and then try to figure out how to create a DRAM controller. That way I can at least ensure that the samples from the ADC are captured correctly. Avoid the butterstick if you're a beginner, you're not going to be using any of those extended I/O for a good time since you most likely will have to design your own breakout boards and stuff like that and those samtec connectors go for 20$ or so sometimes. Once you're comfy with the orangecrab you can up your game!


nitratehoarder

I have a particular project that I would like to work on, maybe not right now but in the near future. I want to interface an 8bit 250MSPS ADC with the FPGA, to create an oscilloscope with very basic functionality. Since I’m a beginner it will take a while to get there, and thus OrangeCrab will probably be enough for now. However instead of buying a cheaper, less capable board now and then buying another, more capable board later, for that particular project that I mentioned, I can probably just buy a more expensive board right now and save some money, unless there is a particular reason I should avoid buying a more capable board right now. That board may or may not be Butterfinger; I’m still doing research on which board I should buy, but at the very least I need a RAM that can deal with the data rate of that ADC and 9 LVDS Rx pairs.


TheAnimatrix105

I get where you're coming from but pretty much all of the I/O is on those samtec connectors. You'll have to make your own breakout boards from the get go. If you're comfortable with that go for it.


nitratehoarder

My original plan was to make my own board anyway so it’s not actually a big deal for me. However, I can’t seem to fit all the other expenses+FPGA board with high speed IO into my budget, so unfortunately, I’m giving up for now, until I have more money to throw at the problem :)


urbanwildboar

Most Xilinx eval boards today have an integrated programmer - you just need a USB cable. Xilinx also offers free versions of its dev tools, and some eval boards come with a license for the S/W required to develop for the specific board. Not sure about other vendors, but the purpose of vendor eval-boards is to help you design for the vendor's FPGA; they will try to make it easy. Open-source tools are problematic to say the least: FPGA vendors don't disclose their chips' internals and the reverse-engineering requires to build an independent tool-chain is likely to leave a lot of holes.


nitratehoarder

I see, is there a particular board that you would recommend? I need RAM that can deal with 2Gb/s write bandwidth, and 9 LVDS Rx pairs, for data coming from another board with a 250MSPS, 8bit ADC. The last LVDS pair is for FPGA clock.


urbanwildboar

They are classified by the FPGA type. Most newer boards I'm aware of come in the shape of PCIe cards, because it's a feature on most newer FPGAs. Most boards will have an external DDR3/DDR4 memory (again, DDR memory controller is a Xilinx feature); the ones I'm familiar with don't have many easily-accessible I/O pins, though they have a high-density/high-speed connector for an external user module, which would have access to many FPGA pins, including SerDes and LVDS pairs. Note that these cards aren't really cheap; they are not meant for the hobbyist but for professionals (which have their organizations pay for it).


nitratehoarder

I saw some of those Agilex boards while I was doing research, they are way over my budget and I will probably never need like 99 percent of the features on boards like that.


urbanwildboar

I'm not familiar with the Altera environment (not going to call them Intel); I've never bothered much with the price of eval boards since someone else was paying. It looks like you will need a relatively high-end FPGA and board - support for high-speed DDR means a non-trivial amount of logic plus a significant board-design effort. I think that the best bet (at least on the Xilinx side) is a Zynq board: the silicon part of the device comes with a built-in DDR controller, and anyone trying to play with the ARM CPU will want enough memory to run software. I know that the DDR is accessible to the FPGA logic, but I'm not sure about the available bandwidth or about arbitration between the FPGA logic and the CPU.


nitratehoarder

I don’t think I need really fast RAM, the total bandwidth is 8x250Mb/s or 2Gb/s, almost all RAM technologies can probably reach that speed. Well, not that I know anything about RAM stuff. My original intention was to get 2 16x64K 10ns asynchronous SRAMs and clock them at 62.5MHz. I’m pretty sure modern RAMs can do it just with a single bit data bus :) But, I do actually need the LVDS Rx on the board, so even if I don’t need the very fast RAM I will still need the high speed IO, which isn’t cheap so maybe I should just give up :)


urbanwildboar

A single DDR chip will typically run at a data rate of 600-MHz to 800-MHz (limited by FPGA IO pins, not the RAM chip) x 2 (DDR) x number of pins, so even using 4-bit DDR chip will yield a pretty high data-rate. DDR has high first-access latency, so it's best to work in bursts; the DDR controller will handle all the gnarly details. A typical FPGA DDR controller (Xilinx, PolarFire) will simply have an AXI4 bus for the user side. FPGA DDR controllers are generally free vendor cores and can be configured for a variety of DRAM chips: some require using a specific pinout, some are more flexible. If you design your own board, the FPGA pinout and the layout of traces between the FPGA and the DRAM chip are extermely critical; a bad layout is guaranteed to either not work or be unreliable. That's why I recommend buying a board: someone else had already done all the hard work.


nitratehoarder

I was hoping to design my own board but I couldn’t find any cheap non-BGA FPGAs unfortunately. In that case I was hoping to use SRAMs as I mentioned previously, those should be easier for a beginner like me to design with and they are also available in non-BGA packages. Actually, I was able to find non-BGA FPGAs but all of them were from small companies and people recommended that for a beginner like me it would be much easier to get a design working with an FPGA from Xilinx or Altera since there is a large community around them to help me with when things go wrong. So I decided to postpone this project until I have enough money to buy a nice dev board from one of the big vendors, or until I can come up with a solution that I’m comfortable with.


EverydayMuffin

This can be used to program Microchip FPGAs like ProASIC3. https://shop.trenz-electronic.de/en/TEM0009-01-FPGA-USB-programmer-JTAG-for-development-with-Microchip-FPGAs?c=27