Altera_Forum
Honored Contributor
16 years agoI need a low jitter clock mux in logic cells
In my application, I need to select one of 4 recovered clocks (GXB CRU outputs) to act as timing reference for other PLLs on my system. Quartus 8.1 or StratixII GX won't allow me to use the clock control block for the clock mux (because that has to be sourced from a pin or PLL), so I am forced to implement the mux in logic.
My problem is that Quartus is trying to be too "smart" with it's mux implementation and keeps giving me high jitter generation on the output clock. The structure of the logic blocks in the FPGA has 4 data inputs that each feed 4 LookUpTables, and two inputs that act as mux select between the 4 outputs of the LUT's. The tool keeps using my clock inputs as selects of the mux, and the select lines I want to use as data inputs (I guess because those pins have the fastest latency). The logic works out fine, but the timing sucks because the different paths through the LUTs have different latencies (sometimes 1LUT, sometimes 1MUX, sometimes 1LUT+1MUX). These different latencies and the fact that my "select" lines are thrashing around wildly (the recovered clocks are not phase aligned) introduce jitter on the output clock which gets amplified through the system, and violates my required network timing. I've tried everything I can think of to get the tools to use the MUX atom for what it's best at, but cannot get what I'm after. So does anyone have any idea how to get a 4:1 mux implementation that will use my static signals for the select, and the clock signals with fixed latency per input? Thanks