ram沖突是幾乎每顆芯片都需要關(guān)注的問(wèn)題,部分場(chǎng)景下,ram訪問(wèn)沖突不容易驗(yàn)證到,容易造成芯片bug。ram訪問(wèn)沖突的類(lèi)型通常有訪問(wèn)接口沖突和訪問(wèn)地址沖突。
術(shù)語(yǔ)解釋?zhuān)?r1w ram表示ram存在一個(gè)寫(xiě)口和一個(gè)讀口,一共2個(gè)端口。1rw ram表示ram只有一個(gè)端口,此端口能寫(xiě)能讀,同一個(gè)周期不能同時(shí)讀寫(xiě)。1r1rw ram表示存在2個(gè)端口,其中一個(gè)端口只支持讀操作,另外一個(gè)端口支持寫(xiě)操作和讀操作(不能同時(shí)讀寫(xiě))。下文中的Logic訪問(wèn)指的由硬件邏輯發(fā)起的訪問(wèn)。csr表示可配置模塊, 其對(duì)應(yīng)的soft_access通常是由軟件發(fā)起的對(duì)ram的訪問(wèn),可能是讀操作,也可能是寫(xiě)操作。
1、訪問(wèn)接口沖突

接口沖突,即多個(gè)訪問(wèn)請(qǐng)求同時(shí)訪問(wèn)一個(gè)ram的端口,例下圖所示,logic 訪問(wèn)和soft訪問(wèn)同時(shí)競(jìng)爭(zhēng)同一個(gè)端口。Case1所示為1rw ram(只有一個(gè)端口,能讀能寫(xiě)),邏輯讀和邏輯寫(xiě)同時(shí)競(jìng)爭(zhēng)一個(gè)端口。Case2所示ram(可以是多個(gè)端口的ram),邏輯訪問(wèn)(讀or寫(xiě))和軟件(寫(xiě)or讀)訪問(wèn)同時(shí)競(jìng)爭(zhēng)一個(gè)端口。
危害:接口沖突類(lèi)型中,如果某一個(gè)訪問(wèn)存在高優(yōu)先級(jí),那么低優(yōu)先級(jí)訪問(wèn)可能一直無(wú)法響應(yīng)。輕則導(dǎo)致訪問(wèn)失敗,重則模塊掛死。
解決方案:高優(yōu)先級(jí)訪問(wèn)接口需要控制連續(xù)訪問(wèn)次數(shù),必須在一定時(shí)間內(nèi)插入空拍。
2、訪問(wèn)地址沖突

我們以1r1w的ram和1R1RW的ram為例進(jìn)行講解。如圖所示:訪問(wèn)地址沖突,指的是讀操作和寫(xiě)操作同時(shí)訪問(wèn)且地址相同。注意:此處的同時(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)的寫(xiě)操作,這種也算讀寫(xiě)地址沖突。
危害:發(fā)送讀寫(xiě)地址沖突時(shí),讀返回的數(shù)據(jù)可能不符合期望,讀返回的可能是不確定值,可能是新值(寫(xiě)操作寫(xiě)入的值),也可能是舊值(不同廠家不同類(lèi)型的ram響應(yīng)因?yàn)椴灰粯?,部分廠家支持ram定制返回新值或者舊值,部分廠家ram返回的就是不確定值。讀到不確定值明顯會(huì)影響模塊功能。
解決方案:在ram訪問(wèn)接口添加保護(hù)模塊。
如果讀返回需要新值,則在發(fā)送地址沖突時(shí),將寫(xiě)操作的寫(xiě)數(shù)據(jù)轉(zhuǎn)移給讀返回。
如果讀返回需要舊值,(比較少見(jiàn))
定制讀返回舊值的ram
添加沖突保護(hù)模塊,發(fā)生地址沖突時(shí),對(duì)寫(xiě)操作進(jìn)行反壓,此方案需要應(yīng)用場(chǎng)景允許
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
463文章
54007瀏覽量
465953 -
接口
+關(guān)注
關(guān)注
33文章
9519瀏覽量
157020 -
IC設(shè)計(jì)
+關(guān)注
關(guān)注
38文章
1373瀏覽量
108304 -
RAM
+關(guān)注
關(guān)注
8文章
1399瀏覽量
120549
原文標(biāo)題:IC設(shè)計(jì):常見(jiàn)的ram訪問(wèn)沖突【必學(xué)】
文章出處:【微信號(hào):FPGA_Study,微信公眾號(hào):FPGA自習(xí)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
ARM訪問(wèn)外部RAM
關(guān)于6678 多核訪問(wèn)EDMA 沖突問(wèn)題
請(qǐng)問(wèn)怎樣直接指定一個(gè)ram并用位帶方式來(lái)訪問(wèn)?
如何用Mutex解決多線程調(diào)用printf()函數(shù)對(duì)串口訪問(wèn)的沖突?
Labview運(yùn)行myrio沖突拒絕訪問(wèn)是何原因?qū)е碌?/a>
S12Z訪問(wèn)沖突錯(cuò)誤怎么解決?
RAM,RAM工作原理是什么?
什么是載波偵聽(tīng)多路訪問(wèn)/沖突避免(CSMA/CA)協(xié)議
解讀片上RAM和外部RAM訪問(wèn)速度的差異問(wèn)題
stm32h743外部RAM非字節(jié)對(duì)齊訪問(wèn),引起的hard fault
TANDY WP 2 RAM IC卡開(kāi)源分享
如何解決C語(yǔ)言中的“訪問(wèn)權(quán)限沖突”異常?C語(yǔ)言引發(fā)異常原因分析
IC設(shè)計(jì):ram的折疊設(shè)計(jì)操作步驟
IC設(shè)計(jì):常見(jiàn)的ram訪問(wèn)沖突
評(píng)論