前面一篇驗證中驗證了axi中的data_reg_out是輸出快取器。這裡再引入乙個slv_reg2作為slv—_reg1的輸入輸出配置暫存器。這裡先實現乙個簡單的功能:當slv_reg2為16'hffff時,slv_reg1作為輸入口,否則slv_reg1作為輸出口(輸入輸出相對主機而言,方便區分)。
(1)硬體設計
對reg_data_out的配置暫存器:
always @(*)begin
//address decoding for reading registers
case ( axi_araddr[addr_lsb+opt_mem_addr_bits:addr_lsb] )
2'h0 : reg_data_out <= slv_reg0;2'
h1 : reg_data_out <= (slv_reg2==
'hffff)? btn : slv_reg1; //
slv_reg1;2'
h2 : reg_data_out <= slv_reg2;2'
h3 : reg_data_out <= slv_reg3;
default : reg_data_out <= 0
;
endcase
end
在修改模組後需要再次打包,在打包後回到bd設計介面時,會在上面提示更新ip,點選後會在下面彈出ip列表,選擇有感嘆號的ip,再點選下面的update就可以了。然後生成bit流。這裡需要等待一段時間。
(2)軟體設計
#include "xil_io.h
"#include
"sleep.h
"#include
"stdio.h
"#include
"xparameters.h
"#define ip_base xpar_myip_v1_0_0_baseaddr
#define reg0_offset 0
#define reg1_offset 4
#define reg2_offset 8
intmain()
}
就是多了乙個對reg2的輸出,通過切換reg2的值確定邏輯判斷是否存在。
板級驗證符合預期。
深入AXI4匯流排 五 AXI4的兄弟協議
知乎使用者ljgibbs授權 本系列我想深入探尋 axi4 匯流排。不過事情總是這樣,不能我說想深入就深入。當前我對 axi匯流排的理解尚談不上深入。但我希望通過一系列文章,讓讀者能和我一起深入探尋 axi4。宣告1 部分時序圖以及部分語句來自 arm amba 官方手冊 有的時候感覺手冊寫得太好了...
AXI4匯流排實現PS PL的float型別資料傳輸
float資料傳輸時可能有些小誤差,屬於正常現象。include include platform.h include xparameters.h include xil printf.h include xil cache.h include xtest.h intmain printf init...
AXI4設計重點002 易出錯的位址非對齊讀操作
1 axi讀操作 位址不對齊 以rdata axi mst位寬為128bit為例,如果master想讀取7dw 1dw為4byte 的資料,從位址0x4開始讀取,來自master埠的axi訊號如下所示,此時為位址非對齊的讀操作。此時master想讀取位址為0x4,0x8,0xc,0x10,0x14,...