1戚哎、ILA使用方法
在Block Design中右鍵點(diǎn)擊想要在ILA中查看波形的信號(hào)航唆,選擇Debug,然后點(diǎn)擊窗口上方出現(xiàn)的Run Connection Automation,之后會(huì)在Block Design中自動(dòng)添加一個(gè)ILA Core顽冶,然后該信號(hào)線將連接到上面的一個(gè)Probe上。
需要注意的是岩喷,ILA的Probe位寬與這一信號(hào)位寬不匹配恕沫,所以需要雙擊ILA Core,然后在彈出窗口中修改這一位寬纱意。
2婶溯、AXI地址對(duì)齊問(wèn)題
根據(jù)AXI總線的4K地址對(duì)齊問(wèn)題中的描述:
AXI 協(xié)議支持地址非對(duì)齊的傳輸,允許突發(fā)傳輸?shù)氖鬃止?jié)地址偷霉,即起始地址與突發(fā)傳輸位寬不對(duì)齊迄委。舉個(gè)例子,總線位寬為 32bit 時(shí)类少,如果起始地址為 0x1002 叙身,則產(chǎn)生了非對(duì)齊現(xiàn)象。與 32bit 位寬總線對(duì)齊的地址需要能被 4 整除硫狞,即 ADDR[1:0] = 2'b0信轿。
對(duì)于非對(duì)齊寫(xiě)傳輸,主機(jī)會(huì)進(jìn)行兩項(xiàng)操作:
(1)妓忍、即使起始地址非對(duì)齊虏两,也保證所有傳輸是對(duì)齊的
(2)、在首個(gè) transfer 中增加填充數(shù)據(jù)世剖,將首次傳輸填充至對(duì)齊定罢,填充數(shù)據(jù)使用WSTRB 信號(hào)標(biāo)記為無(wú)效
(此處需要說(shuō)明TKEEP和TSTRB了,在寫(xiě)傳輸中旁瘫,對(duì)于填充數(shù)據(jù)字節(jié)祖凫,TKEEP對(duì)應(yīng)的位1,對(duì)應(yīng)的WSTRB為0酬凳,表示該字節(jié)數(shù)據(jù)無(wú)效惠况,僅用于數(shù)據(jù)填充,實(shí)現(xiàn)地址對(duì)齊)宁仔。
在本設(shè)計(jì)中出現(xiàn)了非對(duì)齊的起始地址問(wèn)題稠屠,這是由于DDR中數(shù)據(jù)無(wú)法使用實(shí)現(xiàn)寫(xiě)好的文件進(jìn)行初始化,我只能使用一個(gè)非常大的數(shù)組(data[6200065][8])來(lái)存放DDR中所需要的數(shù)據(jù)翎苫。而數(shù)組在定義時(shí)無(wú)法規(guī)定其起始地址权埠,并且如果使用指針先定義數(shù)組首地址再賦值數(shù)組,也無(wú)法進(jìn)行數(shù)組的直接批量初始化賦值煎谍。
所以最開(kāi)始時(shí)DDR中數(shù)據(jù)都是直接拿到data數(shù)組的首地址攘蔽,例如0x10e056,然后寫(xiě)入硬件中讓硬件直接從這里取數(shù)據(jù)呐粘。從軟件角度上來(lái)說(shuō)满俗,這并沒(méi)有太大問(wèn)題转捕,data數(shù)組將存放在運(yùn)行程序的數(shù)據(jù)段中,由于本硬件對(duì)DDR有完全訪問(wèn)權(quán)限唆垃,應(yīng)該是可以取到這些數(shù)據(jù)的五芝。
但是對(duì)于硬件上的AXI-master接口來(lái)說(shuō),這就有很大問(wèn)題辕万。由于AXI接口IP和ZYNQ系統(tǒng)接口限制与柑,需要在AXI-master訪問(wèn)時(shí)提供字對(duì)齊的地址。也就是說(shuō)蓄坏,對(duì)于ZYNQ系統(tǒng)的DDR,其字大小為32bit丑念,所以AXI-master在訪問(wèn)DDR取數(shù)據(jù)時(shí)發(fā)送的地址需要最低兩位位保持為0涡戳,原因就是上述文章中提到的內(nèi)容。否則的話取到的數(shù)據(jù)將可能不滿足系統(tǒng)所需的要的形式脯倚,導(dǎo)致數(shù)據(jù)錯(cuò)位等問(wèn)題渔彰。
3、DDR數(shù)組數(shù)據(jù)起始地址問(wèn)題
在上述AXI-master地址對(duì)齊問(wèn)題下推正,需要將DDR中的數(shù)據(jù)確定到一個(gè)對(duì)齊的位置恍涂,保證AXI-master讀到正確排布的數(shù)據(jù)。
由于找不到Xilinx相關(guān)DDR數(shù)據(jù)初始化的教程(找到一個(gè)但是使用上有問(wèn)題)植榕,我還是使用了數(shù)組形式在DDR中寫(xiě)入數(shù)據(jù)再沧,然后用PS將數(shù)據(jù)搬運(yùn)到對(duì)齊地址位置(搬到了0x20000000,DDR地址0x01000000~0x3FFFFFFF尊残,數(shù)據(jù)量0x0BD36000)炒瘸,等搬完數(shù)據(jù)再給硬件信號(hào)從對(duì)齊地址取出數(shù)據(jù),這一方法可行寝衫。
4顷扩、Reset信號(hào)高/低有效
本系統(tǒng)中Reset信號(hào)為高有效,AXI上的復(fù)位則是低有效慰毅,如果直接接上AXI的復(fù)位那就直接什么都跑不出來(lái)隘截,一直是復(fù)位狀態(tài)。
5汹胃、BRAM與ARM SRAM控制信號(hào)ENA/WEA高/低有效區(qū)別
BRAM波形在我前面的文章中有提到婶芭,我當(dāng)時(shí)沒(méi)有仔細(xì)看,結(jié)果就出問(wèn)題了统台,很明顯兩者時(shí)序基本一致雕擂,但是重要的一點(diǎn)是ARM SRAM的ENA和WEA信號(hào)都是低有效的,而B(niǎo)RAM則是高有效贱勃,正好和復(fù)位反著井赌,我在替換IP原語(yǔ)時(shí)直接用了之前ARM接口信號(hào)表述谤逼,這樣直接導(dǎo)致RAM中取不到寫(xiě)不進(jìn)數(shù)據(jù)。