AXI總線作為一種線,可以掛若干主設備與從設備,如果若干主設備要同時訪問總線,必然會導致總線需要仲裁。本文不涉及細節,只簡單減少原理,一般來說這個東西不需要自己寫,ARM會提供,但是作為設計者要大致知道原理。
1. 所謂總線,是個什么意思。
實際上是有個interconnect的模塊把所有東西連起來的。主設備會發起讀寫請求,從設備只能被動接受。SOC中的CPU或者其他加速核心比如AI加速器是主設備。從設備一般是存儲啊外設啊之類的東西。基本的連接關系是這樣的。
2. 這個Interconnect里有什么東西
這個Interconnect連接了整個系統,起到了仲裁的信號的作用,所以還是比較關鍵的。一般來講,瘋狂往interconnect上掛各種主從設備是會影響最后的時序的。由于AXI官方文檔IHI0022E里面貌似是沒有太多這方面介紹,換句話說,AXI協議并沒有規定主從設備連一起應該如何工作,于是這里以賽靈思ug1037為基礎介紹一下。
2.1 1to1 interconnect
這個賊簡單,不用過多減少。。。一對一的連上去就好了。模范夫妻。
2.2 N-to-1 Interconnect
這個是稍微復雜的版本,類似于一妻多夫。。。如果有多個主設備,一個從設備。那中間需要一個仲裁器。某個主設備傳輸前請求總線,如果總線忙就等著。一般來講,最簡單的仲裁原理是輪換優先級。例如有三個主設備ABC。上次總線權限給了A。則下次的優先級變為BCA。
2.3 1-to-N Interconnect
1-to-N原理上比N-to-1簡單。一夫多妻的版本。。。只需要簡單判斷一下地址確認要往哪個從設備里寫,基本上就是多路選擇器。不需要仲裁。總線也不會阻塞。
2.4 N-to-M Interconnect
這種情況就比較復雜了。。。涉及到多設備時間管理。但實際上稍微復雜一點的SOC這類情況才是常態。
如上圖所示,讀寫通道是分開的。各自有一個仲裁器(Arbiter),仲裁原理和N-to-1是一致的。仲裁器會從所有寫請求和所有讀請求中各選出來一個來執行。
3. 實際上用的時候怎么用
自己造AXI的各種輪子其實是比較繁瑣的,不僅僅是interconnect問題,舉個簡單的例子,AXI的DMA什么的自己造輪子DEBUG非常耗時。如果是FPGA,可以直接用XILINX的各路IP。如果是ASIC, 一般會有對應的IP賣。比如ARM提供的最小系統一般會自帶這個interconnect。
如果SOC比較復雜,那還是有可能需要自己造這個輪子。比如為了壓榨總線的性能,如果兩個主設備訪問的是兩個不同的從設備,如果想實現同時執行,那對這個interconnect就有其他的要求。
4. 總結
一般情況下,總線可以理解為一種資源。由一對主從設備獨占使用。對于AXI來講,一般是兩種資源,讀總線和寫總線,通過某種仲裁方式分配給不同的主從設備。
-
soc
+關注
關注
38文章
4122瀏覽量
217952 -
總線
+關注
關注
10文章
2868瀏覽量
87994 -
AXI總線
+關注
關注
0文章
66瀏覽量
14250
原文標題:SOC中AXI總線是如何連接的
文章出處:【微信號:IC學習,微信公眾號:IC學習】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論