Flip-Flop和Latch都可以用于存储数据(维基百科【1】)。一般意义上讲,在芯片设计中,Flip-Flop特指D触发器,Latch指锁存器。其最大的区别在于,触发器是边沿触发,锁存器则是电平触发。从面积大小来看,触发器的面积要比锁存器大很多,但一般在设计中希望尽可能减少latch的产生,原因主要在于电平触发对于毛刺等的敏感性过高。相比之下,触发器只在触发时进行数据的存储,在电平阶段,输出数据与输入端没有关系,稳定性和可靠性较高。
逻辑图描述
【2】介绍了触发器的逻辑符号和多个触发器组成的register寄存器。
图1
图1是由基本逻辑门构成的SR锁存器,而D触发器的结构较为复杂,可以简单地理解为由多个latch组成。工作原理和真值表均可以根据逻辑图推导。
图2【3】
图3 触发器简化逻辑图
图4是由四个D触发器构成的四位寄存器,在verilog中可以用 reg [3 :0] 描述 。
图4
可能会造成综合出Latch的一些操作
比较典型的就是case语句,在无法穷尽所有情况时还缺少了default状态的描述。除此之外,遇到过常量声明为reg [31 :0] data = 32’hffff,综合出latch的情况。
参考资料:
【1】Flip-flop (electronics)
【2】The difference between register(寄存器), latch(锁存器) and flip-flop(触发器)
【3】D触发器原理-D触发器电路图