RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Virtex7上DDR3的測(cè)試?yán)?/h1>

??這篇文章我們講一下Virtex7上DDR3的測(cè)試?yán)?,Vivado也提供了一個(gè)DDR的example,但卻是純Verilog代碼,比較復(fù)雜,這里我們把DDR3的MIG的IP Core掛在Microblaze下,用很簡(jiǎn)單的程序就可以進(jìn)行DDR3的測(cè)試。

  1. 新建工程,FPGA選型為xc7v690tffg-1761。創(chuàng)建Block Design,命名為Microblaze_DDR3。

31ffb0b4-1cea-11ed-ba43-dac502259ad0.pngddr1
  1. 在bd文件中加入Mircoblaze。

3211f38c-1cea-11ed-ba43-dac502259ad0.pngddr2
  1. 點(diǎn)擊Run Block Automation

321b379e-1cea-11ed-ba43-dac502259ad0.pngddr3
  1. 按照默認(rèn)配置,確定即可。

3228f974-1cea-11ed-ba43-dac502259ad0.pngddr4
  1. 出現(xiàn)下面的界面。

323a01ec-1cea-11ed-ba43-dac502259ad0.pngddr5
  1. 添加MIG的IP Core

32590344-1cea-11ed-ba43-dac502259ad0.pngddr6
  1. 開(kāi)始配置DDR,選擇Create Design.

326c5a66-1cea-11ed-ba43-dac502259ad0.pngddr7
  1. 這一步是選擇Pin腳兼容的FPGA,我們不做選擇,直接Next。

3283ae82-1cea-11ed-ba43-dac502259ad0.pngddr8
  1. 選擇DDR3.

32933faa-1cea-11ed-ba43-dac502259ad0.pngddr9
  1. ①選擇DDR的工作頻率,我們這里讓DDR3的頻率為1600MHz,所以時(shí)鐘頻率是800MHz;
    ②選擇器件,根據(jù)實(shí)際情況來(lái)選擇即可;
    ③數(shù)據(jù)位寬,也是根據(jù)板卡上的實(shí)際位寬進(jìn)行選擇;
    ④默認(rèn)即可。

32a73d7a-1cea-11ed-ba43-dac502259ad0.pngddr10
  1. 選擇AXI總線的位寬,這里我們選擇512.

32c61ec0-1cea-11ed-ba43-dac502259ad0.pngddr11
  1. ①選擇輸入時(shí)鐘頻率,雖然DDR的工作時(shí)鐘是800MHz(在第10步中選擇),但我們可以輸入一個(gè)低頻時(shí)鐘,然后MIG的IP Core中會(huì)倍頻到所需頻率。
    ②MIG的IP Core默認(rèn)會(huì)輸出一個(gè)200MHz的時(shí)鐘,如果還需要其他的時(shí)鐘輸出,可以在這里選擇。其他選擇默認(rèn)即可。

32e3f6a2-1cea-11ed-ba43-dac502259ad0.pngddr12
  1. ①選擇輸入時(shí)鐘的方式,這里的輸入時(shí)鐘就是我們上一個(gè)頁(yè)面中的設(shè)置的200MHz的輸入時(shí)鐘,如果選擇差分或單端,則輸入通過(guò)FPGA的管腳輸入200MHz時(shí)鐘到MIG的IP Core;如果選擇No Buffer,則可以通過(guò)FPGA內(nèi)部的MMCM輸出一個(gè)200MHz時(shí)鐘到MIG;這里我選擇了No Buffer;
    ②選擇參考時(shí)鐘的方式,參考時(shí)鐘頻率固定是200MHz,如果選擇如果選擇差分或單端,則輸入通過(guò)FPGA的管腳輸入200MHz時(shí)鐘到MIG的IP Core;如果選擇No Buffer,則可以通過(guò)FPGA內(nèi)部的MMCM輸出一個(gè)200MHz時(shí)鐘到MIG;如果在前一個(gè)頁(yè)面中選擇了輸入時(shí)鐘頻率是200MHz,則這邊會(huì)出現(xiàn)一個(gè)Use System Clock的選項(xiàng),因?yàn)榇藭r(shí)兩個(gè)時(shí)鐘頻率是相同的嘛。這里我選擇了Use System Clock;
    ③設(shè)置輸入復(fù)位信號(hào)的極性,這個(gè)要特別注意,盡量選擇高有效,因?yàn)闊o(wú)論我們選擇高復(fù)位還是低復(fù)位,它的端口名都叫sys_rst,會(huì)讓人直觀就覺(jué)得是高復(fù)位。我第一次使用時(shí),就沒(méi)注意到這個(gè)選項(xiàng),默認(rèn)為低,但在MIG的端口上看到sys_rst這個(gè)名字我以為是高有效,結(jié)果DDR一直不通。
    (備注:對(duì)于絕大多數(shù)的Xilinx的IP,如果是低有效的復(fù)位,端口名字中肯定是有N這個(gè)標(biāo)志的)

3309eb50-1cea-11ed-ba43-dac502259ad0.pngddr13
  1. 這個(gè)頁(yè)面不需要操作。

333576f8-1cea-11ed-ba43-dac502259ad0.pngddr14
  1. 下面開(kāi)始分配管腳,我比較習(xí)慣于選第二個(gè),無(wú)論是第一次分配還是后面再重新分配。

  2. 在這一頁(yè),可以根據(jù)原理圖一一分配管腳;如果有現(xiàn)成的xdc/ucf文件,可以直接通過(guò)Read XDC/UCF讀入,然后再選擇Validate驗(yàn)證管腳分配是否正確。

3347fdd2-1cea-11ed-ba43-dac502259ad0.pngddr16

如果Validate成功,則會(huì)提示下面的界面。

3359c710-1cea-11ed-ba43-dac502259ad0.pngddr17
  1. 如果在第13步中,選擇了差分或單端輸入,則這里會(huì)出現(xiàn)下面第一個(gè)圖;如果選擇了No buffer,則這里會(huì)出現(xiàn)第二個(gè)圖。很容易理解,如果選擇了通過(guò)外部管腳輸入時(shí)鐘,那這里就是讓選擇具體的管腳。并不是所有的MRCC或者SRCC管腳都可以選的,只能選擇跟DDR管腳同一片區(qū)域的(比如DDR放在了Bank31 32 33,那么這里的時(shí)鐘輸入管腳就不能選擇Bank15)。

33712888-1cea-11ed-ba43-dac502259ad0.pngddr18

如果不選擇復(fù)位信號(hào)管腳,就可以通過(guò)FPGA內(nèi)部邏輯來(lái)輸入復(fù)位。

33a43ca0-1cea-11ed-ba43-dac502259ad0.pngddr19

后面一路Next就完成了MIG IP Core的配置了。

  1. 在bd文件中,加入AXI Interconnect、UARTLite和Interrupt(如果不加中斷模塊,Microblaze的程序跑不起來(lái)),串口用來(lái)打印信息。然后再添加各輸入輸出端口,把內(nèi)部的線連接起來(lái),如下圖所示。

33b475e8-1cea-11ed-ba43-dac502259ad0.pngddr20

但這個(gè)圖里的線太多,看著不直觀,我們把Microblaze模塊、mdm_1、rst_clk_wiz和local_memory模塊(上圖中紅框中的4個(gè)模塊)放到一個(gè)子模塊中,取名mb_min_sys,如下圖。

33dd0512-1cea-11ed-ba43-dac502259ad0.pngddr21
  1. 創(chuàng)建頂層的top文件,并在top文件中例化bd文件。可以把init_calib_complete和mmcm_locked這兩個(gè)信號(hào)抓出來(lái),在下載程序后,這兩個(gè)信號(hào)必須都是高,不然DDR就工作不正常,肯定是中間某個(gè)環(huán)節(jié)配置有問(wèn)題。具體top.v文件內(nèi)容見(jiàn)附錄

  2. 將工程綜合、實(shí)現(xiàn)、生成bit文件,并導(dǎo)出Hardware。

340673fc-1cea-11ed-ba43-dac502259ad0.pngddr22
  1. 打開(kāi)sdk,新建Application Project,并按下面的步驟依次操作。

34339b52-1cea-11ed-ba43-dac502259ad0.pngddr2334467718-1cea-11ed-ba43-dac502259ad0.pngddr24

再選擇模板為HelloWorld,最后Finish。

345ae6a8-1cea-11ed-ba43-dac502259ad0.pngddr25
  1. 修改helloworld.c,見(jiàn)附錄,重新編譯,如果提示overflowed則把lscript.ld文件中的size改大。

346bc662-1cea-11ed-ba43-dac502259ad0.pngddr26

運(yùn)行程序后,可以看到串口打印信息如下:

347f117c-1cea-11ed-ba43-dac502259ad0.pngddr27

附錄

//top.v
`timescale1ns/1ps

moduletop
(
inputclk_n,
inputclk_p,
inputUART_rxd,
outputUART_txd,
output[15:0]ddr3_addr,
output[2:0]ddr3_ba,
outputddr3_cas_n,
output[0:0]ddr3_ck_n,
output[0:0]ddr3_ck_p,
output[0:0]ddr3_cke,
output[0:0]ddr3_cs_n,
output[7:0]ddr3_dm,
inout[63:0]ddr3_dq,
inout[7:0]ddr3_dqs_n,
inout[7:0]ddr3_dqs_p,
output[0:0]ddr3_odt,
outputddr3_ras_n,
outputddr3_reset_n,
outputddr3_we_n
);

wireaxi4_clk;
wireaxil_clk;
regaxi4_rstn;
wireaxil_rstn;
wireinit_calib_complete;
wiremmcm_locked;
wireddr_rst;

always@(posedgeaxi4_clk)
begin
axi4_rstn<=?axil_rstn;
??end?

??reg?[8:0]?cnt;
??always?@?(?posedge?axil_clk?)
??begin
??????if(~axil_rstn)
??????????cnt?<=?'d0;
??????else?if(cnt=='d256)
??????????cnt?<=?cnt?;
??????else?
??????????cnt?<=?cnt?+?1'b1;
??end?

??assign?ddr_rst?=?(cnt=='d256)?1'b0:1'b1;

??MicroBlaze_DDR3?MicroBlaze_DDR3_i
???????(.UART_rxd???????????????????(UART_rxd?????????????),
????????.UART_txd???????????????????(UART_txd?????????????),
????????.axil_clk???????????????????(axil_clk?????????????),
????????.axi4_clk???????????????????(axi4_clk?????????????),
????????.axi4_rstn??????????????????(axi4_rstn????????????),
????????.clk_in_clk_n???????????????(clk_n????????????????),
????????.clk_in_clk_p???????????????(clk_p????????????????),
????????.ddr3_addr??????????????????(ddr3_addr????????????),
????????.ddr3_ba????????????????????(ddr3_ba??????????????),
????????.ddr3_cas_n?????????????????(ddr3_cas_n???????????),
????????.ddr3_ck_n??????????????????(ddr3_ck_n????????????),
????????.ddr3_ck_p??????????????????(ddr3_ck_p????????????),
????????.ddr3_cke???????????????????(ddr3_cke?????????????),
????????.ddr3_cs_n??????????????????(ddr3_cs_n????????????),
????????.ddr3_dm????????????????????(ddr3_dm??????????????),
????????.ddr3_dq????????????????????(ddr3_dq??????????????),
????????.ddr3_dqs_n?????????????????(ddr3_dqs_n???????????),
????????.ddr3_dqs_p?????????????????(ddr3_dqs_p???????????),
????????.ddr3_odt???????????????????(ddr3_odt?????????????),
????????.ddr3_ras_n?????????????????(ddr3_ras_n???????????),
????????.ddr3_reset_n???????????????(ddr3_reset_n?????????),
????????.ddr3_we_n??????????????????(ddr3_we_n????????????),
????????.ddr_rst????????????????????(ddr_rst??????????????),
????????.init_calib_complete????????(init_calib_complete??),
????????.mmcm_locked????????????????(mmcm_locked??????????),
????????.reset??????????????????????(1'b0?????????????????),
????????.axil_rstn??????????????????(axil_rstn????????????)
??????);
endmodule
//helloworld.c
#include
#include"platform.h"
#include"xil_printf.h"


intmain()
{
init_platform();
print("-------ddr3test----------------------

");
unsignedint*DDR_MEM=(unsignedint*)XPAR_MIG_7SERIES_0_BASEADDR;
//writedatatoddr3
*DDR_MEM=0x12345678;
//readback
unsignedintvalue=*(unsignedint*)XPAR_MIG_7SERIES_0_BASEADDR;

xil_printf("value=0x%x
",value);

cleanup_platform();
return0;
}

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602978
  • DDR3
    +關(guān)注

    關(guān)注

    2

    文章

    276

    瀏覽量

    42242
  • MicroBlaze
    +關(guān)注

    關(guān)注

    3

    文章

    68

    瀏覽量

    21548

原文標(biāo)題:Virtex7 Microblaze下DDR3測(cè)試

文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Xilinx DDR3 資料

    Achieving High Performance DDR3 Data Rates in Virtex-7 and Kintex-7 FPGAs。Xilinx官方DDR3資料。
    發(fā)表于 05-27 16:39

    DDR3控制器和SSTL15_T_DCI在同一個(gè)bank中

    你好,我使用Virtex7的HP庫(kù)來(lái)實(shí)現(xiàn)DDR3控制器。我的控制器將以1600Mbps的速度運(yùn)行,因此主控制器中的VRN和VRP應(yīng)連接一個(gè)80Ω電阻,以實(shí)現(xiàn)更高的性能。實(shí)現(xiàn)addr / cmd信號(hào)
    發(fā)表于 03-25 11:04

    LVDS發(fā)送器IP可用于Virtex6和Virtex7 FPGA嗎

    嗨,LVDS發(fā)送器IP(基于OpenLDI,像素和控制數(shù)據(jù)轉(zhuǎn)換為L(zhǎng)VDS信號(hào))可用于Virtex6和Virtex7 FPGA嗎?謝謝克里希納
    發(fā)表于 06-17 14:52

    Virtex7的SERDES運(yùn)行的最大頻率是多少?

    您好,Virtex7的SERDES運(yùn)行的最大頻率是多少?請(qǐng)問(wèn),有人可以幫我這個(gè)嗎?在此先感謝,最好的問(wèn)候
    發(fā)表于 07-30 17:20

    哪里可以找到幾個(gè)在virtex7實(shí)現(xiàn)的示例設(shè)計(jì)文件?

    你好 ,我在哪里可以找到幾個(gè)在virtex7實(shí)現(xiàn)的示例設(shè)計(jì)文件,以便在板獲得良好的實(shí)際操作?提前致謝
    發(fā)表于 08-11 06:06

    ddr3的讀寫(xiě)分離方法有哪些?

    DDR3是目前DDR的主流產(chǎn)品,DDR3的讀寫(xiě)分離作為DDR最基本也是最常用的部分,本文主要闡述DDR3讀寫(xiě)分離的方法。最開(kāi)始的
    的頭像 發(fā)表于 11-06 13:44 ?8855次閱讀
    <b class='flag-5'>ddr3</b>的讀寫(xiě)分離方法有哪些?

    ddr4和ddr3內(nèi)存的區(qū)別,可以通用嗎

    雖然新一代電腦/智能手機(jī)用上了DDR4內(nèi)存,但以往的產(chǎn)品大多還是用的DDR3內(nèi)存,因此DDR3依舊是主流,DDR4今后將逐漸取代DDR3,成
    發(fā)表于 11-08 15:42 ?3.2w次閱讀

    基于FPGA的DDR3 SDRAM控制器用戶接口設(shè)計(jì)

    為了滿足高速圖像數(shù)據(jù)采集系統(tǒng)中對(duì)高帶寬和大容量的要求,利用Virtex-7 系列FPGA 外接DDR3 SDRAM 的設(shè)計(jì)方法,提出了一種基于Verilog-HDL 語(yǔ)言的DDR3 SDRAM
    發(fā)表于 11-17 14:14 ?3645次閱讀
    基于FPGA的<b class='flag-5'>DDR3</b> SDRAM控制器用戶接口設(shè)計(jì)

    基于FPGA的DDR3用戶接口設(shè)計(jì)技術(shù)詳解

    本文詳細(xì)介紹了在Xilinx Virtex-6系列FPGA中使用MIG3.7 IP核實(shí)現(xiàn)高速率DDR3芯片控制的設(shè)計(jì)思想和設(shè)計(jì)方案。針對(duì)高速實(shí)時(shí)數(shù)字信號(hào)處理中大容量采樣數(shù)據(jù)通過(guò)DDR3存儲(chǔ)和讀取
    發(fā)表于 11-17 14:26 ?2.5w次閱讀
    基于FPGA的<b class='flag-5'>DDR3</b>用戶接口設(shè)計(jì)技術(shù)詳解

    DDR3DDR4的設(shè)計(jì)與仿真學(xué)習(xí)教程免費(fèi)下載

    DDR3 SDRAM是DDR3的全稱,它針對(duì)Intel新型芯片的一代內(nèi)存技術(shù)(但目前主要用于顯卡內(nèi)存),頻率在800M以上。DDR3是在DDR2基礎(chǔ)
    發(fā)表于 10-29 08:00 ?0次下載
    <b class='flag-5'>DDR3</b>和<b class='flag-5'>DDR</b>4的設(shè)計(jì)與仿真學(xué)習(xí)教程免費(fèi)下載

    安捷倫科技推DDR3協(xié)議調(diào)試和測(cè)試套件,具備最齊全的行業(yè)功能

    近日,安捷倫科技公司推出目標(biāo)應(yīng)用為板級(jí)或嵌入式存儲(chǔ)器應(yīng)用的DDR3協(xié)議調(diào)試和測(cè)試套件,由硬件和軟件的組成。據(jù)說(shuō)該套件是業(yè)界首個(gè)功能最齊全的DDR3測(cè)試工具,包含業(yè)界最快的(2.0-Gt
    發(fā)表于 08-30 10:06 ?985次閱讀

    關(guān)于Virtex7DDR3測(cè)試例程詳解

    這篇文章我們講一下Virtex7DDR3測(cè)試例程,Vivado也提供了一個(gè)DDR的examp
    的頭像 發(fā)表于 05-02 09:05 ?3452次閱讀
    關(guān)于<b class='flag-5'>Virtex7</b><b class='flag-5'>上</b><b class='flag-5'>DDR3</b>的<b class='flag-5'>測(cè)試</b><b class='flag-5'>例程</b>詳解

    基于AXI總線的DDR3讀寫(xiě)測(cè)試

    本文開(kāi)源一個(gè)FPGA項(xiàng)目:基于AXI總線的DDR3讀寫(xiě)。之前的一篇文章介紹了DDR3簡(jiǎn)單用戶接口的讀寫(xiě)方式:《DDR3讀寫(xiě)測(cè)試》,如果在某些項(xiàng)目中,我們需要把
    的頭像 發(fā)表于 09-01 16:20 ?4488次閱讀
    基于AXI總線的<b class='flag-5'>DDR3</b>讀寫(xiě)<b class='flag-5'>測(cè)試</b>

    基于FPGA的DDR3讀寫(xiě)測(cè)試

    本文介紹一個(gè)FPGA開(kāi)源項(xiàng)目:DDR3讀寫(xiě)。該工程基于MIG控制器IP核對(duì)FPGA DDR3實(shí)現(xiàn)讀寫(xiě)操作。
    的頭像 發(fā)表于 09-01 16:23 ?1650次閱讀
    基于FPGA的<b class='flag-5'>DDR3</b>讀寫(xiě)<b class='flag-5'>測(cè)試</b>

    闡述DDR3讀寫(xiě)分離的方法

    DDR3是2007年推出的,預(yù)計(jì)2022年DDR3的市場(chǎng)份額將降至8%或以下。但原理都是一樣的,DDR3的讀寫(xiě)分離作為DDR最基本也是最常用的部分,本文主要闡述
    的頭像 發(fā)表于 10-18 16:03 ?1068次閱讀
    闡述<b class='flag-5'>DDR3</b>讀寫(xiě)分離的方法

    RM新时代网站-首页