天天看點

AXI 總線的讀寫順序AXI introduce

@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();

  1. master_driver_task’
  2. begin
  3. reset_signal();
  4. @posedge(*)
  5. get_and_driver();
  6. driver_write_request();
  7. driver_write_data();
  8. receive_write_response();
  9. driver_read_request();
  10. receivr_read_data():
  11. end
  12. 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=有幾個對應寬度的數;