Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] uart 16550 FIFO問題

[複製鏈接]
21#
發表於 2007-3-9 19:56:47 | 只看該作者
我來回看看好了...3 g1 H4 B3 X0 [

& n* a0 C0 h( ?  d4 @$ t3 k6 R' G這是我剛想了一下畫的圖你先參考一下

本帖子中包含更多資源

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

x
22#
發表於 2007-3-9 20:07:12 | 只看該作者
大部分都跟你想的差不多
2 L2 @  A8 }6 z& n
( ?/ `/ Y8 K2 S4 ~; z/ V: D: I; w那些信號也先估且如我假設一般
+ f( p6 r  J" f; c! _wen是RX收到一筆完整的資料時所送出來的
' D' i% |1 y5 N3 ^' Z因此我想rptr 跟wptr會像這個樣子(這些都是我直接key的, 語法跟細節再麻煩你檢查一下); E: c* F4 ^" B' a  w
prptr:process(nSysRst, nrd)- @8 ~# h9 e4 p+ \
begin: Z; }& T  E0 V1 @# s$ W! h' |" y4 x
    if nSysRst='0' then
) w, D% ?% W3 x" y        rptr <= "00000";! X" z' E4 S3 }/ P6 B
    elsif nrd'event and nrd='1' then
4 J' N9 @2 L1 A        rptr <= rptr + '1';/ o  u# D6 X8 G2 w& W
    end if;
9 T- @6 u' q) P0 e& Uend process;/ f4 e) X/ {5 g1 w8 X* M2 M
/ f' I$ t1 X( S4 _
pwptr:process(nSysRst, wck, wen)1 s: d+ S/ T! Y5 F9 p# _
begin
. q( n- H3 F* h% `, s    if nSysRst='0' then
  f* P% l, k+ j- J. D        wptr <= "00000";1 o+ d& `- R! Z6 {( [) I
    elsif wck'event and wck='1' then5 F: t% {1 V& p- \/ I: u0 M
        if wen='1' then
% |4 @: Q7 c( g' L. @            wptr <= wptr + '1';1 I" `8 g$ g) X0 ?) H2 B  C# r
        end if;: b3 g2 Z; z+ m; S
    end if;
7 I* V0 y- G5 D6 S2 A  A! ]end process;9 `+ e7 R/ ?# Z

- B9 N+ W/ @1 I4 s) {9 M9 |! O假設buffer長度是16的話, wptr跟rprt為什麼都要用5bits 呢?; J7 u* H8 ?1 k1 _
你一定猜的到主要是為了判斷full跟empty, 後面的code會拿來判斷
23#
發表於 2007-3-9 20:12:35 | 只看該作者
直接key怕按錯的話會消失, 所以分段key
: x; h6 B$ h$ [+ u( ~4 l# U# ?1 [
( @( E3 A* N- ?5 _' [" f  T( hRead buffer部分& @# {3 `1 Z) t$ X" o
: R# R$ m) J/ Y( U
--read_buffer, D! k1 I5 O- {
with rptr(3 downto 0) select rdata <=" j* y1 w  w* t" P8 a
    fifo(0) when "0000",
- g$ x& x9 d4 Z% \: e    fifo(1) when "0001",5 X  h" Y5 [! ]) [) S
    fifo(2) when "0010",2 y7 a+ ]2 o  ]
    fifo(3) when "0011",4 S6 f# O# m' K+ j% W
    fifo(4) when "0100",  V5 y4 E7 ^$ r2 z; a+ x' W
    fifo(5) when "0101",
8 A  x5 e+ F% M6 F/ A4 ^    fifo(6) when "0110",! p2 P% E- f- d; i" v" Q( s
    fifo(7) when "0111",
$ B; Y8 `7 Z5 e* N' n3 C2 y- [5 C    fifo(8) when "1000",* F7 D; `; n* m- Q: r
    fifo(9) when "1001",5 q8 k3 L! g  w" A# V' J; L
    fifo(10) when "1010",
+ {7 L, ?' S- T6 D0 y' D    fifo(11)when "1011",
2 d6 m, @9 C2 _9 _: P    fifo(12) when "1100",
" g2 \* O3 J# f    fifo(13) when "1101",
! ]9 x7 F2 G5 k; ~: L/ ~& {    fifo(14) when "1110",
5 L: H4 [0 W, o" I& A5 W: N    fifo(15) when others;
24#
發表於 2007-3-9 20:18:11 | 只看該作者
write buffer 部分" t" v# D2 _' S7 a/ ~- u3 j* T

; m1 N+ \% ~3 G$ g' @4 Pwrite_buffer:process(nSysRst, wck, wen, wptr, wdata)3 O, c# I) }: V" g* j
begin
5 t" N5 @7 ]0 P4 n! b# ?: b( j8 q    if nSysRst='0' then9 k( S4 x( A# T& K' l2 b( E
        for i in 0 to 15 loop
7 x, J8 i" l1 [* m            fifo(i) <= "00000000";- P( E& \7 h2 ]! `
        end loop;2 q; Y/ \  w( L
    elsif wck'event and wck='1' then
+ `% F4 o) p. [4 }5 x# q- }        if wen='1' then) ~2 O# ~- p+ R6 d/ h& Q9 ?$ c/ O
            case wptr(3 downto 0) is) R6 F! |# Q! n  D) {  t" H/ `
                when "0000" => fifo(0) <=wdata;
- F# B) Z" u! n2 z7 x                when "0001" => fifo(1) <=wdata;# y- y( G& k4 r# S* ^
                when "0010" => fifo(2) <=wdata;& {+ J4 s! s+ V7 o7 f3 v
                when "0011" => fifo(3) <=wdata;2 n; u+ t8 g0 d) k5 `& m
                when "0100" => fifo(4) <=wdata;% Z  F! H% Z+ ], J' ^
                when "0101" => fifo(5) <=wdata;' i  X- g% }. x! @& a
                when "0110" => fifo(6) <=wdata;
! b  c0 ?! A% F- T                when "0111" => fifo(7) <=wdata;
7 Q) u' S( ]! B                when "1000" => fifo(8) <=wdata;
2 Q2 J0 J! E* i- [( l                when "1001" => fifo(9) <=wdata;$ S$ n1 K. b9 j
                when "1010" => fifo(10) <=wdata;
9 W2 T) N, G/ N  L6 S6 T) z                when "1011" => fifo(11) <=wdata;8 g9 O1 }1 B7 P: I- `0 M
                when "1100" => fifo(12) <=wdata;
& l/ Z. l  Y, A1 D7 S                when "1101" => fifo(13) <=wdata;
& u4 d) y- M3 W! @                when "1110" => fifo(14) <=wdata;
5 k. f" a8 J! v: n  f# E, H# w8 f                when others  => fifo(15) <=wdata;
5 Z3 f% l& ?# }# `            end case;
) `! s2 e0 _7 n) M/ @        end if;
' n5 n: f) v& _0 a3 b2 [. F, x    end if;6 W. `: {( q; P! {: `( b2 E, G: A% Y
end process;: g. W! y4 W& K1 z& c/ I

; O2 \: Q* R) y8 C[ 本帖最後由 tommywgt 於 2007-3-9 08:37 PM 編輯 ]
25#
發表於 2007-3-9 20:31:43 | 只看該作者
最後是你最關心的部分
4 E2 S* }: H2 D. g* Z7 r: A我先做些假設
' Q) q, z$ s4 L0 C; J' j. [4 J; _# H1) /RD動作時狀態不能改變
1 }( p, b% T$ g! [4 }2) wen動作時也不能改變狀態
% i: }) B& K3 W如果只有這二個case的話以下這段code或許可行! u1 h4 h2 h2 B$ G) A' w, r

$ ?  f$ ~) j* |$ Ystatus:process(nSysRst, wck, wen, nrd, wptr, rptr): J. w5 ~" g, v" U8 T1 J
begin* g& U9 E$ n6 K7 I) l3 i5 X
    if nSysRst='0' then
3 W3 u9 Y/ j8 n0 Z: m, X        full <= '0';3 k4 ~0 `8 [$ i; h* ?
        empty <= '0';
" W' ^3 B3 L% L2 _& N        flag1 <= '0';
1 S/ J: T5 F5 T0 S        flag4 <= '0';6 f) \4 \$ X- M( W! N$ H+ F7 o
        flag8 <= '0';
+ R* u, z+ y$ A$ v+ ^5 _+ ^! f7 e        flag14 <= '0';4 f' @7 Y" W/ _7 A  T7 H1 ?
    elsif wck'event and wck='1' then# i3 V) ]6 k3 n7 ~! u' z" ], m8 g( K
        if wen='0' and nrd='1' then
. Y' T3 R( \6 T            if wptr/=rptr then flag1 <= '1'; else flag1 <= '0'; end if;1 Q; Q( r" h2 A# R3 v1 T
            if wptr=rptr then empty<='1';  else empty<='0'  end if;
7 ~& ]/ \, ^* ^1 o$ |1 L7 {            if wptr(4)/=rptr(4) and wptr(3 downto 0)=rptr(3 downto 0) then full<='1'; else full<='0'; end if;
* _* [) I5 e) u  a$ M            if wptr-rptr>"00011" then flag4<='1'; else flag4<='0'; end if;
5 F: n- r% J  W& _! L9 |$ ?# r            if wptr-rptr>"00111" then flag8<='1'; else flag8<='0'; end if;# q! r) U8 c# p" Q
            if wptr-rptr>"01101" then flag14<='1'; else flag14<='0'; end if;
% |9 q) Z/ C% K' M: K+ Z" U        end if;$ V+ Z7 J  D; G/ |- ^& o9 l
    end if;& Y, `6 e) \3 K" l
end process;" D6 g4 U  r: K1 L$ s' Y7 J
! a. w1 ~0 @- W2 d3 @. O. P3 f
[ 本帖最後由 tommywgt 於 2007-3-9 08:52 PM 編輯 ]
26#
發表於 2007-3-9 20:33:41 | 只看該作者
前題是wck的clock rate比/rd高1 H3 o& u% T; |% O, N, K) L
( J1 g/ k9 `5 g. m9 m) F( l
好像也沒思考太多, 直接key的, 有什麼問題再討論好了...
27#
發表於 2007-3-9 20:39:03 | 只看該作者
好像跟之前討論的結果有很大出入...管他的, 你看能不能用比較重要...
28#
 樓主| 發表於 2007-3-10 22:53:27 | 只看該作者
謝謝 版主 大大提供的參考範例. {+ ?- s- U( s" w4 Z
' Y3 j: z- ]6 z1 [! k$ h" W) }
將code研究後,發現可能會有一些問題,所以將問題po上跟大家討論7 l( F  \+ \* z" G

1 y) L+ ^5 L7 M1 ?' @1.  a  o5 u' {- F  ^! k0 C- M
   版主之前的兩個假設 "/RD動作時狀態不能改變"及"wen動作時也不能改變狀態"
: b  C2 b: P' Y0 T   這兩個case是發生在best case,可是還要考慮到worst case就是/RD,wen同時發生7 u% _( ]% s2 o& ~5 e
   wptr及rptr同時發生變化,同時兩者又互為判斷來源依據之一
3 I9 B2 ^, \. g2 W$ R2.
9 a& E$ {/ z( p8 ~   由data sheet看起來,實際在操作上未必能符合wck的clock rate比/rd高
( E& S# l+ m+ I$ S7 b5 O+ @& B   假設wck的clock用16xbaud rate或者直接用1.8432 Mhz,由下圖可以看出
' {* a2 ?! V0 {2 T0 m+ b( Q   資料讀取週期RC最小280ns
' |: y( y: |& u# Y3.
+ D  L+ l, Q+ r   full,empty,trigger level等訊號之設定清除由wck觸發同步,可是當讀取週期
) d& t. ~4 p8 H1 F6 w. V8 u   小小於wck週期的case,會有問題,以trigger level造成的INTR來講
) S( W3 f" V* h; {   當FIFO裡的資料都被讀完了以後,INTR不會立即變0,而要等下一個wck的時間3 l/ q0 Z/ ^1 L5 _# `/ D8 s9 Q: F
   而這段時間不會造成多餘的中斷被執行嗎

本帖子中包含更多資源

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

x
29#
發表於 2007-3-10 23:42:10 | 只看該作者
第一個問題我想已經不是什麼嚴重的問題了5 o$ |& p+ u- A7 p$ B8 |
4 l& j; }3 F; c: R" a2 i
第二個問題, 如果你不介意把外接的clock接高一點的話也就OK,不過可能就無法達到你要的相容性了
5 E1 c, P% C$ @" b5 J- n! Y; E, E, T0 C
第三個問題還是clock rate的問題
) x0 J+ x) h! y! k. G
8 g1 Y+ i5 F$ k- s/ n) I2 \; |, r第一個問題留給別人回答好了.../ P0 M; e7 q/ N/ `
2~3問題的確是問題沒錯, 誰來接手一下呢?2 t& y  c( h5 @# u5 [3 W- y
) N2 Q5 x/ f3 [
addn大大一直都很細心, 做什麼的呢? 不介意的話請addn大大自我介紹一下! 讓大家多認識你一下吧!
30#
發表於 2007-3-12 19:55:51 | 只看該作者

[ref]asynchronous circuit

有關非同步電路, 先給你一些參考吧!
& v5 H$ ]$ Z1 A
3 c: L( y, w; q[1] Bernard Cole, “Asynchronous logic moves toward mainstream acceptance”,  Embedded.Com, March 2006. [link]
5 \& S7 O; H+ x9 e# s[2] Chris Angelini, “Asynchronous Logic - Who Let The Clocks Out?” ,Computer Power User, May 2005. [link]2 D* b1 `' ~6 @5 Z. \! Y( [$ p* z
[3] David Geer, “Is it time for clock-less chips?”, IEEE Computer Magazine, May 2005.3 _( K5 I+ n- W" q
[4] Website of USC Asynchronous CAD/VSLI group. [link]- K3 |, n5 i% g/ r2 {2 r: J
[5] “Epson develops the worlds first flexible 8-bit asynchronous microprocessor,” Website of Epson, Feb. 2005. [link]/ `0 ~' O. _+ ]7 ~  \( j
[6] “Asynchronous array of processors chip presented at ISSCC 2006”, EETimes.com, Feb. 2006. [link]   g5 a9 c# }5 h3 d, v
[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 | 只看該作者
版主 大大謝謝你再提供這些參考的資料
6 v3 e" ]# O' j% d我會好好的找來研究看看3 c) l3 O6 p. ~- c% {

* b8 C8 M" o! e8 g, |! U我本身目前不是從事電子相關行業,不過對於( C( e# y6 d, R9 T' ~( R
FPGA/CPLD,HDL,數位邏輯設計及單晶片等
6 U2 ?# @6 u5 }5 [, R/ _3 s) L都很有興趣,之所以要寫16550 code主要是想; n% w- h# q  A5 s- U  G( c, W
挑戰看看自己能不能寫的出來,不過似乎沒那麼容易& }1 o1 W# J: x& F' u0 a3 i

9 ?( x/ `" z* t9 EFIFO這部分我有上其他討論區問過,可是都沒人回覆
, x0 y( ?7 Y# X) ^" X感謝版主願意跟我討論這個問題
, n( J6 c4 L! t. H6 n3 u
: n* R- J5 v. r$ H: }" ^8 U再次謝謝啦
32#
發表於 2007-3-13 09:31:02 | 只看該作者
SORRY...上次回時也沒想那麼多
$ }3 r" G% F& x0 i0 W" |不過那些問題總有答案的, 希望各位潛水的版友高手可以幫忙出點意見) G8 L# x/ A4 T8 C
不然的話就變成只有我們二個人在討論了...
& }5 q  Z" s' R5 X: d9 U
* Q# w. X7 T, v; q  j; b0 O; `/ w  n過幾天沒人回時我再找個時間來回吧!
33#
 樓主| 發表於 2007-3-15 23:46:35 | 只看該作者
您好; o' s$ ~3 y9 B- ]: E9 U2 d9 O
最近想到一種架構,用來做FIFO不曉得可不可行
8 E* ^7 k. z4 J  T) @9 u7 K( Z如下圖所示! K% {1 r2 a% v( L3 S8 Y- p

! k! T% a0 y4 I% b9 \3 K) K2 Q先就full,empty討論,trigger level不管( y. @0 f0 D6 W
讓/RD脈波,16*baud rate週期大大於亞穩態出現的時間7 l; {* g5 H& }' U

# A8 |! {+ Z% X/ b1.用額外bit(valid_bit)來指出register是否有資料寫入1 P" S, P$ Q+ n- A6 I# F7 N
  當寫資料到FIFO則相對應的valid_bit會一起被設定為1* g: ^" s8 |  }4 h; K: P
  當讀取FIFO,相對應的valid_bit會被清為0
7 L7 j- u: j* v: h* u
, X" D  ]- _0 B8 h" Y/ C2.wptr及rptr用bin count
3 u( G% q& a0 k1 B2 G+ A1 e9 j- Y' v& N4 m8 ~
3.full將所有valid_bit取and,empty將所有valid_bit取nor
7 e; h, j) M, ?4 m& h
0 o" D# |7 o( k; @4.讀取狀態empty時,/RD下緣將empty訊號鎖住,如此在讀狀態時
4 r+ P; C7 R8 m; q$ _  worst case(有一筆資料在FIFO可是讀到的狀態是空),這種case
2 V# G* f' d- s2 J- J# {  出現的機會不會太頻繁,就算出現也不過延遲一個讀取週期而已
3 h5 _# M) z1 p% k' e
0 |1 |$ t# J5 }$ `5.16*baud rate下緣鎖住full,接收狀態機16*baud rate上緣動作
; E  U# }& P1 h  當接收狀態機要寫資料到FIFO時,如果遇到full(lock)=1時,下一個clk9 w# x* y( q7 M& @4 {
  週期再判斷一次full(lock)如果也是1,則判定FIFO真的滿了,否則直接$ {/ G+ Z" r4 h+ `' ~& R
  將資料寫入FIFO,如此就可避免可能會發生的worst case(當FIFO還有一; C9 z4 ?% `& p8 A8 T/ w
  個位置是空但被判定為已經滿了的狀況)$ D# d- c' o, s2 L1 J! x

5 E3 `6 c( P7 c, Q4 s8 X& G. O以上的推論不曉得是否正確

本帖子中包含更多資源

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

x

評分

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

查看全部評分

34#
發表於 2007-3-16 09:28:56 | 只看該作者
看起來是個好主意
2 n% p8 @8 F+ U8 `
: E) _" \! O: l# t! V! m. H如果不管coding style的話, 這個想法很好" u, x) k5 |9 P, p9 @0 ?7 H
6 `& Z. P0 J' \
相同的, 如果不管coding style的話, 我也有另一個想法一直沒貼上來, 就是使用dual edge在/RD下降綠去記錄狀態, 在/RD週期可以讀到穩定的值, 另外在16x baud的上升跟下降綠也分別去update狀態, 有需要的話可以使用2組buffer length給二邊判斷, 我想這個方式也可以解決你之前問的3個問題. 不過還真的非常的違反coding style rule.
4 v9 G2 I7 Y. f* |* D跟你的方法比起來, 我的方法所產生的硬體似乎小一點點, 但是你的方法似乎比較簡單點.
' K, d1 r3 z% r# r# A2 _anyway, 互相交流吧.- w+ K1 u" j+ K3 E& A8 y) q

% P* U$ R, ]' e3 \. A8 {. s2 C改天有空的話來討論一下asynchrous circuit也不錯
35#
 樓主| 發表於 2007-3-16 20:13:13 | 只看該作者
您好' [% q5 l; k8 _# X
我想到這個方法除了電路會比較大外還有其他缺點& r6 c2 k3 a+ \9 ?

, t5 a4 M8 U; D8 f7 U  A# p7 F! c1.不適合做成容量較大的FIFO
# F9 D; ~9 D+ H' \! [. A5 Y& [$ W' D
2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響
5 U  e6 {" y0 A; V" t# u( ~! `, N2 n  ?. P
3.tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣
# C: {  q+ N# r) S8 S: a9 b   會有較長的延遲時間,所以速度被拖慢了
* \3 h! O" I; N) j3 d# C; B4 e+ l4 b. \6 a
謝謝 版主 大大 再提供了另一個思考的方向
36#
發表於 2007-3-17 10:56:27 | 只看該作者
1.不適合做成容量較大的FIFO
. c+ |( U2 J% a* i0 ^3 L我覺得這部分是OK的, 如果你是在PLD上驗証的話會覺得硬體很大
/ G1 m9 J  `' _/ X3 p/ j- @但是做ASIC時你會發現其實很小的7 X& ?6 l2 n# o9 }* G

9 D2 ~$ c% t& C" @5 ~" a' w" j" i; x; X( ~
2.清除valid_bit邏輯,有用到回授清除的方式,可能會造成其他不好的影響$ a- ~* q& t( Q" `/ h0 ^
這些valid_bit如果跟著某些信的edge反應的話(latch), 問題會比較小, 不過我覺得你本來就會打算這麼做了
: |, X* A2 V! R: `9 n& }7 c7 q' b, a: @1 A
3.tigger level會用到連續加16次的組合邏輯tigger level會用到連續加16次的組合邏輯(把valid_bit全加起來),這樣會有較長的延遲時間,所以速度被拖慢了
, s9 Y# z7 q; K1 ^相同的, 用ASIC製程做時也不會有你講的這些問題, 另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)至於判斷其他的 如flag4, flag8...可以想看看有沒簡單一點的方法.
37#
 樓主| 發表於 2007-3-17 19:38:33 | 只看該作者
您好
# S- n8 b5 b" A
1 b5 x$ u) g/ E0 Q  B1 r$ o" p' }- V
1.6 e4 M4 c3 \* C$ y3 x7 k
   "另外在判斷empty跟full時, 不用全判斷所有的bit (因為這是一個circle buffer)"0 e0 v. Z  h7 ?# J% b7 }
6 H* v* K2 X7 s2 E7 S' b
   不了解這段話的意思,可以在進一步說明嗎( x7 \( o# o3 q8 C$ m2 `9 ?

! a* B, B2 O7 }2.
: V# @; X. ]5 M9 I2 j  我這方法是假設讓/RD脈波,16*baud rate週期大大於亞穩態(metastate)出現的時間% ]( F3 w: f5 A1 c
  才適用的,可是最近看一些關於亞穩態的文章,發現亞穏態維持的時間是不定的,有機會7 z: I; W  ^6 R5 U. d8 V5 l
  超過/RD脈波及16*baud rate週期,這樣的話我想的這個方法就不能用了5 z. p( O: ^$ i+ E; U, ~
  請問有辦法評估亞穩態維持的時間嗎
: \. [/ k5 l) b2 D' q  S5 T  4 O7 n0 b7 t1 C# f/ H) R8 k
謝謝
  @$ l) Z; p; I1 \2 e1 I  X
; [% ]* ~9 m) `% s5 A[ 本帖最後由 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數目, 可以評估計算一下, 看哪個比較省, 上回我也沒算, 你可以算算看. & m, M9 [3 L$ N6 W- m
我舉個例子好了: 如果WPTR永遠指向下一個空的位置的話, 那麼empty/full也可以如此表示:( ?1 o/ M7 g# \! }8 o  [: |* T/ o
empty = true if valid[WPTR-1]=false
( m8 ~5 V$ Y$ ~% b0 L) T9 |full = true if valid[WPTR]=true
# _( l. l$ \! f可能還有其他case需要考慮, 畢竟設計的方法不是只有一種而已
; O4 M. f: |" t- E$ b$ M3 G3 p: D2 j; a
2. metastate是一個random function, 我們不需要去評估metastate的時間有多長, 我們只要避免在出現的時候產生錯誤的輸出即可.
39#
 樓主| 發表於 2007-3-22 22:36:15 | 只看該作者
您好
1 i% Q5 Z+ `* ~$ Z) l關於 metastate
: @' l, l/ z7 w請問如果一個d-ff假設 clock頻率1 hz
& a  [: k- M. ?9 L, }6 N如果剛好發生metastate,metastate這個狀態3 D: q2 H# ~1 r7 E
有沒有可能有機會維持1秒的時間長度呢$ F5 u3 ~0 _8 t+ P' `, l. [
% q3 Y" d, w  P2 F
謝謝
40#
發表於 2007-3-23 08:41:59 | 只看該作者
答案是沒有
; p) r+ ?- R8 m0 y% j, y" [9 ^& w5 |' T- _- D# i3 Q' W
metastate的時間長短是根據信號跟gate delay所得的, 也許設的計很糟糕時會出現us, 不然的話應該只會有ns的狀態
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-18 06:14 AM , Processed in 0.148019 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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