Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
樓主: addn
打印 上一主題 下一主題

[問題求助] uart 16550 FIFO問題

[複製鏈接]
21#
發表於 2007-3-9 19:56:47 | 只看該作者
我來回看看好了...9 y5 r& G6 r, n4 f2 @  ~2 J

9 t5 a' R/ W/ K0 D這是我剛想了一下畫的圖你先參考一下

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
22#
發表於 2007-3-9 20:07:12 | 只看該作者
大部分都跟你想的差不多; {# A2 y0 _7 y1 o

& l" \  Z6 j# D8 Q/ h% V; D那些信號也先估且如我假設一般7 U5 Z* _, D7 m0 t5 [$ r
wen是RX收到一筆完整的資料時所送出來的
7 R) e2 N1 s+ G# J1 P$ \因此我想rptr 跟wptr會像這個樣子(這些都是我直接key的, 語法跟細節再麻煩你檢查一下)
0 l5 r8 ]0 x, @' J0 p" fprptr:process(nSysRst, nrd)
+ N  v7 r* u9 V2 `0 Ubegin* P+ [8 R$ a# d! W6 n; e6 a
    if nSysRst='0' then
. B! [2 k0 r1 r/ K- ?( I# Y/ K        rptr <= "00000";$ s5 N# v/ p( I
    elsif nrd'event and nrd='1' then
" S6 Q) ~/ j1 j8 \6 \5 f3 a        rptr <= rptr + '1';( @) U& t' q) ]1 w
    end if;/ t0 M" _5 f) V+ J
end process;
, P* ?  Z2 ~( {$ `
: [# g# m9 Z2 Apwptr:process(nSysRst, wck, wen)3 ?  Q3 Z1 \0 m; H: C6 U# |, U
begin
: V7 U* U: M) K- J4 Z0 F    if nSysRst='0' then6 G& \3 m7 X+ K
        wptr <= "00000";% C5 Z  X# a6 ~+ M, Q% u
    elsif wck'event and wck='1' then6 o/ z! r! R& ]3 y; x) j# J/ l
        if wen='1' then
) j+ E; e5 b2 [1 F            wptr <= wptr + '1';
8 _, v9 g5 {' h& u- ~! }        end if;
) x+ r& @! k+ |    end if;
/ N) l- B( P6 j& D+ c9 K7 {end process;* X6 @2 W6 K9 n3 t& u. l, f. X

. p: K9 G, W7 C假設buffer長度是16的話, wptr跟rprt為什麼都要用5bits 呢?
3 A- e3 E' [. P8 ?) \- Q, D你一定猜的到主要是為了判斷full跟empty, 後面的code會拿來判斷
23#
發表於 2007-3-9 20:12:35 | 只看該作者
直接key怕按錯的話會消失, 所以分段key8 J1 o- t+ w7 W* X
  ~8 E* v, P, d8 X4 Q( U
Read buffer部分2 e! u! d, p4 K( y
0 b% Y% R* @: V6 I# e1 L, a
--read_buffer$ P8 ?9 Z) i. o  X3 N
with rptr(3 downto 0) select rdata <=
6 m4 o  E( p) c7 A* g    fifo(0) when "0000",9 u% ?" H. y  y4 F
    fifo(1) when "0001",
9 N- {& D* i( p3 v    fifo(2) when "0010",
0 G0 |( }6 q  e& C* R    fifo(3) when "0011",; x- N# C, N3 p
    fifo(4) when "0100",
  v; Z2 n8 B0 Y  P( C    fifo(5) when "0101",
6 v% y7 f) |' h6 k    fifo(6) when "0110",
# x$ B+ D- t. o3 j/ a& u! h6 e0 j    fifo(7) when "0111",
" q+ _5 L6 [" Z! Q; Z" ?    fifo(8) when "1000",6 V# f* x9 Y3 i2 i; D
    fifo(9) when "1001",8 x6 y/ l" m( B) F3 }& i
    fifo(10) when "1010",
4 I2 d5 `6 r% o" O& m6 }    fifo(11)when "1011",
" D7 O2 ?, H" N3 J0 D" d    fifo(12) when "1100",
, S0 P- X- A8 i1 X8 C9 x    fifo(13) when "1101",
0 d# M3 x/ d5 M9 U# }    fifo(14) when "1110",
. n! m/ z& j: ~/ d    fifo(15) when others;
24#
發表於 2007-3-9 20:18:11 | 只看該作者
write buffer 部分$ Q/ {2 b& b! e. m/ O& i2 X
, I2 O8 n/ r8 d) }# b" D6 i! p. A
write_buffer:process(nSysRst, wck, wen, wptr, wdata)
4 [  H  x$ W5 kbegin; w1 m( x8 `# p" j# S2 T
    if nSysRst='0' then
/ R0 O, Y/ _) s4 T        for i in 0 to 15 loop/ B( r; o# u, w7 f, k( E7 ?, C0 c0 U
            fifo(i) <= "00000000";
" p' N- `3 v2 E        end loop;# P; e, f# s% W& H! D+ h
    elsif wck'event and wck='1' then
0 u% Y  ?; R' c# Z* t        if wen='1' then
1 F! I4 M* ?. J! D9 \+ @            case wptr(3 downto 0) is
/ g2 Z" |) c$ |0 _  o                when "0000" => fifo(0) <=wdata;9 i! I- E% Q) X( G, c6 l( s
                when "0001" => fifo(1) <=wdata;
* \1 G/ O! ?. j4 p. t# m                when "0010" => fifo(2) <=wdata;
  j; N/ J( K$ O( k                when "0011" => fifo(3) <=wdata;
6 e. U, M8 s" ]                when "0100" => fifo(4) <=wdata;' m' T  w, S# z
                when "0101" => fifo(5) <=wdata;0 W" Y# ]6 `1 w7 B$ |* ?$ e- m
                when "0110" => fifo(6) <=wdata;- B6 X# Y* ?& ^+ K  m$ W
                when "0111" => fifo(7) <=wdata;, m, c. i/ u) z4 i" [
                when "1000" => fifo(8) <=wdata;
) p" x; E" v1 k7 z) r3 e- f' C5 }                when "1001" => fifo(9) <=wdata;& _: Z  H& {5 ?2 W- i1 b% f# r
                when "1010" => fifo(10) <=wdata;
! G5 J- a) i$ r7 ?6 j! u                when "1011" => fifo(11) <=wdata;
" [6 Y& Q/ c- J/ X: a" `) |                when "1100" => fifo(12) <=wdata;
6 v; r; Z8 n! i. L2 _                when "1101" => fifo(13) <=wdata;
+ U- b4 q/ v# m# _4 }' f+ ^5 Z                when "1110" => fifo(14) <=wdata;
: p# Y7 ]/ n  i% x4 T                when others  => fifo(15) <=wdata;6 f6 S. r5 y' m: |4 l2 K9 `
            end case;; o# f) Z. g6 U  u- w( D6 Z4 o
        end if;
! ~2 Y5 T6 F) U1 Q3 ^) R6 u. d    end if;
: _8 |5 |) G& i' t+ N+ U: eend process;
& f: R6 A; i, x# V; G1 _. }8 ]7 X7 {& t8 ?/ y
[ 本帖最後由 tommywgt 於 2007-3-9 08:37 PM 編輯 ]
25#
發表於 2007-3-9 20:31:43 | 只看該作者
最後是你最關心的部分: Z7 v+ `" y: Q2 F/ o! M
我先做些假設/ K: E, t7 u6 H$ F1 a6 t
1) /RD動作時狀態不能改變
0 b7 v, t% {; F2) wen動作時也不能改變狀態8 @+ r6 V& l$ K* e
如果只有這二個case的話以下這段code或許可行
! u! r! j1 C5 k! r) c% x
" W+ G  d$ u8 G5 b. k) N/ zstatus:process(nSysRst, wck, wen, nrd, wptr, rptr)
7 w+ e0 p9 j' \begin
4 C5 C8 a1 J/ n$ X8 H- R1 u    if nSysRst='0' then
& t& @/ D7 {+ T4 \: V% S4 {# L        full <= '0';
7 X' r) O" L1 i        empty <= '0';
+ E' S, _8 w; M2 u& p        flag1 <= '0';, K: F2 B4 O0 a8 b3 A* o
        flag4 <= '0';
9 {( L- X8 Y& _* q        flag8 <= '0';9 F8 c; x4 a( Z) ]4 E! \: h
        flag14 <= '0';
6 t  h" S$ k4 J* y3 \    elsif wck'event and wck='1' then( y, f) k  \, I* C& q- d* n; N
        if wen='0' and nrd='1' then& D1 d  K8 d* Q7 r& a' @& E" x7 |
            if wptr/=rptr then flag1 <= '1'; else flag1 <= '0'; end if;6 N. Y) Y$ ]' \' c9 [" w& P1 @
            if wptr=rptr then empty<='1';  else empty<='0'  end if;+ b0 p  l( B9 V+ m4 {0 q% \. c) Z
            if wptr(4)/=rptr(4) and wptr(3 downto 0)=rptr(3 downto 0) then full<='1'; else full<='0'; end if;
% q2 l" T0 f7 L; s0 L& c' o+ b            if wptr-rptr>"00011" then flag4<='1'; else flag4<='0'; end if;) [* X/ O" Q( W
            if wptr-rptr>"00111" then flag8<='1'; else flag8<='0'; end if;+ q/ I" ~: K& ]
            if wptr-rptr>"01101" then flag14<='1'; else flag14<='0'; end if;' ]8 \2 ?+ U% @2 r
        end if;
  k4 H- l$ w6 Y2 H    end if;
; g7 O7 U" G+ n, p" z' mend process;2 \8 v) ^, D4 G, M! t. X
( R3 \, a$ Q0 u5 K6 i7 A  j
[ 本帖最後由 tommywgt 於 2007-3-9 08:52 PM 編輯 ]
26#
發表於 2007-3-9 20:33:41 | 只看該作者
前題是wck的clock rate比/rd高# X: p% u- }5 @# U% [7 P0 C5 y

0 e4 N/ V$ L# S+ E好像也沒思考太多, 直接key的, 有什麼問題再討論好了...
27#
發表於 2007-3-9 20:39:03 | 只看該作者
好像跟之前討論的結果有很大出入...管他的, 你看能不能用比較重要...
28#
 樓主| 發表於 2007-3-10 22:53:27 | 只看該作者
謝謝 版主 大大提供的參考範例* v/ M; O6 i1 L4 D

. m2 {: o" e4 V" R3 X4 T, g將code研究後,發現可能會有一些問題,所以將問題po上跟大家討論; p0 _- c2 l  [) P( c
! d+ ?2 j: k* C  G/ S4 z
1.
# T# D; t2 B8 a$ d4 G   版主之前的兩個假設 "/RD動作時狀態不能改變"及"wen動作時也不能改變狀態": T: I9 d9 _; o  Q- \- C
   這兩個case是發生在best case,可是還要考慮到worst case就是/RD,wen同時發生
+ c% y% a* k' J( z  l4 Q3 g% _   wptr及rptr同時發生變化,同時兩者又互為判斷來源依據之一2 _# N+ A! y- I7 l* P& c
2.
7 b5 z* {. w! u+ h5 F) t' J8 L7 U   由data sheet看起來,實際在操作上未必能符合wck的clock rate比/rd高: ^( E" L, [; O$ n7 o2 S
   假設wck的clock用16xbaud rate或者直接用1.8432 Mhz,由下圖可以看出9 S4 @; m( P8 j
   資料讀取週期RC最小280ns
$ A1 I: C: }& T1 B1 z2 ?3.
6 P* u1 ~, z7 C7 I% k# z  p   full,empty,trigger level等訊號之設定清除由wck觸發同步,可是當讀取週期3 K; q3 J7 K( }( ]
   小小於wck週期的case,會有問題,以trigger level造成的INTR來講
( d+ L* H; A0 M* v   當FIFO裡的資料都被讀完了以後,INTR不會立即變0,而要等下一個wck的時間
+ a! Q- A/ p& M  s: E$ z$ c   而這段時間不會造成多餘的中斷被執行嗎

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
29#
發表於 2007-3-10 23:42:10 | 只看該作者
第一個問題我想已經不是什麼嚴重的問題了2 \$ ?: I7 n- Y3 \; A, P8 E0 E

0 O  T  \" E, h4 ]第二個問題, 如果你不介意把外接的clock接高一點的話也就OK,不過可能就無法達到你要的相容性了
' r: l6 l, Y5 g; C; t: T2 }3 B7 O& C  G
第三個問題還是clock rate的問題
  g5 @, ^- L# O0 v' W
. k' }" Q* v: ^第一個問題留給別人回答好了...
' P' F* A9 w8 x# M5 [- W2~3問題的確是問題沒錯, 誰來接手一下呢?
& J  ]( i1 b& N, _9 Q
: m6 X6 i/ p3 kaddn大大一直都很細心, 做什麼的呢? 不介意的話請addn大大自我介紹一下! 讓大家多認識你一下吧!
30#
發表於 2007-3-12 19:55:51 | 只看該作者

[ref]asynchronous circuit

有關非同步電路, 先給你一些參考吧!" I/ z) Z& p! S! D

; Y% e) _3 P7 x[1] Bernard Cole, “Asynchronous logic moves toward mainstream acceptance”,  Embedded.Com, March 2006. [link]
8 }8 ~; \4 k) O5 j  W" Z2 h6 j[2] Chris Angelini, “Asynchronous Logic - Who Let The Clocks Out?” ,Computer Power User, May 2005. [link]
$ B/ P2 _& |8 @% N0 Q9 |# F+ {, n8 I5 b% }[3] David Geer, “Is it time for clock-less chips?”, IEEE Computer Magazine, May 2005.. R3 l1 t6 [- |7 k, ^( C/ _3 h7 H
[4] Website of USC Asynchronous CAD/VSLI group. [link]& N& G% V" \. `3 x' K
[5] “Epson develops the worlds first flexible 8-bit asynchronous microprocessor,” Website of Epson, Feb. 2005. [link]2 r+ l0 o/ A3 ^5 u+ b5 o- ?/ x5 ]
[6] “Asynchronous array of processors chip presented at ISSCC 2006”, EETimes.com, Feb. 2006. [link]
7 T+ V1 y$ j0 i2 p. X[7] I. E. Sutherland, “Micropipelines,” Communications of the ACM, Vol. 32, Issue 6., pp 720-738, June 1989.
31#
 樓主| 發表於 2007-3-12 21:33:33 | 只看該作者
版主 大大謝謝你再提供這些參考的資料
. X" n" A  X& F, K我會好好的找來研究看看
5 K+ ~5 f6 N7 B
* W$ t2 F5 v& g. [" B! @. E我本身目前不是從事電子相關行業,不過對於- M. m  V! q) ]8 L
FPGA/CPLD,HDL,數位邏輯設計及單晶片等
! C* b& O, g) y1 ?' Q都很有興趣,之所以要寫16550 code主要是想
/ b* o; j& s$ L3 k/ E6 G0 }挑戰看看自己能不能寫的出來,不過似乎沒那麼容易
0 g& l; d0 |! s1 ^, J
) z+ ^0 P9 |* [  sFIFO這部分我有上其他討論區問過,可是都沒人回覆! q' ^+ |" M4 K% p) Y+ }
感謝版主願意跟我討論這個問題
$ g7 ~: m8 o1 g/ A
1 w1 r( v! o* N3 S* i+ I. }* N再次謝謝啦
32#
發表於 2007-3-13 09:31:02 | 只看該作者
SORRY...上次回時也沒想那麼多8 l5 s, D. B9 M% \% |  H/ U
不過那些問題總有答案的, 希望各位潛水的版友高手可以幫忙出點意見7 U5 w, {- o5 K' U
不然的話就變成只有我們二個人在討論了...
, v3 N- d) R! d( P- i
9 Y, P$ D) L9 d# w8 f% L; V% _+ d過幾天沒人回時我再找個時間來回吧!
33#
 樓主| 發表於 2007-3-15 23:46:35 | 只看該作者
您好
" v$ o) \7 G" \4 Q- D最近想到一種架構,用來做FIFO不曉得可不可行
3 g: y& h5 A# x7 R9 R如下圖所示
. p* F! Q4 M2 l# D2 `4 O0 O- B2 [
! l2 q1 q; u) {) \8 e+ \先就full,empty討論,trigger level不管
+ I! l5 ?+ {$ `讓/RD脈波,16*baud rate週期大大於亞穩態出現的時間1 U, }* X1 K0 c% |9 K

! e9 H5 k, v  f/ [  p1.用額外bit(valid_bit)來指出register是否有資料寫入
# Y- @3 ^4 j8 @; Q, }& A& H  當寫資料到FIFO則相對應的valid_bit會一起被設定為1
- j# V/ f- ?) k! L7 O6 i7 U  當讀取FIFO,相對應的valid_bit會被清為0
6 i% [7 t" T9 G$ `5 W8 v# u  ?& _6 l
2.wptr及rptr用bin count
2 g2 P! ]) o. u5 g6 e) ^0 ^
: Q( f2 z1 t: Y# B$ e% B# Y' d3.full將所有valid_bit取and,empty將所有valid_bit取nor
' Q% n( P# y0 \/ _! `& i5 Y( R
5 W7 _) U1 h; D0 B" h5 t2 t4.讀取狀態empty時,/RD下緣將empty訊號鎖住,如此在讀狀態時
: R9 c6 \" P' z& v  worst case(有一筆資料在FIFO可是讀到的狀態是空),這種case
- f+ B4 }! d5 m4 y  出現的機會不會太頻繁,就算出現也不過延遲一個讀取週期而已
  k/ ^/ O5 a2 Z+ u; p) b- W- m. ]* {- @7 @2 D- |* A8 j
5.16*baud rate下緣鎖住full,接收狀態機16*baud rate上緣動作4 V" |0 b: {. ], Q& a
  當接收狀態機要寫資料到FIFO時,如果遇到full(lock)=1時,下一個clk' |/ `9 H; s  {. |% k
  週期再判斷一次full(lock)如果也是1,則判定FIFO真的滿了,否則直接/ X5 L1 U" u7 A1 E: ]
  將資料寫入FIFO,如此就可避免可能會發生的worst case(當FIFO還有一
2 R3 \9 l" W) y/ Z; l  個位置是空但被判定為已經滿了的狀況)
7 Y7 I5 J3 c1 |# X1 @  f: S; J5 i) x9 V7 I- f& }5 D( F
以上的推論不曉得是否正確

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x

評分

參與人數 1Chipcoin +5 收起 理由
tommywgt + 5 好主意

查看全部評分

34#
發表於 2007-3-16 09:28:56 | 只看該作者
看起來是個好主意- J( H3 R; X: ?% r

9 y' R7 S( _' j% Q# w如果不管coding style的話, 這個想法很好
3 h1 @9 W, N6 C) D2 b0 X
6 A' Q7 x8 `$ H2 W相同的, 如果不管coding style的話, 我也有另一個想法一直沒貼上來, 就是使用dual edge在/RD下降綠去記錄狀態, 在/RD週期可以讀到穩定的值, 另外在16x baud的上升跟下降綠也分別去update狀態, 有需要的話可以使用2組buffer length給二邊判斷, 我想這個方式也可以解決你之前問的3個問題. 不過還真的非常的違反coding style rule." l/ x" f; q; ]8 {* W7 s9 D5 S
跟你的方法比起來, 我的方法所產生的硬體似乎小一點點, 但是你的方法似乎比較簡單點.
. j# ]8 U4 o  b! c- Nanyway, 互相交流吧.
% f; V  n' s5 a. l9 A% j; b) e3 d8 |
改天有空的話來討論一下asynchrous circuit也不錯
35#
 樓主| 發表於 2007-3-16 20:13:13 | 只看該作者
您好
7 D! j8 g; p  W1 E7 ]我想到這個方法除了電路會比較大外還有其他缺點
' L* R/ }( D0 w5 s
8 \! a8 g% e1 w4 Q1.不適合做成容量較大的FIFO
! U! k+ w; b* X/ N0 ]: Z1 A3 H7 @8 I
2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響! o0 H1 Z! d0 q2 P
7 T5 F5 a$ {8 ?
3.tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣- K+ a* \& h0 x" E# O: \7 U' R1 y' x
   會有較長的延遲時間,所以速度被拖慢了
3 C1 m8 [. S6 _, B$ w+ {2 m8 Z* [! w  {7 C
謝謝 版主 大大 再提供了另一個思考的方向
36#
發表於 2007-3-17 10:56:27 | 只看該作者
1.不適合做成容量較大的FIFO; g' a4 r) x- `" w/ U
我覺得這部分是OK的, 如果你是在PLD上驗証的話會覺得硬體很大9 Z6 g0 N  c) W, n. V
但是做ASIC時你會發現其實很小的
: X5 X3 \+ k% n) q6 H6 @% [4 }

0 i. C7 j' P2 P$ }( X8 Z8 n2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響
/ i" l9 v% T% {$ n& x  e這些valid_bit如果跟著某些信的edge反應的話(latch), 問題會比較小, 不過我覺得你本來就會打算這麼做了
% c3 }& P, r* [. X: M* d$ Y! b/ }" W
( A8 ~( s! h, P7 K  i6 z5 R( C1 V3.tigger level會用到連續加16次的組合邏輯tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣會有較長的延遲時間,所以速度被拖慢了3 ]# u0 M5 a0 ^* n/ V
相同的, 用ASIC製程做時也不會有你講的這些問題, 另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)至於判斷其他的 如flag4, flag8...可以想看看有沒簡單一點的方法.
37#
 樓主| 發表於 2007-3-17 19:38:33 | 只看該作者
您好
( Z3 l3 v. {: M& p9 H2 ~- S$ P; D6 l) U  o8 X+ D
- Z8 X# V5 B0 f1 ]% C! N
1.
; o, ?+ P& w7 ~9 B   "另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)"
6 S6 b/ K7 I$ s7 s% f  q3 T9 M( a5 b" l! F/ |
   不了解這段話的意思,可以在進一步說明嗎9 p! @4 B* k7 q% d, r! E( W6 W
  N  q. q" V' Q# g
2.
& z% j; k& u2 e  我這方法是假設讓/RD脈波,16*baud rate週期大大於亞穩態(metastate)出現的時間
2 E* z* @1 d, h- L3 ?- h  才適用的,可是最近看一些關於亞穩態的文章,發現亞穏態維持的時間是不定的,有機會! P; Q4 c  s/ p0 k3 U
  超過/RD脈波及16*baud rate週期,這樣的話我想的這個方法就不能用了/ r' v5 V- r8 ~+ C
  請問有辦法評估亞穩態維持的時間嗎
. n, p* `; d: v+ @' c8 w  / O0 y: t5 ?  J# r/ R2 S/ x
謝謝
( B- I5 L6 ]; _0 N6 k9 N5 V- ]! s2 w( B# o1 r3 T% t
[ 本帖最後由 addn 於 2007-3-18 10:34 AM 編輯 ]
38#
發表於 2007-3-18 12:55:01 | 只看該作者
1. 這是一個很直觀的想法, 全部判斷所有的bit所需要的and / or gate數目跟用multiplexer後只判斷2個bit 所需要的and /or gate數目, 可以評估計算一下, 看哪個比較省, 上回我也沒算, 你可以算算看. 6 L; \+ G: B( A6 `8 q
我舉個例子好了: 如果WPTR永遠指向下一個空的位置的話, 那麼empty/full也可以如此表示:% \' D( u. u2 n  i: f0 G7 ]
empty = true if valid[WPTR-1]=false! Q2 f3 s# _9 q& s5 R- |: C  a
full = true if valid[WPTR]=true
+ r/ }" ~* @3 k# @. k可能還有其他case需要考慮, 畢竟設計的方法不是只有一種而已
0 Q8 {5 l& f) {3 ~- A8 C6 u& V0 r  h% u1 ^2 J9 i9 s
2. metastate是一個random function, 我們不需要去評估metastate的時間有多長, 我們只要避免在出現的時候產生錯誤的輸出即可.
39#
 樓主| 發表於 2007-3-22 22:36:15 | 只看該作者
您好( L+ D4 e1 ?4 |
關於 metastate8 K) G& b7 X1 P0 S
請問如果一個d-ff假設 clock頻率1 hz  T8 O$ q: G: @
如果剛好發生metastate,metastate這個狀態
# ^) z4 O" {4 s有沒有可能有機會維持1秒的時間長度呢
1 u8 w) Q7 k+ l" V  |+ e: R+ x6 T( x3 |: w$ a' f/ Z
謝謝
40#
發表於 2007-3-23 08:41:59 | 只看該作者
答案是沒有# Y7 Q9 t1 ?/ h% i6 T8 c4 Y
( U4 [2 D/ A. T( u1 v' i
metastate的時間長短是根據信號跟gate delay所得的, 也許設的計很糟糕時會出現us, 不然的話應該只會有ns的狀態
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-6-15 11:03 PM , Processed in 0.157520 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表