FPGA pipeline RISC设计(2)--FPGA的设计关键优化Multiplexer<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
从上一片日记看,cost的考虑,Multiplexer对于FPGA设计来说是奢侈的。
下面看barrel-shift的设计上怎么优化Multiplexer
以8 bit Barrel-shifter为例,一个直观的实现如下,如果下图不清楚,可以画一个4-bit barrel-shifter试试。
根据barrel-shifter的要求,一个8bit的shifter需要有3层Multiplexer深度来完成8中移位可能,一个N bit的shifter需要有log2(N)层深度的Multiplexer,每一层有N个Multiplexers(2:1)。
所以N bit barrel-shifter需要有N*log2(N)个Multiplexer。如果每个Multiplexer的实现占用一个LE,共需N*log2(N)个 LE。
那一个普通RISC需要的32 bit barrel-shifter就需要32*5=160个LE来实现。
下面是使用乘法器来替代multiplexer的实现方法,用乘以2的幂来实现移位,
在有硬件乘法器的FPGA中,就有了barrel-shifter的一种乘法替代。
对于算术移位,使用有符号乘法:
对于逻辑移位,使用无符号乘法:
对于循环移位:
用户377235 2015-3-1 04:38
用户222124 2009-10-18 17:24