我正在实现一个浮点标准化单元,我想知道如何有效地实现一个前导零计数器?前导零计数器
我知道我可以写下面的,但我不知道是否有更好的方法,如果我定位的是低区和高能源效率?:
always @(mantissa) begin
case(mantissa)
25'b1????????????????????????: newmant = mantissa[24:1];
25'b01???????????????????????: newmant = mantissa[23:0];
25'b001??????????????????????: newmant = {mantissa[22:0],1'b0};
25'b0001?????????????????????: newmant = {mantissa[21:0],2'b0};
// ... (details ommited for brevity)
endcase
end
您的硬件设计是否需要快速桶式移位器?如果是这样,你可以分离出找到要移位的位数,并进行转换。 – 2013-02-20 02:39:20
不,它不。它专注于低功耗,低面积高能效。但是你建议使用管道吗? – Veridian 2013-02-20 04:08:52
我不确定流水线如何能满足您的低功耗要求。您是否考虑了多阶段前导零计数 - 例如在至少有16个前导零的任何事物上有16位左移,然后在第一步后至少有8位前导零的任何事物上左移8位。它将有更长的路径,但比分别处理每个案例的扇出更少。 – 2013-02-20 04:13:58