微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教if 和case语句,硬件消耗有区别么?

请教if 和case语句,硬件消耗有区别么?

时间:10-02 整理:3721RD 点击:
请教if 和case语句,硬件消耗有区别么?
if(
    (i_haddr[11:0]!=12'h000)&(i_haddr[11:0]!=12'h004)&(i_haddr[11:0]!=12'h008)&(i_haddr[11:0]!=12'h00C)&(i_haddr[11:0]!=12'h010))
        error   <= 1'b1;
else
        error   <= 1'b0;
end

//    case(i_haddr[11:0])
//    (12'h000),(12'h004),(12'h008),(12'h00C),(12'h010),(12'h83c): error <=  #UDLY 1'b0;
//    default  : error <= #UDLY 1'b1;
//    endcase

取决于综合器

没有任何区别,就是消耗掉两个ALM,现在综合器没有那么弱智


你是指的fpga吧,能不能试试dc和rc.我没试过,随意给不出答案.

if一般带有优先级,硬件消耗多
case一般没有优先级,硬件消耗少
现在综合工具差不多可以识别是否需要优先级,然后调整电路结构。很多原本条件相异,根本不需要优先级的

沒差別

fpga没试过,不晓得。
ASIC肯定是有差别的,理由5楼已讲。
只是你这个例子有点特殊,只有1层条件,肯定是互斥的,可能合出来还真没有区别。
如果你要追根究底,写个8层if else,和8个分支的case,就一定有区别了。

赫赫,if和case主要牵扯到优先级的问题,确实和综合器想关。
假定综合器只做map和cell size的调整,不做逻辑结构的调整,那么有一种方式最节省, 就是输入有优先届,并用if的顺序来体现这个优先级。
个人建议写代码的时候就想着逻辑实现,而不要指望综合器的优化能力,所谓靠tool不如靠己。

学习了

学习了

学习中~

有区别,if else带优先级,Case不带。

看综合结果了,应该是一样的。

there is no difference for power consumption.
only path delay is different so you need to take care timing if it's a critical path.

仅就这个例子而言,case无论从资源还是时序上都会好,因为这是个很简单的译码逻辑,而case就是干这个的。
至于if...else...,实际包含了case的功能,case只是它的特例。当if的各条件互斥时,理想的综合工具会综合出和case相当的逻辑。
如果是我,既不会用if也不会用case,而是用assign。



  我觉得,assign 和if 是完全一样一样的

学习了



  看来你理解的assign不过是assign out = cond ? in1 : in2;这种逻辑。


是的啊,是的啊,呵呵,请教你对assign的理解?

上一篇:如何安装64位VCS
下一篇:Altera器件结构

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top