日常生活離不開各類電子產品,我們常見的電子產品通常以電路板作為載體,包含信息采集,信息處理,存儲,執行等功能。
對于工程師來說,比起電路板,說開發板可能更親切一些。由于工程師在研發初期,大都在開發板上驗證功能,可以說開發板是所有電子設備最原始的狀態。開發板與存儲之間有什么樣的關聯呢?
根據處理器類型,開發板一般分為兩類:MCU類和 Linux 類。它們二者的存儲方式還是有很大的差異的。
首先是MCU類開發板,MCU就是工程師口中的單片機,采用MCU的系統一般僅需要簡單的操作或者控制,比如接收按鈕或按鍵的輸入信號,按照事先編好的程序,指揮馬達和LCD的外圍功能電路動作。
下圖就是一個MCU系統的主要組成部分:
可以很明顯的看出來MCU類的開發板它的存儲功能靠內部存儲就足夠了。
內部存儲分為ROM和RAM兩大類,存儲空間大小在幾十到幾百KB不等。如果不運行操作系統和圖形系統,MCU控制指令和代碼就會相對簡單,內部ROM和RAM可以滿足大多數應用的系統存儲要求。
另外一類是Linux類開發板,這類開發板的處理器我們最常見的有Arm Cortex A系列。
目前主流Linux開發板運行的是Linux系統,采用的多是Arm Cortex A系列的處理器。同Windows操作系統一樣,Linux是一種開放源代碼,功能強大、可靠、穩定性強、靈活而且具有極大的伸縮性的操作系統。
從下圖可以看出,Arm Cortex A處理器的內部存儲有96KB的ROM和128KB的RAM。
如果不跑操作系統,做一些簡單的輸入輸出控制,代碼量不多的話,自帶的內部存儲ROM和RAM是夠用的。但是Arm Cortex A處理器的運算資源很強大,通常是使用在嵌入式產品上,嵌入式產品的軟件是需要跑Linux操作系統的。
它的軟件方面主要分為兩大塊:Linux內核和用戶應用程序。如果Linux使用比較輕量級的busybox來做文件系統,使用版本比較低的內核kernel 3.2最終編譯完后,Linux內核鏡像大小在4-10M,最精簡的文件系統就在16M左右,除此之外,用戶另外用戶肯定會在這個系統之上搭建自己的復雜的業務邏輯,要想支撐起比較復雜的用戶應用程序,僅靠處理器的內部存儲空間顯然是不夠的。
大家看看手邊的Linux開發板,不難發現他們都額外增加了獨立的存儲芯片:SDARM和FLASH。
Linux開發板上的外部存儲芯片
典型的Linux開發板,比如大家都很熟悉的樹莓派4,使用的外部存儲芯片就是美光的8GB LPDDR4 SDRAM。
或許有人就疑惑了:為什么是外接存儲芯片,而不是直接在處理器芯片內置大容量Flash和RAM?
原因有很多,比如成本問題。如果單純的加大RAM會占用很多硅片面積,這也會直接導致芯片價格的增加。在同樣的硅片上,占用硅片面積大會使得切割出來的芯片晶圓數量減少。再者,RAM的工藝繁雜,RAM所占硅片的面積大,就會容易產生缺陷,導致芯片的整體良品率下降。
外部存儲芯片如何與處理器進行工作的呢?
把Linux開發板看成一個大工廠,處理器是加工車間,外部的存儲芯片則相當于倉庫。為了提升工廠的產能,一是提高處理器的性能,這樣可以提升加工車間的效率;二是縮短原材料從倉庫到加工車間的時間,中間的臨時小倉庫,堆放目前專門生產的產品的原材料,可以大大縮短制造時間。小倉庫相當于存儲芯片中的DDR SDRAM,大倉庫則相當于存儲芯片中的Flash。
開發板上的DDR SDRAM用來保存用戶程序在運行時使用到的數據。而Flash,負責存儲應用程序等,就如電腦中的硬盤作用。
處理器,DDR SDRAM和Flash之間是如何進行數據傳輸的?
以運行用戶程序為例,程序會以二進制碼的形式存在Flash中。當想要運行某個用戶程序時,處理器會先從Flash中讀取待運行的程序放入DDR中。處理器與DDR實時進行數據傳輸,保證運行的速度。
? 開發板上的DDR SDRAM用來保存用戶程序在運行時使用到的數據。
以美光的MT41K128M16JT-125 芯片(DDR3芯片)為例,速度可達800MHz的2GB DDR3 SDRAM。DDR3芯片的管腳較為復雜,不過大體上可以分成5類:電源線,時鐘線地址線,數據線,控制線(在不同的容量芯片當中地址線和數據線的數目是變化的)。
下圖的DRAM_ADDR[0:15],這是16根地址線,讓處理器可以準確的訪問DDR3芯片。然后是DRAM_DATA[0:15],我們可以看到16位的并行數據線,用于DDR3和處理器之間的數據傳輸。
? 開發板上的Flash,負責存儲應用程序等,就如電腦中的硬盤作用,直接與處理器相連。
以美光的MT29F2G08ABAEAWP芯片為例,這是一顆Nand Flash芯片雖然有48個管腳,但是實際上使用到的管腳也就十多個,比如有:
復用的數據管腳,用于數據、地址、命令等信息;CLE:命令鎖存使能,在輸入命令之前,先要拉高CLE;ALE:地址鎖存使能,在輸入地址之前,先要拉高ALE;CE#:芯片使能,在操作Nand Flash之前,先要拉低CE#;RE#:讀使能,在讀取數據之前,先要拉低RE#;WE#:寫使能,在寫取數據之前,先要拉低WE#;WP#:寫保護,拉低WP之后,將無法對芯片進行寫操作;R/B#:Ready/Busy Output,平時R/B為高電平狀態,但當NAND進行編程、隨機讀或擦除操作時變為低電平狀態,操作完成后又變為高電平狀態。
處理器與Nand Flash芯片通過8 bit的并行總線進行連接,操作CLE和ALE,可以實現對8個IO管腳的數據類型復用。這樣做有一個好處,就是可以大大簡化的硬件電路的設計,避免了繁瑣的硬件連線。同時,為了加強處理器對Nand Flash讀寫操作的穩定性,圖中CE,R/B和WP三個控制管腳被電阻上拉到高電平。
NAND Flash的操作通過一系列的命令來完成。命令一共分成9大類,包括復位操作、識別操作、配置操作、狀態操作、地址操作、讀操作、寫(編程)操作、擦除操作以及寫回操作。
最先進的DDR5時代已來
工程師們執著于增加電子產品的運行速度及存儲空間,使得開發板上的存儲芯片容量正不斷增加。決定電子設備性能的核心除了處理器之外,存儲芯片的讀取速度也成為一個非常重要的因素。
迄今為止技術上最為先進的 DDR5 ,比上一代DDR4提升至少 85%,已經出現在工程師的手中了。
編輯:hfy
-
單片機
+關注
關注
6037文章
44558瀏覽量
635310 -
mcu
+關注
關注
146文章
17148瀏覽量
351198 -
lcd
+關注
關注
34文章
4426瀏覽量
167496 -
Linux
+關注
關注
87文章
11304瀏覽量
209503 -
DDR4
+關注
關注
12文章
321瀏覽量
40796
發布評論請先 登錄
相關推薦
評論