I believe I know the answer to this, but I just want to check around in case I missed something.
I have an FPGA design where I'm taking an existing frame grabber board that we make and turning it around to make a CameraLink camera simulator. It works and I can even select the camera clock speed from a set of 8 values I precompiled.
However, I find I now want to be able to gradually ramp up the clock speed to see where our receiver boards start failing. My set of 8 frequencies span 85MHz to 16MHz. I would really rather be able to select frequencies from the range of 20-85MHz in 1MHz increments. The duty cycle of the output clock must be no worse then 60/40 for the ChannelLink transmitter chip, which has a PLL to think of.
I think I'm SOL and the best I can do is use as many DCM devices as I can, divide the results by 1/2/3/4 and use lots of BUFGMUX devices to select from that set of clocks and divided clocks. In other words, extend what I've already done until I run out of applicable resources. Besides being icky, that doesn't actually get me many clocks, not to mention the limited number of BUFGMUX devices to make a mux tree of clocks.
So is there a way that I'm missing for getting a single software- selectable output clock with a nearly 50/50 duty cycle ranging from 20 to 85MHz? On an XC2V3000-4?
(For the record, this is an open source design, but using a pre-made board that I cannot otherwise change.)