Forum Discussion
Altera_Forum
Honored Contributor
14 years agoFPGA architecture
Hi all,
I'm starting a new project and I need some help with the FPGA architecture. The concept is very simple - the FPGA will sample an input parallel bus (24 or 48 signals @ 150MHz max) and stream it down a PCIe bus. The FPGA will use an external IP for the PCIe bus, combined with Altera's hard IP. The input bus uses its own clock (meaning that the FPGA is the slave for that matter). The FPGA will be probably Cyclone IV. My questions are: 1. Which oscillator frequency should I use for the basic FPGA clock (use a high frequency oscillator or use something like 50MHz and then a PLL to boost it)? 2. How do I make the connection between the FPGA internal clock and the bus clock? For a slow bus clock I would usually register it with 3-4 flip-flops but since this clock is at 150MHz I'm not sure that it the the best solution since I can't oversample it too much. 3. While transferring the data from the FPGA IOs to the PCIe transceiver, is it mandatory to use pipelining? If so what is the best way to do that? Thank you11 Replies
- Altera_Forum
Honored Contributor
1. Whats wrong with the bus clock?
2. use a dual clock fifo (DCFIFO in the megafunctions library) 3. It depends what interface the core is using. You have the choice of two Avalon interfaces, Streaming or Memory mapped. Im not up to speed on MM interfaces, but for streaming you need to construct the top level packets (ie put a header on the the data) before putting it into a FIFO, so yes, pipelineing is probably required. I suggest you get reading the documentation for the PCIe core - its not that straight forward.