|
1、简述触发器和锁存器之间的差别?; [ Z5 x R% P! K# F! H9 b2 [
锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。3 b& D# y8 P- c3 }, ~
本帖隐藏的内容
4 O: @. W! _% |! }) ^+ |' m" Y7 ~; Q4 S+ \& ?" m
D触发器对时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态。! q& n% C; o( g
- D$ \, N5 I m$ q O2、什么是Clock Jitter和Clock Skew,这两者有什么区别?0 R9 E0 B1 J. k1 H) c% k+ V
# Y% f" c" Z/ [" S2 ?$ O" J( t
0 [$ Z4 Z' _) }" J- V) `: h3 h& J: ~2 b/ Q% K* e+ J$ N `, }3 s# ]* [
时钟抖动(Clock Jitter):指芯片的某一个给定点上时钟周期发生暂时性变化,使得时钟周期在不同的周期上可能加长或缩短。
, I, R& @& h4 F! w* h
, e" {2 ]9 k1 w2 h$ t0 C) z6 I( L6 b
如下图:2 a( a( O6 K, g# O2 b: B9 g/ C, V2 |
8 f8 b5 H8 y: Z& m- |
, P# j+ }/ Y0 X, a6 V+ e# e . B! }$ J; }5 C% Q. U
[) s. g/ U. B) c$ @$ [
' l. T) ]) R/ i: x
时钟偏移(Clock Skew):是由于布线长度及负载不同引起的,导致同一个时钟信号到达相邻两个时序单元的时间不一致。
2 ?. H% @! d" G5 x6 L% z$ r- ]5 Y: e; W* ^
# ?; a$ F' x5 W) P" @# Q6 h- A! Q6 g2 S$ }. {" x
如下图:
" G5 ^: E# u: S& Y2 I' \
% N e" J2 T( V# e
2 P+ P9 m4 X# q( i- S/ K' N2 v
& P o; O: |" A. W S( d% ^
+ ]: o2 C: B5 {- y& v
% x0 J( y5 y! W区别:Jitter是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。Skew是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。! a' k+ C1 e5 a" n
# V4 d/ ?3 d- m7 h9 T- U1 s2 h9 b5 x+ X; p+ F w2 {4 r3 c
* `' v/ U3 _/ n# H S5 i
时钟抖动和时钟偏斜的差别5 P3 e1 D& X! l& U1 [" ?, Q: o+ G- H' z% |, Y$ E* ^. |
. V* B; f6 ~8 f% u
) x% q5 d9 `7 ^& X2 f; t$ F/ }9 ^' P7 F; N: a) r5 }" `2 r+ K% [" _5 D
3、什么是亚稳态,产生的原因,如何消除?
6 m8 Y% O3 s; k; H% ~+ U+ w' I( }! g
$ D$ y$ h9 Q# n' t* W- U% n: z
+ \9 p! o7 }! a% t. Y* }这个问题的详细介绍在博文:亚稳态专题& `/ w% F- ?1 `+ ]" b7 @* ~ {' I7 @
' s+ P# ]- {; a& y* A2 u1 a
9 [" u! K0 B; q) `0 B篇幅过大,给出简洁解释:9 I( ?) M& G. r
0 V3 j' l+ w& y6 ^/ Z, c7 H C* a* I1 t- }4 d$ p
/ I& ]+ l P$ @* ~, u2 L如果触发器的输入电压采样时间过短,即时序不够,则触发器需要花很长时间来实现输出逻辑达到标准电平,也就是说,电路处于中间态的时间变长,使得电路“反应”迟钝,这就是“亚稳态”。(例如输入信号在时钟有效沿的建立时间和保持时间之间改变了,导致不满足触发器的建立时间或保持时间,导致输出有一段时间的不稳定态,就是亚稳态。)
$ o$ k9 q6 M4 e: z% D9 i+ I. b6 N
9 p6 y! h* x) p, \. u. F N3 [" x; \5 c: Z8 _" j4 y; Q7 O! u7 T ^6 E+ F
消除:两级或多级寄存器同步。理论上亚稳态不能完全消除,只能降低,一般采用两级触发器同步就可以大大降低亚稳态发生的概率,再加多级触发器改善不大。: v& M/ N: t- A( C" p: i3 W
) |9 a/ T5 ]$ r! }. T
2 U! k7 g+ Y( Q) I/ |- x, @3 z5 H1 w* k0 H+ ^* j' h% M2 }$ O& y, C
$ h6 M/ ]$ C6 {& y+ X. K* f
7 g; B! \3 [2 f9 `7 u) D3 D& j. w! P# \& c1 d# Z$ J# L- h$ [
但注意双触发器作为同步器只能用在单比特数据的传递中。原因很简单,因为同步器输出只能保证是一个稳态不能不能保证是一个确定的值。故多比特数据使用同步器还是会出现乱码的情况。对于多比特数据的操作一般使用异步FiFO。 . x4 H" e+ S7 M0 R0 d6 y) _1 B2 z L# Y6 O+ T3 e
, N2 d8 e5 u& E' l3 b! p- H& {" S+ q$ g) [7 Z* f; U6 V
. J6 K% {+ Q4 X# s0 Q/ R- z! `
# [' v+ B* V: G% v7 m& o# T参考代码:" z1 |: l. o5 U( S
- {7 M6 a, l- i K- H8 {# D* |$ V4 x$ j- Y5 s( _
0 R( i; W$ i( p" m% @' ^( H" o( ^# U# P/ F% d
----------------------------------------------4 z6 x3 }! B0 L3 I
4 }% u3 [" R! j: u( i% K# x/ a6 ~9 S8 y. Z9 a
; y* e+ w/ y H2 W( s1 z1 x8 Y9 u3 @2 q9 `: d
reg data_mid;
9 D+ J; ^* m6 o( X% V5 Z9 t! W; g! i, r% j6 u1 P# \) d% R( n& Z( }% Z4 ~8 A- G" X
7 }/ T1 M& b& }% ^ `. T2 w; P
$ \" G o( H9 ~& {
Z* w1 R! x, @+ U* H0 J$ e# u; ], ]# F$ d9 A+ E' p
9 N3 l: d$ v% n: j5 R- d) I
6 I+ { N2 Q9 _reg data_out;, ~8 B" I: }* E% W1 y4 O9 P0 e2 L' e+ y+ x) ]6 o1 m
% x I+ P! g M5 b: I" x/ n9 @; ], w3 D6 m: y2 t+ l7 W7 ~1 ~, }
# U8 Y1 R2 o5 [, |; \) f3 c7 B; W1 I9 U0 R6 i% {
& r! J1 Z. c w4 s) Y% Y4 P9 B) i0 b( {! o0 K' S$ y7 Z% p# u/ ^
5 u! K* D% B% |9 o6 S# `. Z: Halways @(posedge clk or negedge rst_n)begin+ Q2 z, W- \8 Y9 X
% I$ _+ R0 B" t. \! v) M7 `' D: ~& B0 e2 l8 M7 a
- _+ u3 b- e8 n, {1 B0 [% g* Q0 V$ I+ _$ T* a! l+ N
& O. c+ X; b7 @) r! e" r) ~8 B# V+ t5 W; x
5 \! O2 w) h/ E! ~. e/ e
$ ^! M# u [6 _6 R( @1 W) l4 r if(!rst_n)begin/ ]) m3 f3 Z. {6 D3 y# g2 B f$ ?
4 p( D) r, s( J3 X3 X) j: z& R3 \, ~) [4 R% Y9 t
' T' Q. Y1 o9 j: c5 E1 ?3 Q0 g2 k" ? K( S u0 |" q+ R: P4 J2 u
4 W3 d1 l' w8 I. E- c1 K2 j3 T7 B# ^( b+ U: c, F
7 F+ H$ H* V# }$ l. s
9 y" c. o# C% r; x' k' o- o, b data_mid <= 1'b0;& a9 X- D) Y7 S( c. v
8 F9 S, [$ J9 G
% E( h* X+ ~% f! B6 f% a$ {6 [- h: p% f
+ E/ c ~& L* ]' o0 d# j4 d$ V% ?; |6 Q- `) i' o
/ Y/ i+ @: z. |. _6 ]5 b
, Q. w I& J: V J( ^- ~4 `; p* i/ U) [- r- G! `( L
( u) {2 O7 p. X/ M J
data_out <= 1'b0;
, M1 ^1 G. g, o% v; P7 r
" {; i4 b1 R' p& L% E1 _* C4 e% q( P% b1 b
! A' d- w. m3 G' O3 o
8 M3 q5 ~+ ^3 m4 Q- n: }9 }. ~+ K; M8 e4 {' j
, q0 X) v0 u& B' n% e1 m5 M end1 S8 ]- d/ |1 K" g, Y2 r' M ]* |2 Q
: @# x8 T8 b- @8 P. b. B7 i+ ~% k: o% _: ^# |
3 T) h6 o8 r% c0 |1 @1 F8 w6 x% B* J+ M$ w2 K: o; J3 ?, d5 Y7 w
# [" ?# }2 b) m# P% f9 ~% O+ o4 G7 D7 W+ z5 a, f; f
' M: {7 o7 R& C' h( {" }: h0 |; G% x9 r$ \
" e$ P( @; d. ^1 \! e else begin+ C! X3 U0 I* i. e
9 X; I! Y" {- q& C; M0 @' |: o3 `2 K) b# R0 V
3 l; m1 q8 \! q+ R* x) q+ F8 m$ _) K5 E$ `3 i
* _1 x" M, _0 b. J
& n& G- t# U( J0 o; A& k+ }: W& ~% F4 J2 `* d1 z0 z* S1 }. r3 Y
data_mid <= data_in;8 l' C2 P9 B; |# j0 y9 ~$ b6 n! q' b' h3 L6 C* G
; f& G" ]$ w# {; _# j. Z$ s
$ v5 ~- S [! i9 c) s4 D: s
: W; c3 f+ O" ~
p/ @1 w3 K" d: y0 _- d# g, w
. B$ v0 b, c6 V) J& W0 [: Y# _2 [1 S, S0 y' A' F
data_out <= data_mid;+ ?9 s' b* }2 W$ P# ^' x+ T& z. S
( [ E$ X% e8 |- |7 I( T6 A: m1 _% `- m4 t6 j% \
$ @2 b: _+ r {/ `
& k# D" C* Q9 r; B3 N$ k: d
1 J( f# Y. N& b9 }1 c$ F. u( a) {/ K1 v" t: m* j5 \( a* [/ l* t9 e* n" p
, C! q% b Z3 J% W/ R3 l. o3 A6 a, h end
- g2 B9 a$ {4 a7 J2 I# u1 {' G S3 t3 A$ I) c/ ^' w. W% g8 }( P3 W7 E. }* x0 s$ C
) Z1 w o- g: c; ?9 w3 b& Z0 `! q' G h* R& J. C4 y3 i4 ]
2 e. w1 B" N( x! I: \6 E" ^: Y# e6 } F* L4 x- e6 F/ Q% {
) }* o9 p( P! c/ a6 g. `' Nend2 `) x: n. ?: d7 P9 Y' F; l! b' d' B! T V$ k5 V3 J
. ]& Y! L. @7 j' f$ r
/ g4 T* F6 C+ {8 m; O9 D1 K- h6 ]5 m% x# O0 w0 T0 {
) T8 J/ {+ D4 Q) a1 F4 @! I W. _% F& h! O) H$ k% d) k6 |
----------------------------------------------0 h: y' B: }* S. I2 M/ I8 a d5 _ w6 ]. n
4 x& U, C* e6 L/ [
' O P7 P9 {7 c; c# }4、同步与异步?
9 a) L! z" q: s$ Z- O1 h7 F5 c$ I8 @) g
9 w. F8 p- P# V R* w" \同步复位和异步复位的区别, n( e3 h) I( N" v4 K! R4 Q$ p2 C) _$ B# U
. S, ]* s: k) n0 S: E6 M1 E: I: I- l9 t, i& h0 N. E) ?
/ C1 f+ m4 {0 @) J( F9 j
同步复位是复位信号随时钟边沿触发有效。异步复位是复位信号有效和时钟无关。" r- P) x, X @- g- m+ r
: p3 z7 `& \/ h" m, w
# ?+ L$ |3 t5 c2 a
) p) J5 B$ E8 R6 v如异步复位:
- s6 W+ z7 d; ^5 d Y; f% a" V8 |& |6 t8 l1 k
& |( i# x# R6 J" {9 S ]9 X" h4 @* _- W& M
$ Y4 {% x y1 N, ` v: F. Z! R O" M4 }3 |) O4 M9 Q
/ e7 z; D6 s9 _. Z9 ^' ~: L( p
. \. Z& y3 h1 E
同步复位:* z- M8 I7 z5 ~5 B9 t! j% _; ` g) Z; k; b4 k- l: O- D: G4 x
5 M: B2 ]0 y8 D# T1 w7 D! Y; h+ H6 O/ n, I7 _
8 j+ X0 I# x E# d8 N7 {
/ X' a7 h- k+ t) o# T0 \
3 s$ I9 b* ^9 k
' Z# n$ G$ a. i) w同步逻辑和异步逻辑的区别2 ^! k* P5 F4 u) D3 o
9 z( A- x: Z" b- @( {1 d6 U& s/ j1 J1 `# n2 J: }9 p0 m; B
' k8 X; G5 f2 G) o" [1 o同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系$ L9 l x/ I, ~3 W7 ]
/ k/ r8 a2 `" X$ a: q) D
) P' ^" V1 k+ z4 [! ~0 Y/ n# I; j/ a8 p: K# N: A+ V$ o
同步电路和异步电路区别
. B0 c% G. J) {: H2 k/ q; T2 i2 S- H' P; X, |* \* x# d6 B, \, o
* H3 G( G! c& O" T; _5 Y% n1 o: r Z! ?3 b
同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路。异步电路没有统一的时钟源。- X# e# _- H3 K& u9 q t
& G2 h y9 @& _+ L6 ]* m- D: c( K3 O
5、谈谈对Retiming技术的理解, R7 R v: }3 e% Q: O% z# F3 V% e1 x* r4 I @
2 S" ?4 k. m' t9 Q
7 V* |4 J. ^- k1 {Retiming就是重新调整时序,例如电路中遇到复杂的组合逻辑,延迟过大,电路时序不满足,这个时候采用流水线技术,在组合逻辑中插入寄存器加流水线,进行操作,面积换速度思想。 |
|