原創By DeeZeng [ Intel FPGA筆記 ]ios
在用Nios II測試 DDR3時候發現一個現象 (測試爲:寫全片,讀全片+比對)架構
只是換了個時鐘爲何影響這麼大?相差近 20s測試
分析發現spa
接下來將具體分析一下,爲何測試時間會相差那麼大:orm
1、跨時鐘域 Qsys自動插入 Clock Crossing Adapter
blog
1. 當Avalon MM Master 和 Avalon MM Slave 的時鐘爲不一樣時鐘的時候 (相似Nios II 用pll 200MHz , DDR3 都用了 afi_clk 200MHz)ip
咱們將鼠標懸浮在 黑圓點那 能夠看到鏈接信息,而且 紅點提示:A Clock Crossing adapter will be inserted資源
2. 當Avalon MM Master 和 Avalon MM Slave 的時鐘爲同一個的時候 (相似Nios II 和 DDR3 都用了 afi_clk)get
咱們將鼠標懸浮在 黑圓點那 能夠看到鏈接信息, 而後不會有Clock Crossing Bridge提示it
2、 Clock Crossing Adapter 將增長 多個週期 的 latency
如上兩圖,能夠看出Clock Crossing Adapter的架構 將致使增長几個週期的 latency
3、增長的Latency 對傳輸效率有什麼影響?
1. 低效率的讀寫操做,雪上加霜
若是自己傳輸協議就是如上圖這種低效的。 動做半天,只讀了一個word。 那增長几個latency後效率變得更低下
舉例:
若是原來4個週期出一個Word, 那效率是 25%
而加上5個週期 latency後,變爲9個週期出一個Word,效率下降爲 11%
2. 高效率的讀寫操做,影響不大
若是自己傳輸協議就是如上圖這種高效的。 burst傳輸,只是延遲幾個週期
舉例:
若是原來4個週期出delay,一次傳輸100個word 耗時 104 ,效率爲 96%
而加上5個週期 latency後,變爲109個週期出100 Word,效率下降爲 92%
四、Nios II 的讀寫是什麼狀況呢?
從上面 一 二 三 點分析,咱們已經知道測試時間增加的緣由:增長的 Timing Crossing Adapter形成傳輸效率變低了
經查手冊,找到一個 Nios II 的 操做時序圖(並不是Nios II 操做DDR3的) ,操做 latency4個週期 一次操做8個
舉例:
若是原來4個週期出delay,一次傳輸8個word 耗時 12,效率爲 66%
插入Timing Adapter 假設增長了5個週期 latency後,變爲17個週期出8Word,效率下降爲 47%
(這裏只是舉例, Nios II操做DDR3實際並不是這種時序。 DDR3 -> DDR -> Quarter Bridge ->,
DDR3的read latency也會隨着這些bridge變換。bus變換過程當中也增長了Width Adapter等,因此只是簡單判斷緣由 )
因此 測試DDR3爲:寫全片,讀全片+比對。比對耗時一致。讀寫變慢致使時間差別
這篇博文的目的:
1. 關注帶寬和吞吐量的應用,注意一下這些 Clock Crossing Adapter 和 Pipe Bridge 的添加 (注意到 Bridge有可能下降傳輸效率這回事)
分析 bridge帶來 fmax 的提高,和效率下降的權衡。 (其實關鍵就是儘可能burst 提高傳輸效率)
2. 這篇分析 並非不建議用 Timing Clock Crossing Adapter (注意到 Bridges 還有不少其餘做用)
它還有不少的做用 如
1. 提高fmax
2.調節架構(多個master,多個slave)節省邏輯資源
3. ...