本系列基于Xilinx artix-7 xc7a35t 晶片
和 vivado 2018.3
看過很多FPGA工程師的招聘要求,大多包含有“了解DDR3”。
是以這次分享一下DDR3的原理和代碼(在下一期)。
硬體的學習隻能是慢慢積累,不能急于求成。
FPGA片記憶體儲資源是有限的,不能滿足大容量的資料儲存要求,這個時候我們就需要在FPGA的外部添加外部存儲器,一般外部存儲器分為SRAM和DRAM,我們在這裡主要介紹DRAM
DRAM,動态随機存取存儲器。
SDRAM則是同步動态随機存取存儲器。
這裡我們解釋下裡面的幾個關鍵詞:
1.同步:指其時鐘頻率與CPU前端總線同步,并且内部指令、資料都以此作為基準。
2.動态:存儲矩陣需要不斷重新整理以保證資料不丢失
3.随機:資料并非一次線性地存取,而是可以自由指定位址進行資料的讀寫
我們今天最主要介紹的DDR SDRAM,全稱為 double data rate SDRAM,也就是雙倍速率的SDRAM,與SDRAM最大的差別在于,SDRAM隻在時鐘上升沿采樣資料,DDR SDRAM則在上升沿和下降沿都采樣信号,這樣就提升了一倍的速率。
DDR是屬于SDRAM中的一種,所有的SDRAM采取的存儲方式都是“存儲矩陣”。一個單元叫做一個bank,每個資料通過行位址、列位址确定唯一的位址。
上圖是DDR的主要信号端口。
ADDR和BA分别為行、列位址。
CLK/CLK#是差分時鐘信号,CLK是正常的時鐘信号,CLK#則是和正常時鐘信号反向的一個信号,它們共同組成了差分的時鐘信号,資料在這兩個信号交叉的時候進行采樣,這樣完成了DDR。
實際上來說CLK#并不是“第二個觸發時鐘”,而是用于校準CLK的:在溫度、阻值出現變化的時候,CLK可能會發生失調:
那麼這個時候,一個用于校準的時鐘無疑可以維持觸發點(兩信号交彙點)的穩定!
DQS是“資料的同步信号”,當對DDR 寫入的時候,我們接收北橋傳來的DQS,當我們輸出資料的時候就會生成DQS并随着資料傳輸,它的主要作用是在一個時鐘周期内厘清楚各個傳輸周期。
CKE時鐘使能、CS片選端、ODT内部阻抗使能、RAS/CAS行/列資料選通(能夠增強抗幹擾能力),WE資料輸入選通。
DQ是資料輸入/輸出口。
我們采用Xilinx提供的MIG ip核 以及 硬核IOB來實作DDR功能,整個系統的架構如下:
這期的内容就到這裡,下期我們給大家分享DDR3的代碼。
謝謝觀看!