> 家居
桶形移位寄存器工作原理(桶形移位器结构图)
导语:「精品博文」关于桶形移位寄存器的讨论
桶形移位寄存器即循环移位寄存器,在浮点加减运算、压缩/解压缩和图像处理算法中有应用,所以稍微说明下:
例如设计一个8位桶形移位器:8位桶形移位器是有8个数据输入位,8个数据输出位和3个控制输入位的组合逻辑电路,其输出字等于输入字的循环移位,循环移位的次数由控制输入位指定。比如,如果输入字等于ABCDEFGH(每个字母表示一位),且输入控制位为101(5),则输出字为FGHABCDE。
学校里的一些教材给出的写法是:
然而,这样的设计并不能产生寄存器,综合出的结果只是纯组合电路。(不过可以通过综合指令或约束,保留寄存器)在Diamond下(使用LSE综合工具)得到的结果为:
从面积的角度来说,这种设计方式的确可以节省资源,但是在高速时序电路中。这样的设计就不是很合理了。
随着FPGA技术的发展,各个厂商已经为开发者提供了大量的IP、基本设计的功能块(原语)等。在包含DSP Slice的器件中,设计者可以很方便的使用DSP进行桶形移位寄存器设计。但是也有一些早期的FPGA或者是CPLD中并不包含DSP Slice的,但是厂商也为设计者提供了基本的功能块,在综合设计的时候,会自动识别用户设计,并用功能块进行例化。
下面给出另一种设计:
其综合结果如下图所示:
可以发现,综合工具将移位部门的设计自动替换为厂商提供的功能块。
本文内容由小琪整理编辑!