看到很多地方在讲到编码风格的时候说,if语句中,如果没有在else子句写全,会综合出锁存器来。而锁存器是应该避免的。可是,如果在一个时钟驱动的进程中也会综合处锁存器吗?
如这个例子:
PROCESS(clk)
BEGIN
IF clk'EVENT AND clk= '1' THEN
IF addr_en = '1' THEN--没有将if……else……语句写全,会综合出锁存器吗?
in_data_addr <= '0' & vds & rgb_addr & row_addr & col_addr;
END IF;
END IF;
END PROCESS;
if 和else语句的问题是个比较普遍的问题,下面是我的一些理解:<br>
1)如果用在时钟敏感的进程里面,if不一定要和else配对使用,这样代码一般会被综合成触发器(flip-flop);<br>
2)如果用在组合逻辑的描述里面,一般if和else需要配对使用,这样生成的电路为组合逻辑;<br>
3)有时,电路中需要锁存器这样的单元,那么if和else不需要配对使用。