Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] uart 16550 FIFO問題

[複製鏈接]
21#
發表於 2007-3-9 19:56:47 | 只看該作者
我來回看看好了...# K3 h6 N/ P- @4 V2 c$ a6 t

/ r) n7 w- `+ R& N這是我剛想了一下畫的圖你先參考一下

本帖子中包含更多資源

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

x
22#
發表於 2007-3-9 20:07:12 | 只看該作者
大部分都跟你想的差不多/ @* \6 V  y' W" M% M6 n
3 T( S/ A3 q1 Z3 F
那些信號也先估且如我假設一般
8 I( O& O, {9 Hwen是RX收到一筆完整的資料時所送出來的
- g+ _2 Y: E' A因此我想rptr 跟wptr會像這個樣子(這些都是我直接key的, 語法跟細節再麻煩你檢查一下)% J. M) k' ?) o  k
prptr:process(nSysRst, nrd)  J* W2 r9 i+ y6 w7 R2 F
begin% q- x6 Q" Y( A, t) O4 a& J
    if nSysRst='0' then
; E+ ]* m4 ]% u3 u9 x" i        rptr <= "00000";
" Q9 G8 g  S, o# V    elsif nrd'event and nrd='1' then4 F; l3 V1 b5 U! G: ~+ ]
        rptr <= rptr + '1';
1 \: l$ C# d* G4 `5 o    end if;
! Z2 E1 O! a6 R1 Gend process;' q5 {2 m+ }8 w' w$ q' v! E

# z5 z+ D& F+ s; hpwptr:process(nSysRst, wck, wen)2 ]6 C$ L9 g; {& ~( D- U% d( \
begin
+ V3 s/ W/ u9 Q- L    if nSysRst='0' then
0 s7 a5 Q/ e( E        wptr <= "00000";
: e+ J0 b7 T5 q4 z" X; g    elsif wck'event and wck='1' then1 k# V2 }5 Y8 t& G7 e1 q& m
        if wen='1' then3 V% t) e$ x  R9 p/ Y
            wptr <= wptr + '1';
5 s5 `3 `; t  r, V$ q2 c1 a        end if;) `: d7 s/ [& Y& ?
    end if;
+ J* h! w+ f$ \5 N) y1 X  `end process;
$ S6 y5 m5 F- b
$ m) I) |2 S2 p假設buffer長度是16的話, wptr跟rprt為什麼都要用5bits 呢?
; ]9 n- t1 K8 J4 U你一定猜的到主要是為了判斷full跟empty, 後面的code會拿來判斷
23#
發表於 2007-3-9 20:12:35 | 只看該作者
直接key怕按錯的話會消失, 所以分段key
! N8 Z) i0 ~1 [: ^$ W+ r: @1 g4 F$ q7 @8 u
Read buffer部分" E0 i$ _: T. P& S
# _" D4 i7 Z7 q* }) d& ]
--read_buffer
9 U" m. U8 C' H! X. P- P# ^% twith rptr(3 downto 0) select rdata <=
6 O( q/ c5 t2 s. d' l; R    fifo(0) when "0000",
# H- K% I; G6 d* v5 g    fifo(1) when "0001",; i: t: p1 X5 y' N5 H
    fifo(2) when "0010",( m9 x& c( C( {, }+ z! w" H! H
    fifo(3) when "0011",4 u+ S8 I7 V# S9 }0 M) L
    fifo(4) when "0100",; F2 u" m0 `% V4 f9 a  k
    fifo(5) when "0101",
1 Y% V) R# r( m; A' Q+ m2 c    fifo(6) when "0110",
/ N2 P/ m* Y' C" g5 i8 W0 d    fifo(7) when "0111",
7 f8 [3 q2 J% }; |& m3 l    fifo(8) when "1000",
# B+ Z$ Q+ g- b; s! W    fifo(9) when "1001",0 `! B9 R6 I  x
    fifo(10) when "1010",
2 V% r5 {  P6 P% }( T    fifo(11)when "1011",) y& ]! `! j  g( g  \
    fifo(12) when "1100",; i; y: b6 _- L4 B5 f" F+ n
    fifo(13) when "1101",) D" K6 y3 ]1 \
    fifo(14) when "1110",( z3 W8 {$ d- p$ O0 r
    fifo(15) when others;
24#
發表於 2007-3-9 20:18:11 | 只看該作者
write buffer 部分* W2 k8 G% W. u( A8 Y

; |3 E, u- p- }/ f4 M  Gwrite_buffer:process(nSysRst, wck, wen, wptr, wdata)2 p( S1 ?' i1 }7 z9 R. ~: Q6 S
begin
$ A+ ^! Z' p6 a& y  u    if nSysRst='0' then8 r2 \! J& \* Q. F5 s
        for i in 0 to 15 loop6 R: c" K# _7 H4 q5 a# b6 ~
            fifo(i) <= "00000000";
4 v' d; B. V* _6 o3 z        end loop;5 Q. z+ _+ F) C
    elsif wck'event and wck='1' then
. V9 c' J: L' ~        if wen='1' then/ D% `1 T1 a+ B- }
            case wptr(3 downto 0) is' Y) b. U5 n1 \! B4 ^& ]
                when "0000" => fifo(0) <=wdata;
9 w+ t) x% K7 K                when "0001" => fifo(1) <=wdata;
" J4 k( e: \3 s                when "0010" => fifo(2) <=wdata;- B. @: ], @& o
                when "0011" => fifo(3) <=wdata;& D# t( F7 ^7 h' v5 h
                when "0100" => fifo(4) <=wdata;+ V, B9 ~9 `% J6 h, k& @
                when "0101" => fifo(5) <=wdata;
; F9 H* C$ P% h! \( _' E8 j                when "0110" => fifo(6) <=wdata;
# d& e: }/ q" ~2 l6 a2 m4 P                when "0111" => fifo(7) <=wdata;
' i" E" v8 u  ~; j- i7 z                when "1000" => fifo(8) <=wdata;
) |! x. z/ A6 @; w; u                when "1001" => fifo(9) <=wdata;- }3 h' a+ s# G5 v: R/ ~
                when "1010" => fifo(10) <=wdata;
! E+ D: h" @+ u1 |9 Z1 m! F! E                when "1011" => fifo(11) <=wdata;
1 h2 p0 U  F, D, ~                when "1100" => fifo(12) <=wdata;
# F+ n' ?' j0 |                when "1101" => fifo(13) <=wdata;
; F7 t6 [8 Z3 @: _/ q- U                when "1110" => fifo(14) <=wdata;0 u5 S* t) v) @
                when others  => fifo(15) <=wdata;9 H, d+ e& b0 U; {. F
            end case;1 G: D4 p( ~: x9 i6 f1 z
        end if;5 A' l# N" F# Y& o/ i. ^
    end if;
& s. _: z: f7 V' `# Jend process;$ I6 n' N* U: F( f4 U7 i/ e4 G, S
5 S" g9 \2 h  l* C+ ?: E5 s
[ 本帖最後由 tommywgt 於 2007-3-9 08:37 PM 編輯 ]
25#
發表於 2007-3-9 20:31:43 | 只看該作者
最後是你最關心的部分, m" ]* d% n  |9 z6 C
我先做些假設
! U1 l4 s2 J- E" v% B! K& l5 F1) /RD動作時狀態不能改變. B2 W* A* N# D
2) wen動作時也不能改變狀態
; S( v# H1 V: V+ P0 |如果只有這二個case的話以下這段code或許可行
8 u$ E. J0 g* t% e% a% l; }7 c5 S% m1 u# H) o
status:process(nSysRst, wck, wen, nrd, wptr, rptr)
1 Q1 O1 B) h* M4 @0 {/ o/ C% z9 Q- k2 jbegin
9 c2 R4 U! W. f! l# j4 P8 G    if nSysRst='0' then+ p( T( n' P9 F! L5 X; H
        full <= '0';! n* }# v, v1 `" A5 D$ H! N
        empty <= '0';
) j! x4 y% ~0 ?- d% v/ x        flag1 <= '0';; m7 t6 C0 t& P4 z
        flag4 <= '0';
* N$ V" C3 \4 ~/ A) H        flag8 <= '0';! v: J7 X8 }% N5 j2 i/ N% h& h
        flag14 <= '0';4 _3 A2 F, f2 }) ~$ \
    elsif wck'event and wck='1' then! u) n2 |: i2 J, s( x% r+ @! a1 G
        if wen='0' and nrd='1' then
& v7 [  w2 P( {6 E            if wptr/=rptr then flag1 <= '1'; else flag1 <= '0'; end if;
: }8 J  Y7 r  ~% B( S            if wptr=rptr then empty<='1';  else empty<='0'  end if;  Y  O  m! [5 A+ L! S: Y  Y
            if wptr(4)/=rptr(4) and wptr(3 downto 0)=rptr(3 downto 0) then full<='1'; else full<='0'; end if;" j( e4 M: T8 j0 _: D) y
            if wptr-rptr>"00011" then flag4<='1'; else flag4<='0'; end if;
2 y3 o- P/ H) {            if wptr-rptr>"00111" then flag8<='1'; else flag8<='0'; end if;
4 C& c9 x+ \8 p/ o. j            if wptr-rptr>"01101" then flag14<='1'; else flag14<='0'; end if;/ y$ ]" F+ U% v
        end if;
; p# k3 N/ Z: o, R# Y. t- L    end if;$ ]5 `& g6 ~2 D# y4 P: D
end process;5 M5 b' f0 O& j4 U+ [9 k
! }0 d2 _9 Y8 b+ M' Q. R+ e
[ 本帖最後由 tommywgt 於 2007-3-9 08:52 PM 編輯 ]
26#
發表於 2007-3-9 20:33:41 | 只看該作者
前題是wck的clock rate比/rd高" N3 ~0 Q3 H# z# d

( B0 W+ T+ O/ R& e  K9 q) I好像也沒思考太多, 直接key的, 有什麼問題再討論好了...
27#
發表於 2007-3-9 20:39:03 | 只看該作者
好像跟之前討論的結果有很大出入...管他的, 你看能不能用比較重要...
28#
 樓主| 發表於 2007-3-10 22:53:27 | 只看該作者
謝謝 版主 大大提供的參考範例
: N  c: ^5 q9 P0 i+ s9 `. X8 ~% H. t" p5 k. z* O
將code研究後,發現可能會有一些問題,所以將問題po上跟大家討論. A8 r+ K: O; A7 d2 f1 U
1 Q# p& J) W' K7 \3 P
1.
  |9 [# c- \% T1 t3 d. m/ Q6 m- @   版主之前的兩個假設 "/RD動作時狀態不能改變"及"wen動作時也不能改變狀態"
( W5 c( N% C* [   這兩個case是發生在best case,可是還要考慮到worst case就是/RD,wen同時發生" `$ }4 O' w6 O+ L
   wptr及rptr同時發生變化,同時兩者又互為判斷來源依據之一
0 T1 w( e. Y: ~# \9 M2.
2 w$ G% Y" J& D4 `   由data sheet看起來,實際在操作上未必能符合wck的clock rate比/rd高
% q2 \( b( s- d4 H   假設wck的clock用16xbaud rate或者直接用1.8432 Mhz,由下圖可以看出" s5 t% f( I$ G0 s, B4 ]% v
   資料讀取週期RC最小280ns. [" q' c* f. A; _8 U& V  P
3.9 W) ~$ C  o& N  b- e& e
   full,empty,trigger level等訊號之設定清除由wck觸發同步,可是當讀取週期$ q- T/ Z7 U. P- I
   小小於wck週期的case,會有問題,以trigger level造成的INTR來講
* [" o9 s) V1 @; o7 y# @: Y   當FIFO裡的資料都被讀完了以後,INTR不會立即變0,而要等下一個wck的時間* O2 c- [; O  d! Q
   而這段時間不會造成多餘的中斷被執行嗎

本帖子中包含更多資源

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

x
29#
發表於 2007-3-10 23:42:10 | 只看該作者
第一個問題我想已經不是什麼嚴重的問題了
( }, T# B) d% X3 P) D4 Y; v6 v* j0 X6 ?- h) }8 k1 d
第二個問題, 如果你不介意把外接的clock接高一點的話也就OK,不過可能就無法達到你要的相容性了
5 ^& l3 z* M5 D6 Y/ w9 }. l2 h) P9 \/ k7 a1 }) R% [8 E3 Q
第三個問題還是clock rate的問題
$ q+ O( o) Q  v, b5 T4 U" P! h- Q; p, K" Z. L
第一個問題留給別人回答好了..., I% g& G# I+ B- o7 x* ~
2~3問題的確是問題沒錯, 誰來接手一下呢?
* \* e5 H" o/ q% M8 ]+ i* a6 L
# r. U7 u9 v! kaddn大大一直都很細心, 做什麼的呢? 不介意的話請addn大大自我介紹一下! 讓大家多認識你一下吧!
30#
發表於 2007-3-12 19:55:51 | 只看該作者

[ref]asynchronous circuit

有關非同步電路, 先給你一些參考吧!
7 r/ s1 p( G# ]% f8 J& F3 b5 T. ~. U' O% g. h* K# V0 v/ X
[1] Bernard Cole, “Asynchronous logic moves toward mainstream acceptance”,  Embedded.Com, March 2006. [link]
2 y) G0 w9 O  d; m[2] Chris Angelini, “Asynchronous Logic - Who Let The Clocks Out?” ,Computer Power User, May 2005. [link]4 m1 {' V# A  K8 N* r1 b8 i& O
[3] David Geer, “Is it time for clock-less chips?”, IEEE Computer Magazine, May 2005.: H- ~/ X2 i9 X7 [9 p
[4] Website of USC Asynchronous CAD/VSLI group. [link]3 |" w7 v) k! d; R! J
[5] “Epson develops the worlds first flexible 8-bit asynchronous microprocessor,” Website of Epson, Feb. 2005. [link]# z' s0 @0 s" m8 |& \5 S
[6] “Asynchronous array of processors chip presented at ISSCC 2006”, EETimes.com, Feb. 2006. [link]
/ b! [: m& c* g, O& B9 H- \[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 | 只看該作者
版主 大大謝謝你再提供這些參考的資料3 p7 j4 d9 ?4 a
我會好好的找來研究看看) ?' u# {) W+ \# f. B4 K# T5 Y2 }

$ D% o: v# J# a我本身目前不是從事電子相關行業,不過對於2 s; S/ i# S% A  R7 \. U# [" _
FPGA/CPLD,HDL,數位邏輯設計及單晶片等0 y' T- _. i: `! O  [
都很有興趣,之所以要寫16550 code主要是想
3 Z4 q2 X. n" f* O- Z) b0 @! `5 @挑戰看看自己能不能寫的出來,不過似乎沒那麼容易6 r+ }" x/ K' z  d+ j: }

( C0 a7 u9 o; K8 R$ k9 L% e4 dFIFO這部分我有上其他討論區問過,可是都沒人回覆3 n  K" c, ^" g0 e' [
感謝版主願意跟我討論這個問題0 M2 a4 ~3 T( \  ~& Y7 F, t6 v

7 r7 \, d$ w  x0 c/ `# y再次謝謝啦
32#
發表於 2007-3-13 09:31:02 | 只看該作者
SORRY...上次回時也沒想那麼多2 r* I- ^! @2 {0 @7 J
不過那些問題總有答案的, 希望各位潛水的版友高手可以幫忙出點意見% k9 t+ _+ ]& f* A% m
不然的話就變成只有我們二個人在討論了...
( J  `- a! G! b/ u) P
, Y6 k  [/ X" f5 a: R5 M9 ~過幾天沒人回時我再找個時間來回吧!
33#
 樓主| 發表於 2007-3-15 23:46:35 | 只看該作者
您好6 D" }, _3 n% ^+ J0 T
最近想到一種架構,用來做FIFO不曉得可不可行
5 [1 |5 R0 L' s( h如下圖所示6 |8 ]/ u" G8 Q7 {" M# K( w

) ?; y. D9 f$ r/ [: P先就full,empty討論,trigger level不管
- a( M- V7 }+ T% c讓/RD脈波,16*baud rate週期大大於亞穩態出現的時間2 u0 {! R0 d) y! k* c

2 g( v* `. N1 D' Z% P1.用額外bit(valid_bit)來指出register是否有資料寫入  \% |. B6 q3 L' C8 ^# h
  當寫資料到FIFO則相對應的valid_bit會一起被設定為1
' D4 b9 S$ p& S8 Q  當讀取FIFO,相對應的valid_bit會被清為0
" }0 H3 r9 I3 W* X, p
7 D/ y: W/ J7 S0 I2 u2.wptr及rptr用bin count. `2 N4 T; p" ~" x, `, O2 d
+ u3 N% I" F) K! L  q
3.full將所有valid_bit取and,empty將所有valid_bit取nor# J3 I+ \5 T4 R% X! L( [7 X* I3 m
0 i% D* z' e& r1 n: Q
4.讀取狀態empty時,/RD下緣將empty訊號鎖住,如此在讀狀態時
* h! l1 C/ X4 L& v  worst case(有一筆資料在FIFO可是讀到的狀態是空),這種case
* Z3 v+ z7 H! J9 \! x" z4 H: G  出現的機會不會太頻繁,就算出現也不過延遲一個讀取週期而已% {$ a% @8 g- r# [5 K5 r
' A8 u3 y: _& z. e/ n9 R$ v$ I/ S$ R
5.16*baud rate下緣鎖住full,接收狀態機16*baud rate上緣動作
7 \5 {  h; [% ^- N1 k; z  當接收狀態機要寫資料到FIFO時,如果遇到full(lock)=1時,下一個clk% l0 N3 W2 k, K2 t& C2 [  g
  週期再判斷一次full(lock)如果也是1,則判定FIFO真的滿了,否則直接
, w' E: D3 ]- a& u; b' i. D  將資料寫入FIFO,如此就可避免可能會發生的worst case(當FIFO還有一2 ?' c% j6 b6 M/ f" o% }5 ?
  個位置是空但被判定為已經滿了的狀況)
& k6 ]: i& _) J, T. m+ V) p; C% R$ y! y5 G
以上的推論不曉得是否正確

本帖子中包含更多資源

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

x

評分

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

查看全部評分

34#
發表於 2007-3-16 09:28:56 | 只看該作者
看起來是個好主意* K5 _* a) _" h/ l

% [) s) U! E  W( E. u4 y$ ]  n如果不管coding style的話, 這個想法很好( H+ X  s6 K/ v, f

7 R" u* \  V7 @" N  g- ~& K相同的, 如果不管coding style的話, 我也有另一個想法一直沒貼上來, 就是使用dual edge在/RD下降綠去記錄狀態, 在/RD週期可以讀到穩定的值, 另外在16x baud的上升跟下降綠也分別去update狀態, 有需要的話可以使用2組buffer length給二邊判斷, 我想這個方式也可以解決你之前問的3個問題. 不過還真的非常的違反coding style rule.
2 b" F6 {1 @/ U- X: }跟你的方法比起來, 我的方法所產生的硬體似乎小一點點, 但是你的方法似乎比較簡單點.# v% ^( Y; J. L3 B$ I! ?2 q3 e( v
anyway, 互相交流吧.9 L9 o) y( K( U, ^6 `& R
& I/ f7 K% X7 f/ @0 D& G6 S/ Q
改天有空的話來討論一下asynchrous circuit也不錯
35#
 樓主| 發表於 2007-3-16 20:13:13 | 只看該作者
您好
9 K$ z/ M4 Z7 M4 @9 r$ k- f我想到這個方法除了電路會比較大外還有其他缺點/ D" l+ _2 n  r1 ]8 A. o2 {$ \

* G9 V6 f' ~' N9 `1.不適合做成容量較大的FIFO( r& d1 Z/ |* d1 U

8 R4 E* @  [# v+ |2 v2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響4 h9 M) _+ l- M* C

7 @' J: o/ K3 P3.tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣
8 U3 I1 R$ V: V1 P/ }$ s/ F2 }   會有較長的延遲時間,所以速度被拖慢了6 B0 t( t2 A" N
( ?( ?- w- h; Z- Z5 z
謝謝 版主 大大 再提供了另一個思考的方向
36#
發表於 2007-3-17 10:56:27 | 只看該作者
1.不適合做成容量較大的FIFO5 D5 r9 l: r; s( t- `
我覺得這部分是OK的, 如果你是在PLD上驗証的話會覺得硬體很大
/ ^7 j" l: M& D; d6 w但是做ASIC時你會發現其實很小的
9 H% D" S. U/ x, ]
+ d& Y4 c+ s, V2 g& a8 L7 @7 k; j$ x. I8 s  r
2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響8 z4 S# e. R# G) ]* P
這些valid_bit如果跟著某些信的edge反應的話(latch), 問題會比較小, 不過我覺得你本來就會打算這麼做了0 W+ U' D8 ?8 E0 s# d9 V7 {9 R1 u
+ }$ m( g  _6 m8 n6 K0 G5 M0 t
3.tigger level會用到連續加16次的組合邏輯tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣會有較長的延遲時間,所以速度被拖慢了. s- Y2 M' E) }' d/ X3 m9 O. Z
相同的, 用ASIC製程做時也不會有你講的這些問題, 另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)至於判斷其他的 如flag4, flag8...可以想看看有沒簡單一點的方法.
37#
 樓主| 發表於 2007-3-17 19:38:33 | 只看該作者
您好
$ w6 b7 g1 c& H. S7 P
( T9 ^- p+ m; R8 w% ?) p* Q9 o+ T: z$ f( M
1.
8 \4 _# J& _, M, i1 D0 Z2 m5 D   "另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)"/ r; B' \) B7 V: c

% c8 L% C* f- q6 ^) M   不了解這段話的意思,可以在進一步說明嗎
- D7 M8 c2 {3 \1 }% `; X, X5 u. w7 A+ E& {6 h
2.
3 @1 C1 Q2 p, ?5 [0 M# z4 R6 S5 M  我這方法是假設讓/RD脈波,16*baud rate週期大大於亞穩態(metastate)出現的時間
  Z: l9 q' s8 I5 k- n  才適用的,可是最近看一些關於亞穩態的文章,發現亞穏態維持的時間是不定的,有機會
$ |8 t4 w  `$ @  超過/RD脈波及16*baud rate週期,這樣的話我想的這個方法就不能用了
1 S# ]3 z& i/ p8 K8 B  請問有辦法評估亞穩態維持的時間嗎0 ~' ]( _1 A4 S2 s4 P( Q1 I1 J& a
  * R! R2 K2 Z, ^/ L, C& y1 Z/ B: I
謝謝8 y; ~2 u2 C3 v

, {+ m; \: ~4 j6 f" M[ 本帖最後由 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數目, 可以評估計算一下, 看哪個比較省, 上回我也沒算, 你可以算算看. ( l8 V  h2 q% t* b9 N8 D& x
我舉個例子好了: 如果WPTR永遠指向下一個空的位置的話, 那麼empty/full也可以如此表示:* y) g  j# R( c; ~/ O" u( ]
empty = true if valid[WPTR-1]=false
9 A' R8 a8 p5 P: r- C! D* dfull = true if valid[WPTR]=true
: c' _7 B3 j; ?% U4 V) D可能還有其他case需要考慮, 畢竟設計的方法不是只有一種而已; Q: B  I; f  P* E4 H

% }5 O) r$ i/ ?: Y1 x6 \, y, [2. metastate是一個random function, 我們不需要去評估metastate的時間有多長, 我們只要避免在出現的時候產生錯誤的輸出即可.
39#
 樓主| 發表於 2007-3-22 22:36:15 | 只看該作者
您好
& S2 A4 V1 a5 t' y0 K7 D  P關於 metastate
! F* Q" c" N9 Q, {請問如果一個d-ff假設 clock頻率1 hz+ [; {" u1 I8 z# g. ]/ i) k
如果剛好發生metastate,metastate這個狀態3 F7 O+ v, B! _* m
有沒有可能有機會維持1秒的時間長度呢
( Q" m& v; m4 b. g3 Y
$ g: x0 Z" P( b謝謝
40#
發表於 2007-3-23 08:41:59 | 只看該作者
答案是沒有
7 ?. W2 E. z2 X, G6 f2 Q3 {1 K4 a- B2 Z* ^3 \2 r
metastate的時間長短是根據信號跟gate delay所得的, 也許設的計很糟糕時會出現us, 不然的話應該只會有ns的狀態
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-9 08:07 PM , Processed in 0.157020 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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