AXI-Lite總線及其自定義IP核使用分析總結(jié)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
ZYNQ的優(yōu)勢(shì)在于通過(guò)高效的接口總線組成了ARM+FPGA的架構(gòu)。我認(rèn)為兩者是互為底層的,當(dāng)進(jìn)行算法驗(yàn)證時(shí),ARM端現(xiàn)有的硬件控制器和庫(kù)函數(shù)可以很方便地連接外設(shè),而不像FPGA設(shè)計(jì)那樣完全寫(xiě)出接口時(shí)序和控制狀態(tài)機(jī)。這樣ARM會(huì)被PL端抽象成“接口資源”;當(dāng)進(jìn)行多任務(wù)處理時(shí),各個(gè)PL端IP核又作為ARM的底層被調(diào)用,此時(shí)CPU僅作為“決策者”,為各個(gè)IP核分配任務(wù);當(dāng)實(shí)現(xiàn)復(fù)雜算法時(shí),底層算法結(jié)構(gòu)規(guī)整可并行,數(shù)據(jù)量大,實(shí)時(shí)性要求高,而上層算法則完全相反,并且控制流程復(fù)雜,靈活性高。因此PL實(shí)現(xiàn)底層算法后將運(yùn)算結(jié)果交給PS端軟件后續(xù)處理是非常高效的。
因此PS與PL端數(shù)據(jù)交互是至關(guān)重要的,在傳輸數(shù)據(jù)量小的控制 配置初始化等應(yīng)用場(chǎng)合下無(wú)疑會(huì)選擇簡(jiǎn)單的AXI-Lite總線,以下對(duì)總線接口 自定義IP操作及使用注意事項(xiàng)加以說(shuō)明。打開(kāi)Vivado新建工程,選擇主菜單欄Tools選項(xiàng)下的Create and package new IP...
選擇創(chuàng)建新的AXI4外設(shè)可以自動(dòng)生成總線接口邏輯
采用AXI-Lite總線的Slave模式,只有寄存器數(shù)量是可修改的。注意數(shù)據(jù)位寬固定32bit,計(jì)算機(jī)中數(shù)據(jù)以字節(jié)(8bit)為單位存儲(chǔ),因此各個(gè)寄存器地址的偏移量為4.這一點(diǎn)在寫(xiě)軟件時(shí)會(huì)有所體現(xiàn)。
選擇編輯IP,打開(kāi)的工程由頂層Wrapper和AXI-Lite總線接口邏輯組成。關(guān)閉自動(dòng)彈出的IP封裝向?qū)?,?dāng)添加好用戶自定義邏輯后再重新封裝,否則封裝的僅僅是軟件生成的接口邏輯。接口比較多,分為寫(xiě)通道和通道,而每個(gè)通道基本邏輯又由地址通道和數(shù)據(jù)通道組成。除了以上四個(gè)通道外,寫(xiě)通道包含應(yīng)答通道以返回CPU確認(rèn)信息。每個(gè)接口以S_AXI_開(kāi)頭,之后AW代表地址寫(xiě),W代表數(shù)據(jù)寫(xiě),AR代表地址讀,R代表數(shù)據(jù)讀,B代表響應(yīng)。關(guān)于AXI總線的基本特性在之前的博文中已有闡述,無(wú)非就是READY和VLD信號(hào)的“握手”。因此這五個(gè)核心信號(hào)包括VALID DATA和READY。
從上述代碼可以看出,只有在寫(xiě)地址通道和寫(xiě)數(shù)據(jù)通道均握手成功時(shí)才能有效寫(xiě)入寄存器。
根據(jù)參數(shù)聲明和寄存器選擇與寫(xiě)操作邏輯可知,是根據(jù)地址[5:2]這四位來(lái)判斷寫(xiě)入哪一個(gè)寄存器。如:
地址0,即6'b0000_00
地址4,即6'b0001_00
地址8,即6'b0010_00
地址12,即6'b0011_00
因此[5:2]部分依次是0 1 2 3,從而驗(yàn)證了之前地址偏移量是4的觀點(diǎn)。這里的slv_regx信號(hào)就是我們需要送入自定義邏輯的控制信號(hào)了。
上面是讀操作核心邏輯,當(dāng)從機(jī)收到有效的讀操作地址且準(zhǔn)備好后,會(huì)將寄存器數(shù)據(jù)送回到主機(jī)。換句話說(shuō)讀操作讀到的數(shù)據(jù)僅是單純寫(xiě)入的控制數(shù)據(jù),并不是自定義邏輯的處理結(jié)果。所以讀操作要將489行開(kāi)始的右側(cè)數(shù)據(jù)源更換成自定義邏輯處理后有效數(shù)據(jù)。如:reg_data_out <= user_module_dout;
內(nèi)部添加的自定義邏輯可以直接寫(xiě)在該模塊內(nèi),也可以例化自定義模塊或IP核。最后封裝當(dāng)前工程得到支持AXI-Lite總線的自定義IP核。
打開(kāi)需要例化剛才產(chǎn)生IP核的工程,選擇Project Setting -> IP -> Respository Manger添加IP核路徑或,在block design或 IP Catalog中調(diào)用。





