原帖地址:https://wenku.baidu.com/view/7c424c17e3bd960590c69ec3d5bbfd0a7956d5b9.html
1、AXI簡介
AXI(Advanced eXtensible Interface)是一種總線協議,該協議是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0協議中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內總線。沒有用復雜的橋接,該協議就可以實現高頻率的操作。它的地址/控制和數據階段是分離的;支持地址不對齊的數據傳輸;同時在基於突發(burst_basded transcation)的傳輸中,只需要首地址;同時分離的讀寫數據通道,總共有5個獨立的通道;並支持顯著傳輸(outstanding transcation)訪問和亂序訪問; 非常容易添加流水線級數以獲得高頻的時序。AXI 是AMBA 中一個新的高性能協議。AXI 技術豐富了現有的AMBA 標准內容,滿足超高性能和復雜的片上系統(SoC)設計的需求。
突發傳輸一般表示的是兩個設備之間進行數據傳送的一種模式,也可將其稱為突發模式下的數據傳輸。而突發(Burst)是指在同一行中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸的周期數就是突發長度(Burst Lengths,簡稱BL)。在突發傳輸模式下,多個數據單元當做一個單元(相當一個數據塊)來傳送,從而提高了傳輸效率。突發方式將整個信道專用於傳送一個源節點的數據。具有突發方式功能的設備常常為成組方式操作提供最大吞吐率。
Outstanding: The ability to issue multiple outstanding addresses means that masters can issue transaction addresses without waiting for earlier transactions to complete. This feature can improve system performance because it enables parallel processing of transactions.

發出A11的addr后,在完成D11~D14的transfer之前,發出A21叫做outstanding。
Out-of-order : The ability to complete transactions out of order means that transactions to faster memory regions can complete without waiting for earlier transactions to slower memory regions. This feature can also improve system performance because it reducesthe effect of transaction latency.

地址的順序是A11,A21,A31,而返回數據順序則可能是D2,D3,D1,這個過程叫做Out-of-order
Interleaving: Write data interleaving enables a slave interface to accept interleaved write data with different AWID values. The slave declares a write data interleaving depth that indicates if the interface can accept interleaved write data from sources with different AWID values.

D11和D12之間插入D23,叫做interleaving。
簡單而言,outsatanding是對地址而言,一次burst還沒結束,就可以發送下一相地址。而out-of-order和interleaving則是相對於 transaction,out-of-order說的是發送transaction和接收的cmd之間的順序沒有關系,如先接到A的cmd,再接到B的cmd,則可以先發B的data,再發A的data;interleaving指的是A的data和B的data可以交錯,如A1 B1 A2 B2 B3……
2. AXI 特點
單向通道體系結構。信息流只以單方向傳輸,簡化時鍾域間的橋接,減少門數量。當信號經過復雜的片上系統時,減少延時。
支持多項數據交換。通過並行執行突發操作,極大地提高了數據吞吐能力,可在更短的時間內完成任務,在滿足高性能要求的同時,又減少了功耗。
獨立的地址和數據通道。地址和數據通道分開,能對每一個通道進行單獨優化,可以根據需要控制時序通道,將時鍾頻率提到最高,並將延時降到最低。
3.AXI協議和AXI協議定義的基礎事務
- AXI總線共有5個獨立的通道,分別是read address channel (ARxxx),write address channel(AWxxx),read data channel(Rxxx), write data channel(Wxxx),write response channel(Bxxx)。每一個AXI傳輸通道都是單方向的。
- 每一個transaction都有地址和控制信息在地址通道(address channel)中,用來描述被傳輸數據的性質。
- 讀transcation的結構圖如下:讀請求和數據返回
- 寫transcation的結構如下:
- 這5條獨立的通道都包含一個信息信號和一個雙路的VALID、READY握手機制。信息源通過VALID信號來指示通道中的數據和控制信息什么時候有效。目地源用READY信號來表示何時能夠接收數據。讀數據和寫數據通道都包括一個LAST信號,用來指明一個事物傳輸的最后一個數據。
- 讀和寫事務都有他們自己的地址通道,這地址通道攜帶着傳輸事務所必須的地址和控制信息。
- 讀數據通道傳送着從設備到主機的讀數據和讀響應信息,讀數據總線寬度可以是8,16,32,64,128,256,512,1024位。讀響應信息指明讀事務的完成狀態。
- 寫數據通路傳送着主機向設備的寫數據,讀數據總線寬度可以是8,16,32,64,128,256,512,1024位。每八位數據都會有一個byte lane strobe ,用來指明數據總線上面的哪些byte有效。寫響應通道提供了設備響應寫事務的一種方式。完成信號每一次事務只會產生一個。
- 主機和設備的接口和互聯圖如下:
- 傳輸地址信息和數據都是在VALID和READY同時為高時有效。
- 突發式寫時序圖如下:
這一過程的開始時,主機發送地址和控制信息到寫地址通道中,然后主機發送每一個寫數據到寫數據通道中。當主機發送最后一個數據時,WLAST信號就變為高。當設備接收完所有數據之后他將一個寫響應發送回主機來表明寫事務完成。
- AXI協議支持亂序傳輸。它給每一個通過接口的事務一個IDtag。協議要求相同ID tag的事務必須有序完成,而不同ID tag可以亂序完成。
4.信號描述
本章主要介紹一些信號描述,其中包括全局信號、寫地址通道信號、寫數據通道信號、寫響應通道信號、讀地址通道信號、讀數據通道信號、低功耗接口信號。本章的所有表都是以32位的數據總線、4位的寫數據閘門、4位的ID段。
1、全局信號
信號 |
源 |
描述 |
ACLK |
Clock source |
全局時鍾信號 |
ARESETn |
Reset source |
全局復位信號,低電平有效 |
2、寫地址通道信號
信號 |
源 |
描述 |
AWID[3:0] |
主機 |
寫地址ID,這個信號是寫地址信號組的ID tag。 |
AWADDR[31:0] |
主機 |
寫地址。 |
AWLEN[3:0] |
主機 |
突發式寫的長度。此長度決定突發式寫所傳輸的數據的個數。 |
AWSIZE[2:0] |
主機 |
突發式寫的大小。 |
AWBURST[1:0] |
主機 |
|
AWLOCK[1:0] |
主機 |
鎖類型。 |
AWCACHE[3:0] |
主機 |
Cache類型。這信號指明事務的bufferable、cacheable、write-through、write-back、allocate attributes信息。 |
AWPROT[2:0] |
主機 |
保護類型。 |
AWVALID |
主機 |
寫地址有效。 1 = 地址和控制信息有效 0 = 地址和控制信息無效 這個信號會一直保持,直到AWREADY變為高。 |
AWREADY |
設備 |
寫地址准備好。這個信號用來指明設備已經准備好接受地址和控制信息了。 1 = 設備准備好 0 = 設備沒准備好 |
3、寫數據通道信號
信號 |
源 |
描述 |
WID[3:0] |
主機 |
寫ID tag,WID的值必須與AWID的值匹配 |
WDATA[31:0] |
主機 |
寫的數據。 |
WSTRB[3:0] |
主機 |
寫閥門。WSTRB[n]標示的區間為WDATA[(8*n)+7:(8*n)] |
WLAST |
主機 |
寫的最后一個數據。 |
WVALID |
主機 |
寫有效 1 = 寫數據和閥門有效 0 = 寫數據和閥門無效 |
WREADY |
設備 |
寫就緒。指明設備已經准備好接受數據了 1 = 設備就緒 0 = 設備未就緒 |
4、寫響應通道信號
信號 |
源 |
描述 |
BID[3:0] |
設備 |
響應ID , 這個數值必須與AWID的數值匹配。 |
BRESP[1:0] |
設備 |
寫響應。這個信號指明寫事務的狀態。可能有的響應:OKAY、EXOKAY、SLVERR、DECERR。 |
BVALID |
設備 |
寫響應有效。 1 = 寫響應有效 0 = 寫響應無效 |
BREADY |
主機 |
接受響應就緒。該信號表示主機已經能夠接受響應信息。 1 = 主機就緒 0 = 主機未就緒 |
5、讀地址通道信號
信號 |
源 |
描述 |
ARID[3:0] |
主機 |
讀地址ID。 |
ARADDR[31:0] |
主機 |
讀地址。 |
ARLEN[3:0] |
主機 |
突發式讀長度。 |
ARSIZE[2:0] |
主機 |
突發式讀大小。 |
ARBURST[1:0] |
主機 |
突發式讀類型。 |
ARLOCK[1:0] |
主機 |
鎖類型。 |
ARCACHE[3:0] |
主機 |
Cache類型。 |
ARPROT[2:0] |
主機 |
保護類型。 |
ARVALID |
主機 |
讀地址有效。信號一直保持,直到ARREADY為高。 1 = 地址和控制信息有效 0 = 地址和控制信息無效 |
ARREADY |
設備 |
讀地址就緒。指明設備已經准備好接受數據了。 1 = 設備就緒 0 = 設備未就緒 |
6、讀數據通道信號
信號 |
源 |
描述 |
RID[3:0] |
設備 |
讀ID tag。RID的數值必須與ARID的數值匹配。 |
RDATA[31:0] |
設備 |
讀數據。 |
RRESP[1:0] |
設備 |
讀響應。這個信號指明讀傳輸的狀態:OKAY、EXOKAY、SLVERR、DECERR。 |
RLAST |
設備 |
讀事務傳送的最后一個數據。 |
RVALID |
設備 |
讀數據有效。 1 = 讀數據有效。 0 = 讀數據無效。 |
RREADY |
主機 |
讀數據就緒。 1 = 主機就緒 0 = 主機未就緒 |
7、低功耗接口信號
信號 |
源 |
描述 |
CSYSREQ |
CLOCK controller |
系統低功耗請求。此信號來自系統時鍾控制器,使外圍設備進入低功耗狀態。 |
CSYSACK |
外圍設備 |
低功耗請求應答。 |
CACTIVE |
外圍設備 |
Clock active 1 = 外圍設備時鍾請求 0 = 外圍設備時鍾無請求 |
5.主機和設備之間的握手過程
本章介紹主機/設備之間的握手過程以及READY和VALD握手信號的關系以及默認值。
1、全部5個通道使用相同的VALID/READY握手機制傳輸數據及控制信息。傳輸源產生VLAID信號來指明何時數據或控制信息有效。而目地源產生READY信號來指明已經准備好接受數據或控制信息。傳輸發生在VALID和READY信號同時為高的時候。VALID和READY信號的出現有三種關系。
(1) VALID先變高READY后變高。時序圖如下:
在箭頭處信息傳輸發生。
(2) READY先變高VALID后變高。時序圖如下:
同樣在箭頭處信息傳輸發生。
(3) VALID和READY信號同時變高。時序圖如下:
在這種情況下,信息傳輸立馬發生,如圖箭頭處指明信息傳輸發生。
2、通道之間的關系
地址、讀、寫和寫響應通道之間的關系是靈活的。
例如,寫數據可以出現在接口上早於與其相關聯的寫地址。也有可能寫數據與寫地址在一個周期中出現。
兩種關系必須被保持:
(1)讀數據必須總是跟在與其數據相關聯的地址之后。
(2)寫響應必須總是跟在與其相關聯的寫事務的最后出現。
3、通道握手信號之間的依賴性
讀事務握手依賴關系如圖:
(1)設備可以在ARVALID出現的時候在給出ARREADY信號,也可以先給出ARREADY信號,再等待ARVALID信號。
(2)但是設備必須等待ARVALID和ARREADY信號都有效才能給出RVALID信號,開始數據傳輸。
寫事務握手依賴關系如圖:
(1)主機必須不能夠等待設備先給出AWREADY或WREADY信號信號后再給出信號AWVALID或WVLAID。
(2)設備可以等待信號AWVALID或WVALID信號有效或者兩個都有效之后再給出AWREADY信號。
(3)設備可以等待AWVALID或WVALID信號有效或者兩個信號都有效之后再給出WREADY信號。
6. AXI突發讀寫類型
本章主要介紹AXI突發式讀寫的類型和在一次突發式讀寫事務內如何計算地址和byte lanes。
1、 突發式讀寫的地址必須以4KB對齊。
2、 信號AWLEN或信號ARLEN指定每一次突發式讀寫所傳輸的數據的個數。
具體信息如下圖:
3、 ARSIZE信號或AWSIZE信號指定每一個時鍾節拍所傳輸的數據的最大位數。
具體信息如下圖:
需要注意的是任何傳輸的SIZE都不能超過數據總線的寬度。
4、 AXI協議定義了三種突發式讀寫的類型:固定式的突發讀寫、增值式突發讀寫、包裝式突發讀寫。用信號ARBURST或AWBURST來選擇突發式讀寫的類型。具體信息如下圖:
(1)固定式突發讀寫是指地址是固定的,每一次傳輸的地址都不變。這樣的突發式讀寫是重復的對一個相同的位置進行存取。例如FIFO。
(2)增值式突發讀寫是指每一次讀寫的地址都比上一次的地址增加一個固定的值。
(3)包裝式突發讀寫跟增值式突發讀寫類似。包裝式突發讀寫的地址是包數據的低地址當到達一個包邊界。
包裝式突發讀寫有兩個限制:
1起始地址必須以傳輸的size對齊。
2突發式讀寫的長度必須是2、4、8或者16。
5、關於一些地址的計算公式。
Start_Address 主機發送的起始地址
Number_Bytes 每一次數據傳輸所能傳輸的數據byte的最大數量
Data_Bus_Bytes 數據總線上面byte lanes的數量
Aligned_Address 對齊版本的起始地址
Burst_Length 一次突發式讀寫所傳輸的數據的個數
Address_N 每一次突發式讀寫所傳輸的地址數量,范圍是2-16
Wrap_Boundary 包裝式突發讀寫的最低地址
Lower_Byte_Lane 傳輸的最低地址的byte lane
Upper_Byte_Lane 傳輸的最高地址的byte lane
INT(x) 對x進行向下取整
下面是計算公式:
Start_Address = ADDR
Number_Bytes = 2SIZE
Burst_Length = LEN + 1
Aligned_Address = (INT(Start_Address / Number_Bytes) ) x Number_Bytes
Address_1 = Start_Address
Address_N = Aligned_Address + (N – 1) x Number_Bytes
Wrap_Boundary = (INT(Start_Address / (Number_Bytes x Burst_Length)))
x (Number_Bytes x Burst_Length)
如果有Address_N = Wrap_Boundary + (Number_Bytes x Burst_Length),則后面的公式成立Address_N = Wrap_Boundary。
第一次突發式讀寫:
Lower_Byte_Lane = Start_Address - (INT(Start_Address / Data_Bus_Bytes))
x Data_Bus_Bytes
Upper_Byte_Lane = Aligned_Address + (Number_Bytes - 1) -
(INT(Start_Address / Data_Bus_Bytes)) x Data_Bus_Bytes
除了第一次讀寫之后的讀寫:
Lower_Byte_Lane = Address_N – (INT(Address_N / Data_Bus_Bytes))
x Data_Bus_Bytes
Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes – 1
DATA[(8 x Upper_Byte_Lane) + 7 : (8 x Lower_Byte_Lane)]。
第五章
本章描述了AXI協議支持的系統級的Cache和保護單元。
1、ARCACHE[3:0]和AWCACHE[3:0]的編碼如下圖:
在一些情況下,信號AWACAHE可以用來確定哪個部件來提供寫響應。如果寫事務被指定為bufferable ,那么他接受來自橋或者系統級的cache提供的寫響應。如果事務被指定為non-bufferable,那么寫響應必須有最終目的源提供。
2、AWPROT或者ARPROT信號提供三種級別的存取保護:
(1) 正常存取或者特權存取, ARPROT[0] 和 AWPROT[0]
(2) 安全性存取或者沒有安全性存取, ARPROT[1] 和 AWPROT[1]
(3) 指令存取或者數據存取 ARPROT[2] 和 AWPROT[2]
信號ARPROT[2:0] 和 信號AWPROT[2:0]的編碼如下圖:
第六章
本章描述了AXI協議工具的獨占式存取和鎖存取機制。
1、當對自動存取時能之后,可以通過信號ARLOCK[1:0]或信號AWLOCK[1:0]來配置獨占式存取和鎖存取。編碼如下圖:
我們通過信號ARLOCK[1:0]或AWLOCK[1:0]來選擇獨占式存取,用信號RRESP[1:0]或BRESP[1:0]來指明獨占式存取的成功與否。
2、主機在請求獨占式存取時,設備會返回兩個響應分別是EXOKAY和OKAY。EXOKAY是指設備支持獨占式存取,而OKAY是指設備不支持獨占式存取。、
3、如果一個設備不支持獨占式存取,可以忽略信號ARLOCK[1:0]和AWLOCK[1:0]。他必須提供OKAY響應對正常式存取和獨占式存取。如果一個設備要支持獨占式存取則必須有硬件監視器。
4、通過信號ARLOCK[1:0]或信號AWLOCK[1:0]對事務加鎖,需要確定只允許主機存取設備區域直到一個未加鎖的事務從同一個主機完成。此處推薦鎖存取只用來支持legacy devices。
5、推薦遵循下面兩天建議,但是不強制:
(1) 保持所有鎖事務序列都在相同的4KB地址區域內。
(2) 限制用瑣事務序列對兩個事務加鎖。
第七章
本章描述了AXI讀寫事務的四個設備響應。
1、AXI協議對讀事務和寫事務都有響應。對於讀事務,讀響應與讀數據一起發送給主機,而寫事務將寫響應通過寫響應通道傳送。AXI協議的響應類型有OKAY、EXOKAY、SLVERR、DECERR。
2、通過信號RRESP[1:0]和BRESP[1:0]來編碼響應信號,具體如下圖:
協議規定請求的需要傳輸的數據數量必須被執行,即使有錯誤報告。在一次突發式讀寫的剩余數據不會被取消傳輸,即使有單個錯誤報告。
3、AXI協議的四種響應類型:正常存取成功、獨占式存取、設備錯誤、譯碼錯誤。AXI協議要求,在一個傳輸事務中的所有數據必須傳輸完成,即使有錯誤狀態發生。
第八章
本章描述AXI協議用事務ID tags來處理多地址和亂序傳輸。
1、下面介紹5中事務IDs:
(1)AWID 這個ID tag是寫地址群組信號。
(2)WID 這個是寫ID tag在寫事務中,與寫數據在一起,主機傳送一個WID去匹配與地址相一致的AWID。
(3)BID 這個ID tag是寫響應事務中。設備會傳送BID去匹配與AWID和WID相一致的事務。
(4)ARID 這個ID tag是讀地址群組信號。
(5)RID 這個ID tag是在讀事務中。設備傳送RID去匹配與ARID相一致的事務。
2、主機可以使用一個事務的ARID或者AWID段提供的附加信息排序主機的需要。事務序列規則如下:
(1) 從不同主機傳輸的事務沒有先后順序限制。他們可以以任意順序完成。
(2) 從同一個主機傳輸的不同ID事務,也沒有先后順序限制。他們可以以任意順序完成。
(3) 相同數值的AWID寫事務數據序列必須按照順序依次寫入主機發送的地址內。
(4) 相同數值的ARID讀事務數據序列必須遵循下面的順序:
1當從相同設備讀相同的ARID時,設備必須確保讀數據按照相同的地址順序接受。
2當從不同的設備讀相同的ARID時,接口處必須確保讀數據按照主機發送的相同的地址順序。
(5) 在相同的AWID和ARID的讀事務和寫事務之間沒有先后順序限制。如果主機要求有順序限制,那么必須確保第一次事務完全完成后才開始執行第二個事務。
3、當一個主機接口與interconnect相連時,interconnect會在信號ARID、AWID、WID段添加一位,每一個主機端口都是獨一無二的。
這樣做有兩個影響:
(1)主機不需要去知道其他主機的ID數值,因為interconnect是ID值是唯一的,當將主機number添加到段中。
(2)在設備接口處的ID段的寬度要比主機接口處的ID段寬。
對於讀數據,interconnect附加一位到RID段中,用來判斷哪個主機端口讀取數據。Interconnect會移除RID段中的這一位在將RID的值送往正確的主機端口之前。
第九章
本章描述了AXI讀寫數據總線傳輸的不同大小和接口如何用字節不變endian去握手混合endian傳輸。
1、Narrow傳輸,當主機產生的數據寬度小於數據總線寬度時,地址和控制信息決定哪一個byte lanes為有效的數據。下面是兩個應用byte lanes的例子:
Example 1:
Example 2:
2、下面是一個數據不變性存取需求的數據結構的例子。他包含頭信息,例如source、destination identifiers這些信息是采用little-endian格式,但是payload是big-endian 字節流,具體情況如下圖:
數據不變性確保在數據結構中little-endian存取頭信息的部分不會破壞其他big-endian數據。
第十章
本章描述AXI協議不對齊握手傳輸。
1、AXI協議允許主機使用低階地址行去標示一個不對齊的起始地址在突發讀寫中。低階地址行的信息必須包含byte lane strobes信息。
2、下面是幾個例子來表明數據以對齊或者不對齊的地址為起始地址,分別在32位和64位數據總線上面傳輸的情況。其中暗色的框表示沒有傳輸的數據。
第十一章
本章主要描述AXI時鍾和復位信號的時序。
1、在復位期間,以下接口必須遵循:
(1)主機接口必須將ARVALID、AWVALID、WVALID信號置低。
(2)設備接口必須將RVALID、BVALID信號置低。
(3)所有其它信號可以為任意值。
2、主機接口必須開始將ARVALID、AWVLAID或WVALID置高僅僅在ARESETn信號變高后的ACK的第一個上升沿。具體情況如下圖:
第十二章
本章主要描述AXI協議在進入和離開低功耗狀態期間的時鍾控制接口。
1、低功耗時鍾控制接口包括下面兩個信號:
(1) 來自外圍設備的信號,用於指明什么時候時鍾使能能或者禁能。
(2) 兩個握手信號用於系統時鍾控制器請求退出或者進入低功耗狀態。
2、時鍾控制接口的一個主要信號時CACTIVE,外圍設備用這個信號來指明請求時鍾使能。外圍設備置CACTIVE有效去請求時鍾,系統時鍾控制器必須馬上使能時鍾。如果外圍設備將CACTIVE置為無效,則系統時鍾控制器將自己決定是否使能或者禁能外圍設備時鍾。
3、AXI協議提供雙線 request/acknowledge 握手來支持請求:
(1)CSYSREQ 當外圍設備請求進入低功耗狀態時,系統時鍾控制器將CSYSREQ置低,平時CSYSREQ都是置高的。
(2)CSYSACK 外圍設備用CSYSACK信號作為進入低功耗狀態和離開低功耗狀態的應答信號。
下面是CSYSREQ和CSYSACK信號之間的時序圖:
系統時鍾控制器在T1時刻發出請求,外圍設備在T2時刻給予應答,此時進入低功耗狀態。在T3時刻,CSYSREQ變高,請求離開低功耗狀態,在T4時刻得到應答,此時離開低功耗狀態進入正常模式。
4、外圍設備可以選擇接受請求也可以選擇不接受請求。主要通過信號CACTIVE來決定。
接受請求的情況:
不接受請求的情況:
5、既可以通過系統也可以通過外圍設備來退出低功耗狀態。只要置信號CACTIVE和CSYSREQ這兩個信號中的一個為高就可以退出低功耗模式。
而系統可以通過置CSYSREQ為高來退出低功耗模式。
6、時鍾控制框圖如下:




![clip_image002[6] clip_image002[6]](/image/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMzYxNDA5LzIwMTkwNS8zNjE0MDktMjAxOTA1MTQwOTU2MjQxODgtODI4Njk5MDY3LmpwZw==.png)
![clip_image002[8] clip_image002[8]](/image/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMzYxNDA5LzIwMTkwNS8zNjE0MDktMjAxOTA1MTQxMDU2MTg4MDYtMTc1MzIwNjE4Ny5qcGc=.png)

![clip_image002[10] clip_image002[10]](/image/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMzYxNDA5LzIwMTkwNS8zNjE0MDktMjAxOTA1MTQxMDU2MjQ4MDgtMjEzMzc4OTk4MS5qcGc=.png)
![clip_image002[12] clip_image002[12]](/image/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMzYxNDA5LzIwMTkwNS8zNjE0MDktMjAxOTA1MTQxMDU2MjU3MDEtMzA2MzI1ODg2LmpwZw==.png)























