I want to choose development kit (evaluation board) with pci express. I do not need extra peripheral, just FPGA and PCIe. I want to implement data analyzis in fpga. Data speed is less than 10gbit. What I should buy?
Your question is too vague. Can you please provide a little more information. For example,1. Why do you think you need to use an FPGA? 2. Why do you think you need to use a PCIe board? 3. What language do you plan on using to program the board? For example, if you plan on using OpenCL, then you need to select a board that has a board-support-package. 4. How much experience have you had with FPGAs, and interfacing to PCIe devices? Are you planning on writing a Linux device driver or Windows device driver to access the board? If not, you need to make sure that good software support exists for the hardware. 5. Its important to me to be able to simulate designs. For a PCIe board, you need a PCIe bus functional model (BFM). Altera used to have PCIe BFM support (for Cyclone IV and Stratix IV series devices), and then they removed it. If simulation is important to you, then you need to investigate whether the board you are interested in has PCIe BFM support. You should take a look at the Altera development boards, the boards on Terasic's web site, and the boards on Bittware's web site. There are quite a few with PCIe and there is quite a range of prices. Before you decide on buying a board, you should check what resources you need on the board. For example, do you need memory, do you need I/O off the board. You claim you do not need memory or I/O, but there are very few developments boards without these things. At a minimum you would need to determine what sort of FPGA you need to meet your processing requirements. Once you have a list of boards that you think might be suitable, ask for board feedback from people on this list. Cheers, Dave
1. I have great idea how to implement my algorithm in terms of primitive units like logic gates, and shift registers. This is not implementable in generic cpu since it mean highly-parallel analyzis.2. I think that pcie is the simpliest communication between device and application that will feed data and gather result. Yes, 10gbit ethernet is possible, but this device should work inside pc, not as separate device. 3. I want to program device using vhdl or verilog, since idea in terms of primitive logic. 4. I have no experience at all :(. But I have strong understanding how to write driver for Linux. 5. I do not understand that point. Partial simulation is appropriate as I think. Yes, I do not need memory on board. Only one thing required - ability to re-program fpga on that board online. I mean that it should be possible to completely erase and "re-flash" fpga chip (or its part) without external device or powering board off. This is required since set of the gates is changed depending on some data, and cannot be prepared once. It will be nice, if someone say price range which I can consider for that task. Could you provide list of web links (or names of boards) to choose ?
--- Quote Start --- 1. I have great idea how to implement my algorithm in terms of primitive units like logic gates, and shift registers. This is not implementable in generic cpu since it mean highly-parallel analyzis. --- Quote End --- Ok. This confirms you understand why you would use an FPGA. But you have missed a critical step. You comment that you "have an idea" ... so why not implement it? You do not need a board to implement your idea. You first need to write the VHDL and then simulate your idea. To determine how much logic it requires, you can synthesize the design using Quartus and simply select a "default" device, eg., the default device from the Cyclone V or IV series, or from the Stratix V or IV series. That synthesis information is required before you select a board, since you need to know whether or not the board you select has the FPGA resources required to implement your idea. Once you have a short-list of boards you might want to use, you can synthesize your design with the FPGA on those boards and decide whether it is sufficient. --- Quote Start --- 2. I think that pcie is the simpliest communication between device and application that will feed data and gather result. Yes, 10gbit ethernet is possible, but this device should work inside pc, not as separate device. --- Quote End --- Then you have never had to work with Altera's PCIe core :) Seriously though. Using PCIe to have a standard processor talk to another processor is a piece of cake, eg., x86 to PowerPC, or x86 to ARM, since the PCIe cores embedded in the processors are "standard' and U-boot and Linux have pretty decent support. The same cannot be said for Altera's PCIe core (or Xilinx or any FPGA core really). The core is configurable, so there is no "single" implementation that has good support. You'll have to ask questions on this list to see whether people like or dislike it. My comments on the Qsys IP core for Stratix IV and Cyclone IV devices are here; http://www.alteraforum.com/forum/showthread.php?t=35678 I was not impressed with the core, so ended up not using it. What kind of data rate were you expecting you needed between your PC and your FPGA? Perhaps a slower interface would work. You can avoid having to become a "master" of PCIe design by buying a board with good PCIe support. I have not been very impressed with Altera's board support for PCIe and their IP core for the Stratix IV/Cyclone IV series. However, the IP cores for Altera's Stratix V and Cyclone V, or Arria 10 series cores are different, so perhaps things have improved, however, I have not used them, so you'll have to ask for feedback from others on this list. These are not simple cores, and the software is not simple either. If you have the money, then buy a good solution, eg., talk to Bittware, they are in the business of selling boards more than Altera (who want to sell devices). --- Quote Start --- 3. I want to program device using vhdl or verilog, since idea in terms of primitive logic. --- Quote End --- No problem there. You can download Modelsim and start right now. --- Quote Start --- 4. I have no experience at all :(. But I have strong understanding how to write driver for Linux. --- Quote End --- At what level do you understand PCIe drivers? Do you know how to re-enumerate the PCIe bus when your FPGA IP core reconfigures and disappears from the PCIe bus? The link I referenced above has some simple PCIe access methods, eg., direct read/write via sysfs nodes, however, the performance is terrible. A real design would need to use DMA, and since the DMA controller for Qsys is not very good, I stopped looking further. There is a DMA driver example for the Terasic DE4 board http://www.altera.com/education/univ/materials/boards/de4/unv-de4-board.html You can search this forum to see if people have used or improved it. You can also look at the AlteraWiki. --- Quote Start --- 5. I do not understand that point. Partial simulation is appropriate as I think. --- Quote End --- You can simulate any code that you create using Modelsim. To simulate IP cores that Altera creates, you need to use their encrypted code along with bus functional models (something that creates PCIe transactions to the PIPE interface of Altera's IP core). You need to do a little more research to understand these terms. --- Quote Start --- Only one thing required - ability to re-program fpga on that board online. I mean that it should be possible to completely erase and "re-flash" fpga chip (or its part) without external device or powering board off. This is required since set of the gates is changed depending on some data, and cannot be prepared once. --- Quote End --- This is the "tricky" part. The Stratix IV and Cyclone IV series devices with PCIe need to be completely reconfigured when you reprogram them. This means the device disappears from the PCIe bus and then reappears as either the same device (same BAR settings) or a different device (new BAR settings). This confuses most operating systems, so you have to understand the low-level details of bus enumeration. The Cyclone V and Stratix V series have a feature called Configuration via Protocol (CvP) which allows them to reconfigure via PCIe. This is probably the feature you should use if you absolutely have to use PCIe. --- Quote Start --- It will be nice, if someone say price range which I can consider for that task. --- Quote End --- This depends on the first step above. How much logic do you need for your design. --- Quote Start --- Could you provide list of web links (or names of boards) to choose ? --- Quote End --- Look on Altera's web site, Terasic's web site, and Bittware's web site. http://www.altera.com/products/devkits/kit-dev_platforms.jsp http://www.terasic.com.tw/en/ http://www.bittware.com/ Cheers, Dave