Designa med diskret SPI Flash minne (1 / 7 steg)
Steg 1: Vad är SPI-minne?
Jag ska förklara detta nästa del smärtsamt snabbt. Mitt första jobb på Intel var i gruppen flash-minne i 1993, och mycket har förändrats med teknik i 20 år sedan dess, men några begrepp förbli konsekventa.
Flash-minne är en typ av beständigt lagringsminne baserat på MOSFET-teknik. Beständigt innebär enheten behåller sitt värde när det inte är påslagen.
MOSFET
Om du inte är bekant med hur en MOSFET-transistor fungerar, jag ska försöka förklara det i en mening: en platta av kisel med två terminaler på någon sida inte leda elektricitet om du placerar en spänningsskillnad mellan dem, men om du håller dig en annan bit metall på toppen av det slab smörgås en dielektrisk mellan det och sedan tillämpa en spänning till den bit metall det skapar ett fält och ström kan flöda mellan de två terminalerna. Terminalerna är källan och avlopp, och metall kallas porten. Det är en super enkel förklaring som bulldozes 50 år av kvantfysik, men från en Michael Farady point-of-view, det är någorlunda fungerande.
FLASH-TRANSISTOR
Flash-minne fungerar genom att spränga en massa laddningsbärare på dielectricen mellan grinden och substrat. Detta kallas programmeringoch görs vanligtvis med en mycket högre spänning. Det faktiskt skadar de material, och efter 100k program cykler, porten kommer att misslyckas. För att ta bort den avgift bärare rom dielektrisk, och lika hög spänning, men omvänd potential, drar lufttrafikföretag utanför porten. Detta kallas radering.
En programmerad flash bit har värdet 0 och ett raderat bit har värdet 1, en raderas flash byte är 0xFF i hex. (Numera, flash-minne kan lagra flera bitar per cell använder flera spänningsnivåer, men som blir riktigt komplicerat.)
FLASH-ARKITEKTUREN
En flash-minne innehåller normalt en gigantisk samling av transistorer som kan programmeras individuellt, men bara raderas gruppvis (sektorer, block eller hela chip). Detta är bara en bieffekt av hur radera kretsen fungerar: per-bitars radera skulle kräva för mycket metall densitet, och är inte så bra (i praktiken, radera i större bitar fungerar alldeles utmärkt).
Eftersom programmering en enda transistor är långsam på grund av ramp upp den hög spänningen och allt för den kontroll som går med på det, är flash oftast programmerad i sidorna. Vanligtvis en flash-enhet kommer att ha en liten SRAM sida buffert (256 bitar) som värd kommer att först snabbt fylla med data, då mottagande frågor en sida skriva kommandot och flash chip skriver alla sida byte i stora batch-jobb. Denna batch kretsar amortizes skriva startväntetiden över ett större antal bitar. Erbjuder två eller flera sidan buffertar kan värden att använda en dubbel-buffert teknik för att dölja skriva latens på flash-enheten.
SPI
Seriellt perifera gränssnitt är en lysande uppfinning. Det är ett enkelt seriellt gränssnitt som använder en chip select, en klocka, en data i och en data ut. Det finns många typer av SPI enheter, eftersom det är ett mycket populärt gränssnitt och alla SPI enheter använda ett gemensamt bibliotek: när du vet hur man talar med en SPI enhet, kan du prata med någon SPI enhet.
Fördelen med att SPI är sin mjukvara enkelhet, koden i princip skiftar data till och från DI och göra pins respektive på stigande kanten av en klocka. Och klockan är kontrollerad av värden, det kräver inte en fancy klocka krets: faserna kan vara så asymmetrisk som du vill, så länge du följer minsta cykel bredd kraven i enheten.
FLASH SPI
SPI flashminne helt enkelt kombinerar bäst av två världar. Observera att SD-kort använder SPI som denna diskret chip. Överraskning! Programmeringsgränssnittet är inte mycket annorlunda, men de faktiska instruktioner och timings skiljer sig åt.