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