网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> EDA >> HDL >> 文章正文
  FPGA设计之三:latch           ★★★ 【字体:
FPGA设计之三:latch
作者:Free    文章来源:Free    点击数:    更新时间:2008-1-3    

首先回答一下:

            1stateCAD没有用过,不过我感觉用这个东东在构建大的系统的时候似乎不是很方便。也许用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

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

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

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

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

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

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

           

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

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号