Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
樓主: addn

[問題求助] uart 16550 FIFO問題

[複製鏈接]
發表於 2007-3-9 19:56:47 | 顯示全部樓層
我來回看看好了...2 H8 t; d8 U: P& R  ~& t, ]- e

! X& D) y. @' z# F這是我剛想了一下畫的圖你先參考一下

本帖子中包含更多資源

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

x
發表於 2007-3-9 20:07:12 | 顯示全部樓層
大部分都跟你想的差不多
3 ?) u% T9 p4 M" Y* E
/ J. {0 m/ S$ ~9 m' N, D那些信號也先估且如我假設一般
# _5 v+ ?# N7 b& K, Q  Owen是RX收到一筆完整的資料時所送出來的- b) s& J4 T' H& Z8 }
因此我想rptr 跟wptr會像這個樣子(這些都是我直接key的, 語法跟細節再麻煩你檢查一下)
2 B5 R: l1 f, X% {prptr:process(nSysRst, nrd)" T: f5 V; z2 E/ v
begin# b$ [+ c; s6 n: b# J
    if nSysRst='0' then
# R2 c  y3 b  y) ^8 ~  O        rptr <= "00000";
! C7 S# M/ }* m' ~; [    elsif nrd'event and nrd='1' then: A8 i. H, x  ]$ P9 n
        rptr <= rptr + '1';
- e3 t! T# t* u: N    end if;
- K7 K0 o; ^4 H& L  bend process;
+ a4 h6 J/ Q8 I7 S
2 G$ C, ]! a# ^& X4 W% {' ^3 zpwptr:process(nSysRst, wck, wen). P0 h0 v  a3 e  M3 J' g3 Z
begin/ z! P. c% [: m( h5 `
    if nSysRst='0' then3 j5 U* F. h# ~9 Y
        wptr <= "00000";
: K7 X" r$ s8 F# a6 \' o, E3 o    elsif wck'event and wck='1' then
$ ~- q- j4 g6 b* C; z4 U! U        if wen='1' then/ V( K; B0 l# o/ W! F3 ?
            wptr <= wptr + '1';. z. {) j& o, y7 F! j. d5 C
        end if;" p/ E3 Y0 j- `6 A9 S* y
    end if;7 P# ?  C0 k% @, k5 ]
end process;3 v2 g, k5 i* }

6 t# ?& [1 f! y# ]9 v  v假設buffer長度是16的話, wptr跟rprt為什麼都要用5bits 呢?8 k6 A9 k) \+ ^/ V
你一定猜的到主要是為了判斷full跟empty, 後面的code會拿來判斷
發表於 2007-3-9 20:12:35 | 顯示全部樓層
直接key怕按錯的話會消失, 所以分段key$ P2 W, P& b! C2 F5 C
% [9 v8 L! d) c% t5 ~+ ^4 n
Read buffer部分
. J1 E" J, T" ?5 f
( E. h7 ^* M( M--read_buffer
5 d) H$ u: }) e0 L; r$ vwith rptr(3 downto 0) select rdata <=
7 V9 `$ ~$ V0 F( R; _% F    fifo(0) when "0000",8 X' M$ d+ W4 b" c4 w
    fifo(1) when "0001",4 k+ k0 ^- a7 J
    fifo(2) when "0010",
* P" a  G8 X" L$ v1 Z    fifo(3) when "0011",
/ T- S, Q  N4 L* Q# p' b3 ~* I    fifo(4) when "0100",) a& N) ?; r6 r0 d
    fifo(5) when "0101",
  l& U1 q4 M) p: W    fifo(6) when "0110",
$ O: o" m" _( N: n* W    fifo(7) when "0111",( x& s" ]: }" }5 z
    fifo(8) when "1000",5 h" B2 a5 _3 r$ \; b% W
    fifo(9) when "1001",
) c. b- A+ Z9 D% h    fifo(10) when "1010",8 A& a& h1 A( N; {
    fifo(11)when "1011",
4 d/ v4 g( v5 d) \& \# o    fifo(12) when "1100",
2 `) \; p1 y3 H* b  l9 p' E    fifo(13) when "1101",  D5 Z5 E9 s+ p5 h; z8 D
    fifo(14) when "1110",
; B* @( r% \/ U    fifo(15) when others;
發表於 2007-3-9 20:18:11 | 顯示全部樓層
write buffer 部分
! H0 e' Q9 k& @& B! e, e* I" ^
0 p8 Q% @3 L* }7 F  c. `) jwrite_buffer:process(nSysRst, wck, wen, wptr, wdata)9 p3 w9 ?9 F# v" ], E4 [  K! N
begin$ i3 P2 Q" M: g) S( M
    if nSysRst='0' then- O1 f% w1 C$ ]1 ]6 {. K  u# T
        for i in 0 to 15 loop
! V0 F0 S" t9 L  D            fifo(i) <= "00000000";6 K' m; p3 d( l+ e( ]8 }' h
        end loop;+ U5 Q7 [9 \2 b! ]
    elsif wck'event and wck='1' then
+ U) r* r8 A; @: S        if wen='1' then5 L. D5 n7 q' U) i5 W
            case wptr(3 downto 0) is
# D. n: l( D) P) a                when "0000" => fifo(0) <=wdata;) l& |! R) s+ M2 o, w  i
                when "0001" => fifo(1) <=wdata;/ L9 L! [5 B8 k  J
                when "0010" => fifo(2) <=wdata;& i+ ^+ K. y* y% z' O- e1 g+ R! }
                when "0011" => fifo(3) <=wdata;
$ ?3 z' i0 p6 X                when "0100" => fifo(4) <=wdata;( j$ M+ Z0 h: m; @* R
                when "0101" => fifo(5) <=wdata;
) M  }5 ?+ P& \$ [                when "0110" => fifo(6) <=wdata;
5 k3 [1 k$ G$ W" w  V" p                when "0111" => fifo(7) <=wdata;
4 ?8 L: \6 v8 A: J0 T. G7 `                when "1000" => fifo(8) <=wdata;
' I9 Z( a' K) H" X- \# A                when "1001" => fifo(9) <=wdata;
! Z( E5 j9 T9 C4 \. u% |  Y' C! i/ U                when "1010" => fifo(10) <=wdata;( g* O/ s; O; b/ D+ X" y! R) g0 g4 Y
                when "1011" => fifo(11) <=wdata;
/ z+ {: t( s5 L6 N( x                when "1100" => fifo(12) <=wdata;
1 d2 I" ]4 ]) w# d2 g; T& U                when "1101" => fifo(13) <=wdata;
# r4 K4 h$ E; j1 G( B- ]; B& d                when "1110" => fifo(14) <=wdata;
5 I3 O$ c3 `9 }! ~0 i1 h                when others  => fifo(15) <=wdata;  R! M8 N3 X' L3 y
            end case;$ ~6 C6 q; A1 a' O7 J
        end if;
8 O* t- I) k# d2 U( u* h: }    end if;
/ X/ `' H( t% w. b0 W. ]: ^% l. Pend process;' M; k- Z- X0 P9 Z* w
+ Q5 L9 n0 c+ n) @8 z2 q
[ 本帖最後由 tommywgt 於 2007-3-9 08:37 PM 編輯 ]
發表於 2007-3-9 20:31:43 | 顯示全部樓層
最後是你最關心的部分# o0 j. A  ]0 f: {
我先做些假設
: ?/ y. w/ [% X, s, V* ?1) /RD動作時狀態不能改變3 B! F$ B) e9 e# d: s+ ^+ P
2) wen動作時也不能改變狀態
8 _8 t6 m/ z8 s1 s  i$ E% R2 T2 w如果只有這二個case的話以下這段code或許可行
4 q0 }! N& M) x" a1 x7 E/ P/ ]9 I' |2 x: Z* v2 s+ ~
status:process(nSysRst, wck, wen, nrd, wptr, rptr)- A( z) K6 L: V% Q0 n
begin1 ]- D6 _# U% [+ [6 X$ G
    if nSysRst='0' then
. I; \2 d7 R; [4 g* F8 f3 V* \        full <= '0';
5 ~) d# a1 M! b' g" W! N        empty <= '0';; R6 X9 a3 z% z
        flag1 <= '0';/ C8 N2 C$ S+ r0 h% l& `% z
        flag4 <= '0';
9 }5 Y$ U1 p. }6 ?5 x2 L  {        flag8 <= '0';
2 ^; A9 @# K4 s        flag14 <= '0';
8 t+ {/ r2 f. n* K8 Q  K; f4 ^7 x    elsif wck'event and wck='1' then
3 t3 h9 @* m& f/ K0 F% Q        if wen='0' and nrd='1' then
9 B3 ~. P& J0 X* V% r3 J            if wptr/=rptr then flag1 <= '1'; else flag1 <= '0'; end if;
1 W9 O0 G2 t* n, T0 i            if wptr=rptr then empty<='1';  else empty<='0'  end if;/ \8 A$ A* W/ _+ k! T: C3 c  d
            if wptr(4)/=rptr(4) and wptr(3 downto 0)=rptr(3 downto 0) then full<='1'; else full<='0'; end if;  N+ J" |5 x) e5 ~0 f1 Z6 {& e3 U) R
            if wptr-rptr>"00011" then flag4<='1'; else flag4<='0'; end if;
5 K  ^8 K- ^. x* Y            if wptr-rptr>"00111" then flag8<='1'; else flag8<='0'; end if;, Y0 p6 }# u) Q+ R
            if wptr-rptr>"01101" then flag14<='1'; else flag14<='0'; end if;
. k8 r4 r: ~% d7 C: k. |  @( X% n        end if;; v3 T( _. \1 v3 ]* N
    end if;; V8 Y5 F  A8 V
end process;5 l! {& V0 c: O+ D

  _, C! Q# y5 |" ?- S[ 本帖最後由 tommywgt 於 2007-3-9 08:52 PM 編輯 ]
發表於 2007-3-9 20:33:41 | 顯示全部樓層
前題是wck的clock rate比/rd高  ^! o" Z7 E0 O  ]0 o: Q

2 w( D8 f7 c# r7 a4 j# W! V9 Z2 t好像也沒思考太多, 直接key的, 有什麼問題再討論好了...
發表於 2007-3-9 20:39:03 | 顯示全部樓層
好像跟之前討論的結果有很大出入...管他的, 你看能不能用比較重要...
 樓主| 發表於 2007-3-10 22:53:27 | 顯示全部樓層
謝謝 版主 大大提供的參考範例2 v* }6 H6 M9 w; r+ \  A

$ [1 q( g/ ^: v7 l) X0 X8 X將code研究後,發現可能會有一些問題,所以將問題po上跟大家討論4 L7 I+ w3 t: w7 E

: I5 r$ ~1 X% O1.1 y4 y. f# C- B: a! K
   版主之前的兩個假設 "/RD動作時狀態不能改變"及"wen動作時也不能改變狀態"  p8 ?" c/ F+ F+ k2 M
   這兩個case是發生在best case,可是還要考慮到worst case就是/RD,wen同時發生
! J& s/ k& d. J  m: y1 Z9 h   wptr及rptr同時發生變化,同時兩者又互為判斷來源依據之一' E- G$ E( }  J' v$ E
2.
' F% ]3 z1 I4 O) ^1 m: B2 J   由data sheet看起來,實際在操作上未必能符合wck的clock rate比/rd高
$ _' k' t, U1 Y- r1 o) H   假設wck的clock用16xbaud rate或者直接用1.8432 Mhz,由下圖可以看出5 e$ V9 K  m; F! g0 @
   資料讀取週期RC最小280ns: w9 w1 B6 g+ h
3.
8 m# x' ^- C7 W/ y' r5 d5 R   full,empty,trigger level等訊號之設定清除由wck觸發同步,可是當讀取週期
% U. j/ L  {; G% r   小小於wck週期的case,會有問題,以trigger level造成的INTR來講) {( `" z0 ^" {2 U3 Q% V
   當FIFO裡的資料都被讀完了以後,INTR不會立即變0,而要等下一個wck的時間
& D& q4 @& _& \1 V. y: b9 |. W, \3 @" T   而這段時間不會造成多餘的中斷被執行嗎

本帖子中包含更多資源

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

x
發表於 2007-3-10 23:42:10 | 顯示全部樓層
第一個問題我想已經不是什麼嚴重的問題了5 a: _9 R/ W$ a" |
) y' Y4 ~' K7 K2 [$ D% P
第二個問題, 如果你不介意把外接的clock接高一點的話也就OK,不過可能就無法達到你要的相容性了
  q0 e4 [! t6 M4 V6 _2 f  P( K4 O/ u( g+ U
第三個問題還是clock rate的問題0 l* v* y& X$ _& ], ]" i

. ~, G* v+ ^- V3 i) I4 U; M; ~第一個問題留給別人回答好了...
3 w* ^& _7 ?6 L2~3問題的確是問題沒錯, 誰來接手一下呢?
+ m' N( v  S# x: ?2 ^6 j
+ {0 v/ n( D9 s2 l0 Qaddn大大一直都很細心, 做什麼的呢? 不介意的話請addn大大自我介紹一下! 讓大家多認識你一下吧!
發表於 2007-3-12 19:55:51 | 顯示全部樓層

[ref]asynchronous circuit

有關非同步電路, 先給你一些參考吧!
/ _5 h/ G# x) G" g) m1 i( @) i5 m7 ?7 \4 k3 \) ~1 M6 Q' V( C
[1] Bernard Cole, “Asynchronous logic moves toward mainstream acceptance”,  Embedded.Com, March 2006. [link]
* C3 h9 j1 A& q! w; h& j[2] Chris Angelini, “Asynchronous Logic - Who Let The Clocks Out?” ,Computer Power User, May 2005. [link]
+ O5 \! S; {, B' }$ Q. ~/ l[3] David Geer, “Is it time for clock-less chips?”, IEEE Computer Magazine, May 2005.
. J4 o  V) v! B: a- i[4] Website of USC Asynchronous CAD/VSLI group. [link]$ \, d) @' x; G2 S$ c% T" U
[5] “Epson develops the worlds first flexible 8-bit asynchronous microprocessor,” Website of Epson, Feb. 2005. [link]9 O1 W* P: s. u6 K7 f9 m; a
[6] “Asynchronous array of processors chip presented at ISSCC 2006”, EETimes.com, Feb. 2006. [link]   t. b# R! p- d& {, Z( K! u
[7] I. E. Sutherland, “Micropipelines,” Communications of the ACM, Vol. 32, Issue 6., pp 720-738, June 1989.
 樓主| 發表於 2007-3-12 21:33:33 | 顯示全部樓層
版主 大大謝謝你再提供這些參考的資料
! K* y+ ^5 V6 e/ [* K我會好好的找來研究看看8 y1 }+ g( I- K& O4 M: |4 @
) Z7 {: G' n- {9 X
我本身目前不是從事電子相關行業,不過對於
9 ?% v$ a) {# F7 E9 F. Q- sFPGA/CPLD,HDL,數位邏輯設計及單晶片等8 I# C4 z7 M# r' d
都很有興趣,之所以要寫16550 code主要是想) w2 D% i8 i* b1 ^& r0 r! a
挑戰看看自己能不能寫的出來,不過似乎沒那麼容易4 }4 f* k& P# I' R. M: P* m+ Z

9 _4 U) B# m% ?( @9 K/ zFIFO這部分我有上其他討論區問過,可是都沒人回覆' V' _4 o6 }# c8 e4 F; J
感謝版主願意跟我討論這個問題
: g, u, }9 l, P" X7 W0 x
0 m& Z3 I1 U* ~0 H5 J! j再次謝謝啦
發表於 2007-3-13 09:31:02 | 顯示全部樓層
SORRY...上次回時也沒想那麼多
# P1 t8 Z' Z" O# j2 E不過那些問題總有答案的, 希望各位潛水的版友高手可以幫忙出點意見* \2 N2 ~- C0 Q/ w7 A5 i
不然的話就變成只有我們二個人在討論了...
- H) y. X+ C0 p1 _# \2 i; n6 Z& A& a1 l' U. R) k# C
過幾天沒人回時我再找個時間來回吧!
 樓主| 發表於 2007-3-15 23:46:35 | 顯示全部樓層
您好8 {, f  {7 M( x
最近想到一種架構,用來做FIFO不曉得可不可行5 ]1 V7 k7 k% u9 m7 I$ L
如下圖所示
- r  w# c! ~3 y
  \; x- U" L8 E6 O/ h* U. |先就full,empty討論,trigger level不管
+ K" A( T: ~: r& O* H0 d9 k讓/RD脈波,16*baud rate週期大大於亞穩態出現的時間
1 ]  X; h- q' U1 K' o0 H) V8 a; c: X, n( }$ n6 n, O& f
1.用額外bit(valid_bit)來指出register是否有資料寫入3 W2 I- \! p* A1 W0 F" m3 H
  當寫資料到FIFO則相對應的valid_bit會一起被設定為1- O5 w# L* T  t- T+ w
  當讀取FIFO,相對應的valid_bit會被清為0
0 z( M; h# z# T$ M3 P9 M  r) f' V
8 T9 i5 U+ i! J: b1 l. z2.wptr及rptr用bin count
( F! L" ~/ `8 g: v+ R( v: m5 M: o0 b  [# B( L1 r# Q
3.full將所有valid_bit取and,empty將所有valid_bit取nor
; h9 j* v# Q* e5 u: l/ u* S- L+ {( x" ~0 m
4.讀取狀態empty時,/RD下緣將empty訊號鎖住,如此在讀狀態時# s- z+ p; q/ l0 j8 y
  worst case(有一筆資料在FIFO可是讀到的狀態是空),這種case
+ }: E5 B& V! [  出現的機會不會太頻繁,就算出現也不過延遲一個讀取週期而已1 {1 R6 J  X8 }) g% \  D

' n8 V, i2 C  L; n$ E5.16*baud rate下緣鎖住full,接收狀態機16*baud rate上緣動作
5 X8 d  Z, V8 y+ k3 x! I  當接收狀態機要寫資料到FIFO時,如果遇到full(lock)=1時,下一個clk
0 N+ a$ h' b" [1 M8 q" F6 G  週期再判斷一次full(lock)如果也是1,則判定FIFO真的滿了,否則直接
# E/ N6 U) B. w* ^' l  將資料寫入FIFO,如此就可避免可能會發生的worst case(當FIFO還有一0 T: a. c9 B; k# D. [
  個位置是空但被判定為已經滿了的狀況)
1 R% b$ [+ z& Y$ X8 o0 m* p
7 \% w9 Q5 y' H+ I以上的推論不曉得是否正確

本帖子中包含更多資源

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

x

評分

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

查看全部評分

發表於 2007-3-16 09:28:56 | 顯示全部樓層
看起來是個好主意
8 p/ @! G8 y# _1 t- |2 |- a% m% f( B7 d5 N
如果不管coding style的話, 這個想法很好
" S/ c$ D2 T; X! v! s( M* [. B; U( L/ a( u# L) I
相同的, 如果不管coding style的話, 我也有另一個想法一直沒貼上來, 就是使用dual edge在/RD下降綠去記錄狀態, 在/RD週期可以讀到穩定的值, 另外在16x baud的上升跟下降綠也分別去update狀態, 有需要的話可以使用2組buffer length給二邊判斷, 我想這個方式也可以解決你之前問的3個問題. 不過還真的非常的違反coding style rule.0 S/ K& ?$ }( U
跟你的方法比起來, 我的方法所產生的硬體似乎小一點點, 但是你的方法似乎比較簡單點.
: l* t  x4 W2 f# |anyway, 互相交流吧.3 g$ _- R$ c( d3 _4 ]/ v

- M& @1 C4 y. h改天有空的話來討論一下asynchrous circuit也不錯
 樓主| 發表於 2007-3-16 20:13:13 | 顯示全部樓層
您好
3 r6 i# ~5 [- L: F0 x: F8 d4 O我想到這個方法除了電路會比較大外還有其他缺點
8 G) `5 _1 Y  Y% e4 F, k0 b4 ?% F, b( V7 K: r
1.不適合做成容量較大的FIFO
" |  ?/ }% x0 ^& e6 Y2 a
' W0 Z1 P7 L2 |* ]7 U9 |2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響6 }6 Q; O, A" L* M

+ V  t5 A+ x: M( }# Q3.tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣
. I: s' ?" E3 ~8 L   會有較長的延遲時間,所以速度被拖慢了
3 a# W. @1 Z  v
  L8 f- }. W. D6 j7 d謝謝 版主 大大 再提供了另一個思考的方向
發表於 2007-3-17 10:56:27 | 顯示全部樓層
1.不適合做成容量較大的FIFO
5 b% ~0 X# T6 \" a% p, K- G' O我覺得這部分是OK的, 如果你是在PLD上驗証的話會覺得硬體很大
+ B) o- n# D7 Y; z7 O但是做ASIC時你會發現其實很小的) {- B1 g! Y7 p/ e5 H
  j2 A6 h1 D; i( A

. v. S$ n) E' O- u# p2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響" }9 l6 |2 ]; ~9 t
這些valid_bit如果跟著某些信的edge反應的話(latch), 問題會比較小, 不過我覺得你本來就會打算這麼做了
& X( _5 |" h8 b) @$ P: D) c2 Q! \% ^9 e7 s/ z  W
3.tigger level會用到連續加16次的組合邏輯tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣會有較長的延遲時間,所以速度被拖慢了8 I% v; f0 _) t
相同的, 用ASIC製程做時也不會有你講的這些問題, 另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)至於判斷其他的 如flag4, flag8...可以想看看有沒簡單一點的方法.
 樓主| 發表於 2007-3-17 19:38:33 | 顯示全部樓層
您好
; Y8 Q& W9 x% V6 ]" Z% J
; v! {! F; m7 r! t
- u+ B" `$ u; Q3 [, d9 g1.: p: C% L! x: J9 j: R& q
   "另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)"  g5 D. g9 Q9 k* m! n+ v2 q2 R2 h

* Z/ ~1 `( Y. C" N4 L   不了解這段話的意思,可以在進一步說明嗎$ t+ S3 O9 T( W+ x
% ]4 ?$ S* Z$ R& p, |$ S  T- Y. q4 y
2.
2 o+ C: G* I' M$ |" q3 T  y( V; Q5 E  我這方法是假設讓/RD脈波,16*baud rate週期大大於亞穩態(metastate)出現的時間
/ O- n4 W; `# T  才適用的,可是最近看一些關於亞穩態的文章,發現亞穏態維持的時間是不定的,有機會( w5 Z/ I+ G/ t/ v+ Y1 E
  超過/RD脈波及16*baud rate週期,這樣的話我想的這個方法就不能用了
# y$ a' f8 v% ]' h7 I$ n7 U+ P- W  請問有辦法評估亞穩態維持的時間嗎1 |) t9 X! O3 p2 A& B) t
  
  O. l6 Z9 ~5 G謝謝  H. X* M+ g& G

* R9 a% A: D+ Z# P' X1 q- r- h2 o[ 本帖最後由 addn 於 2007-3-18 10:34 AM 編輯 ]
發表於 2007-3-18 12:55:01 | 顯示全部樓層
1. 這是一個很直觀的想法, 全部判斷所有的bit所需要的and / or gate數目跟用multiplexer後只判斷2個bit 所需要的and /or gate數目, 可以評估計算一下, 看哪個比較省, 上回我也沒算, 你可以算算看. - g/ P# o4 t6 y3 w
我舉個例子好了: 如果WPTR永遠指向下一個空的位置的話, 那麼empty/full也可以如此表示:3 S) m4 z. z, I; u
empty = true if valid[WPTR-1]=false# J: F1 {6 G4 _
full = true if valid[WPTR]=true6 F- I/ y% `0 D7 R: r1 }
可能還有其他case需要考慮, 畢竟設計的方法不是只有一種而已
" n7 i- L* I' A: \( |2 A
9 ]% Q6 N" i4 @( @7 O" V3 r. |2. metastate是一個random function, 我們不需要去評估metastate的時間有多長, 我們只要避免在出現的時候產生錯誤的輸出即可.
 樓主| 發表於 2007-3-22 22:36:15 | 顯示全部樓層
您好0 M3 A* W1 B) S0 M# t9 B
關於 metastate
( j* F  i# [9 i請問如果一個d-ff假設 clock頻率1 hz7 T1 T$ R6 H" E+ `" V% c2 }- R
如果剛好發生metastate,metastate這個狀態8 R$ w, X5 v. [( K1 [' ~
有沒有可能有機會維持1秒的時間長度呢
) K& d9 ]* Q/ F7 u: d* j
# y2 K/ s2 @' m  M! u; J" I謝謝
發表於 2007-3-23 08:41:59 | 顯示全部樓層
答案是沒有" G; ~4 R. k3 }8 N- B4 [* J9 w  V

3 ^7 f' b1 ~( Zmetastate的時間長短是根據信號跟gate delay所得的, 也許設的計很糟糕時會出現us, 不然的話應該只會有ns的狀態
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-3-29 08:47 AM , Processed in 0.151008 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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