本篇主要討論Vivado中DDRX控制器(mig)ip核配置中關于命令序號選擇和地址映射說明(一)
利用Xilinx 7系列FPGA開發時,經常需要驅動外部存儲器--DDRX。Xilinx提供了mig(存儲器接口生成器)這個ip用以驅動外部存儲器。
在配置中有一項命令序號模式的選擇:
mig這個ip可以接收多個命令(在第一個命令還沒有執行時,就可以接收后續的幾個命令。并不是接收一個命令,執行完后才可以接收下一個命令)。
上述選擇兩個模式的區別為:
正常模式允許存儲器控制器重新編序收到的命令的順序,以或者更高的性能(例:收到的命令順序為A1,A2,A3,但是發現按照A1,A3,A2的順序執行,不妨礙功能,并且擁有更高的性能)。
嚴格模式強制要求控制器按照收到的命令順序去執行。
在配置時,還有一項地址映射模式選擇:
DDRXSDRAM是一種按照M行,N列湊成一個片(BANK),然后多個片構成的一個存儲器。在使用時需要提供BANK地址,行地址,列地址,才能夠指定對應的訪問位置(特別注意:每個位置存儲一個字(需要看存儲器的寬度),并不是一個字節(8個bit))。
在使用mig時,我們需要提供一個地址,那么這個地址的各個位對應的DDRX SDRAM的bank地址,行地址,列地址的模式是按照上述選擇的。
例:(不考慮RANK地址),假設行地址13位,列地址10位,BANK地址3位,無論我們選擇哪一種模式,我們的地址都是給一個26位的地址。如果選擇ROW,BANK,COL的模式,那么地址的25:13位會給到行地址,12:10會給到BANK地址,9:0會給到列地址。如果選擇BANK,ROW,COL的模式,那么地址的25:23位會給到BANK地址,22:10會給到行地址,9:0會給到列地址。
那么這兩個地方我們應該選擇哪個呢?
這個和內部結構以及工作原理有關系,并且也和我們平時使用的方式 有一定的關系。
內部結構在上述已經簡單的敘述過了,下面簡述一下工作原理:
在訪問時,我們首先需要激活訪問地址對應的BANK里面的對應的那一行,然后才可以進行讀寫。
下面給出SDRAM中的幾個特性:
· 在SDRAM中某一行激活了,是需要關閉的(有時間的限制)。
·在SDRAM中如果第二個操作和第一個操作是同一個bank,同一行,那么第一個操作完成后,可以不關閉此行,第二個操作也不用激活,此時提高了訪問效率。
. 在SDRAM中同一個BANK只能激活一行。例:如果第二個操作和第一個操作是同一個bank,但是不同行,那么就只能將第一個操作的行關閉,然后再將第二個行激活。
. 在SDRAM中,不同的BANK是可以同時激活使用者想要訪問的行。例:如果第二個操作和第一個操作不在同一個bank,那么就可以在關閉第一個操作對應的bank的同時,激活第二個操作對應的BANK,那么此時相當于節省了一段時間,提高了訪問的效率。
知道了這幾個特性,我們來考慮上述的兩個選擇項的問題:
首先考慮命令是否允許重新編號;假設第一個操作為BANK A,ROW A,第二個操作為BANK A, ROW B, 第三個操作為BANK A, ROW A。如果按照嚴格順序執行,那么只能夠進行激活、操作一,關閉,激活、操作二、關閉、激活、操作三、關閉。共需要九步完成所有的命令。如果把操作二和操作三對調,那么將執行激活、操作一、操作三、關閉、激活、操作二、關閉。共需要七步即可完成,提高了一定的效率,所以此選項建議選擇正常模式。
下面考慮地址映射的選項:
這個需要考慮一個使用者的方式:一般我們使用時,是一段連續的地址;例:0到10000。
如果選擇BANK,ROW,COL的模式,就是利用第一個bank的第一行,然后第二行,第三行,········, 直到第一個bank利用完畢,才可以利用下一個bank。
如果選擇ROW,BANK,COL的模式,就是利用第一個bank的第一行,完事后,利用第二個bank的第一行,然后是第三個bank的第一行····直到所有的bank的第一行全部利用完事后,才會利用第二行。
那么在當一行利用完畢時,BANK,ROW,COL的模式下一個用的是第二行就必須等第一行關閉后,才可以激活第二行。如果選擇ROW,BANK,COL的模式下一個用的是其他的bank的行,所以不需要等待關閉就可以激活,相當于節省了一段時間,提高了訪問效率。
-
FPGA
+關注
關注
1626文章
21674瀏覽量
601939 -
控制器
+關注
關注
112文章
16211瀏覽量
177445 -
地址映射
+關注
關注
0文章
6瀏覽量
2025
原文標題:Vivado中DDRX控制器(mig)ip核配置中關于命令序號選擇和地址映射說明(一)
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論