Well the simple and 'ideal' way to do it is to multiply the clock and then count a number of clocks to get to your required duty cycle.
For example 5/6 = .8333 or 83.3% duty. So multiply clock by 6 then count 5 clocks, invert, count 1 clock invert, 5 clocks invert etc.
If you want to get exactly 85% you will either need to multiply by 10 then use rising and falling edges of clocks to count 8.5 and 1.5. Or multiply by 20 and count 3, 17, 3, 17 etc.
I say 'ideal' because this may not be an option.
1. If your FPGA/PLD does not have a PLL/DLL/DCM then you will have a hard time multying the clock
2. Your device may not be able to produce a multiplied clock that fast (for example at 20 x 50Mhz you are out of luck).
Finally. Are you planning on using this clock as an internal logic clock? My assumption is that this clock is just an output of the FPGA/PLD that is used by some other chip. If so watch out for jitter.
If you do plan on using it internally then you will need to make sure that your logic runs at the period of the lowest duty cycle, not at the clock rate. For example at 50Mhz, 85%... That would really be a clock period of 3ns * 2 or 166Mhz. And you would have to account for a large amount of jitter etc on your new clock also.
--