On Mon, 2008-10-20 at 19:44 -0300, Listas de Correo wrote: > Hi, I need to make a device that will have to capture one frame of a > non standar video signal and store it in RAM, then pass that info to a > PC trough USB. > The signal should be sampled at 150MHz maximum. > > We are considering using an FPGA, but since we never used one, we dont > know were to begin. I think the Cyclone III would be a good choice, > but any information that someone experienced can provide would be > really appreciated. I basically did that exact project (a little more involved then what you describe, but fundamentally a very similar idea). Unfortunately since it was for work I can't share any of it. That said, what you describe is not too difficult for someone experienced with FPGAs. Rather then trying to choose a part, I'd suggest you research dev boards and choose one that fits the bill. For the design, first off you'll need to store the frame. You don't mention how big a frame you want to capture, but based on the frequency I'll surmise you are targeting something like 1080p (1920x1080x24bits). For that you'll need a MINIMUM of >6MB for your frame buffer (more if you need to support 10bits/colour). While the absolute largest FPGAs might have that much SRAM in them, at that size they are very expensive (>$3000). So, off hand I'd recommend getting a board with external SRAM on it. Another option, potentially cheaper if you are making your own board is to use DRAM. The caveat here is you'll have to integrate a DRAM controller, not too big a deal, most vendors offer cores for free, otherwise www.opencores.org is your friend. As for the FPGA itself, what you describe is pretty small in gate count. Considering you want to run at 150MHz it's best to keep the design as pipe-lined as possible, that'll make timing easier to achieve. 150MHz is getting up there on speed for most FPGAs, you'll have to be very careful ensuring you keep clocks on the clock tree, and that any memories are properly inferred as block rams (instead of seas of flops). Whatever part you choose, pay particular attention to clocking resources. At 150MHz on the IO you'll likely have to at a minimum deskew the clock. As for USB there are lots of options there. The easiest would be to use the FTDI245 chip, it's from a software side identical to the USB-RS232 FTDI chips. The only difference is on the hardware interface side, it has a parallel interface, allowing it to operate faster. You can get almost 1MB/s out of that chip, so if ~6sec/frame is fast enough for you it is by far the most hassle free way of connecting your FPGA to a PC through USB (hassle free both from the hardware and software side of things). If you want to download the frame faster you'll need to either use a USB2 external chip like the Cypress parts (not too difficult), or integrate a USB2 core in the FPGA (more difficult). That's about all I can think of off hand. If you have any more specific questions let me know. TTYL -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist