|
|
1、简述触发器和锁存器之间的差别?
2 }; i! R: M/ K7 _锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。0 c0 a) j* I" F! G! x* r2 }
本帖隐藏的内容
/ n6 N* ]; J) h: @7 p9 k; V1 r. ~1 D# D
D触发器对时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态。
# w' t/ b0 S3 m2 [0 Z7 l3 ~
, z4 Y1 S3 a- N4 a% S2、什么是Clock Jitter和Clock Skew,这两者有什么区别?
. ~. K* D: O ~* O( U+ D, \0 _# Y% f" c" Z/ [" S2 ?$ O" J( t5 E1 T. p+ V/ y# k. U/ _, y1 i
& J: ~2 b/ Q% K* e
/ L6 u& ?8 n; g* Y5 t/ i时钟抖动(Clock Jitter):指芯片的某一个给定点上时钟周期发生暂时性变化,使得时钟周期在不同的周期上可能加长或缩短。+ u F0 |" ~8 q( h
3 w% Y9 y* H @ z% T: \6 A8 r, C
, |0 d' Z( f9 g z& n; o如下图:2 a( a( O6 K, g# O
( t' G9 x5 ~+ v1 p& f
( f/ Q b) Q L6 _$ x S$ n# N7 w0 w: I& }+ i% r* S
6 Q' q4 m; r% z
% Y6 Q. z+ R3 l* e: Q2 H, X( F! P6 p
时钟偏移(Clock Skew):是由于布线长度及负载不同引起的,导致同一个时钟信号到达相邻两个时序单元的时间不一致。
0 ]7 M. M. g: p# f3 g, A% z$ r- ]5 Y: e; W* ^% n! ]' { e0 u p5 @
7 E; i1 E" ~, e
如下图:
/ {( Z5 k" {* Q
/ K1 P/ _" C' J3 L, ~ P+ c
8 a+ p' a' S6 X" s n5 ?/ y0 o$ E
) A/ r o& o( L6 A3 R
2 k; B, Y$ e2 v/ T' E) J# m& z( \: d
区别:Jitter是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。Skew是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。! a' k+ C1 e5 a" n- `4 f J+ i. G/ q: B( O
9 T- U1 s2 h9 b5 x+ X8 {7 l' _) S/ `' d) D2 b
. g6 `3 ]! J0 _$ @时钟抖动和时钟偏斜的差别5 P3 e1 D& X! l& U1 [; H0 A, n1 i+ x# y# A# v, N" u
. V* B; f6 ~8 f% u
4 e) z( E) B% q* o+ Q) M0 P; t$ F/ }9 ^' P7 F; N: a) r5 }
, [, Z) B- ]8 `- n& j. u& @0 P3、什么是亚稳态,产生的原因,如何消除?
$ U/ ]& z& A/ b3 G4 d+ Q/ \9 T+ F# v) }2 V5 {$ {0 R
$ D$ y$ h9 Q# n' t* W- U% n: z4 T* v8 x+ u/ P/ [2 W5 J5 t! q' k9 T
这个问题的详细介绍在博文:亚稳态专题& `/ w% F- ?1 `
" ?, X! p5 T- A6 q
2 p1 J& H" {. z& G/ Z) q' P6 j! G4 d$ l4 X( l
篇幅过大,给出简洁解释:
! B4 U; Z/ u& o- I) [# t) g: A& z0 V3 j' l+ w& y6 ^/ Z, c7 H) w& u6 s( i8 K
8 R. f) V% \- A7 t; X* g8 L: |: k4 f0 V如果触发器的输入电压采样时间过短,即时序不够,则触发器需要花很长时间来实现输出逻辑达到标准电平,也就是说,电路处于中间态的时间变长,使得电路“反应”迟钝,这就是“亚稳态”。(例如输入信号在时钟有效沿的建立时间和保持时间之间改变了,导致不满足触发器的建立时间或保持时间,导致输出有一段时间的不稳定态,就是亚稳态。) i5 S# q9 |9 ]# t8 y
# p3 L! x4 a3 q+ G
8 |6 j. X% J7 \# D8 } N3 [" x; \5 c: Z6 n9 b" E) i/ o6 n% \# C2 o
消除:两级或多级寄存器同步。理论上亚稳态不能完全消除,只能降低,一般采用两级触发器同步就可以大大降低亚稳态发生的概率,再加多级触发器改善不大。2 z' ]- v t+ `. W
) |9 a/ T5 ]$ r! }. T4 ] |' O) j3 j$ e: P+ o1 ]
, @3 z5 H1 w* k0 H+ ^6 \1 {: x4 i/ }5 m' Q
; G* Q) ~% O6 D: ?: c* C; _
9 o- [ S' X! y. E! Q/ Q
9 B" m# r) U2 e! u c0 F但注意双触发器作为同步器只能用在单比特数据的传递中。原因很简单,因为同步器输出只能保证是一个稳态不能不能保证是一个确定的值。故多比特数据使用同步器还是会出现乱码的情况。对于多比特数据的操作一般使用异步FiFO。 . x4 H" e+ S7 M0 R0 d6 y
C* S" {% _1 O+ \4 Y* Q, N2 d8 e5 u& E' l
* X2 m2 {+ A* [; y& f. J6 K% {+ Q4 X# s0 Q/ R- z! `
1 T& L" r2 q8 r7 _7 c参考代码:
' A' U3 E6 V# M+ f( j7 K3 d- {7 M6 a, l- i K- H8 {# D0 Z5 ?) T9 X1 p7 _. ]$ {; i% Q
0 R( i; W$ i( p" m% @' ^" m; o3 u. a( K6 c
----------------------------------------------4 z6 x3 }! B0 L3 I
! l! j& r( t/ H1 K( r4 e0 H: u( i% K# x/ a6 ~9 S8 y. Z9 a) Q+ S5 Q* Y" y E0 O
+ j8 j* R; z2 @, [9 |% Y/ m+ Q7 X8 {reg data_mid;
" Z5 b' C! F1 k4 s* K9 t! W; g! i, r% j6 u1 P# \) d% R( n
+ w4 V7 E$ E1 q* d x& g7 M) T& C, a1 h+ E; a0 G
) D7 Z" \% w9 K3 d& M9 T' J Z* w1 R! x, @+ U* H0 J$ e
8 T5 x0 Q4 I. b# b* X! D6 j: L9 N3 l: d$ v% n: j5 R- d) I% m* D; m/ t. ]! d* g$ \( `
reg data_out;, ~8 B" I: }* E% W1 y4 O9 P0 e
8 u+ |# q/ n1 {% x& {( O+ ^
# C3 W1 w5 z8 J( }0 w) x9 @; ], w3 D6 m: y2 t
- y2 G- ^- Z. X9 B* e2 v8 r5 ?- f8 \; o# U8 Y1 R2 o5 [, |; \) f3 c7 B9 E1 N: K2 _) |% S9 p' H3 f6 K
& r! J1 Z. c w4 s) Y% Y4 P9 B) i0 b( {
, u- q; V% {8 D6 H5 \/ d6 u$ X
" f) y F+ E1 _ S7 V4 n1 Walways @(posedge clk or negedge rst_n)begin+ Q2 z, W- \8 Y9 X0 i7 d' v5 z: s9 h- F1 b) R
: ~& B0 e2 l8 M7 a; Q. p, n& c$ v% W* }. R
1 G$ x; e5 S, {$ v
& O. c+ X; b7 @) r! e
! L9 G+ c! D& w0 A. @0 B5 E! z3 I7 P
* H" \! l' ?8 }! z; n; V" b if(!rst_n)begin/ ]) m3 f3 Z. {6 D3 y# g2 B f$ ?
( j. m' t g, h( B& i, ~) [4 R% Y9 t) h1 b- Y5 d* J+ V) R9 p
5 E1 ?3 Q0 g2 k" ? K+ ~* x, \! K# v0 R& v
- b) M+ X0 e6 X- F" X% n" f
$ J7 r2 b/ q. g7 F+ H$ H* V# }$ l. s2 Q, s9 j, \; O1 [, f |
data_mid <= 1'b0;& a9 X- D) Y7 S( c. v3 T) b5 B: B+ M' N, s6 E$ A: B+ R1 j5 u
6 L- p! u8 P) p! B6 f% a$ {6 [- h: p% f4 H8 q" P% K% c. P) H
7 p1 K6 C' Y4 n, D/ Y. c e7 y5 m. o( D6 J0 j7 _
, Q. w I& J: V J( ^- ~- J8 s% \; j4 R# L/ m/ R, h
6 ^8 N1 X$ y; X: n data_out <= 1'b0;
7 ? s( ]7 d& j" ?1 g; D
) I. B$ @) I1 T7 k* C4 e% q( P% b1 b
6 |# ?8 e* x! h% j* W, _: `# y8 R# O0 w( o& b5 s; u
: x$ G- i8 G& n6 o9 l* o8 ~) I
! w% u$ u$ k- _! y2 W5 r
end1 S8 ]- d/ |1 K" g, Y! {0 O4 D2 o' o9 @2 ?9 u7 t$ G, G
: @# x8 T8 b- @8 P. b. B
b$ Q1 r5 c h/ E0 N. D3 T) h6 o8 r% c0 |1 @1 F8 w6 x% B* J
/ h- P/ O. a9 H5 A* P( x4 \) [
- ~6 N: s9 T$ [0 D7 N+ o4 G7 D7 W+ z5 a, f; f5 A& V2 Q& l! j
" }: h0 |; G% x9 r$ \) I/ l. I$ ^( C" b# \" z9 {, G
else begin+ C! X3 U0 I* i. e
% o: Q- v' h, z6 Q4 `4 E, y+ ]3 g2 k# g R7 ~
7 C9 V6 [( Q0 K7 O& Y7 Y, G' _6 c3 Z, E" j* ?. {$ r
- B1 l7 n' r- o, h7 e. M
& n& G- t# U( J0 o; A& k+ }: W( D+ z9 p' d4 S8 h3 k
data_mid <= data_in;8 l' C2 P9 B; |# j0 y
" d I% }3 m6 L- n) }' r: `' \4 X+ r" s- O$ y' Y2 J
* s: Z; |; J8 {: W; c3 f+ O" ~* K" v0 k+ j& r) c
/ k2 d" P5 ~1 U+ b
: `9 H& y+ {$ \ U1 H* L- v data_out <= data_mid;+ ?9 s' b* }2 W$ P# ^' x+ T& z. S2 l8 ?2 W( a+ p
; K3 c8 ^6 W9 Q* R" i' Z" y
$ @2 b: _+ r {/ `
4 M$ P( `" d1 t% o9 L2 B7 S6 p8 }) b& C- U/ O
$ F. u( a) {/ K1 v" t v9 w+ i6 s% k2 n9 l7 W
% p3 P( ^' Y8 U( M0 |2 C' ]3 x
end: t! w. W1 E; J- _
S3 t3 A$ I) c/ ^' w. W
, n; E' Z$ j5 [$ Q. |/ u' C/ V
, V. |' r+ X1 d: Y# [( C& Z0 `! q' G h* R& J. C4 y3 i4 ]
& s8 Y. C7 X3 e2 V8 h) T. V6 E" ^: Y# e6 } F* L
7 y/ {2 V$ Q7 n) o
% ]! r5 T5 u: R7 i5 L0 q% Dend2 `) x: n. ?: d7 P9 Y
! k. I' z$ }2 k0 T9 |. ]& Y! L. @7 j' f$ r' n7 b4 C/ \" T0 i& n
9 D1 K- h6 ]5 m% x# O0 w0 T0 {
% a: s1 O$ W) ~. W7 Y
8 O% x! v- @$ d3 `( A----------------------------------------------0 h: y' B: }* S. I2 M/ I1 W- v) i/ n: E l- r
4 x& U, C* e6 L/ [/ T! v& _# E+ z: y5 V5 A/ I
4、同步与异步?
/ v J+ s" x! J8 y& E0 R8 x& j, h3 Y+ |3 [
$ y/ X m7 |4 {* g5 ]3 n; f同步复位和异步复位的区别, n( e3 h) I( N" v4 K! R' N. N8 e, f/ Z) { C9 P/ q9 x' a7 k
. S, ]* s: k) n0 S: E
( u% _+ k. |+ H' M) o
1 V9 k# a2 J, i$ v( _同步复位是复位信号随时钟边沿触发有效。异步复位是复位信号有效和时钟无关。! u# S0 f) r% `# z) R; H4 H
$ u: y* z" t7 R4 e0 h4 R1 b7 ~- R0 N! s# ?+ L$ |3 t5 c2 a3 }1 x/ ^3 O1 r7 `% J" X& Z! S. Q
如异步复位:* p6 R* X' v- S, F7 n* D
; f% a" V8 |& |6 t8 l1 k
+ B/ t1 A p: h* `7 J9 X" h4 @* _- W& M
* H4 @ H5 ? n6 [+ V! B
. |' E7 e+ {+ B, n6 V
* a" ?: _$ V6 C3 R9 V* t" [; I6 m7 x" t3 e1 _8 O
同步复位:* z- M8 I7 z5 ~5 B9 t! j% _/ f2 X! A" e# U- l
5 M: B2 ]0 y8 D# T1 w7 D! Y; h
( x# F7 M+ i: t
+ A( `# e0 o3 K) [ 8 { N, [- m1 n$ Z5 }0 I2 J9 G+ f
- ?+ B5 T; }) J- W e0 {2 Z6 R( J: J
同步逻辑和异步逻辑的区别2 ^! k* P5 F4 u) D3 o
, u1 G, k" H/ F" r/ `4 R1 d6 U& s/ j1 J1 `, A, ?! i" _% X
# ]7 _8 U! L* D同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系
: G4 _. I5 n+ x' v/ k/ r8 a2 `" X$ a: q) D
: e' J4 k6 m* s) ]$ J1 Y
/ X- b6 y- X2 a$ d同步电路和异步电路区别
( W4 ~: d% Q- }; v- l2 k/ q; T2 i2 S- H U$ D3 \7 c$ _4 n, y2 p
* H3 G( G! c& O" T; _( ` O4 T# a$ W( h5 Y2 u% U
同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路。异步电路没有统一的时钟源。5 n% U" D1 |9 @3 m# e2 H2 E
" Y4 |1 U8 i# I
: b9 s# Y* p- n# ^3 E$ d5、谈谈对Retiming技术的理解, R7 R v: }3 e% Q: O% z# F3 V
0 O9 b+ S) P3 r4 p9 |4 ^# s4 M" U0 x9 e6 y, ^
. n. h) p& n1 L- l0 r! vRetiming就是重新调整时序,例如电路中遇到复杂的组合逻辑,延迟过大,电路时序不满足,这个时候采用流水线技术,在组合逻辑中插入寄存器加流水线,进行操作,面积换速度思想。 |
|