
本篇博文提供了有關 AMD Versal? 自適應 SoC 中 eMMC 燒錄和啟動設置的技巧和指南。它還可用于調試 eMMC 燒錄/啟動失敗。提交服務申請個案前,應先復查以下檢查表。
1. AMD 是否支持對此 eMMC 閃存器件進行 Versal 啟動和配置?
對于具有正式的業界規范的閃存器件(如 eMMC),我們遵循相應的規范版本來提供器件支持,而不是通過枚舉每個特定制造商、制造商家族和器件的部件號來提供支持。這樣即可在初始閃存選擇以及長期設計維護方面為設計師提供廣泛的可能性。
下表來自 UG908。Versal 中的 eMMC 接口支持 1.8V 下的 eMMC 規格版本 4.51。
https://docs.amd.com/r/en-US/ug908-vivado-programming-debugging/Versal-Configuration-Memory-Devices

AMD Versal 和 AMD UltraScale+? MPSoC 與其他先前架構之間的區別在于 Versal 中沒有 NAND。eMMC1 模式取代了 NAND 模式,在提供相似性能的同時減少了管腳數。

下方設計咨詢答復記錄 (DAAR) 描述了在 eMMC 器件中觀察到的一個問題,此類器件要求 CMD6 R1b 繁忙時間大于 1 ms,這導致主啟動失敗。
設計咨詢答復記錄 (DAAR) :
https://docs.amd.com/r/en-US/000034596/000034596-Design-Advisory-for-Zynq-UltraScale-MPSoC/RFSoC-and-Versal-Primary-Boot-failure-with-some-eMMC-parts
雖然目前在 Versal 器件中尚未報告任何操作失敗,但認識此問題并查閱 Versal 的關聯勘誤表文檔是非常重要的。
2. PCB 準則和硬件注意事項
下一步是檢查 PCB 和開發板硬件。
AMD 參考板/評估板:
如果您當前使用的是 AMD 參考板,那么下列建議均已納入考量。對于 AMD 參考板,建議運行 BEAM/BIT 工具以檢查開發板/硬件完整性。請參閱相應產品指南以獲取更多信息。您可跳至下一章節。
其他(定制)開發板:
UG863 中“SD/SDIO/eMMC”主題下的“eMMC”節包含 Versal 器件的印刷電路板 (PCB) 布局、設計考慮因素以及靜態時序分析指南和公式。請確保您的定制 PCB 遵循 UG863 中列出的建議。 這些建議提供了有助于最大程度優化性能的準則。
UG863:
https://docs.amd.com/r/en-US/ug863-versal-pcb-design/SD/SDIO/eMMC
對于靜態時序分析,在《DC 和 AC 開關特性》數據手冊 (DS956-DS959) 的“PMC eMMC 控制器接口”章節中包含相應器件家族的 eMMC 接口的時序要求。DH0092 的“數據手冊”部分列出了可用的 Versal 子家族。請務必參考適用于您的器件的數據手冊。 另外,還應參考相應閃存的數據手冊,確保時序得到滿足。
DH0092:
https://docs.amd.com/v/u/en-US/dh0092-versal-boot-config
PCB 走線延遲取決于特定 PCB 的材料和走線寬度。
Issue 需要注意的是,為了確保 PCB 上的信號完整性正確無誤,必須確保 Versal 器件的近端或遠端沒有任何反射。可以在 eMMC 時鐘、命令和數據線路上布局 30 ohm 串聯終端電阻器,并使其盡可能靠近 Versal 自適應 SoC。
出于信號完整性考量,請確保對 IBIS 模型仿真進行復查。時鐘與數據信號完整性對于 eMMC 器件正常工作至關重要,運行速度越高,其重要性越高。
Versal 自適應 SoC 上有兩個 SD_eMMC 控制器。SD_eMMC 控制器可用于 SD 或 eMMC 模式,它們互斥。SD_eMMC1 控制器用于 eMMC v4.51 啟動模式。在 eMMC1 啟動模式下,根據 REF_CLK 頻率,RCU BootROM 以 8.7 MHz 到 19.3 MHz 之間的 eMMC1 器件時鐘頻率運行。eMMC1 啟動模式支持 1.8V 以及 1 位、4 位和 8 位數據接口,時鐘頻率最高可達 200 MHz。BootROM 使用自動寬度檢測來判定初始啟動的數據總線寬度。自動總線寬度檢測首先檢查 8 位數據總線寬度,然后是 4 位數據總線寬度,最后是 1 位數據總線寬度。
有三種操作模式:
25 MHz 下的傳統 MMC 速度模式
50 MHz 下的高速 SDR 模式和 DDR 模式
200 MHz 下的 HS200 模式,數據率最高可達 1600 Mb/s
請復查《AM011》的 MIO 連接選項,確保遵循相關選項設置。若以 eMMC 作為主啟動選項,須使用 PMC MIO Bank 500 的 MIO 0-11。
AM001:
https://docs.amd.com/r/en-US/am011-versal-acap-trm/PMC-MIO-Pin-Tables
SD_eMMC0 控制器不支持 eMMC 主啟動。
3. MIO 和時鐘配置
下一步是檢查 MIO 和時鐘配置。
MIO 配置
確保選中 SD1/eMMC1 啟動模式,并確保將總線位置更改為 PMC MIO 0-11 以進行啟動。


復位配置
控制器可以通過 PMC 復位控制器進行復位,或通過寫入控制器的軟件復位寄存器來復位。PMC 復位會影響整個控制器,并將所有寄存器設置為其復位默認狀態。
可以使用 powercontrol [emmc_hwreset] 寄存器位來復位連接的 eMMC 卡。

時鐘配置
SD/eMMC 控制器具有以下三個從 PMC 時鐘控制器接收的系統時鐘:
用于 DIV_CLK 模塊和控制器的 SDx_REF_CLK 參考時鐘
用于 SD DLL 模塊的 SD_DLL_REF_CLK 參考時鐘
用于 AXI DMA 和編程接口的 PMC_IRO_CLK
控制器邏輯始終由 10 位分頻器的 DIV_CLK 輸出提供時鐘,該分頻器由 SDx_REF_CLK 參考時鐘信號提供時鐘。
然后,該控制器支持廣泛的 I/O 時鐘頻率。
整體時鐘架構圖如下所示:

根據所需的 I/O 時鐘頻率,該控制器始終從以下兩個可能的源之一來驅動 I/O 接口時鐘 SDx_CLK:分別是來自時鐘分頻器的 DIV_CLK 和三個 DLL 模塊時鐘。
該控制器的 I/O 時鐘模式為:

1.傳統 MMC 速度與默認 MMC 速度相關。
2.默認情況下,eMMC 僅以傳統 MMC 速度模式啟動。軟件驅動程序可以切換到高速模式以獲得更高的吞吐量。
3.吞吐量基于 8 位 I/O 接口寬度。
MIO 默認設置
在 Versal 器件中,使用的 MIO 采用以下默認設置。
默認驅動強度 (12 mA)
默認斜率 (slow)
默認弱上拉 (enabled)
啟用 Schmitt 觸發器輸入
這些設置可在 AMD Vivado? Design Suite 中更改。

