Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] uart 16550 FIFO問題

[複製鏈接]
21#
發表於 2007-3-9 19:56:47 | 只看該作者
我來回看看好了...- L- q( D8 t" g6 Z

4 X3 Y4 ^, @9 i9 g這是我剛想了一下畫的圖你先參考一下

本帖子中包含更多資源

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

x
22#
發表於 2007-3-9 20:07:12 | 只看該作者
大部分都跟你想的差不多
, @/ d0 C* ?6 ^2 C' m
0 x6 P$ Z8 j% `7 K那些信號也先估且如我假設一般- c8 E5 c/ n+ m( i# B9 s; ~
wen是RX收到一筆完整的資料時所送出來的
# M9 a; o( T9 P  K. o3 Z' w因此我想rptr 跟wptr會像這個樣子(這些都是我直接key的, 語法跟細節再麻煩你檢查一下)  }3 L+ z) e$ Y: Z7 i, o
prptr:process(nSysRst, nrd)
+ u# l/ A. V% O  P6 R: o" V4 ubegin& t% Y/ E: h8 w, Z# a* Z
    if nSysRst='0' then% {/ i- j: R9 K, b# E1 [$ V6 @/ q# S
        rptr <= "00000";1 z, k) t) q6 o0 _5 D) T
    elsif nrd'event and nrd='1' then
7 u* {9 W  n1 A( ]        rptr <= rptr + '1';
* g5 T2 o" n( D2 `: p- N    end if;' i, N1 W( c! h5 {3 I( _
end process;
4 p& N+ i2 [8 f
2 |2 [6 I: S- a" @pwptr:process(nSysRst, wck, wen)* {* f5 Y" T: D5 C
begin1 W) L  o& y! s  e
    if nSysRst='0' then* V9 p+ V* v1 d$ R* d# @$ M
        wptr <= "00000";
1 C7 L/ O9 Q) o+ r    elsif wck'event and wck='1' then
1 Q9 @7 G1 v: m9 Z        if wen='1' then
$ N& \9 n- @: t7 g0 l            wptr <= wptr + '1';
4 w% B- s5 \* p# `. Q& L        end if;" k9 E4 y  h, S9 J" U8 B9 a  D
    end if;
1 \7 V! D6 I$ _( @3 v- yend process;
7 i7 q$ g! m  r7 U, j) y1 v* {; m
! D* }$ F; ^; h3 \5 b假設buffer長度是16的話, wptr跟rprt為什麼都要用5bits 呢?0 p: y  f3 T3 P7 B. z
你一定猜的到主要是為了判斷full跟empty, 後面的code會拿來判斷
23#
發表於 2007-3-9 20:12:35 | 只看該作者
直接key怕按錯的話會消失, 所以分段key! @# H! a4 ~& t& j3 q! ]

3 i  e' J0 F& S1 B5 B2 BRead buffer部分  w" ~; ?: n: v9 ^

  J0 G! ]8 d$ g9 E2 H--read_buffer" _7 q0 Y0 ^  ^" z( e4 {
with rptr(3 downto 0) select rdata <=
3 J, F& i9 ]1 e0 \    fifo(0) when "0000",
5 L5 }; y9 b  H& q* h/ g8 W    fifo(1) when "0001",
2 K+ p: t4 X+ @; `* Y" N( {    fifo(2) when "0010",
) i6 D- L: T5 q8 W4 d5 P5 r    fifo(3) when "0011",
1 Y7 |) Q, l7 s# z4 f    fifo(4) when "0100",$ Y( `  X3 i+ }+ \. z" q- V
    fifo(5) when "0101",
/ e" W9 V8 Y, T/ g$ |    fifo(6) when "0110",
9 f# t! J0 X& y% `    fifo(7) when "0111",6 r/ _4 @, j1 |9 C, k' k4 B
    fifo(8) when "1000",% M7 S# x' }+ D% D/ ?6 Z9 \
    fifo(9) when "1001",
& Z, a+ f: i+ ~, r# o1 \    fifo(10) when "1010",
, \3 y# P& Y7 d) v7 H6 ?    fifo(11)when "1011"," @  y' h  s7 v0 b
    fifo(12) when "1100",
; L; D1 \; B  h( d. C% {) u, p    fifo(13) when "1101",
# G$ l$ ?6 i$ e. N! i    fifo(14) when "1110",
- v5 [8 e, @2 U6 J% @    fifo(15) when others;
24#
發表於 2007-3-9 20:18:11 | 只看該作者
write buffer 部分" M- N! ^2 F; L

/ c( u8 |( _( g+ a0 ]: k2 l2 ^0 @write_buffer:process(nSysRst, wck, wen, wptr, wdata)0 |: t7 _. n, ^2 g" m" K/ D
begin% b  E' x! J* K4 t  I$ u
    if nSysRst='0' then3 n8 A$ a+ \& d
        for i in 0 to 15 loop
3 J" ~; \. X* o" h! V, A            fifo(i) <= "00000000";
3 r; k5 T+ V( X7 q- J/ O        end loop;0 v) v0 }& Y, ?0 [, m9 L
    elsif wck'event and wck='1' then
& B9 `7 J9 o6 l5 \0 P        if wen='1' then
- O2 T+ Y; }/ s4 U  T' p, u2 o            case wptr(3 downto 0) is
$ @9 \, `* ?/ `! D7 J& i4 v                when "0000" => fifo(0) <=wdata;) l2 O( y/ X+ @
                when "0001" => fifo(1) <=wdata;
1 x9 q2 d; n( Y6 o* U1 q7 ^4 N                when "0010" => fifo(2) <=wdata;  |7 I) j  ?7 i! W6 a4 L6 q0 J: s% h
                when "0011" => fifo(3) <=wdata;
0 K- x$ s2 ]! O6 h                when "0100" => fifo(4) <=wdata;
- E- i5 p% w7 D8 Y                when "0101" => fifo(5) <=wdata;- {$ |3 }  w% Y
                when "0110" => fifo(6) <=wdata;
7 k) x# K( U: w$ ?                when "0111" => fifo(7) <=wdata;
6 L1 o8 U/ w9 Y+ A5 [                when "1000" => fifo(8) <=wdata;$ Q6 `( v' `7 l; C) Z) X6 c$ H
                when "1001" => fifo(9) <=wdata;
: L; X) \( K6 q- w: T                when "1010" => fifo(10) <=wdata;) h$ G0 q$ W* R0 N( B+ e$ O/ V" }
                when "1011" => fifo(11) <=wdata;
6 g8 A. G3 y" Y; L6 t& [                when "1100" => fifo(12) <=wdata;8 A& ^) M/ |, q: D; P. g1 V
                when "1101" => fifo(13) <=wdata;
% t% T  |. X7 c" d; h* A/ c- t6 F' X                when "1110" => fifo(14) <=wdata;
1 Z) B% X. f' ]% X4 Y7 k                when others  => fifo(15) <=wdata;+ m. S; N& W1 W
            end case;; Z. G. ^9 d% \5 A' t
        end if;
8 C8 k5 K9 D7 q    end if;
' A$ P" K( o/ m% F, rend process;6 z7 x) J  f% F* c( }; X

7 L: z0 e8 k8 G* k* m; m[ 本帖最後由 tommywgt 於 2007-3-9 08:37 PM 編輯 ]
25#
發表於 2007-3-9 20:31:43 | 只看該作者
最後是你最關心的部分
6 \3 m) r0 p+ t/ A* u- E我先做些假設
3 s4 t; C# A# A3 W! T2 D; T4 O1) /RD動作時狀態不能改變9 a9 A. Z5 `  E- q# j- K
2) wen動作時也不能改變狀態
' e$ ^+ f& \$ I% ?( @% X: W' a$ i如果只有這二個case的話以下這段code或許可行! [$ f( q6 ]; H' ~, Y
/ x5 A# f, b/ Y% B
status:process(nSysRst, wck, wen, nrd, wptr, rptr)
3 V4 R( H& u; w6 B5 m7 v4 r  ~+ H$ K+ wbegin* m2 ~0 D# w( d+ c
    if nSysRst='0' then1 }& d7 [) Q( {* C
        full <= '0';  ?' I9 X: C/ p7 x( ^0 S( ~
        empty <= '0';
: A; w' o. g" y6 E# M% x        flag1 <= '0';  h& A1 h. t& s( P6 z! D
        flag4 <= '0';
2 |8 J% k2 a2 R" w' a        flag8 <= '0';
( ]5 [. T2 A) v/ H& S) `$ X        flag14 <= '0';" c# p. T3 n, `! ^
    elsif wck'event and wck='1' then( g2 q3 q# H7 u% x# F. Z$ ^" L
        if wen='0' and nrd='1' then% s1 a1 e1 q' |5 J
            if wptr/=rptr then flag1 <= '1'; else flag1 <= '0'; end if;
; b& m) b4 H; P, S6 j2 Z            if wptr=rptr then empty<='1';  else empty<='0'  end if;
& A" s  {# p1 q9 V1 s            if wptr(4)/=rptr(4) and wptr(3 downto 0)=rptr(3 downto 0) then full<='1'; else full<='0'; end if;) E2 I3 M+ ^( `
            if wptr-rptr>"00011" then flag4<='1'; else flag4<='0'; end if;
4 R+ H+ N  k; c, P            if wptr-rptr>"00111" then flag8<='1'; else flag8<='0'; end if;
$ |' N' E3 O: L/ f2 _            if wptr-rptr>"01101" then flag14<='1'; else flag14<='0'; end if;
( v# u3 K/ w( `" n" O" y5 J        end if;
' Z3 O5 X' \& a) j2 T4 o    end if;5 P# P3 o" Y& ?% H$ L% Q
end process;
  o6 x/ `5 @8 c% u) X$ T, K* V6 r, J; d' D0 `
[ 本帖最後由 tommywgt 於 2007-3-9 08:52 PM 編輯 ]
26#
發表於 2007-3-9 20:33:41 | 只看該作者
前題是wck的clock rate比/rd高
( l, }* _( ?1 F" _4 L* X# I: d5 i3 k7 ~% m6 h. A9 u
好像也沒思考太多, 直接key的, 有什麼問題再討論好了...
27#
發表於 2007-3-9 20:39:03 | 只看該作者
好像跟之前討論的結果有很大出入...管他的, 你看能不能用比較重要...
28#
 樓主| 發表於 2007-3-10 22:53:27 | 只看該作者
謝謝 版主 大大提供的參考範例
  C  O  o$ _, G( R/ `; B- f/ S0 q- n- e& w' o
將code研究後,發現可能會有一些問題,所以將問題po上跟大家討論
' K; }) Y* Y# p4 x- c5 k8 x, k7 n3 k1 x
1.* U* F6 V8 V4 g
   版主之前的兩個假設 "/RD動作時狀態不能改變"及"wen動作時也不能改變狀態"
1 ~% x9 k1 o& e0 X2 ]3 B0 \; Q   這兩個case是發生在best case,可是還要考慮到worst case就是/RD,wen同時發生
: b: w# k* g& [2 h! Z& l! P2 K* m* y4 U   wptr及rptr同時發生變化,同時兩者又互為判斷來源依據之一
# R$ p1 k% z, t* h- g; V0 N2.
5 H* D2 \" ]/ m. c* P0 j' U3 [  o   由data sheet看起來,實際在操作上未必能符合wck的clock rate比/rd高
1 f3 z0 a# v6 A  I% l   假設wck的clock用16xbaud rate或者直接用1.8432 Mhz,由下圖可以看出
; b8 u  h+ ^8 I* Y! I1 n   資料讀取週期RC最小280ns" p1 c( m* C) B$ k1 ?
3.
( i  `4 [2 I9 i( `1 E3 Y/ u5 [5 J   full,empty,trigger level等訊號之設定清除由wck觸發同步,可是當讀取週期
5 h  |7 q! p: @" }   小小於wck週期的case,會有問題,以trigger level造成的INTR來講
  f. Z% v3 L8 D7 ?, A   當FIFO裡的資料都被讀完了以後,INTR不會立即變0,而要等下一個wck的時間
$ p6 d3 ~! m2 M* w3 x8 t8 X   而這段時間不會造成多餘的中斷被執行嗎

本帖子中包含更多資源

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

x
29#
發表於 2007-3-10 23:42:10 | 只看該作者
第一個問題我想已經不是什麼嚴重的問題了9 B; U# l3 y$ H# b8 ]6 @

, b5 V! S& v6 {+ ^# e% H第二個問題, 如果你不介意把外接的clock接高一點的話也就OK,不過可能就無法達到你要的相容性了
1 X* O0 Y" D; o
* ~: F8 I) z! X5 ~0 Q* L第三個問題還是clock rate的問題. L- F! `/ U. a" s7 O* ^- ]: K2 V" p

' X+ a/ C/ X, `8 M, J/ F第一個問題留給別人回答好了...  j& Z/ a: L- }$ w
2~3問題的確是問題沒錯, 誰來接手一下呢?
% q8 F9 E8 \; R( d  r# k4 B) O  m/ _( Z
addn大大一直都很細心, 做什麼的呢? 不介意的話請addn大大自我介紹一下! 讓大家多認識你一下吧!
30#
發表於 2007-3-12 19:55:51 | 只看該作者

[ref]asynchronous circuit

有關非同步電路, 先給你一些參考吧!
9 d3 f/ }( u& B& r7 d' c, z5 e. W- Q, n
[1] Bernard Cole, “Asynchronous logic moves toward mainstream acceptance”,  Embedded.Com, March 2006. [link]) L7 _, A' ]- R; ?" a7 J
[2] Chris Angelini, “Asynchronous Logic - Who Let The Clocks Out?” ,Computer Power User, May 2005. [link]& Y  e4 Q' W* C# {( w" Z9 J
[3] David Geer, “Is it time for clock-less chips?”, IEEE Computer Magazine, May 2005.6 F' f* k  }. _, k9 U: ]
[4] Website of USC Asynchronous CAD/VSLI group. [link]. m- u& D0 U- x4 C5 O( {- N
[5] “Epson develops the worlds first flexible 8-bit asynchronous microprocessor,” Website of Epson, Feb. 2005. [link]( u" d& \- l, J3 W+ t; O
[6] “Asynchronous array of processors chip presented at ISSCC 2006”, EETimes.com, Feb. 2006. [link]
+ n  e; s6 P! a1 N1 @" 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 | 只看該作者
版主 大大謝謝你再提供這些參考的資料
/ g( N* e' p+ [8 [3 Q* A我會好好的找來研究看看0 H/ X' H5 [- e0 }  h
% h  i! {: j9 _" {
我本身目前不是從事電子相關行業,不過對於
/ i  J3 f1 J4 e& uFPGA/CPLD,HDL,數位邏輯設計及單晶片等
* K, P" n1 x2 y& g5 a都很有興趣,之所以要寫16550 code主要是想% G  }4 w6 n, h5 |! |
挑戰看看自己能不能寫的出來,不過似乎沒那麼容易7 X: {: I' F, X0 U; ?" t

, f+ }+ v" T# \3 W/ R3 y& e6 t3 xFIFO這部分我有上其他討論區問過,可是都沒人回覆3 H+ s  j7 w$ t
感謝版主願意跟我討論這個問題
& V1 H# ^, M! `8 ?( [6 k( a
; D7 {9 w- W- E3 m& X: i9 {再次謝謝啦
32#
發表於 2007-3-13 09:31:02 | 只看該作者
SORRY...上次回時也沒想那麼多
5 m* m5 X) I1 z不過那些問題總有答案的, 希望各位潛水的版友高手可以幫忙出點意見
$ }' Y8 z9 S& s8 ?8 K- }1 N不然的話就變成只有我們二個人在討論了...
- I# q0 m. A4 l$ A/ W9 p" l4 F
4 k  P" }7 r2 Q; L9 V* E% K+ e' P過幾天沒人回時我再找個時間來回吧!
33#
 樓主| 發表於 2007-3-15 23:46:35 | 只看該作者
您好1 q) o: F7 G9 K
最近想到一種架構,用來做FIFO不曉得可不可行
' \$ Z- m! _5 ^; Z& T; |如下圖所示
& u5 N# y( k1 E, n4 I) u$ p; E' d- [$ \8 y; J8 c7 R
先就full,empty討論,trigger level不管1 T7 y& n; @9 e$ d; R0 E; O( ~! A: ^% v
讓/RD脈波,16*baud rate週期大大於亞穩態出現的時間
& u$ V  X" Q# h2 @+ U
1 U- B3 }# }5 W" B" `  h2 N" K1.用額外bit(valid_bit)來指出register是否有資料寫入; R% e* Q- o. O3 S2 i: n% i
  當寫資料到FIFO則相對應的valid_bit會一起被設定為1$ ]8 j2 ]. I$ S5 t
  當讀取FIFO,相對應的valid_bit會被清為0" o6 A8 ~, F. y6 o! h% O% p/ w: I

7 M6 O% G3 M7 X2.wptr及rptr用bin count; i2 Y9 }  K$ y& _1 w$ C7 D2 {: M

& A; u% U( o1 e3 ~2 l/ j) o7 i3.full將所有valid_bit取and,empty將所有valid_bit取nor  {+ _6 Z. z4 f

$ o5 ^7 V. y: R7 |: Q: R; @4.讀取狀態empty時,/RD下緣將empty訊號鎖住,如此在讀狀態時! a& v! _+ r& }
  worst case(有一筆資料在FIFO可是讀到的狀態是空),這種case4 s" h! M* S/ F. E
  出現的機會不會太頻繁,就算出現也不過延遲一個讀取週期而已* C6 L: ^2 ?7 L; [: i

; R- @% {! |' N5.16*baud rate下緣鎖住full,接收狀態機16*baud rate上緣動作
8 i/ W$ W/ k* J; e- |& S  當接收狀態機要寫資料到FIFO時,如果遇到full(lock)=1時,下一個clk5 H" \2 N% Y: v! T7 u9 B
  週期再判斷一次full(lock)如果也是1,則判定FIFO真的滿了,否則直接& Y/ Y) R: h, k/ G
  將資料寫入FIFO,如此就可避免可能會發生的worst case(當FIFO還有一% z: ^' z# f; B* ^/ L# ^/ W8 y
  個位置是空但被判定為已經滿了的狀況)6 u3 B4 O7 s0 g) J

% A) V- y  m2 v以上的推論不曉得是否正確

本帖子中包含更多資源

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

x

評分

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

查看全部評分

34#
發表於 2007-3-16 09:28:56 | 只看該作者
看起來是個好主意
% Q" @7 G# h3 o( \6 z9 U! O  h' X& r( p& e1 i. X5 }$ R
如果不管coding style的話, 這個想法很好7 v  m3 P* n$ I, K8 w
; w! \) C3 {/ y$ A/ G) @
相同的, 如果不管coding style的話, 我也有另一個想法一直沒貼上來, 就是使用dual edge在/RD下降綠去記錄狀態, 在/RD週期可以讀到穩定的值, 另外在16x baud的上升跟下降綠也分別去update狀態, 有需要的話可以使用2組buffer length給二邊判斷, 我想這個方式也可以解決你之前問的3個問題. 不過還真的非常的違反coding style rule.6 t) A* a# U) b& d
跟你的方法比起來, 我的方法所產生的硬體似乎小一點點, 但是你的方法似乎比較簡單點.
- o. Q2 }- h3 b1 Y& |9 k5 A2 u+ l5 Nanyway, 互相交流吧.
0 ~) u7 C0 x1 i- j
* K  x0 Q9 @4 D' ~' L改天有空的話來討論一下asynchrous circuit也不錯
35#
 樓主| 發表於 2007-3-16 20:13:13 | 只看該作者
您好
; [# {  j; O/ @; Z* t我想到這個方法除了電路會比較大外還有其他缺點
4 x- {8 p& k% Y( X- i6 [  l
, U7 X5 o" C1 C1.不適合做成容量較大的FIFO0 G' t+ P8 F* ^( G2 |2 S+ l
  L  @  B: M. D/ A! J
2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響
& o, w, D0 X5 N# C8 D
, i0 c! Z, F! y9 ^3.tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣3 J% K* P% Q" ~- P, o
   會有較長的延遲時間,所以速度被拖慢了
  h$ v9 a  n6 Y( E; H4 l6 k2 A3 F; d3 v6 ^/ s! n& [$ D: q0 V' b2 F, Z/ f2 x
謝謝 版主 大大 再提供了另一個思考的方向
36#
發表於 2007-3-17 10:56:27 | 只看該作者
1.不適合做成容量較大的FIFO7 Z. [# k/ x' v( Q7 h( m9 [6 t% Y
我覺得這部分是OK的, 如果你是在PLD上驗証的話會覺得硬體很大
" g7 M* a2 u6 ?; z( h但是做ASIC時你會發現其實很小的
* J7 u) Z( l' ~$ G5 ^* N$ l$ t5 w9 }( ?7 ]4 ^1 W
2 i3 d$ K. b$ f; }( D+ m/ f
2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響3 Q* \, h! w9 G# w
這些valid_bit如果跟著某些信的edge反應的話(latch), 問題會比較小, 不過我覺得你本來就會打算這麼做了
% a* ?- b) J% L& X
) a0 n# l5 |, f  i3.tigger level會用到連續加16次的組合邏輯tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣會有較長的延遲時間,所以速度被拖慢了# |0 a. Y* Z  ~
相同的, 用ASIC製程做時也不會有你講的這些問題, 另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)至於判斷其他的 如flag4, flag8...可以想看看有沒簡單一點的方法.
37#
 樓主| 發表於 2007-3-17 19:38:33 | 只看該作者
您好% g( ~6 o& Q4 `1 A2 v- Y6 u* s

0 X- e" n. M- A( i( K& L4 C5 o* }% u
1.
" o+ c7 f: G3 b   "另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)"" q, s7 e: ~/ J( ]" g2 F
: K' f  V. `4 o: x+ o& I- {
   不了解這段話的意思,可以在進一步說明嗎
  `! }3 R9 k5 A0 c1 k- J
/ I) X' ~1 d" ]2." G- d& C  v1 X; |  c
  我這方法是假設讓/RD脈波,16*baud rate週期大大於亞穩態(metastate)出現的時間
8 [, W) \& h# }  才適用的,可是最近看一些關於亞穩態的文章,發現亞穏態維持的時間是不定的,有機會
0 o+ x. W% t/ T( s$ [1 q/ n  超過/RD脈波及16*baud rate週期,這樣的話我想的這個方法就不能用了
) |0 H( e$ K; b, b7 ^  請問有辦法評估亞穩態維持的時間嗎7 Z. O' k% P: G1 V# O
    Q/ z4 j  N6 U
謝謝( g3 @; X, Y  i# d0 H& S# s

' B$ }2 |3 G. R. K[ 本帖最後由 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數目, 可以評估計算一下, 看哪個比較省, 上回我也沒算, 你可以算算看.
' H( s0 P& Y: R: z% a我舉個例子好了: 如果WPTR永遠指向下一個空的位置的話, 那麼empty/full也可以如此表示:
# e" B9 q5 ~% j0 [empty = true if valid[WPTR-1]=false: \% x# X, ?& C6 d3 v% a
full = true if valid[WPTR]=true9 L5 P- k" Y" L. g/ t, B3 y: w+ v
可能還有其他case需要考慮, 畢竟設計的方法不是只有一種而已  d- e4 D5 ~" }, `5 i

3 Q( h6 ^' P$ C" J2. metastate是一個random function, 我們不需要去評估metastate的時間有多長, 我們只要避免在出現的時候產生錯誤的輸出即可.
39#
 樓主| 發表於 2007-3-22 22:36:15 | 只看該作者
您好
' A! _+ n- A3 l' z% W4 z' j# e關於 metastate
/ ~. e- q, j' ?! |. @1 Z請問如果一個d-ff假設 clock頻率1 hz2 ^$ w9 l: l7 l. [& i' S  u
如果剛好發生metastate,metastate這個狀態- G0 \$ M" X7 g( f) Y
有沒有可能有機會維持1秒的時間長度呢
/ `0 F7 L$ h- w2 I* h
" b5 l, {3 z5 a4 {! _謝謝
40#
發表於 2007-3-23 08:41:59 | 只看該作者
答案是沒有: `3 x5 [9 o. O: n: [+ N; T

$ G; o9 P! \8 z; wmetastate的時間長短是根據信號跟gate delay所得的, 也許設的計很糟糕時會出現us, 不然的話應該只會有ns的狀態
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-18 04:16 AM , Processed in 0.144518 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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