TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于同步电路中的时钟(clock)使能信号的问题 % c5 y; I4 F$ U+ D
9 `/ b" ]- x' t$ g/ G3 m% o
所谓同步电路,就是指在时钟信号有效时,来捕捉电路的输入信号和输出信号,规范电路的状态变化.
. K& {0 o( {8 I( ~1 r因此,在同步电路设计中,时钟信号是至关重要的.但是,直接的门控时钟来控制电路的状态变化,由于各种原因造成的时钟信号的毛刺,将直接影响电路的正常工作,特别对于告诉的FPGA的结构,会影响电路逻辑的正常响应.因此,在电路结构中,增加时钟使能信号,是非常重要的.& |3 ?' I) f7 y# X% l; G( H
, O7 a, B9 {' }3 x% A+ b7 B当在设计中需要多重时钟时,时钟使能也可用来维护电路状态变化的同步性.% H' B: H1 [6 J) l. s3 ]
那么问题来了~~0 I8 w7 P* x% H2 f, b9 u
1.在用VHDL设计同步电路的时候,有没有什么标志性的地方,或者说有没有什么特别要注意的地方?) W' e2 m c- U
比如,在一个Process中,敏感向量表中只存在复位和时钟信号(有必要么)?3 K) o7 O; j% l" L B' g
' \. R; W5 A" u$ u! c2 c* s同步电路的明显标志就是寄存器,也就是指在时钟边沿触发的信号!!要注意的就是当一个信号不能被完全赋值时,该信号是否是时钟边沿出发(不是的话,就会很有可能生成锁存器,这是不允许的);有没有生成多余的寄存器,而导致时序错乱!!<br>$ M* V& r% F. o% X
2.上面的提到的多重时钟是个什么概念9 N; E2 B% \9 s- F% i: t' _5 d; c7 Y0 v! M* [
/ s& T* c; z* y
按照你所说的。多重时钟就是指多种时钟频率的时钟。一方面有可能是外部输入的,例如同步串口的接收时钟与工作时钟;二来,有可能是由工作时钟分频产生的。前者以该用相对高速的工作时钟采样输入的同步时钟,而产生使能信号来寄存输入数据;而后者则应该通过计数器生成一个单时钟脉冲作为使能信号。<br>
/ y5 r& T( j( l( w a0 c* G- w, w1 C( p4 m$ f, p
3.我看到一个时钟使能的一段代码,不知道是否正确?
8 G8 x( b9 G3 G4 K; u. W; z-- Registers read/write strobes, B/ r, l2 Z& i2 Z: m* F4 |
ThrWRn_r <= '1' when (Reset='1') else WRn_cs when (ADDR_s=A_THR) else '1';6 ^4 f' a- d8 Z7 X0 w2 ]5 g
# n) ?8 {5 K( p5 d$ n
, s: x7 b( s, r# P( q" ]
8 A* ^' V$ \+ T% [- }$ c2 o i-- Delayed signals for rising EDGE dectection
, V8 d6 O5 S" c WDelay_Signals_Proc: process(Clk16X, Reset)& M; h9 b- Y. z4 M! D7 T
begin' P- ^1 z, e& n; V- ~9 |
&nBSP; if (Reset='1') then
0 p( V' s2 o0 z9 M- O, G ThrWRn1_r <= '1';
7 o( c- K! \* ]+ v/ { ThrWRn2_r <= '1';
4 n- U2 e$ p/ t$ r- W
3 d" }) T4 Z+ M! V0 @! ^0 J) U/ X7 J4 W5 b, p
+ L; w5 K$ G! c% w8 [8 K8 {& P4 }9 ^% t1 l
elsif rising_edge(Clk16X) then
1 F* N( P! e+ K/ p, u4 x -- Signals for rising edge detection of THR write strobe signal ThrWRn_r- k, ?$ f; E# ^" a. C' m
ThrWRn1_r <= ThrWRn_r;
' _5 G) G- s2 ]# F" I7 D( k$ U ThrWRn2_r <= ThrWRn1_r;; |7 D' B; H( a7 d) o7 c9 X3 V' r
& F1 R) [1 d! c+ Z) a& _1 }; X5 V4 j1 O. p
- ~( D% k( |# t! R! X* W-- Rising edge of registers read/write strobes
5 r6 ` x4 f4 {2 `ThrWRn_re <= ThrWRn1_r and (not ThrWRn2_r); -- rising edge of ThrWRn_r
. w: V, r+ o+ U3 s/ }- }
9 J6 ^7 [* \; ]# C' t. q8 ?5 G) Y( q: D1 S& e
7 M. f- Q. ]0 [& a! q4 B
对
; l& Y5 g1 l, a$ x: ^6 T/ H: y b, t/ m6 P
|
|