|
……
BEGIN
IF CLK’EVENT AND CLK=’1’
THEN Q1<=D;
END IF;
不完整的条件语句:即在条件语句中,没有将所有可能发生的情况给出对应的处理方式。对于这种现象,VHDL综合器理解为:对于不满足的条件,跳过Q1<=D不执行,但是需要保持前一次时钟上升沿时Q1被更新的值。对于数字电路来说,保持一个值不变,就需要用到具有存储功能的元件,即引进时序元件保持Q1的值。
利用不完整的条件语句构成时序电路,是VHDL描述时序电路的重要途径,通常完整的条件语句只能构成组合逻辑电路。
但是必须要注意的是:在使用条件语句设计纯组合电路时,如果没有充分考虑电路可能出现的各种条件,则会导致不完整条件语句的出现,从而综合出设计者不希望的组合和时序电路的混合体。
举例说明:
现在要设计一个纯组合电路比较器,例4-1中在条件语句中漏掉了当a1=b1时做何操作的表述,结果导致了不完整条件语句的出现,于是综合器理解为当出现a1=b1时不做任何赋值操作,保持q1的值不变,即为q1配置一个寄存器,于是电路中被插入了不必要的时序元件,浪费了逻辑资源,降低了电路的工作速度。如图4-1
在例4-2改进程序中,ELSE q1<=’0’ 交代了a1≤b1时的情况,从而产生了图4-2所示的简洁的电路图。