集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 8011|回复: 20

关于综合出锁存器的问题,请指教

[复制链接]
ANG 发表于 2010-6-27 22:17:23 | 显示全部楼层 |阅读模式
看到很多地方在讲到编码风格的时候说,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;

这个进程会综合处锁存器吗?按理说这个命名是有时钟驱动的,最多也就综合处寄存器吧?
longtime 发表于 2010-6-27 23:37:23 | 显示全部楼层
不会。。。。。D-FF的写法不就是这样吗?
HDL 发表于 2010-6-28 00:53:25 | 显示全部楼层
同意,组合电路中else要写全
 楼主| ANG 发表于 2010-6-28 00:58:47 | 显示全部楼层
原帖由 equvalent 于 2006-9-16 23:54 发表<br>
同意,组合电路中else要写全 可是如果在组合电路中,难道还能综合出寄存器来吗?<br>
<br>
组合电路又没有时钟,应该只能综合出锁存器吧?
interige 发表于 2010-6-28 02:56:23 | 显示全部楼层
原帖由 andy_xu 于 2006-9-18 11:21 发表<br>
<br>
<br>
可是如果在组合电路中,难道还能综合出寄存器来吗?<br>
<br>
组合电路又没有时钟,应该只能综合出锁存器吧? 组合电路中的reg只是在用户编程的时候写起来方便,实际上组合电路中没有存储功能,<br>
只有线。也就是说如果if-else没有写全的话,当if的条件不满足的时候,<br>
输出的值不是原if的时候的值,而是x<br>
不定态。
CTT 发表于 2010-6-28 04:29:02 | 显示全部楼层
是不是说在进程中有了&nbsp;&nbsp;IF clk'EVENT AND clk= '1'&nbsp;&nbsp;之中的if语句,不用写全 也没关系吗??<br>
<br>
而在IF clk'EVENT AND clk= '1'&nbsp;&nbsp;之外的if语句是一定要写全的吗???
VVIC 发表于 2010-6-28 05:34:42 | 显示全部楼层
要看是时序逻辑还是组合逻辑<br>
看有没有存储吧<br>
这个是这么理解的,不知道对不,有没有高手出来给个详尽的解释啊^_^
CTT 发表于 2010-6-28 07:18:08 | 显示全部楼层
找个高手来考问下~~~
CHA 发表于 2010-6-28 08:52:08 | 显示全部楼层
if 和else语句的问题是个比较普遍的问题,下面是我的一些理解:<br>
1)如果用在时钟敏感的进程里面,if不一定要和else配对使用,这样代码一般会被综合成触发器(flip-flop);<br>
2)如果用在组合逻辑的描述里面,一般if和else需要配对使用,这样生成的电路为组合逻辑;<br>
3)有时,电路中需要锁存器这样的单元,那么if和else不需要配对使用。
longtime 发表于 2010-6-28 09:08:16 | 显示全部楼层
回楼主的问题:<br>
这样不会综合出锁存器,而是综合除了带同步使能的寄存器
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-25 01:29 , Processed in 0.070486 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表