標籤:
一、SRAM概述
SRAM主要用於二級快取(Level2 C ache)。它利用晶體管來儲存資料。與DRAM相比,SRAM的速度快,但在相同面積中SRAM的容量要比其他類型的記憶體小。
大部分FPGA器件採用了尋找表(Look Up Table,LUT)結構。尋找表的原理類似於ROM,其物理結構是靜態儲存空間(SRAM),
N個輸入項的邏輯函數可以由一個2^N位容量的SRAM實現,
函數值存放在SRAM中,SRAM的地址線起輸入線的作用,地址即輸入變數值,SRAM的輸出為邏輯函數值,由連線開關實現與其他功能塊的串連。
二、SRAM基本原理
2.1、SRAM結構圖
SRAM結構圖
- corecells array:儲存單元陣列
- decode:行列地址解碼器
- Sense Amplifier:靈敏放大器
- conntrol circuit:控制電路
- FFIO:緩衝/驅動電路
在圖中,A0-Am-1為地址輸入端,CSB. WEB和OEB為控制端,控制讀寫操作,為低電平有效,I/O(0)-I/O(N-1)為資料輸入輸出端。存放裝置陣列中的每個儲存單元都與其它單元在行和列上共用電學串連,其中水平方向的連線稱為“字線”,而垂直方向的資料流入和流出儲存單元的連線稱為“位線”。通過輸入的地址可選擇特定的字線和位線,字線和位線的交叉處就是被選中的儲存單元,每一個儲存單元都是按這種方法被唯一選中,然後再對其進行讀寫操作。有的儲存空間設計成多位元據如4位或8位等同時輸入和輸出,這樣的話,就會同時有4個或8個儲存單元按上述方法被選中進行讀寫操作。
2.2、SRAM六管結構電路圖
點此查看電路原理詳解
2.3、為什麼要將儲存單元陣列排成矩陣形式?
在SRAM 中,排成矩陣形式的儲存單元陣列的周圍是解碼器和與外部訊號的介面電路。儲存單元陣列通常採用正方形或矩陣的形式,以減少整個晶片面積並有利於資料的存取。以一個儲存容量為4K位的SRAM為例,共需12條地址線來保證每一個儲存單元都能被選中(212 =-4096)。如果儲存單元陣列被排列成只包含一列的長條形,則需要一個12/4K位的解碼器,但如果排列成包含64行和64列的正方形,這時則只需一個6/64位的行解碼器和一個6/64位的列解碼器,行、列解碼器可分別排列在儲存單元陣列的兩邊,64行和64列共有4096個交叉點,每一個點就對應一個儲存位。因此,將儲存單元排列成正方形比排列成一列的長條形要大大地減少整個晶片地面積。儲存單元排列成長條形除了形狀奇異和面積大以外,還有一個缺點,那就是排在列的上部的儲存單元與資料輸入/輸出端的連線就會變得很長,特別是對於容量比較大得儲存空間來說,情況就更為嚴重,而連線的延遲至少是與它的長度成線性關係,連線越長,線上的延遲就越大,所以就會導致讀寫速度的降低和不同儲存單元連線延遲的不一致性,這些都是在設計中需要避免的。
三、SRAM的儲存原理
3.1、從RAM的儲存原理講起
RAM主要的作用就是儲存代碼和資料供CPU在需要的時候調用。但是這些資料並不是像用袋子盛米那麼簡單,更像是 圖書館中用有格子的書架存放書籍一樣,不但要放進去還要能夠在需要的時候準確的調用出來,雖然都是書但是每本書是不同的。對於RAM等儲存空間來說也是一樣的,雖然儲存的都是代表0和1的代碼,但是不同的組合就是不同的資料。讓我們重新回到書和書架上來,如果有一個書架上有10行和10列格子(每行和每列都有0-9的編號),有100本書要存放在裡面,那麼我們使用一個行的編號+一個列的編號就能確定某一本書的位置。如果已知這本書的編號87,那麼我們首先鎖定第8行,然後找到第7列就能準確的找到這本書了。在RAM儲存空間中也是利用了相似的原理。
現在讓我們回到RAM儲存空間上,對於RAM儲存空間而言資料匯流排是用來傳入資料或者傳出資料的。因為儲存空間中的儲存空間是如果前面提到的存放圖書的書架一樣通過一定的規則定義的,所以我們可以通過這個規則來把資料存放到儲存空間上相應的位置,而進行這種定位的工作就要依靠地址匯流排來實現了。對於CPU來說,RAM就象是一條長長的有很多空格的細線,每個空格都有一個唯一的地址與之相對應。如果CPU想要從RAM中調用資料,它首先需要給地址匯流排發送地址資料定位要存取的資料,然後等待若干個刻度之後,資料匯流排就會把資料轉送給CPU。下面的可以協助我們很好的理解這個過程。
中的小圓點代表RAM中的儲存空間,每一個都有一個唯一的地址線同它相連。當地址解碼器接收到地址匯流排送來的地址資料之後,它會根據這個資料定位CPU想要調用的資料所在的位置,然後資料匯流排就會把其中的資料傳送到CPU。
上面所列舉的例子中CPU在一行資料中每次只是存取一個位元組的資料,但是在現實世界中是不同的,通常CPU每次需要調用32bit或者是64bit的資料(這是根據不同電腦系統的資料匯流排的位寬所決定的)。如果資料匯流排是64bit的話,CPU就會在一個時間中存取8個位元組的資料(想一想,如果每次還是存取1個位元組的資料,64bit匯流排將不會顯示出來任何的優勢。)
從“線”到“矩陣”
如果RAM對於CPU來說僅僅是一條“線”的話,還不能體現實際的運行情況。因為如果實際情況真的是這樣的話,在實際製造晶片的時候,會有很多實際的困難,特別是在需要設計大容量的RAM的時候。所以,一種更好的能夠降低成本的方法是讓儲存資訊的“空格”排列為很多行--每個“空格”對應一個bit儲存的位置。這樣,如果要儲存1024bits(2^10)資料,那麼你只要使用32x32(2^5*2^5=2^10)的矩陣就能夠達到這個目的了。很明顯,一個32x32的矩陣比一個1024bit的行裝置更緊湊,實現起來也更加容易。請看:
知道了RAM的基本結構是什麼樣子的,我們就下面談談當儲存位元組的過程是怎樣的:上面的顯示的也僅僅是最簡單狀態下的情況,也就是當記憶體條上僅僅只有一個RAM晶片的情況。對於X86處理器,它通過地址匯流排發出一個具有22位位元字的地址編碼--其中11位是行地址,另外11位是列地址,這是通過RAM地址介面進行分離的。行地址解碼器(row decoder)將會首先確定行地址,然後列地址解碼器(column decoder)將會確定列地址,這樣就能確定唯一的儲存資料的位置,然後該資料就會通過RAM資料介面將資料傳到資料匯流排。另外,需要注意的是,RAM內部儲存資訊的矩陣並不是一個正方形的,也就是行和列的數目不是相同的--行的數目比列的數目少(DRAM)。
3.2、SRAM的儲存原理
下面的粗略的概括了一個基本的SRAM晶片是如何工作的。SRAM是“static RAM(靜態隨機儲存空間)”的簡稱,之所以這樣命名是因為當資料被存入其中後不會消失(同DRAM動態隨機儲存空間是不同,DRAM必須在一定的時間內不停的重新整理才能保持其中儲存的資料)。
一個SRAM單元通常由4-6隻晶體管組成,當這個SRAM單元被賦予0或者1的狀態之後,它會保持這個狀態直到下次被賦予新的狀態或者斷電之後才會更改或者消失。SRAM的速度相對比較快,而且比較省電,但是儲存1bit的資訊需要4-6隻晶體管製造成本太高了(DRAM只要1隻晶體管就可以實現)。
一個SRAM單元——4-6隻晶體管——儲存1bit的資訊
3.3、RAM晶片和SRAM晶片
RAM晶片:
前面的介紹都相對比較簡單、抽象。下面我們會結合實際的RAM晶片進行介紹。在談到這個問題的時候,我們會涉及到一個比較重要的技術:封裝。你應該聽說過諸如30線SIMMS、72線SIMMS和168線DIMMS或者RIMMs其中的一個或者幾個術語吧。如果要解釋這些術語之間的不同,就應該瞭解RAM的封裝技術。
SRAM晶片:
早期的SRAM晶片採用了20線雙列直插(DIP:Dual Inline Package)封裝技術,它們之所以具有這麼多的針腳,是因為它們必須:每個地址訊號都需要一根訊號線;一根資料輸入線和一根資料輸出線,部分控制線(Write Enable, Chip Select)。下面的是一個16K x 1-bit SRAM晶片的針腳功能:
Input:A0-A13是地址輸入訊號引腳,CS是晶片選擇引腳。在一個實際的系統中,一定具有很多片SRAM晶片,所以需要選擇究竟從那一片SRAM晶片中寫入或者讀取資料。WE是寫入啟用引腳(如上表,在CS、WE上面的線我沒有寫入,表示低電平有效或者是邏輯0時有效):當SRAM得到一個地址之後,它需要知道進行什麼操作,究竟是寫入還是讀取,WE就是告訴SRAM要寫入資料。Vcc是供電引腳。Din是資料輸入引腳。Dout是資料輸出引腳。GND是接地引腳
Output:Dout引腳
Enable(OE):有的SRAM晶片中也有這個引腳,但是上面的圖中並沒有。這個引腳同WE引腳的功能是相對的,它是讓SRAM知道要進行讀取操作而不是寫入操作。
3.4、SRAM的讀取與儲存操作流程
從Dout引腳讀取1bit資料需要以下的步驟:
1)通過地址匯流排把要讀取的bit的地址傳送到相應的讀取地址引腳(這個時候/WE引腳應該沒有啟用,所以SRAM知道它不應該執行寫入操作)。
2)啟用/CS選擇該SRAM晶片。
3)啟用/OE引腳讓SRAM知道是讀取操作。
第三步之後,要讀取的資料就會從DOut引腳傳輸到資料匯流排。怎麼過程非常的簡單吧?同樣,寫入1bit資料的過程也是非常的簡單的。
從Dout引腳儲存1bit資料需要以下的步驟:
1)通過地址匯流排確定要寫入資訊的位置(確定/OE引腳沒有被啟用)。
2)通過資料匯流排將要寫入的資料轉送到Dout引腳。
3)啟用/CS引腳選擇SRAM晶片。
4)啟用/WE引腳通知SRAM知道要進行寫入操作。
經過上面的四個步驟之後,需要寫入的資料就已經放在了需要寫入的地方。
----------------------------------------------我是驕傲的昏割線-----------------------------------------------------
經過剛才從棟哥那裡的確認,我現在的崗位是純研發崗,純的哦,純的,啊哈哈哈哈哈哈
要不要這麼開森(捂臉跑)
FPGA第一篇:SRAM工作原理