MCU存儲(chǔ)系統(tǒng)的基本知識(shí)
1.1概述
只讀存儲(chǔ)器(Read-only memory, ROM),當(dāng)然從廣義上來(lái)講,也有一些器件,例如Flash,EPROM等等,通過(guò)某種手段可以編程的,也屬于ROM的范疇的。ROM一般用在一些程序的存儲(chǔ)和數(shù)據(jù)的存儲(chǔ),這里程序多半是比較固定的程序(Firmware,固件,一種跟硬件強(qiáng)相關(guān)的程序,例如驅(qū)動(dòng)等等),這里的數(shù)據(jù)多半是固化的表項(xiàng),查找表等等不會(huì)怎么改變的表項(xiàng)。
1.2基本原理
HDL設(shè)計(jì)中,對(duì)于小ROM,深度和位寬都不大,一般使用組合邏輯就可以做一個(gè)ROM。如果數(shù)據(jù)比較大,比如1K*4B這種,就換一種ROM,使用標(biāo)準(zhǔn)單元Mask ROM,來(lái)做存儲(chǔ),如下圖所示。百度百科對(duì)MASK ROM的定義,是制造商為了要大量生產(chǎn),事先制作一顆有原始數(shù)據(jù)的ROM或EPROM當(dāng)作樣本,然后再大量生產(chǎn)與樣本一樣的 ROM,這一種做為大量生產(chǎn)的ROM樣本就是MASK ROM,而燒錄在MASK ROM中的資料永遠(yuǎn)無(wú)法做修改。
1.3分類
一種是真的寫了就沒法改的ROM;一種是可以寫一次的ROM(one-time Programmable read-only memory),使用的高壓反熔絲技術(shù);一種是可擦出的能、能寫多次的ROM(Erasable programmable read only memory),使用紫外線擦除;一種是電擦除的EEPROM(Electrically Erasable programmable read only memory,EEPROM),再到后來(lái)東芝搞的Flash。工業(yè)界第一種ROM和最后一種的Flash用的比較多。
2 Flash
1.1原理
非遺失性的存儲(chǔ),是在ROM的基礎(chǔ)上演進(jìn)出來(lái)的。目前主流是NAND和NOR。模擬的團(tuán)隊(duì)來(lái)做flash。可以任意地址訪問(wèn)。對(duì)于連續(xù)地址讀訪問(wèn),NAND和NOR的帶寬差距不大。NAND是存儲(chǔ)塊訪問(wèn),NOR可以Byte訪問(wèn)??偟膩?lái)說(shuō),NOR特點(diǎn)就是比較細(xì)的訪問(wèn),基本啟動(dòng)程序放NOR中,穩(wěn)定性和可靠性也稍微高一些;NAND訪問(wèn)數(shù)據(jù)塊比較好,通常數(shù)據(jù)放NAND中,而且成本也較低。
圖: NOR Flash的時(shí)序
ale: address lock enable;一般Flash不會(huì)直接集成到芯片中,如果集成在芯片外面,IO數(shù)量增加,NOR解決辦法就是數(shù)據(jù)和地址復(fù)用,當(dāng)ale為高的時(shí)候,addr上走的是地址,當(dāng)ale為低且csn為低的時(shí)候,addr上走的是數(shù)據(jù)。
wen:write enable;用于指示讀還是寫。
rdy:對(duì)于芯片和FLash分離,因?yàn)槭钱惒浇涌?,所以使用rdy信號(hào)用來(lái)握手。對(duì)于MCU來(lái)講,如果把小的NOR flash集成到芯片內(nèi)部,就可以直接使用同步接口,也就是SRAM的接口。
圖:NAND Flash時(shí)序[!--empirenews.page--]
CLE:Chip Lock Enable;
可以看到NAND也是數(shù)據(jù)和地址線復(fù)用的。NAND可以大塊的數(shù)據(jù)讀寫,多了些Command。NAND Flash在MCU中的比較少。Flash跟ROM和RAM不同,不想數(shù)字的可以直接用工具生成,這個(gè)需要模擬團(tuán)隊(duì)自己做。
3 RAM
1.1基本概念
StaTIc Random Access Memory,靜態(tài)的,隨機(jī)的訪問(wèn)。靜態(tài)的,不用刷新,不像DRAM需要隨時(shí)刷新,但是SRAM沒有DRAM的集成度高,面積比較大。另外,速度和功耗比DRAM好一些。
圖:存儲(chǔ)一個(gè)bit的SRAM的結(jié)構(gòu)
6個(gè)CMOS管子組成一個(gè)SRAM單元,Q1和Q3組成反相器,Q2和Q4組成反相器,兩個(gè)反相器組成一個(gè)環(huán)路,這樣,只要不掉電,這個(gè)邏輯環(huán)就不會(huì)變,跟觸發(fā)器原理有點(diǎn)類似。Q5用于控制輸入,Q6用于控制輸出,兩個(gè)管子相當(dāng)于輸入和輸出的開關(guān)。
1.2 分類
single port SRAM:不會(huì)發(fā)生讀寫沖突,因?yàn)橹笠粋€(gè)端口,要么讀,要么寫;盡量做到先寫后讀,或者初始化再度,否則讀出來(lái)的數(shù)據(jù)有可能不對(duì)(原因是SRAM的軟失效)。對(duì)于軟失效,可以加一個(gè)ECC校驗(yàn),例如寸10bir,其中2bit是校驗(yàn)位。
Two port SRAM:FOGA的讀寫沖突允許,但是ASIC不可以,在同一個(gè)時(shí)刻,讀地址和寫地址不要一樣。FIFO一般是TP SRAM。
Dual port SRAM:也是兩個(gè)端口A、B,可以A讀B寫,也可以A寫B(tài)讀,不在局限于只能誰(shuí)讀誰(shuí)寫??煽啃裕娣e和率都不是很好。
工程上,使用兩個(gè)SRAM,做乒乓操作,實(shí)現(xiàn)TP SRAM的功能,一個(gè)讀的時(shí)候,另外一個(gè)寫。兩個(gè)SRAM加起來(lái)面積可能比TP SRAM小一些。對(duì)于幾百幾K的bit位,直接用D觸發(fā)器來(lái)存儲(chǔ)比較好。
1.3 接口
SRAM有一個(gè)需要注意下,就是Redundancy接口,用于擴(kuò)展SRAM的,在比較的大的memory中會(huì)用,例如cache,這個(gè)接口可選的。用法的話,舉個(gè)例子這個(gè)就是說(shuō),當(dāng)SRAM中有一塊壞掉了,這個(gè)時(shí)候就在尾部在接一塊SRAM存儲(chǔ),就把壞塊的地址映射到新加的存儲(chǔ)塊中,這個(gè)時(shí)候就要用的Redundancy了。
1.4 時(shí)序
對(duì)于Single port SDRAM的時(shí)序,如下圖:
MCU存儲(chǔ)系統(tǒng)的基本知識(shí)
讀是在一個(gè)時(shí)鐘周期完成,如果是連續(xù)寫,紅點(diǎn)處,write enable是可以一直拉低的;讀的話,是要在下一個(gè)時(shí)刻才能采到數(shù)據(jù),注意下。