在代码开发过程中,我们经常用到case()语句,但是case()语句综合出来的到底是什么东西。下面我们一起看看。
代码:
综合后的RTL级:
分析:
通过RTL级可以看到,case()语句生成了一个selector0选择器,该选择器具有四个SEL信号输入,分别为ModeSelect和0、1、2,进行比较的比较器Equal0、Equal1、Equal2的输出,还有一个是这三个比较器输出信号相或后的。该选择器还有四个数据输入,分别为FPD_signal、ExternalSignal、Logic_ECG_TRG、0。当选择信号SEL满足一定要求,则选择器输出相应的值。该选择器可以认为就是译码器。selector0该选择器是组合电路,它刚好在FPD_signal触发器和TriggerSignal触发器之间。则它的组合逻辑大小和延时,会影响这2个D触发器的时序以及时序余量。
总结:
case()语句综合出来的是选择器,且是组合逻辑,case()中分支的多少,会影响该电路的延时时间,从而影响设计的静态时序。理论上case()分支应该越少越好。