2015年4月28日 星期二

Terasic DE5-NET Altera Stratix V FPGA PCIe 使用(二)

承接上一篇
這邊會把 Quartus 相關的部份寫完

2.4 DRAM 控制器

(這部份嫌麻煩的話可以用 SRAM or on chip memory,不過大小差很多)

基本上是非常囉唆的設定
大概要問原廠工程師才知道要怎麼設定
實驗室的是買來就插上 2G*2 的版本
不過我只用到其中一個
所以就放進一個 DDR3 controller
DDR3 SDRAM Controller with UniPHY

以下是我的 DRAM 的設定
再強調一次,這個數字沒啥意義
如果你覺得要調整的話請直接寄信問原廠
首先去 preset 裡面選擇 MICRON MT16JTF51264AZ-1G6
這個很重要,這樣可以省下不少時間


看到上面這頁就知道為什麼要選那個 preset 了
你可以選別的試試看再調


這邊 burst length 的 512 蠻重要的,等一下的 DMA 也會是這個值


對了,有一些設定其實不完全沒意義
可以去看之前我寫的關於 DRAM 的文章

2.5 DMA

前面說過 DMA buffer 是 4096B
所以 13 bits 符合我們的需求
下面的 512 burst size 是為了要能傳輸 4096B
因為下面我們寫說 16B 的單位
或許可以試試看 256 也會動

這個設定很重要
我一開始設定太小
DMA 想要傳 4096B 的時候這個值 overflow
導致 slave 以為只要傳一次,DMA 卡住
Debug 花了三天
我覺得 Qsys 應該要對此警告的說
因為剛剛產生 PCIe module 的時候
PCIe gen2*8 的設定只能是 quadword
所以就用這個

3. Qsys 連接

最後把線這樣接,注意 export 的部份
這邊在 DMA master 到 DRAM 之間多放上了一個 pipeline stage
這會讓時序鬆許多

首先把 50MHz clock/reset 接到 DRAM reference clock 上面
奇怪的設定用 module 把名字一樣的接一接,不過有一個 clock 要從 PCIe 取得
DMA/pipeline stage 的 clock/reset 用 PCIe 的
DMA read/write master 透過 pipeline bridge 之後接到 DRAM&Txs 上面
PCIe BAR0 接上 CRA(也是設定 PCIe 用的) 跟 DMA slave

Base address 這樣設定


有一些設定之後會在 driver 那邊說明

4. 將 Qsys 系統放到 Quartus 上面

Generate 系統之後把他加入 Quartus project
並且加入適當的 pin assignment, wrapper, SDC
我產生了一個可以用的組合

很重要的是 generate 系統之後他會說要先跑 synthesis,再執行某個 tcl
直接按 compile 是不會過的
所以理論上步驟是這樣
ctrl+l: synthesis
Tools > Tcl scripts > xxx_ddrxxx_pin_assignment.tcl
ctrl+k: compile all

喔對了,有時候可能要設定一下 design partition,logic lock 才會動

不想打了
之後的留到下一篇吧

沒有留言:

張貼留言