|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
触发器(FF)当收到输入时钟脉冲时,便会根据规则改变状态,然后保持这种状态直到收到下一个触发脉冲信号到来。
( q) s X* z, p3 V: D
1 [- q0 w' A1 @/ Q
% [* I: {; i- h寄存器(register)的存储电路通常是由触发器构成的,因为一个触发器能存储一位二进制数,所以N个触发器就可以构成N位寄存器,可以将寄存器理解成多个触发器构成的暂存单元。* ]2 r, W9 B; \0 |4 A; k
* E, I( H, b7 T0 I! S- I6 H/ A0 d1 e9 Z
锁存器(latch)在电平信号的作用下改变状态,是一种电平触发的存储单元。锁存器的数据存储动作取决于输入使能信号的电平值,仅当锁存器处于使能状态时,输出数据才会随着数据输入发生变化,否则处于锁存状态。
; u+ Q& p, B4 V- c# o: I
% n7 ?5 x6 A2 R; r% k0 ] X( H% K2 H- S" X: g/ ^1 W' [. q
触发器(寄存器)和锁存器的区别:触发器(寄存器)是由同步时钟信号控制的,是需要时钟信号的;而锁存器是由电平使能信号控制的,不需要时钟信号。在FPGA的可用资源中,触发器资源非常常见,但是锁存器则很少,需要由一个逻辑门和触发器来构成,浪费较多资源。. K b$ `7 r( o
9 _- I1 C$ G1 J7 [- ?0 c4 B触发器(寄存器)和锁存器的应用场合也有所不同:若数据信号有效滞后于控制信号有效,则选择锁存器;若数据信号提前于控制信号到达并且要求同步操作,则采用触发器(寄存器)。尽管如此,在FPGA的电路设计中,应尽可能避免使用锁存器。3 e0 L$ X1 k+ ?( q& P
/ z' y( `1 j: i ?6 Y
. c9 P. E$ W) t% K0 f# o6 \
Verilog编程时如何避免锁存器:第一,if语句中,没有写else,默认保持原值,产生了锁存器;第二,case语句中,没有完整的default项,也容易产生锁存器。因此保持条件语句的完整性至关重要。; F" p N0 D; r2 o- H( A: C
: B" Z; O" \. h$ H' L/ U
+ S& W: t0 v; J8 p7 }& ?8 J+ l1 Z$ B x% U& |
$ R: I4 E: I/ U" X9 d4 u |
|