SDRAM的硬件解讀(個人總結(jié)版)
本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請注明出處!作者:張先生
在FPGA中我們經(jīng)常會用到SDRAM做數(shù)據(jù)緩存,比如我們收到一副圖像時,由于FPGA的內(nèi)部的RAM不夠,此時我們就可以將數(shù)據(jù)存在SDRAM里面,等到我們需要用的時候再從SDRAM里面把圖像取出來進行顯示;那么今天我們就對SDRAM的硬件進行講解,先不解釋SDRAM的原理,這里我們來循序漸進的學(xué)習(xí)如何使用SDRAM。
一、SDRAM管腳解釋
首先對SDRAM進行硬件電路上的分析,我們要弄明白的SDRAM的各個管腳都表示什么意思,下圖是某個芯片SDRAM的管腳圖。
1.VDD、VDDQ、VSS、VSSQ
電源VDD和VDDQ這里就不過多解釋了,至于供電電壓是多少,可以具體去查看一下電路原理圖。VSS和VSSQ,一般表示地信號,連接電路板的地。
2. A0------A10、DQ0----DQ15
著重要注意的是A0------A10以及DQ0----DQ15,我們首先來弄明白這兩組信號。A0----A10表示的地址線,DQ0-----DQ15表示的數(shù)據(jù)線,我們想一下,假設(shè)我們要存一段數(shù)據(jù),肯定是把數(shù)據(jù)(DQ組的信號)存在某一個地方(A0到A10)。比如說我們可以把一組數(shù)據(jù)“0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008”依次存在SDRAM的地址“0 1 2 3 4 5 6 7 ”里面,當你要取數(shù)據(jù)的時候把“0 1 2 3 4 5 6 7 ”里面的數(shù)據(jù)讀出來即可。
3.clk
用一個生活中用到的知識來理解,我們平常都會去買電腦,買電腦的時候我們會關(guān)注一個指標,CPU的頻率是多少;同理的,SDRAM里面也是要有時鐘才能運行的嘛,那么這個時鐘要選取多少合適呢,我們一般要給它多少頻率呢???200M ???100M???不賣關(guān)子了,這個指標一般數(shù)據(jù)手冊上都有,但是數(shù)據(jù)手冊上一般標的是最大的頻率,比如說133MHz,那么當我們給SDRAM的時鐘頻率比手冊上的標的最大的頻率小的時候,如125MHz就是可以運行的。
4. BA0、BA1
BA0和BA1這兩個是Bank。不要懼怕bank是什么,也沒必要理解bank是什么意思,因為我們也不是設(shè)計SDRAM芯片的,我們只是運用SDRAM芯片的。什么是bank,通俗的講,就是SDRAM芯片里面有多少個小塊,BA0和BA1共有4個小塊,很簡單嘛2的2次方,假如說別的SDRAM里面有3個BA管腳,那么就是有2的3次方等于8個小塊。它的作用說白了就是BA組(bank)信號和A0---A10(地址組信號)的組合組成了SDRAM的總的地址。
5. DQM
假設(shè)你是一個很細心的人你會發(fā)現(xiàn)DQ(數(shù)據(jù)組)的信號有16根,也就是說兩個字節(jié),但是有沒有這樣一種情況,我們還剩一個單字節(jié)的數(shù)據(jù)的時候怎么到SDRAM,籌不夠兩個字節(jié)啊。這時DQM信號就體現(xiàn)出它的作用了,當給DQM的高位為1,就表示存進SDRAM里面的數(shù)據(jù)高字節(jié)無效;同理低位為1,表示那么存進SDRAM的低字節(jié)無效,說白了就是數(shù)據(jù)屏蔽位。
6.CS
CS為片選,你的FPGA里面有可能掛著不止1片SDRAM,這時你要操作哪一個SDRAM那就選中它,就是這么容易理解。
7. WE、CAS、RAS、CKE
WE、CAS、RAS、CKE它們四個組合成了一個命令的控制,為什么要用命令,我們一起來思考下。SDRAM只是一片芯片,它不可能知道我們?nèi)说乃枷?,也不知道我們是要對它寫還是要對它讀。我們寫驅(qū)動的時候是不是要告訴我要往你SDRAM里面寫數(shù)據(jù)了,怎么告訴它?肯定給它一個命令指示,SDRAM只有收到命令的時候它才能知道你想要數(shù)據(jù),好讓它準備準備。同理當我們要從SDRAM里面讀數(shù)據(jù)的時候肯定也要給它命令,讓SDRAM知道我們要讀數(shù)據(jù),這就是我們的命令的作用了。那么你有可能會有個疑問,SDRAM不就是有寫命令和讀命令就行了,為什么要這么多根線組成呢?其實不是,SDRAM里面的命令有很多,具體的我們可以去查看收據(jù)手冊里面的命令表學(xué)習(xí)。
二、原理圖和PCB
下面我們來講原理圖和PCB。就本人用過的,如說明德?lián)P使用的W9864,電源我們提供給SDRAM用電源為的3.3V,其它的什么數(shù)據(jù)線、地址線、BANK線、命令線等直接連接到FPGA也可,但是最好連接到同一個FPGA的bank。有可能有的人覺得不重要,雖然SDRAM有可能是不重要,但是如果是DDR2和DDR3的時候就顯得很重要了,DDR2和DDR3是要接到FPGA的特定的管腳才行的,不是說我們想接到哪都可以,所以在畫DDR2和DDR3的時候要先進行FPGA工程的編譯,先確定好管腳的位置。
回到我們的SDRAM,剛才我們說的SDRAM的時鐘線。那么時鐘線能不能連接到FPGA的普通管腳?答案是可以的,但是我們不建議那么做,一般來說呢,可以連接到FPGA的某一個時鐘輸出管腳,因為本來輸出的就是時鐘信號。
再來說說PCB。SDRAM的對PCB的要求高不高呢?按照數(shù)據(jù)手冊的理論一般都是要求你對SDRAM做50歐姆阻抗匹配和等長,有的工程師有可能忘了做阻抗匹配了也沒做等長那怎么辦,樣板已經(jīng)回來了,會不會有問題呢?小平同志有句話說的好,實踐是檢驗真理的唯一標準!我可以大膽的告訴你,SDRAM哪怕忘了做阻抗,問題也是不大的,最起碼樣板是可以調(diào)出來,第二版的時候再做也是可以補救的。當然我們不是叫你不去做阻抗哦,只是說不做也能調(diào)試出來罷了。
以上就是我從實踐中總結(jié)出的SDRAM硬件解讀,大家可以在下方留言互相學(xué)習(xí)交流!