zoukankan      html  css  js  c++  java
  • 每天进步一点点------基础实验_07_锁存器 :锁存器器及透明锁存器各一

    1. latch是电平触发,无法实现同步操作,与我们正常的时序逻辑电路设计思路不符。
    2. latch会对输入电平敏感,受布线延迟影响较大,比较容易导致输出有毛刺产生。 
    3. latch会导致静态时序分析和DFT会很复杂。
    4. 在ASIC中使用latch的集成度比DFF高,但在FPGA中正好相反,因为FPGA中没有标准的latch单元,但有DFF单元,一个LATCH需要多个LE才能实现。
    latch的好处:
    因为使用latch可以timing borrow,在高速电路设计中(timing会很紧),有时候就需要用latch。

     

    这次讲一下latch。

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

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

    1 always  @( * )    begin
    2 
    3      if ( sig_a == 1'b1 )    sig_b = sig_c;
    4 
    5 end

    这个是绝对会产生latch的。

    正确的应该是

    1 always  @( * )  begin
    2 
    3     if ( sig_a == 1'b1 )  sig_b = sig_c;
    4 
    5     else  sig_b = sig_d;
    6 
    7 end

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

    1 always  @( * )  begin
    2 
    3    if ( rst == 1'b1 )      counter =  32'h00000000;
    4 
    5    else  counter = counter + 1;
    6 
    7 end

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

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

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

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

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

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

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

     

     1 /*********************************************************************************
     2 * Company                    : 
     3 * Engineer                    : 空气微凉
     4 * 
     5 * Create Date                : 00:00:00 22/03/2013 
     6 * Design Name                : 
     7 * Module Name                :         
     8 * Project Name                :  
     9 * Target Devices            : 
    10 * Tool versions            : 
    11 * Description                :  
    12 *                       http://www.cnblogs.com/kongqiweiliang/             
    13 * Dependencies                : 
    14 *
    15 * Revision                    : 
    16 * Revision                    : 0.01 - File Created
    17 * Additional Comments    : 
    18 ********************************************************************************/
    19 `timescale 1ns/1ps
    20 `define    UD  #1
    21 /*******************************************************************************/
    22 module LATCH_N    
    23 ( 
    24     //Interface package
    25     input                                iDAT            ,//
    26     input                                iDAT_EN        ,//
    27     output  reg                        oDAT            //
    28 );  
    29 //-------------------------------------------------------------------------------
    30 always@(*)begin
    31     if(iDAT_EN == 1'h1)
    32         oDAT = iDAT;
    33     else
    34         oDAT = iDAT;
    35 end
    36 //-------------------------------------------------------------------------------
    37 endmodule 

  • 相关阅读:
    atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
    atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
    Atitit.执行cmd 命令行 php
    Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
    atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
    atitit. 管理哲学 大毁灭 如何防止企业的自我毁灭
    Atitit.java的浏览器插件技术 Applet japplet attilax总结
    Atitit.jquery 版本新特性attilax总结
    Atitit. 软件开发中的管理哲学一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
    (转)获取手机的IMEI号
  • 原文地址:https://www.cnblogs.com/kongqiweiliang/p/3246428.html
Copyright © 2011-2022 走看看