隨著物聯(lián)網(wǎng)節(jié)點和可穿戴設備不斷縮小,設計人員需要最大限度地利用微控制器的板載存儲器來盡量節(jié)省電路板空間、功耗和成本。但是,存儲器擴展有時是無法避免的。設計人員應考慮用 HyperBus 代替默認的 32 位控制器的總線結(jié)構(gòu);HyperBus 是一種高速、333 Mbps、8 位雙倍數(shù)據(jù)速率 (DDR) 接口,可支持地址和數(shù)據(jù)處理。
盡管設計人員試圖避免擴展,但在開發(fā)過程中由于存儲器需求增加,常常有必要加以擴展?;蛘?,為使設計在未來不會落伍,開發(fā)人員會預測未來的擴展需求。
借助 HyperBus,微控制器能夠在同一總線上支持外部閃存和 RAM,而不像典型的 32 位接口那樣使用 16 位數(shù)據(jù)總線和 16 位地址總線以及相關(guān)的控制引腳。它適用于任何具有 HyperBus 接口端口的存儲器件,并且是一種高效易用的接口,支持空間受限的應用使用很少的引腳來擴展存儲器。
雖然該總線的操作對固件是透明的,但新接觸 HyperBus 的開發(fā)人員必須熟悉高速總線信號的操作以確保設計穩(wěn)健。本文首先說明 HyperBus 的操作,然后介紹包含該接口的微控制器,并向用戶展示如何有效地加以應用并測試其設計。
HyperBus 說明
如上所述,HyperBus 使用高速 8 位 DDR 接口來處理地址和數(shù)據(jù)。此外,每個存儲器件都有相應的差分時鐘、讀/寫鎖存信號和片選。HyperBus 可在同一總線上支持外部閃存和 RAM,并且可配合任何具有 HyperBus 兼容外設接口的微控制器使用。
HyperBus 可設置成主/從接口,其中一個主機可以連接至總線上的一個或多個從存儲器件。HyperBus 閃存器件稱為 HyperFlash?,HyperBus DRAM 存儲器件稱為 HyperRAM?。
總線使用差分時鐘,信號指定為 CK 和 CK#。由于 HyperBus 是 DDR 接口,數(shù)據(jù)在時鐘的上升沿和下降沿都會傳輸。時鐘僅由主器件驅(qū)動,其頻率不得超過總線上最慢 HyperBus 存儲器的額定時鐘頻率。
雙向 8 位總線指定為 DQ[0-7],并在主從器件之間傳輸?shù)刂贰?shù)據(jù)和命令。雙向讀/寫數(shù)據(jù)選通信號(指定為 RWDS)用于鎖存數(shù)據(jù)。RWDS 由讀取數(shù)據(jù)的器件控制,如果微控制器主機正在向 HyperRAM 寫入數(shù)據(jù),則 HyperRAM 控制 RWDS 信號。DQ[0-7] 上讀取的數(shù)據(jù)與時鐘的兩個邊沿對齊。
各從器件的選擇是利用一個低電平有效片選信號(指定為 CS0#、CS1#、CS2# 等)。任何時候只有一個片選信號有效。所有總線事務都是由指定的片選信號從高電平變?yōu)榈碗娖蕉鴨?。所有總線事務都是由指定的片選信號從低電平變?yōu)楦唠娖蕉K止。開發(fā)人員必須確保任何時候只有一個片選信號處于有效狀態(tài)。若非如此,可能會導致多個 HyperBus 從器件同時驅(qū)動 RWDS,這樣會造成數(shù)據(jù)損壞。
低電平有效硬件復位信號(指定為 RESET#)由主器件驅(qū)動。拉低時,它會復位任何連接到該信號的外部 HyperBus 存儲器件的狀態(tài),包括復位該存儲器件的內(nèi)部配置寄存器。但是,它不會影響 HyperBus 存儲器件的內(nèi)部存儲器的狀態(tài)。對于大多數(shù) HyperBus 主微控制器接口,RESET# 不是 HyperBus 外設的一部分,而是一個通用 I/O 引腳。HyperBus 從器件的 RESET# 引腳上有一個弱上拉電阻,因此當浮空時,它會被拉至高電平狀態(tài)。
微控制器上任何與 HyperBus 兼容的外設都必須符合 HyperBus 規(guī)格。一個很好的兼容 HyperBus 的微控制器例子是 STMicroelectronics 的 STM32L4R9 Arm? Cortex?-M4F(圖 1)。STM32L4R9 具有 2MB 內(nèi)部閃存和 640KB SRAM。它有多種外設,包括兩個可配置為 HyperBus 接口的 OctoSPI 接口。
圖 1:STMicroelectronics STM32F4L9 微控制器基于帶 FPU 的 Arm? Cortex?-M4 內(nèi)核,具有兩個兼容 HyperBus 的接口,此處以橙色突出顯示。(圖片來源:STMicroelectronics)
STM32L4R9 訪問 HyperBus 外部存儲器地址,將其作為映射到微控制器 AHB 總線地址空間的存儲器,因此內(nèi)核對外部存儲器的讀寫操作與內(nèi)部存儲器相同。一旦配置好外部存儲器件,HyperBus 的操作對內(nèi)核便是透明的。
HyperBus 存儲器全部是 16 位寬存儲器,因此 STM32L4R9 的所有訪問都必須在 16 位存儲器邊界上。STM32L4R9 主器件的數(shù)據(jù)訪問可以是 16 位或 32 位,也必須在對齊的邊界上。
HyperBus 上的典型讀或?qū)懯聞瞻ㄒ幌盗羞B續(xù)的 16 位、一個時鐘周期的數(shù)據(jù)傳輸,通過兩個相應的 8 位寬、半時鐘周期的數(shù)據(jù)傳輸實現(xiàn),每個單端時鐘沿或差分時鐘交叉完成一個。讀寫事務總是傳輸完整的 16 位字數(shù)據(jù)。讀數(shù)據(jù)字總是包含兩個有效字節(jié)。寫數(shù)據(jù)字的一個或兩個字節(jié)可以屏蔽起來,以防止在寫猝發(fā)期間寫入個別字節(jié)。HyperBus 協(xié)議不支持字節(jié)傳輸,也不支持位分段等位操作。
STM32L4R9 上的每個 HyperBus 兼容端口都有一個專用 256MB 存儲器映射地址空間,映射如下:
HyperBus1 (OctoSPI1) 0x90000000 至 0x9FFFFFFF
HyperBus2 (OctoSPI2) 0x70000000 至 0x7FFFFFFF
對于要訪問的 HyperFlash 或 HyperRAM 存儲器件的內(nèi)部地址,相對于上述位置的基本存儲器地址發(fā)生偏移。例如,若 STM32F4L9 讀取存儲器位置 0x90000047,它將讀回在 HyperBus1 上存儲器位置 0x0047 訪問的存儲器件中存儲的值。
Cypress Semiconductor 制定了 HyperBus 規(guī)格,而且還擁有 HyperBus 存儲器產(chǎn)品線。Cypress S26KS512SDPBHI020 64 MB x 8 HyperFlash 存儲器可以輕松連接到其中一個 OctoSPI 端口。它支持對最多 32 個 16 位字進行封裝猝發(fā)訪問。鑒于最大時鐘速率為 166.6 MHz,S26KS512 HyperFlash 支持 333MB/s 的最高持續(xù)讀取速率。在 OctoSPI 的最大 60MHz 時鐘速率下,STM32L4R9 可以最高 120MB/s 的速率讀取任何外部 HyperBus 存儲器。
如果通過 Cortex-M4 系統(tǒng)總線訪問 HyperFlash,則 STM32L4R9 可以直接從該閃存執(zhí)行代碼。當用于代碼存儲器時,OctoSPI 支持集成預取緩沖器的 eXecute In Place (XIP),其從外部存儲器加載下一存儲器地址。
Cypress Semiconductor S27KS0641DPBHI020 8 MB x 8 HyperRAM 存儲器是一款自刷新式 DRAM,可擴展 STM32L4R9 數(shù)據(jù)存儲器。它支持對最多 64 個 16 位字進行封裝猝發(fā)訪問。S27KS0641 HyperRAM 還支持高達 333MB/s 的持續(xù)讀取速率,并且 STM32L4R9 可以最大 120MB/s 的速率讀取該存儲器。
與 HyperBus 存儲器接口
STM32L4R9 有兩個 HyperBus 兼容端口,每個端口都可以單獨連接到 HyperRAM 和 HyperFlash 外部存儲器件(圖 2)。RESET# 信號是可選的,因此圖中沒有顯示。借助 Cypress HyperFlash 和 HyperRAM,STM32L4R9 可以輕松擴展內(nèi)部存儲器,同時對印刷電路板尺寸和設計復雜性的影響極小。
圖 2:STM32L4R9 有兩個 HyperBus 兼容端口,每個端口都可以單獨連接到 HyperRAM 和 HyperFlash 外部存儲器件。(圖片來源:STMicroelectronics)
對布局布線來說,最重要的信號是 DQ[0-7] 和 RWDS。為獲得最佳性能,這些信號在印刷電路板的微控制器和存儲器之間的長度應盡可能短。
差分時鐘信號 CK 和 CK# 應彼此相鄰,并且對于信號全長,其間的間距應保持不變。如果可能,應使用 VSS 防護走線屏蔽 CK 和 CK#,以最大限度地降低 EMI。為了盡量減少阻抗不匹配,應使用下方的實心 VSS 層分接印刷電路板頂層上的所有信號。
HyperBus 開發(fā)新手最好添加探頭測試點。對于 DQ[0-7] 和 RWDS,測試點應位于 STM32L4R9 微控制器和存儲器件上。當 STM32L4R9 正在寫入時,最好檢查離存儲器件最近的測試點。當 STM32L4R9 正在讀取時,應檢查離 STM32L4R9 最近的測試點。對于 CK、CK# 和 CS,應將測試點放在更靠近存儲器件的位置。
由于 DDR 接口涉及高時鐘頻率,STM32L4R9 和存儲器件的電壓源必須盡可能無噪聲。高噪聲電源會影響信號時序并導致總線傳輸錯誤,因此建議使用去耦電容。HyperBus 存儲器件為 I/O 引腳提供了單獨的電源和接地,并且 I/O 電源 VCCQ 應增加 1 微法 (μF) 和 0.1 μF 電容(位于頂層或底層上)。
固件訪問 HyperBus
HyperBus 存儲器件具有片載寄存器,可用于設置器件的選項和時序。HyperBus 將這些寄存器稱為配置寄存器 (CR)。所有 HyperRAM 器件都有內(nèi)部 CR,允許設置某些操作特性。對于 HyperRAM S27KS0641,固件可以通過外部 8 位數(shù)據(jù)總線配置其低功耗模式、封裝猝發(fā)長度、封裝猝發(fā)類型、R/W 時序參數(shù)和輸出驅(qū)動強度。
HyperFlash 雖然沒有 CR,但有狀態(tài)寄存器。S26KS512 HyperFlash 有三個狀態(tài)寄存器。它支持使用內(nèi)部糾錯碼 (ECC) 驗證寫操作,并具有 ECC 狀態(tài)寄存器以指示寫錯誤。另一個寄存器包含任何 ECC 錯誤的地址。第三個寄存器計數(shù) ECC 糾錯數(shù)和無法糾正的錯誤。所有這些寄存器都是只讀寄存器。
HyperBus 事務支持兩類存儲器操作。第一類是讀取或?qū)懭胪獠看鎯ζ?。第二類是讀取或?qū)懭?CR 或讀取狀態(tài)寄存器。
將 STM32L4L9 OctoSPI 配置為 HyperBus 端口后,內(nèi)核便可訪問存儲器,像任何其他存儲器映射位置一樣。在存儲器映射的 HyperBus 空間中,每次讀或?qū)懖僮鞫紩游⒖刂破骱屯獠看鎯ζ髦g的事務處理。每個 HyperBus 事務的開始都是微控制器通過命令/地址指令向外部存儲器件發(fā)送三個 16 位字。命令/地址序列告訴外部存儲器件操作是讀還是寫,是否正在尋址存儲器空間或配置寄存器,事務是封裝式還是線性猝發(fā)事務,并提供目標地址行和列。雖然這對帶操作固件的微控制器都是透明的,但在調(diào)試期間,命令/地址序列很重要。
HyperBus 入門
開發(fā)人員了解 HyperBus 協(xié)議之后,建議利用評估板執(zhí)行一些實驗性編程,特別是新接觸該接口的開發(fā)人員。適用于 STM32L4R9 微控制器的 STMicroelectronics STM32L4R9I-EVAL 評估板是一個很好的出發(fā)點(圖 3)。HyperRAM 存儲器件位于紅圈中,器件的測試點位于右側(cè)的針座連接器上。
圖 3:STMicroelectronics STM32L4R9I-EVAL 可用于評估 STM32L4R9 微控制器。HyperRAM 存儲器件位于紅圈中,器件的測試點位于右側(cè)的針座連接器上。(圖片來源:STMicroelectronics)
STM32L4R9I-EVAL 具有豐富的特性,包括相機接口、兩個 MEMS 麥克風、一個操縱桿和一個 4.3 英寸、480 x 272 像素彩色 TFT LCD 顯示屏。該評估板支持 OctoSPI 接口,并有一個 ISSI 的 IS66WVH8M8BLL 64Mb HyperRAM 器件焊接到印刷電路板。
總結(jié)
HyperBus 協(xié)議是一種合適且易用的接口,只需很少的引腳便可擴展空間受限應用的存儲器。雖然該總線的操作對固件是透明的,但新接觸 HyperBus 的開發(fā)人員必須熟悉高速總線信號的操作以確保設計穩(wěn)健。
-
CAN總線
+關(guān)注
關(guān)注
145文章
1986瀏覽量
132846
發(fā)布評論請先 登錄
PCIe總線AC耦合及高速信號調(diào)整技術(shù)

擴頻時鐘技術(shù)分享:SSC技術(shù)是什么、SSC對測試高速總線信號的影響

適用于可靠且穩(wěn)健的工業(yè)高速鏈路的信號調(diào)節(jié)器
高速并行總線信號完整性測試技術(shù)
高速并行總線信號完整性測試技術(shù)
高速串行總線的信號完整性驗證

如何確保PADS設計信號的完整性
AN-1461:信號和電源隔離RS-485現(xiàn)場總線的高速或低功耗解決方案

高速并行總線的工作原理是什么 高速并行總線有哪些

評論