Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 3875|回復: 5
打印 上一主題 下一主題

閒談.近日使用altera cyclone 1c12 發現一個問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-3-9 09:45:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
可能是自己沒注意吧.最近將以前電路重新改寫,以維持較佳的模組化.
& r8 z5 e" x+ I8 u$ J
! D7 O0 ^$ ~$ a% S7 `發現
0 ^* ^; o8 v( T3 z9 Q8 R0 _: K" `always @(negedge clk or ....) 合成出來的電路會因為 clock 繞的不好 產生 data及clock  skew 問題.
  b; T. L( j3 [+ i' a5 u% M8 r2 n, k$ C
後來想到去年的電路 coding style 是9 W' [1 \; l% l5 _1 x2 a8 b3 y1 D
always @(posedge clk or ....)
+ G( H( Q/ n( \
2 \1 }3 E! [1 E$ |# h: L當下立刻改成9 X4 G$ d0 F( q: ^9 N) O5 g
assign clk1 = ~clk;. h1 T+ m9 g$ A# ?
always @(posedge clk1 or ....)
$ {# ~! g3 Y2 I- I' F" o& A2 p& e6 v; K1 B) q9 _% }
結果,所有問題迎刃而解. 霎時, 心中只有一個字.
& G3 Q: X3 X; O. @: B0 z
& w2 Q+ [0 |- J; J[ 本帖最後由 thjan65 於 2007-3-9 09:50 AM 編輯 ]

評分

參與人數 1Chipcoin +2 收起 理由
chip123 + 2 是哪個字呢?來向知己訴!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2007-3-9 10:50:57 | 只看該作者
其實更好的 sytle 應該是要將 clock 都從 clock generator 的 module 輸出
. r! G' U3 I4 {, H& r/ _不管此為 PLL 或 gated clock* c7 O9 X# ]( R
這樣在 timing constraint 的掌握度才能更好

評分

參與人數 1Chipcoin +3 收起 理由
chip123 + 3 好上加好,精益求精!

查看全部評分

3#
發表於 2007-3-9 18:07:43 | 只看該作者
jimy大大說的沒錯
1 F: r! u. `! l; V% r+ `在coding style中, 使用同一個clock source也是很重要的, $ g9 e! X( m5 E2 Z
在設計時, 有多少的timing budget也是要好好考量的
7 [  G  x& v  K, v! n  ~. d3 D& r5 E相同的邏輯不同寫法而造成不同的合成結果本來就是可以接受的, 所以才會有所謂的coding style問題.- h5 |2 D) L; u$ b! j& W
4 \+ g% _' ]2 Y# L; k+ l
不過只是個反向的clock就錯了 (會不會只是timing沒有meet?)是會令人心中出現一個大字沒錯...
8 K8 |+ F1 W" ]! f8 |) L- X+ C
; B, F( y5 v6 e$ X# T% |有時不得已時, 還是會需要寫這樣子的code的, 感謝你的分享, 以後遇到時可以留意一下下.
4#
 樓主| 發表於 2007-3-12 10:22:30 | 只看該作者
實際應用是同步電路,頻率只有 30MHz. DATA input 定義在clock falling edge 時必須capture. 因此 RTL coding 才會是 @(negedge clk or ....)
/ ]: ^' J+ K2 j) ]/ K+ n9 v老實說, FPGA的表現和預期差距是大了點, 況且我還是用GLOBAL clock pin. Netlist post-sim 記得是OK的.$ O+ `/ l* q0 _5 B; e# n
$ r$ k& e" ~: {5 T  K
[ 本帖最後由 thjan65 於 2007-3-12 10:25 AM 編輯 ]
5#
發表於 2007-3-12 15:13:20 | 只看該作者

回復 #4 thjan65 的帖子

因為在 FPGA 中都是只有 posedge clock 的 primitive,
2 e$ h' O+ R" r3 N' B9 P2 e所以你寫 negedge clock 的話, 它得在 FF 前加個 inverter gate, # Q; M1 u& @+ }' L+ B1 Z9 M6 N: J
這樣就變成 gated clock 了, 所以 timing 的 analysis 會不好& Y3 n2 q  X0 G2 \6 r; M

) c) {' A( A. B( _' j) }4 N- D* y* Y- M0 B那你後來的改法: assign clk1 = ~clk;
/ ]4 Z: O. l% o" _2 g) l這樣如果是用 quartus 的話(別的tool我不知道)3 d6 B# A  e8 s1 ^" e4 k6 x
它認得出 clk1 會是另外一個 clock source) w7 l5 K6 b$ ^, c( y* [- X
所以 timing analysis 會比較好
6#
發表於 2007-3-12 15:26:05 | 只看該作者
30MHz....
& V& p* p% Z6 X4 @4 p9 F' B! c$ d
好爛...還是好x呢?  ....哈: f# {6 q; u! C) ?4 Q3 J

/ I: T7 x( d6 j) Q/ l以後寫code時小心點, 感謝經驗分享!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 09:35 PM , Processed in 0.104006 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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