ram沖突是幾乎每顆芯片都需要關(guān)注的問題,部分場(chǎng)景下,ram訪問沖突不容易驗(yàn)證到,容易造成芯片bug。ram訪問沖突的類型通常有訪問接口沖突和訪問地址沖突。
術(shù)語解釋:1r1w ram表示ram存在一個(gè)寫口和一個(gè)讀口,一共2個(gè)端口。1rw ram表示ram只有一個(gè)端口,此端口能寫能讀,同一個(gè)周期不能同時(shí)讀寫。1r1rw ram表示存在2個(gè)端口,其中一個(gè)端口只支持讀操作,另外一個(gè)端口支持寫操作和讀操作(不能同時(shí)讀寫)。下文中的Logic訪問指的由硬件邏輯發(fā)起的訪問。csr表示可配置模塊, 其對(duì)應(yīng)的soft_access通常是由軟件發(fā)起的對(duì)ram的訪問,可能是讀操作,也可能是寫操作。
1、訪問接口沖突
接口沖突,即多個(gè)訪問請(qǐng)求同時(shí)訪問一個(gè)ram的端口,例下圖所示,logic 訪問和soft訪問同時(shí)競(jìng)爭(zhēng)同一個(gè)端口。Case1所示為1rw ram(只有一個(gè)端口,能讀能寫),邏輯讀和邏輯寫同時(shí)競(jìng)爭(zhēng)一個(gè)端口。Case2所示ram(可以是多個(gè)端口的ram),邏輯訪問(讀or寫)和軟件(寫or讀)訪問同時(shí)競(jìng)爭(zhēng)一個(gè)端口。
危害:接口沖突類型中,如果某一個(gè)訪問存在高優(yōu)先級(jí),那么低優(yōu)先級(jí)訪問可能一直無法響應(yīng)。輕則導(dǎo)致訪問失敗,重則模塊掛死。
解決方案:高優(yōu)先級(jí)訪問接口需要控制連續(xù)訪問次數(shù),必須在一定時(shí)間內(nèi)插入空拍。
2、訪問地址沖突
我們以1r1w的ram和1R1RW的ram為例進(jìn)行講解。如圖所示:訪問地址沖突,指的是讀操作和寫操作同時(shí)訪問且地址相同。注意:此處的同時(shí)并不一定是同一個(gè)周期,同時(shí)指的是從ram讀接口收到讀操作直到返回讀數(shù)據(jù)的若干個(gè)周期內(nèi)(一般是1~3周期)。例如T0 clk,ram收到對(duì)addr(0x10)的讀操作,T1 clk,讀數(shù)據(jù)還未返回,此時(shí)ram收到對(duì)addr(0x10)的寫操作,這種也算讀寫地址沖突。
危害:發(fā)送讀寫地址沖突時(shí),讀返回的數(shù)據(jù)可能不符合期望,讀返回的可能是不確定值,可能是新值(寫操作寫入的值),也可能是舊值(不同廠家不同類型的ram響應(yīng)因?yàn)椴灰粯?,部分廠家支持ram定制返回新值或者舊值,部分廠家ram返回的就是不確定值。讀到不確定值明顯會(huì)影響模塊功能。
解決方案:在ram訪問接口添加保護(hù)模塊。
如果讀返回需要新值,則在發(fā)送地址沖突時(shí),將寫操作的寫數(shù)據(jù)轉(zhuǎn)移給讀返回。
如果讀返回需要舊值,(比較少見)
定制讀返回舊值的ram
添加沖突保護(hù)模塊,發(fā)生地址沖突時(shí),對(duì)寫操作進(jìn)行反壓,此方案需要應(yīng)用場(chǎng)景允許
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
452文章
49938瀏覽量
419602 -
接口
+關(guān)注
關(guān)注
33文章
8355瀏覽量
150514 -
IC設(shè)計(jì)
+關(guān)注
關(guān)注
37文章
1288瀏覽量
103609 -
RAM
+關(guān)注
關(guān)注
8文章
1350瀏覽量
114370
原文標(biāo)題:IC設(shè)計(jì):常見的ram訪問沖突【必學(xué)】
文章出處:【微信號(hào):FPGA_Study,微信公眾號(hào):FPGA自習(xí)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論