MCU是許多嵌入式子系統設計中的關鍵元素,但實現必要的系統功能通常需要額外的功能。也許基于MCU的設計中最受限制的元素之一是片上存儲器。越來越多的應用程序需要比MCU可用的系統內存更多的系統內存。特別是,先進的人機界面(HMI)設計可能需要大量的只讀圖像和音頻信息,這些信息不容易存儲在MCU片上閃存中。此外,越來越多的應用發現片上RAM過度限制了需要大量數據緩沖和存儲的高級通信通道。
本文將快速回顧現代MCU上可用的一些外部存儲器接口。這將有助于設計人員更有效地實現需要額外外部存儲的基于MCU的系統 - 無論是NVM閃存還是易失性SRAM/DRAM。
SDRAM的外部存儲器接口
也許最多擴展存儲能力所需的明顯外部存儲器接口適用于大型工作SRAM。通常,MCU具有相對少量的片上SRAM,并且通常應用將需要比片上可用的更多的工作存儲器。例如,高級用戶界面可能需要大量緩沖存儲器來處理圖形用戶界面(GUI)和創建視頻或音頻提示。通常,在存儲或傳輸這些數據文件時使用壓縮技術以降低本地存儲要求或系統帶寬要求。這意味著可能需要大量的工作存儲來解壓縮這些文件。通常,通信應用或數字信號處理應用中需要大量工作存儲器作為緩沖存儲器。
許多MCU為外部存儲器接口控制器提供了用于控制外部SDRAM器件的特殊電路。強調支持SDRAM接口的關鍵硬件元件的示例MCU是恩智浦LPC1787 MCU。外部存儲器控制器外設,如圖1所示,具有幾個可編程延遲元件,用于調整關鍵SDRAM信號中使用的關鍵接口信號的時序。例如,可以調整兩個潛在SDRAM時鐘(CLKOUT1和CLKOUT2)的延遲值,以根據存儲器的要求定位轉換。此外,另一個可編程延遲調整從存儲器讀取的數據被采樣的時間。這種時序調整及其范圍和精度對于簡化存儲器接口,電路板布局和相關的信號時序檢查至關重要。
圖1 :恩智浦LPC1787 MCU外部存儲器控制器。 (恩智浦提供)
恩智浦LPC1787外部存儲器接口還包括幾個其他重要的硬件功能,使外部SDRAM接口更高效。例如,框圖頂部顯示的數據緩沖區可用作讀緩沖區,寫緩沖區或組合使用。作為寫入緩沖區,它們允許對事務進行分組,以最大限度地減少外部寫入操作的數量,從而提高系統帶寬并降低功耗。作為讀緩沖器,它們充當本地數據副本,因此對相同位置的進一步訪問可以使用片上緩沖器版本。這減少了外部讀取操作的數量,從而提高了系統帶寬并降低了功耗。
請注意,NXP內存控制器還支持RAM,ROM和Flash的靜態存儲器接口。這是大多數現代MCU存儲器 - 控制器外設中使用的典型方法,因為大多數硬件在兩個應用程序之間都很常見,并且應用程序通常不需要同時使用這兩種類型的存儲器。
配置外部存儲器
外部存儲器通常用于多種用途 - 應用程序不會將其視為存儲的單塊“塊”。用于配置片外存儲器塊以簡化存儲器訪問的方法有助于簡化應用程序編碼。 Silicon Labs C8051F70x/71x MCU系列使用了這種技術的一個例子。在該MCU中,使用特殊的MOVX指令訪問外部存儲器。為了便于將訪問組合到片上和片外存儲器,可以將片上存儲器的一部分映射到外部存儲器空間。圖2顯示了可用于將內部和外部存儲器映射到外部存儲器地址空間的四種配置模式。在模式1中,如圖2的最左側所示,內部XRAM映射到完整的外部存儲器空間,當片上XRAM存儲器地址超過片上存儲器的數量時,地址“包裹”。當芯片退出復位時,這可能是一種有用的模式,以避免未初始化外部存儲器的啟動問題。成功配置和測試存儲器接口后,可以啟用外部存儲器空間。如果不使用外部存儲器,也可以使用該模式。
圖2:Silicon Labs C8051F70x/71x外部存儲器配置。 (由Silicon Labs提供)
在模式2和3中,圖2中左起第二個和第三個,地址空間在片上和片外訪問之間分配。在模式2中,存儲體選擇不用于將高階地址位驅動到地址總線上;用戶可以控制這些地址值,以提供額外的靈活性。在模式3中,片上存儲體地址自動用于驅動外部地址總線,從而提供更簡單但不太靈活的方法。在模式4中,在圖2的最右側,片外存儲器完全映射到外部地址空間。這使得可以訪問在其他地址模式中可能無法訪問的外部數據,以充分利用可用內存。如果您的應用程序具有多種不同類型的外部存儲器要求 - 代碼,數據緩沖區,轉換表或音頻/視頻處理,則可以簡化設計,以使用具有地址映射和塊訪問功能的外部存儲器控制器。
外部存儲器接口靈活性
在某些應用中,MCU外部存儲器接口支持多種存儲器類型同時最小化器件引腳數量至關重要。常見的組合是用于程序存儲的Flash和用作工作存儲器的SRAM。如果MCU上使用多個存儲器接口,則可能會在封裝中添加20個或更多引腳,從而增加了成本,功耗和電路板空間要求。一些MCU在外部存儲器控制器中提供了額外的靈活性,可以輕松適應各種存儲器設備。例如,流行的Microchip PIC18F MCU系列提供了靈活的存儲器接口,可以擴展到多種器件類型。圖3顯示了使用單個外部總線連接標準閃存和標準SRAM的一種方法。在這種情況下,使用一些外部組件(兩個373鎖存器和一個138解碼器)來最小化MCU上使用的引腳數量。 (對于只需要一個373鎖存器的8位接口,也可以實現更簡單的實現)。具有這種靈活性的外部存儲器接口允許“保存的”IO用于其他功能,最大化引腳效率,這是基于MCU的設計中最重要的元素之一。
圖3:Microchip PIC18F MCU外部存儲器接口框圖。 (由Microchip Technology提供)
接口時序靈活性
除IO互連靈活性外,外部接口通常還需要一定的時序靈活性。例如,如果內存慢于MCU時鐘周期,則可能需要插入等待狀態。理想情況下,可以為不同的外部存儲器塊分配不同的等待狀態特性。當外部接口不僅可用于標準存儲器而且可用于存儲器映射器外設(如液晶顯示器,模數轉換器和數模轉換器)時,此功能更為重要。 Atmel ATmega MCU系列可以為外部存儲器空間分配兩個不同的等待狀態值。如下面的圖4所示,存儲器配置A允許外部存儲器被分成兩個扇區 - 上部扇區和下部扇區。扇區大小可以有八個不同的值之一,以0x2000為增量從0x2000到0xE000調整上段和下段之間的分界線。
圖4:Atmel ATmega64外部存儲空間。 (由Atmel提供)
將外部存儲器空間劃分為兩個扇區可以輕松地將具有較大等待狀態值的設備和具有較小等待狀態值的設備組合在一起。也許最重要的是,如果零等待狀態存儲器用于頻繁訪問的程序數據,即使較慢的設備共享相同的存儲器總線,也可以使用零等待狀態值。這樣可以最大限度地降低MCU引腳要求,同時提高性能并節省功耗。
結論
MCU有時需要使用外部存儲器接口擴展可用的片上存儲器。了解這些接口的功能可以縮短設計時間,降低成本并提高系統性能。
-
mcu
+關注
關注
146文章
17272瀏覽量
352084 -
嵌入式
+關注
關注
5089文章
19167瀏覽量
306707 -
存儲器
+關注
關注
38文章
7523瀏覽量
164130
發布評論請先 登錄
相關推薦
評論