在IC設計中,我們有時會使用深度很大,位寬很小的ram。例如深度為1024,位寬為4bit的ram。此類的ram有個明顯的缺點:形狀狹長,不利于布局布線、導致讀寫接口走線過長,不利于時序收斂。
此時為了方便布局布線和時序收斂,我們通常會進行折疊設計。
如下圖所示,深度為1024,位寬為4bit的雙端口1r1w的ram,有一個讀接口,一個寫接口,支持同時讀寫操作,出于以上考慮,我們會進行折疊設計,采用2個128x32的1r1w的ram實現。
如圖所示:兩個2個128x32存儲的內容完全一致。
無論是否進行折疊設計,ram接口信號位寬均一致。讀寫地址位寬為10bit,讀寫數據位寬為4bit。部分ram讀寫接口信號如下
信號 | 位寬 | 描述 |
waddr | 10 | 寫地址 |
wen | 1 | 寫使能信號,1表示寫有效 |
wdata | 4 | 寫數據 |
raddr | 10 | 讀地址 |
ren | 1 | 讀使能信號,1表示讀有效 |
rdata | 4 | 讀數據 |
進行寫操作時:
使用waddr[9:5] 作為讀地址,讀128x32_ram_u0,獲得rdata[31:0] 使用waddr[4:0] 選擇rdata[31:0]中一個bit,使用wdata[0:0]進行替換,得到寫入數據wdata_inter[31:0] 使用waddr_dly[9:5] 作為寫地址,將wdata_inter[31:0]作為寫數據同時寫入128x32_ram_u0和128x32_ram_u1。
進行讀操作時: 使用raddr[9:5] 作為讀地址,讀128x32_ram_u1,獲得rdata1[31:0] 使用raddr[4:0] 選擇rdata1[31:0]中一個bit,賦值給o_rdata。
? ? ? ? ?
為什么需要用兩個128x32的ram?
因為1024x1_1r1w_ram_wrapper需要同時支持讀寫操作,而在折疊設計中,寫操作需要先讀ram,讀操作也需要讀ram,如果僅僅使用1個128x32的ram,就會出現有兩個讀請求同時產生,因此為了避免出現此沖突,需要2個128x32的ram才能實現。
審核編輯:劉清
-
IC設計
+關注
關注
38文章
1295瀏覽量
103918 -
RAM
+關注
關注
8文章
1368瀏覽量
114641
原文標題:IC設計:ram的折疊設計
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論