原创 FPGA设计之三:latch

2006-11-28 22:07 6481 9 11 分类: FPGA/CPLD

首先回答一下:


1)stateCAD没有用过,不过我感觉用这个东东在构建大的系统的时候似乎不是很方便。也许用system C或者system Verilog更好一些。


2)同步、异步的叫法是我所在公司的习惯叫法,不太对,不过已经习惯了,呵呵。


这次讲一下latch。


latch的危害已经说过了,这里不再多说,关键讲一下如何避免。


1)在组合逻辑进程中,if语句一定要有else!并且所有的信号都要在if的所有分支中被赋值。


always  @( * )    begin


     if ( sig_a == 1'b1 )    sig_b = sig_c;


end


这个是绝对会产生latch的。


正确的应该是


always  @( * )  begin


    if ( sig_a == 1'b1 )  sig_b = sig_c;


    else  sig_b = sig_d;


end


另外需要注意,下面也会产生latch。也就是说在组合逻辑进程中不能出现自己赋值给自己或者间接出现自己赋值给自己的情况。


always  @( * )  begin


   if ( rst == 1'b1 )      counter =  32'h00000000;


   else  counter = counter + 1;


end


但如果是时序逻辑进程,则不存在该问题。


2)case语句的default一定不能少!


原因和if语句相同,这里不再多说了。


需要提醒的是,在时序逻辑进程中,default语句也一定要加上,这是一个很好的习惯。


3)组合逻辑进程敏感变量不能少也不能多。


这个问题倒不是太大,verilog2001语法中可以直接用 * 搞定了。


 


顺便提一句,latch有弊就一定有利。在FPGA的LE中,总存在一个latch和一个D触发器,在支持DDR的IOE(IOB)中也存在着一个latch来实现DDIO。不过在我们平时的设计中,对latch还是要尽可能的敬而远之。


到年底了,工作越来越紧了,可能后续的日志写作时间会不规律且长度不定,请大家谅解啊!


另外,有空请各位多推荐推荐,拜谢!


我希望能通过这个blog结交更多的FPGA设计爱好者,共同提高,共同进步。

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户208385 2006-12-20 19:02

我用的就是简单的分频,和一些可控的PWM输出。但是也会莫名其妙的产生结果与预期逻辑不符合的情况。我在分频的时候经常会用到COUNT=COUNT+1的情况,这会有什么危害吗?如果不用这样的逻辑,应该如何替换?

希望多更新,我会支持。

用户61970 2006-11-28 22:10

to riple:

再补充一下,双进程FSM的组合逻辑进程如果改成寄存器输出,实际上就成了单进程FSM了,也失去了双进程FSM的所有好处了。

相关推荐阅读
用户61970 2007-08-14 00:46
有问题大家发邮件给我吧!
现在预计到9月底也没有太多的时间写blog文章了。计划赶不上变化啊,由于需求变更,现在我是指导上板调试一个版本,编码调试一个临时版本,指导设计一个新版本。每个版本的代码行都有35K,彻底晕菜……。具体...
用户61970 2007-06-10 23:13
好久没有上来,给大家先道个谦
现在这个项目实在是累人,进度紧、难度大就不说了,还经常发生需求变动,幸好不是大的变动,不然真的要死人了……终于在本周完成了所有的代码和UT,统计结果吓了一跳,居然总代码行数到了6W多。由于时间太近,U...
用户61970 2007-02-04 22:36
静态时序分析:Tsu、Tco
首先需要注意的是,这里讨论的都是静态时序分析。所谓静态时序分析,就是只针对FPGA内部布线后生成的实际布线结果来计算理论时序,同时采用的模型为理论模型。静态时序分析并不能完全分析和解决实际运行中的所有...
用户61970 2007-01-10 22:47
问题答复
to yangss2006:我的邮箱:fy2kdonews@yahoo.com.cn,欢迎大家发邮件。init_flag信号是FPGA来产生的吗?如果是,可以用下面的方式来产生:always @( p...
用户61970 2007-01-01 23:32
大家提的一些问题的答复
最近刚忙完一个老逻辑项目的优化工作,把性能提升了一倍。节后马上又要开始一个新项目,难度很大,带宽有10G,6月份就要完工。估计元旦后的空闲时间又不多了,请大家谅解。to riple:时序分析和约束是一...
用户61970 2006-12-11 23:13
希望大家在回复中多提问题
最近2周一直在忙一个逻辑优化工作,总共写了5000多行,外加所有的单元仿真和系统仿真。好累!现在要做系统仿真和上板测试了,估计最近2周晚上也没有空来更新了。另外,请大家在回复中提出自己关心的问题,我可...
我要评论
2
9
关闭 站长推荐上一条 /3 下一条