在模塊劃分時,我們通常會考慮解耦合,即盡量減少模塊間的交互,讓模塊間的接口盡量簡單。
在包處理過程中,因為數據處理的需求,需要讀取某些信息(配置信息,狀態信息),如圖中讀取block_b中的ram,根據讀返回的結果后對數據包進行處理。
為了解耦合,我們可以采用一個fifo(pkt_fifo)存儲與ram請求(ram_req)無關的信息(數據包以及數據包的相關描述信息),等待response返回后,再從pkt_fifo讀取相應的數據包信息對,從而對數據包進行處理。
如果不采用pkt_fifo存儲包信息,那么會怎么設計呢?如非解耦設計圖所示,不需要額外的fifo,將包信息(pkt_data)與訪問請求(ram_req)一同傳遞給block_b模塊,再由block_b將包信息(pkt_data)和訪問響應(ram_response)一同送到block_a模塊。
案例中的解耦合設計還有一個優點:節約資源和功耗。如果從發起ram_req到返回ram_reponse的流水比較長,例如需要幾十甚至上百個時鐘周期,在非解耦設計中,就需要使用寄存器對pkt_data進行打拍,而解耦設計中采用fifo存儲pkt_data,雖然從存儲bit角度計算兩種設計需要的bit位幾乎相同,但是fifo(用ram實現)面積更小,功耗更低。
? ? ?
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5363瀏覽量
121178 -
RAM
+關注
關注
8文章
1369瀏覽量
115019 -
FIFO存儲
+關注
關注
0文章
103瀏覽量
6037
原文標題:IC設計:ram的應用 - 一種常見的解耦設計
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論