关于综合出锁存器的问题,请指教
看到很多地方在讲到编码风格的时候说,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;
这个进程会综合处锁存器吗?按理说这个命名是有时钟驱动的,最多也就综合处寄存器吧? 不会。。。。。D-FF的写法不就是这样吗? 同意,组合电路中else要写全 原帖由 equvalent 于 2006-9-16 23:54 发表<br>
同意,组合电路中else要写全 可是如果在组合电路中,难道还能综合出寄存器来吗?<br>
<br>
组合电路又没有时钟,应该只能综合出锁存器吧? 原帖由 andy_xu 于 2006-9-18 11:21 发表<br>
<br>
<br>
可是如果在组合电路中,难道还能综合出寄存器来吗?<br>
<br>
组合电路又没有时钟,应该只能综合出锁存器吧? 组合电路中的reg只是在用户编程的时候写起来方便,实际上组合电路中没有存储功能,<br>
只有线。也就是说如果if-else没有写全的话,当if的条件不满足的时候,<br>
输出的值不是原if的时候的值,而是x<br>
不定态。 是不是说在进程中有了 IF clk'EVENT AND clk= '1' 之中的if语句,不用写全 也没关系吗??<br>
<br>
而在IF clk'EVENT AND clk= '1' 之外的if语句是一定要写全的吗??? 要看是时序逻辑还是组合逻辑<br>
看有没有存储吧<br>
这个是这么理解的,不知道对不,有没有高手出来给个详尽的解释啊^_^ 找个高手来考问下~~~ if 和else语句的问题是个比较普遍的问题,下面是我的一些理解:<br>
1)如果用在时钟敏感的进程里面,if不一定要和else配对使用,这样代码一般会被综合成触发器(flip-flop);<br>
2)如果用在组合逻辑的描述里面,一般if和else需要配对使用,这样生成的电路为组合逻辑;<br>
3)有时,电路中需要锁存器这样的单元,那么if和else不需要配对使用。 回楼主的问题:<br>
这样不会综合出锁存器,而是综合除了带同步使能的寄存器