@axi. 簡介
AXI introduce
AXI 分為五個獨立的通道,包括寫位址通道,寫資料通道,Bresp(寫回複通道),讀位址通道,讀資料通道。
1.write address channel;
2.write data channel;
3.bresponse channel;
4.read address channe;
5.read data channel;
執行task順序
1.主要幾個task:
axi main_task();//main task
// follow was sub task
get and driver ();
reset_signal();
driver_transfer();
driver_read_request();
receive_read_data();
drvier_write_request();
driver_write_data();
receive_write_response();
reset_write_resquest();
reset_write_data();
reset_write_response();
reset_read_request();
reset_read_data();
resetable_delay():
display_respq_staus();
- master_driver_task’
- begin
- reset_signal();
- @posedge(*)
- get_and_driver();
- driver_write_request();
- driver_write_data();
- receive_write_response();
- driver_read_request();
- receivr_read_data():
- end
-
endtask
2.以下為各個sub task 的sub task,隻寫大概的task names,詳細的需要按照timing要求進行修改。
2.1 get_and_driver();
#include follow sub coding
driver_transfer(req)
2.2 reset_signal();
#include follow sub coding
reset_write_request*(;
reset_write_data();
reset_write_response();
reset_read_request();
reset_read_data();
wreq_que.delte();//delete queue
rreq_queu.delet();// some as up
wdata_queu.delete();//also like up
2.3 driver_transfer;
#include follow sub coding
if(##trans.readx_write_a#)
ousting_rreq();//.
else
outsting_wreqs();
end
2.4 end
3.note
channel在沒有data發送的時候,都是x, not connect 的時候是Z,一般不建議置為z;
##幾個基本的計算公式還是有必要知道的;
(burst_length x 2^burst_size ) / 8 = adds_stept;
Strb = 幾個data/8;
Data_width = 8x2^burst_size;
Burst_length=有幾個對應寬度的數;