|
1、简述触发器和锁存器之间的差别?) `" \6 {: B2 V2 p E
锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。( ?7 L0 ~) Z) n" b
本帖隐藏的内容
3 q. Q* ?, b& \' O$ O- o# g
- H4 ?; c+ d9 b# i$ Y# }D触发器对时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态。- Z4 n# r$ h+ n7 `7 I$ \. L. }. l
; V- e: X* N) b$ B; s7 V
2、什么是Clock Jitter和Clock Skew,这两者有什么区别?1 V8 ^. i# ]9 R, D( F
# Y% f" c" Z/ [" S2 ?$ O" J( t$ z$ B# O9 d% ]
& J: ~2 b/ Q% K* e
( J4 q$ t4 ?7 t7 i2 S时钟抖动(Clock Jitter):指芯片的某一个给定点上时钟周期发生暂时性变化,使得时钟周期在不同的周期上可能加长或缩短。
# k- E6 Z* O- e: _
; s9 Z- L- \& I. |$ e. v' N3 z, n& E+ t! [+ a3 _% o
如下图:2 a( a( O6 K, g# O
/ j3 a7 K) e# L2 R u
}9 J) u+ f( d: T/ @: |2 E. v0 d7 c3 J
5 K( g) z; u1 D5 n, B' |1 t 2 }5 [3 |+ c4 q7 W( A
9 f8 ~- n4 ]6 g! R4 r$ H0 Q& g [' O; }; b8 l1 a
时钟偏移(Clock Skew):是由于布线长度及负载不同引起的,导致同一个时钟信号到达相邻两个时序单元的时间不一致。
+ z3 I6 W9 J- l' S4 T% z$ r- ]5 Y: e; W* ^8 ~, m* W2 y, W
! L9 S( ]2 b% ~ A, n如下图:% F: ?5 ]& ^& G7 c* s3 d
" k \* [- m% n2 i8 U
7 e* i. |& H4 s @
6 ^9 G: s: \ J6 q& `) Y$ {* Q
3 Z3 u) Z* a$ ~: b
8 J( d, h+ h, \2 {5 M+ q区别:Jitter是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。Skew是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。! a' k+ C1 e5 a" n
d8 b! C6 g/ G6 W' y, R3 K M9 T- U1 s2 h9 b5 x+ X2 d! P) _! R6 J( E+ {+ A" v
& ]# A5 O+ A9 W# @+ B2 q时钟抖动和时钟偏斜的差别5 P3 e1 D& X! l& U1 [
5 N* }- y% R4 U n. V* B; f6 ~8 f% u! r' Q+ u) C L
; t$ F/ }9 ^' P7 F; N: a) r5 }' A% \. G7 k' L" F: L
3、什么是亚稳态,产生的原因,如何消除?# B* l. c. I( K, }" c* ]; i* B
# z' ^7 L3 T. s$ T: h
$ D$ y$ h9 Q# n' t* W- U% n: z
/ O# z: S/ O+ O' R F这个问题的详细介绍在博文:亚稳态专题& `/ w% F- ?1 `
! s. r* _! f# a- i& V
- V) C+ x/ B1 P4 F1 {; U O+ V2 ]5 W4 S
篇幅过大,给出简洁解释:5 m7 I* t& w3 R! J5 A: J( u5 e% R, W
0 V3 j' l+ w& y6 ^/ Z, c7 H5 e0 t( Q- t' I2 T
3 f, q; q! V+ ~; ^7 ^1 a5 f如果触发器的输入电压采样时间过短,即时序不够,则触发器需要花很长时间来实现输出逻辑达到标准电平,也就是说,电路处于中间态的时间变长,使得电路“反应”迟钝,这就是“亚稳态”。(例如输入信号在时钟有效沿的建立时间和保持时间之间改变了,导致不满足触发器的建立时间或保持时间,导致输出有一段时间的不稳定态,就是亚稳态。)
7 B9 \8 y4 V, j( Q5 }7 t% g, V. b9 c, V% ^$ m& T$ a
2 |: G! h* E0 S9 I3 s
N3 [" x; \5 c: Z* T" @$ f3 z8 n3 n9 G
消除:两级或多级寄存器同步。理论上亚稳态不能完全消除,只能降低,一般采用两级触发器同步就可以大大降低亚稳态发生的概率,再加多级触发器改善不大。
2 v$ t# [: _3 S! m" }) |9 a/ T5 ]$ r! }. T0 E5 @ X, w* d! M) M! z
, @3 z5 H1 w* k0 H+ ^
2 E' @4 U" ~: U. {' T+ F8 _& h
8 Z4 N' U1 k, ~+ i- \# l) X+ P; W: n
$ N$ d% }2 g8 ]( V& q但注意双触发器作为同步器只能用在单比特数据的传递中。原因很简单,因为同步器输出只能保证是一个稳态不能不能保证是一个确定的值。故多比特数据使用同步器还是会出现乱码的情况。对于多比特数据的操作一般使用异步FiFO。 . x4 H" e+ S7 M0 R0 d6 y
V. `6 I+ N2 I( ^# b {, N2 d8 e5 u& E' l) o& |2 |; o" S9 G' z: `$ q9 M
. J6 K% {+ Q4 X# s0 Q/ R- z! `% y' R t- n3 K- u7 C. Q3 C* ^
参考代码:
, D( @1 Z3 _# B# Z5 C5 W9 J9 X- {7 M6 a, l- i K- H8 {# D
) @4 _) i; w( {, }0 R( i; W$ i( p" m% @' ^; g2 i! b/ A" a
----------------------------------------------4 z6 x3 }! B0 L3 I
J' V; ]* D& a. Z( l: u( i% K# x/ a6 ~9 S8 y. Z9 a7 j0 n& o1 R j9 X
0 C% l" ~) j! S: t' w
reg data_mid;7 j' |# \% b8 q( [7 W% {- }5 A9 Z
9 t! W; g! i, r% j6 u1 P# \) d% R( n
; j9 Q- ~5 G' x' m( H4 Z# Y$ I2 K: p+ R8 t2 W& d0 e
* d5 U( R' U y ~2 I Z* w1 R! x, @+ U* H0 J$ e7 o9 h/ D0 k) B- ~' @& Z6 K' b, x0 e
9 N3 l: d$ v% n: j5 R- d) I4 o" n+ h5 d3 M& D; F, p) P
reg data_out;, ~8 B" I: }* E% W1 y4 O9 P0 e
# i8 V0 s& l: E( M% v4 ?! M( L& e6 u4 p" S
9 @; ], w3 D6 m: y2 t
# i y5 R) K6 T/ Q1 \2 H' X" Y: T4 m# U8 Y1 R2 o5 [, |; \) f3 c7 B
- P& o! {6 E2 H3 l' L& r! J1 Z. c w4 s) Y% Y4 P9 B) i0 b( {
4 k6 c+ l( d* g# \5 ~
1 d- n' l+ @! ]: d% Halways @(posedge clk or negedge rst_n)begin+ Q2 z, W- \8 Y9 X
' {3 ]/ l" ~' N9 F1 I9 C+ |0 _2 e: ~& B0 e2 l8 M7 a3 E% e4 V J$ F' }
! X3 j- B2 o1 N; }1 T& O. c+ X; b7 @) r! e' U+ Z+ ` r: Q( u+ m1 E8 a
6 {( G p! x, @' ?# K' r, |
6 ^$ \1 W( _+ c+ E( O if(!rst_n)begin/ ]) m3 f3 Z. {6 D3 y# g2 B f$ ?- I' N/ ~5 H. c' x
, ~) [4 R% Y9 t, ]) _! r6 K3 T6 p U
5 E1 ?3 Q0 g2 k" ? K) S& O, s, [% t. k& d5 `
9 B) V N+ Z4 g+ t. B, i5 W
3 }6 U) X* e4 I4 @; i& {
7 F+ H$ H* V# }$ l. s& [* s5 r+ K& k6 a7 _9 b4 a3 ]
data_mid <= 1'b0;& a9 X- D) Y7 S( c. v
( j6 Z X0 L9 R1 C
" o- _, E1 ? ] F! B6 f% a$ {6 [- h: p% f
" P# I# x8 m; }2 r2 \/ ^ U5 [0 P8 ^2 @4 o7 R# Z ^4 o
, D, q: { d) o
, Q. w I& J: V J( ^- ~$ l5 q, Y+ }3 u3 U3 Q7 w5 K, t+ [
9 F% H4 ], |. c6 y$ Y" q% l
data_out <= 1'b0;
/ D! K+ ? q! f' o1 `
6 _- H* w& ^9 o9 j8 d$ x* C4 e% q( P% b1 b. \8 a0 J" Z5 V- L& Z5 Z2 t
3 e' a5 R- p7 s# M
1 e' Z0 D& h; T: s$ _, T: D9 H6 ?+ C
5 v5 V* a `; y- j% ]
end1 S8 ]- d/ |1 K" g, Y1 w2 x9 F2 ?0 `. v
: @# x8 T8 b- @8 P. b. B
- f2 e) s X0 v" F4 q) q7 R3 T) h6 o8 r% c0 |1 @1 F8 w6 x% B* J' @2 a" Y3 s Q9 \
# |6 T; K* F# w$ c+ o4 G7 D7 W+ z5 a, f; f
9 F! B- r4 _# M" }: h0 |; G% x9 r$ \
+ q" v/ B" R; U- @ else begin+ C! X3 U0 I* i. e
+ _- K- g9 _7 F, U9 g0 B# H7 B* Z1 b' @% g. r- v4 r$ E! [8 V
1 \9 Q6 e. }6 a8 N: l
M' {, j- ]) w, _1 e( n2 j" r7 k* W2 X& t+ ?3 J
& n& G- t# U( J0 o; A& k+ }: W
4 W0 P% R# m. u) \ j' b data_mid <= data_in;8 l' C2 P9 B; |# j0 y7 }* \. G3 I8 s
o# g( g' x- W0 r" x9 X5 ]
. Q1 j- G1 Y; }9 D
: W; c3 f+ O" ~: R+ x' V* G# G6 {- d
3 ]) `/ b2 c, z
7 E# J3 Q( u( i: O V7 ~- { data_out <= data_mid;+ ?9 s' b* }2 W$ P# ^' x+ T& z. S
3 g2 j0 Z0 V+ {: q/ h& D
# z# L1 s" ?9 D. s. q) J8 r$ @2 b: _+ r {/ `+ v4 m& i7 O; X/ W! _
& I Q- E0 Y' n, e0 N$ F. u( a) {/ K1 v" t& x4 n8 g/ ^( ^: f: Z3 M; v0 L
- i6 E9 `, c7 B% I. R end
9 }6 l/ i+ U$ N1 @ S3 t3 A$ I) c/ ^' w. W
0 j- \ w$ g: ?9 N p2 m9 p* J# A6 F: T, v; V `! [
& Z0 `! q' G h* R& J. C4 y3 i4 ]
# l. g' a* N2 G$ P6 E" ^: Y# e6 } F* L3 O& I6 c4 w% h& t; m
! S+ s9 p# `/ Q6 s$ W7 e, A
end2 `) x: n. ?: d7 P9 Y& h! N0 c J- ?
. ]& Y! L. @7 j' f$ r. ^7 P5 V" S8 {& J5 u! V
9 D1 K- h6 ]5 m% x# O0 w0 T0 {
2 w* P- V( W9 B h+ k" ] p9 b8 c- L4 ^1 ^- P: g
----------------------------------------------0 h: y' B: }* S. I2 M/ I
X" w6 B; r- E+ F8 C1 l4 x& U, C* e6 L/ [9 F3 j4 @- T$ e) L, T
4、同步与异步?
( O: [' F( k6 A2 i+ {' d+ L- o3 P' p0 {6 p
8 g' i: h4 ~+ m1 `
同步复位和异步复位的区别, n( e3 h) I( N" v4 K! R4 ^( p- B4 D, S
. S, ]* s: k) n0 S: E5 b7 i. [; S: z" D% Z
8 P( T$ N9 Q; g$ j) t7 D同步复位是复位信号随时钟边沿触发有效。异步复位是复位信号有效和时钟无关。
$ N! {" \$ S D% {% p7 m, g7 f. G& ~" @9 c3 Z* `( s7 `
# ?+ L$ |3 t5 c2 a$ c: b4 c( d$ M1 R3 M* o
如异步复位:
5 a% G0 y/ q) y! J5 Q; f% a" V8 |& |6 t8 l1 k5 C. X/ i8 W2 g0 Q8 m4 U
9 X" h4 @* _- W& M! \6 m! j# Q: n
" G2 m+ B6 g' W
1 r7 {7 d, w7 F" R: b/ O# L2 H/ I5 h* T
同步复位:* z- M8 I7 z5 ~5 B9 t! j% _" k5 W9 T: X) m E! t/ l6 u
5 M: B2 ]0 y8 D# T1 w7 D! Y; h2 ?5 t% C( T$ b
$ F% ^) t9 O* p$ p! F' P/ V
1 s/ Y1 t O w; C1 o
- ]5 j3 G g3 N6 A9 E4 B4 {: A3 A( P% H! Y+ U: B& n7 _
同步逻辑和异步逻辑的区别2 ^! k* P5 F4 u) D3 o$ `+ H4 k9 J% Z( U2 j
1 d6 U& s/ j1 J1 `
( B: N& q/ a* ]$ Z( P4 {( ?& ?. z) Z! h' ~
同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系2 ]6 b7 [) J2 N z% T% @
/ k/ r8 a2 `" X$ a: q) D1 ?: u6 `4 }7 z
3 i3 T2 F+ g8 m7 L6 c
同步电路和异步电路区别
8 C7 U; ^" k! z, k2 N- D. R2 k/ q; T2 i2 S- H# m* a; A8 a+ y5 Y
* H3 G( G! c& O" T; _; m! Z; b0 @' [$ \
同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路。异步电路没有统一的时钟源。0 W5 i# Y5 l* ]* O# V
5 f! l# a E: L) r4 K' ^' _ K7 Q
5、谈谈对Retiming技术的理解, R7 R v: }3 e% Q: O% z# F3 V$ ]' t7 r0 _, ~1 D ]2 H1 n
- E! r K2 c8 P# z! M! u- ]
) n0 ^, a6 ? T# BRetiming就是重新调整时序,例如电路中遇到复杂的组合逻辑,延迟过大,电路时序不满足,这个时候采用流水线技术,在组合逻辑中插入寄存器加流水线,进行操作,面积换速度思想。 |
|