|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
触发器(FF)当收到输入时钟脉冲时,便会根据规则改变状态,然后保持这种状态直到收到下一个触发脉冲信号到来。) y" g4 c3 q9 }$ G) J0 `
% R# k0 z0 q F, l5 X2 d ]& e
; o4 W; w* i" }! w1 Q寄存器(register)的存储电路通常是由触发器构成的,因为一个触发器能存储一位二进制数,所以N个触发器就可以构成N位寄存器,可以将寄存器理解成多个触发器构成的暂存单元。
0 S; z3 w+ x& x; [ V( Y# D5 m t( f, j
, f1 f3 f6 I1 I0 R+ ?3 ~3 K% \. M锁存器(latch)在电平信号的作用下改变状态,是一种电平触发的存储单元。锁存器的数据存储动作取决于输入使能信号的电平值,仅当锁存器处于使能状态时,输出数据才会随着数据输入发生变化,否则处于锁存状态。1 r0 V# s; |% q& n4 u
' {5 k' u4 \1 s3 J6 l
. w' t/ `9 V) u; u触发器(寄存器)和锁存器的区别:触发器(寄存器)是由同步时钟信号控制的,是需要时钟信号的;而锁存器是由电平使能信号控制的,不需要时钟信号。在FPGA的可用资源中,触发器资源非常常见,但是锁存器则很少,需要由一个逻辑门和触发器来构成,浪费较多资源。* S! g% d3 K$ }6 q
- ]+ h" W6 r1 u _
触发器(寄存器)和锁存器的应用场合也有所不同:若数据信号有效滞后于控制信号有效,则选择锁存器;若数据信号提前于控制信号到达并且要求同步操作,则采用触发器(寄存器)。尽管如此,在FPGA的电路设计中,应尽可能避免使用锁存器。3 v( X- X2 u# f$ l' R8 c
- w; j) b x4 a/ h N! u& M
" d5 p* K7 c& ?! d/ q/ H& LVerilog编程时如何避免锁存器:第一,if语句中,没有写else,默认保持原值,产生了锁存器;第二,case语句中,没有完整的default项,也容易产生锁存器。因此保持条件语句的完整性至关重要。
2 f- B& i, ~; R5 R- G2 ~( v. w0 r3 Y C5 I
& `$ q. T+ Z# X6 H* N5 W
" m) }4 n; P7 s5 O) }( _: z8 i
9 P4 c: o/ [/ I8 H" X6 q |
|