日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

乒乓操作(Ping-Pong)的理解:为什么是另一种pipeline?

發布時間:2024/5/14 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 乒乓操作(Ping-Pong)的理解:为什么是另一种pipeline? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.乒乓操作的原理

? ? ? ? 乒乓操作用于數據流控制的處理技巧。

? ? ? ? 在兩個功能塊(function block)對接時,由于瞬時數據率的差異(如block A的寫數據頻率為200Mhz,而block B的讀數據頻率為50Mhz),或數據順序的差異(如block A發送的數據為順序發送,block B接收數據的順序為逆序接收,即從最后一個字節開始接收)等原因,導致這兩個模塊不能同時工作。為了提高電路的數據處理效能,可以用ping-pong buffer結構連接這兩個模塊,讓它們能夠同時工作,本質上也是用面積換速度的思想。

2.處理流程

? ? ? ? 如下圖,假設block A和block B以相同的時鐘頻率分別對SPRAM進行數據的讀寫操作。若只有一個SPRAM,由于其特性在任意時刻只能進行讀或寫,不能同時進行,所以block A和block B在任意時刻總有一方是空閑狀態。在這種情況下,也可以通過將SPRAM換成雙口RAM同時實現讀寫操作,但是如果block B的功能要求其必須從block A的最后一個數據開始接收,那么即使換成雙口RAM后顯然也需要等待。

? ? ????????????????? ? ?

? ? ? ? ?而在加入兩個buffer后,模塊A、B輪流對兩個buffer進行讀、寫,這樣這兩個模塊就能同時工作了。如下,block A先往其中的一個SPRAM中寫入數據,寫完后block B從中將數據讀出,同時block A又開始向另一個SPRAM中寫入數據。這樣,只有在第一段block A寫數據的時間內,block B是空閑狀態,其它時間內,兩個模塊都是同時工作的。

???????????????????????????????

????????乒乓操作可以看成是另一種形式的流水線技術,不同的是,在兩個block之間使用的是兩個或者多個的buffer進行切割,是function block級的pipeline。而傳統的pipeline是使用寄存器對組合邏輯進行切割,是cycle級的操作。

3.ping-pong速率控制

? ? ? ? 通常情況下,A與B的讀寫速率是不同的。如A的寫速率為50MHz,而B的讀速率為200MHz。如果還用上述的方法,單純地插入兩個buffer,會導致block A還沒將第二個SPRAM寫完,block B就要開始讀第二個SPRAM中的數據了。

? ? ? ? 這種情況下,可以用wptr/rptr指針來控制A/B的操作速率,類似于FIFO的空滿判斷指針。

??????????????????????????????????????

? ? ? ? ?B通過wptr與rptr的比較,得知某個SPRAM中的數據已經準備好,然后才將其讀出。而A得到某個SPRAM的數據為空時,就往里面寫數據,這樣就解決了速率不匹配的問題。

4.Ping-Pong級聯

? ? ? ? 剛才討論的僅僅是兩個block之間的連接。當有多個function block進行連接時,可以在每兩級之間插入一個ping-pong buffer結構,將它們一級一級連接起來,如下圖所示。

???????????????????????

?5.多個buffer的ping-pong

? ? ? ? 當block A和block B之間的速率差較高時,可以使用多個buffer構成的ping-pong結構,如下圖所示。

????????????????????????????????????????

?

?

?

總結

以上是生活随笔為你收集整理的乒乓操作(Ping-Pong)的理解:为什么是另一种pipeline?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。