天天看點

基于Xilinx artix 7的FPGA進階應用(四):RAM接口控制器系列 第二期 DDR SDRAM 原理篇

本系列基于Xilinx artix-7 xc7a35t 晶片

和 vivado 2018.3

看過很多FPGA工程師的招聘要求,大多包含有“了解DDR3”。

是以這次分享一下DDR3的原理和代碼(在下一期)。

硬體的學習隻能是慢慢積累,不能急于求成。

FPGA片記憶體儲資源是有限的,不能滿足大容量的資料儲存要求,這個時候我們就需要在FPGA的外部添加外部存儲器,一般外部存儲器分為SRAM和DRAM,我們在這裡主要介紹DRAM

基于Xilinx artix 7的FPGA進階應用(四):RAM接口控制器系列 第二期 DDR SDRAM 原理篇

DRAM,動态随機存取存儲器。

SDRAM則是同步動态随機存取存儲器。

這裡我們解釋下裡面的幾個關鍵詞:

1.同步:指其時鐘頻率與CPU前端總線同步,并且内部指令、資料都以此作為基準。

2.動态:存儲矩陣需要不斷重新整理以保證資料不丢失

3.随機:資料并非一次線性地存取,而是可以自由指定位址進行資料的讀寫

基于Xilinx artix 7的FPGA進階應用(四):RAM接口控制器系列 第二期 DDR SDRAM 原理篇

我們今天最主要介紹的DDR SDRAM,全稱為 double data rate SDRAM,也就是雙倍速率的SDRAM,與SDRAM最大的差別在于,SDRAM隻在時鐘上升沿采樣資料,DDR SDRAM則在上升沿和下降沿都采樣信号,這樣就提升了一倍的速率。

基于Xilinx artix 7的FPGA進階應用(四):RAM接口控制器系列 第二期 DDR SDRAM 原理篇

DDR是屬于SDRAM中的一種,所有的SDRAM采取的存儲方式都是“存儲矩陣”。一個單元叫做一個bank,每個資料通過行位址、列位址确定唯一的位址。

基于Xilinx artix 7的FPGA進階應用(四):RAM接口控制器系列 第二期 DDR SDRAM 原理篇

上圖是DDR的主要信号端口。

ADDR和BA分别為行、列位址。

CLK/CLK#是差分時鐘信号,CLK是正常的時鐘信号,CLK#則是和正常時鐘信号反向的一個信号,它們共同組成了差分的時鐘信号,資料在這兩個信号交叉的時候進行采樣,這樣完成了DDR。

實際上來說CLK#并不是“第二個觸發時鐘”,而是用于校準CLK的:在溫度、阻值出現變化的時候,CLK可能會發生失調:

基于Xilinx artix 7的FPGA進階應用(四):RAM接口控制器系列 第二期 DDR SDRAM 原理篇

那麼這個時候,一個用于校準的時鐘無疑可以維持觸發點(兩信号交彙點)的穩定!

DQS是“資料的同步信号”,當對DDR 寫入的時候,我們接收北橋傳來的DQS,當我們輸出資料的時候就會生成DQS并随着資料傳輸,它的主要作用是在一個時鐘周期内厘清楚各個傳輸周期。

CKE時鐘使能、CS片選端、ODT内部阻抗使能、RAS/CAS行/列資料選通(能夠增強抗幹擾能力),WE資料輸入選通。

DQ是資料輸入/輸出口。

我們采用Xilinx提供的MIG ip核 以及 硬核IOB來實作DDR功能,整個系統的架構如下:

基于Xilinx artix 7的FPGA進階應用(四):RAM接口控制器系列 第二期 DDR SDRAM 原理篇

這期的内容就到這裡,下期我們給大家分享DDR3的代碼。

謝謝觀看!