Chip123 科技應用創新平台

標題: 閒談.近日使用altera cyclone 1c12 發現一個問題 [打印本頁]

作者: thjan65    時間: 2007-3-9 09:45 AM
標題: 閒談.近日使用altera cyclone 1c12 發現一個問題
可能是自己沒注意吧.最近將以前電路重新改寫,以維持較佳的模組化.
8 b  b2 J: E% k! v  ~
( w3 @0 M$ `, p6 M7 q; j7 _* _發現
# r: ~. c0 ]- oalways @(negedge clk or ....) 合成出來的電路會因為 clock 繞的不好 產生 data及clock  skew 問題.; D7 E9 l, f1 K% v

) P: V: Y! J4 c( p後來想到去年的電路 coding style 是0 d7 H, ~) B/ i( y9 m6 I" [% o- m
always @(posedge clk or ....)* m4 t8 @2 Q/ z7 A0 U4 `

* ~- C: e1 U' C當下立刻改成6 h( w, n5 b- i) A; Y  x. S
assign clk1 = ~clk;
- |2 V* D: c! aalways @(posedge clk1 or ....)! t' L3 G0 Q5 j& w/ u6 g1 t! i: G
6 Y3 A$ p" H& X5 _
結果,所有問題迎刃而解. 霎時, 心中只有一個字.
- D9 m+ T) a6 m
( X! B8 g7 L$ M+ I6 p$ ~! T[ 本帖最後由 thjan65 於 2007-3-9 09:50 AM 編輯 ]
作者: jimy    時間: 2007-3-9 10:50 AM
其實更好的 sytle 應該是要將 clock 都從 clock generator 的 module 輸出
) W! ]- p5 c$ A2 r- w& L" Z不管此為 PLL 或 gated clock5 {& s; Q) F8 s6 E5 ]
這樣在 timing constraint 的掌握度才能更好
作者: tommywgt    時間: 2007-3-9 06:07 PM
jimy大大說的沒錯
. G% x8 R/ C) S5 Y3 {( n: l在coding style中, 使用同一個clock source也是很重要的,
- x2 [) W5 @4 v+ ~2 `5 |) l5 k+ M1 t在設計時, 有多少的timing budget也是要好好考量的
7 g: ^, S& M3 v0 K& }" v' F相同的邏輯不同寫法而造成不同的合成結果本來就是可以接受的, 所以才會有所謂的coding style問題.
% i9 s: [% a: A. Q' S$ w" [
& W+ v. Y1 o' a" ]5 e$ d9 k) V% x不過只是個反向的clock就錯了 (會不會只是timing沒有meet?)是會令人心中出現一個大字沒錯...
1 R4 c4 b- @0 u. U# _7 [/ f* F& d& v1 _  Q5 g
有時不得已時, 還是會需要寫這樣子的code的, 感謝你的分享, 以後遇到時可以留意一下下.
作者: thjan65    時間: 2007-3-12 10:22 AM
實際應用是同步電路,頻率只有 30MHz. DATA input 定義在clock falling edge 時必須capture. 因此 RTL coding 才會是 @(negedge clk or ....)! D" R, y: Z- e' H
老實說, FPGA的表現和預期差距是大了點, 況且我還是用GLOBAL clock pin. Netlist post-sim 記得是OK的.
) K+ x( [) f/ {& r. h4 v/ L7 }$ C/ _( F/ ]
[ 本帖最後由 thjan65 於 2007-3-12 10:25 AM 編輯 ]
作者: jimy    時間: 2007-3-12 03:13 PM
標題: 回復 #4 thjan65 的帖子
因為在 FPGA 中都是只有 posedge clock 的 primitive,
/ {* ]- c! l8 M) v所以你寫 negedge clock 的話, 它得在 FF 前加個 inverter gate, 5 T: s) X% U8 u. Z
這樣就變成 gated clock 了, 所以 timing 的 analysis 會不好2 S5 E& N- ]2 v
* t' M9 t# G/ W, J
那你後來的改法: assign clk1 = ~clk;
5 R$ n2 f7 d; a7 G" x# D這樣如果是用 quartus 的話(別的tool我不知道)
5 x7 N/ f) E& _- y4 O它認得出 clk1 會是另外一個 clock source% Y# m/ [. G/ H3 ^- i, v& }
所以 timing analysis 會比較好
作者: tommywgt    時間: 2007-3-12 03:26 PM
30MHz....; U/ v; [- F$ @' t4 N0 T

& O/ w/ ^) X' \0 P2 o好爛...還是好x呢?  ....哈! \. n$ @3 }8 x$ q, }% I! H! {
+ X) M+ _9 `, f5 ^
以後寫code時小心點, 感謝經驗分享!




歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/) Powered by Discuz! X3.2