Barrel shifter in Virtex4?

Hi.

I'm trying to implement a fast 128-bit barrel shifter in a Virtex4 device.

The obvious way is a 7-level cascade, each level shifting by another power of 2. The result is rather slow. Adding one pipeline stop I can achieve just above 125 MHz, but the result is available after 2 clocks instead of 1. For my application I'd prefer to get the full result within a single clock period.

I saw that it's possible to use the DSP48 slices as 18-bit barrel shifters, but I couldn't figure out how to combine them to form a

128-bit shifter - and less so in a single clock cycle (the DSP48 output is registered).

Is there anything I can do to speed up the 7-level approach?

Regards, Marc

Reply to
jetmarc
Loading thread data ...

There's not a lot you can do if you need it in a single clock cycle. The DSP48's can be used with some pipelining for more than 17 bits shift (17 bits is what you get with one because the multipliers are signed) by recognizing a shift is a multiply by a power of two and then cascading the DSP48s as though you were building a multi-precision multiplier. You can get clever with the DSP48's to reduce the number needed as well.

Reply to
Ray Andraka

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.