《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 在Zynq上用MIG擴(kuò)展內(nèi)存(1)-XPS
在Zynq上用MIG擴(kuò)展內(nèi)存(1)-XPS
摘要: 硬件平臺(tái):ZC706開發(fā)板軟件工具:XPS&SDK14.4MIG(MemoryInterfaceGenerator)的基本配置:AXI接口:200MHz,32bitMemory接口:800MHz,64bitStep1:創(chuàng)建工程啟動(dòng)XPS14.
關(guān)鍵詞: FPGA Zynq
Abstract:
Key words :

硬件平臺(tái):ZC706開發(fā)板

軟件工具:XPS & SDK 14.4

 

MIG(Memory Interface Generator)的基本配置:

AXI接口: 200MHz, 32bit

Memory接口: 800MHz, 64bit

 

Step 1: 創(chuàng)建工程

    啟動(dòng)XPS 14.4。用器件XC7Z045(FFG900, -2)創(chuàng)建一個(gè)新的工程。創(chuàng)建工程時(shí)不要選擇‘AXI Reset Module’。

Step 2: 配置Zynq

    按照labfiles里面的Zynq-PS-DDR-Configuration.png配置PS DDR3的參數(shù)。

    將CPU的頻率設(shè)置為733MHz

    取消‘Enable Programmable Clock and reset to PL’

    取消‘Enable PL Interrupts to PS and vice versa’

    取消所有外設(shè),僅僅保留UART。UART1使用MIO 48..49

Step 3: 配置Clock Generator

    CLKIN:Frequency=200000000

    CLKOUT0:Frequency=800000000, Phase=337.5, Group=PLLE0, Buffered=FALSE

    CLKOUT1:Frequency=800000000, Phase=0, Group=PLLE0, Buffered=FALSE

    CLKOUT2:Frequency=50000000, Phase=10, Group=PLLE0, Buffered=FALSE

    CLKOUT3:Frequency=200000000, Phase=0, Group=PLLE0, Buffered=TRUE

CLKOUT4:Frequency=200000000, Phase=0, Group=PLLE0, Buffered=TRUE

    注意: CLKOUT2是為axi_7series_ddrx_0::sync_pulse提供時(shí)鐘的,必須是CLKOUT0 (axi_7series_ddrx_0::freq_refclk)的1/16。

Step 4: 配置MIG

    從IP Catalog 里面添加 ‘AXI 7 Series Memory Controller(DDR2/DDr3)’ 到當(dāng)前設(shè)計(jì)

    配置PHY to Controller Clock Ratio為4:1

    配置Memory Type=SODIMMS; Memory Part=MT8JTF12864HZ-1G6

    更改AR/AW/B/R/W 寄存器的狀態(tài)為‘AUTOMATIC’

    確認(rèn)RTT為RZQ/4

    選中‘DCI Cascading’

    從labfiles\zc706_ddr3_sodimm_pinout.ucf中導(dǎo)入DDR3的管腳配置

    將axi_7series_ddrx_0的內(nèi)存大小修改為1GB

    在所有axi_7series_ddrx_0:: (IO_IF)memory_0端口(除了parity)上單擊右鍵,選擇Make external。

Step 5: 建立IP之間的連接

    axi_7series_ddrx_0::clk_ref            <-> clock_generator_0::CLKOUT3

    axi_7series_ddrx_0::mem_refclk <-> clock_generator_0::CLKOUT1

    axi_7series_ddrx_0::freq_refclk    <-> clock_generator_0::CLKOUT0

    axi_7series_ddrx_0:: pll_lock                    <-> clock_generator_0::LOCKED

    axi_7series_ddrx_0::sync_pulse    <-> clock_generator_0::CLKOUT2

    axi_7series_ddrx_0:: S_AXI::clk      <-> clock_generator_0::CLKOUT4

   

    processing_system7_0::M_AXI_GP0::M_AXI_GP0_ACLK  <-> clock_generator_0::CLKOUT4

   

    axi_interconnect_1::INTERCONNECT_ACLK                    <-> clock_generator_0::CLKOUT4

    axi_interconnect_1::INTERCONNECT_aresetn     <-> clock_generator_0::LOCKED (Done in column Net)

   

    在‘clock_generator_0::RST ‘上單擊右鍵,選擇Make external。將External Port下面的‘clock_generator_0_RST_pin’名字更改為 ‘RESET’類匹配相應(yīng)的ucf約束

 

Step 6:GUI之外的更改

    關(guān)閉當(dāng)前工程。

    用文本編輯器打開system.mhs,找到CLKOUT2并添加DUTY_CYCLE

        PARAMETER C_CLKOUT2_FREQ = 31250000

        PARAMETER C_CLKOUT2_PHASE = 10

        PARAMETER C_CLKOUT2_DUTY_CYCLE = 0.0625

        PARAMETER C_CLKOUT2_GROUP = PLLE0

        PARAMETER C_CLKOUT2_BUF = FALSE

    用labfiles\ system.ucf替換‘data’目錄下的同名文件

Step 7:生成BitStream

    重新打開工程,電機(jī)Generate BitStream生成.bit文件,然后Export Design to SDK。

    在SDK里面,可以用模板“Memory Tests”創(chuàng)建一個(gè)工程,測(cè)試確認(rèn)MIG工作正常。

 

Zynq PL側(cè)的DDR PHY的最高速率為1866Mbps。如果配置MIG的’PHY to Controller Clock Ratio’為4:1,MIG的AXI端口的最高工作頻率只能到233.33MHz。如果PL里面的IP對(duì)MIG的訪問數(shù)據(jù)量比較大,這種配置有優(yōu)勢(shì)。如果CPU通過MIG訪問擴(kuò)展內(nèi)存比較頻繁,就需要提高M(jìn)IG的AXI端口的工作頻率。

 

以下面的MIG配置為例:

AXI接口: 250MHz, 32bit

Memory接口: 500MHz, 64bit

 

在上面的基礎(chǔ)上,要做以下修改:

Step 3: 配置Clock Generator:

    CLKIN:Frequency=200000000

    CLKOUT0:Frequency=500000000, Phase=337.5, Group=PLLE0, Buffered=FALSE

    CLKOUT1:Frequency=500000000, Phase=0, Group=PLLE0, Buffered=FALSE

    CLKOUT2:Frequency=31250000, Phase=10, Group=PLLE0, Buffered=FALSE

    CLKOUT3:Frequency=200000000, Phase=0, Group=PLLE0, Buffered=TRUE

    CLKOUT4:Frequency=250000000, Phase=0, Group=PLLE0, Buffered=TRUE

Step 4: 配置MIG

    配置PHY to Controller Clock Ratio為2:1

    在Ports Tab頁面單擊右鍵,使能Net列的顯示。將axi_7series_ddrx_0:: (IO_IF)memory_0下所有的net的名字刪除掉前綴‘axi_7series_ddrx_0_’,然后將External Ports下MIG對(duì)應(yīng)的信號(hào)的名字也刪除前綴。這可以幫助工具完成時(shí)序收斂。

 

在新的配置下,CPU通過MIG訪問擴(kuò)展DDR3內(nèi)存的吞吐量會(huì)得到一定的提升。通過分析Timing Analyzer發(fā)現(xiàn),MIG的工作頻率在250MHz的基礎(chǔ)上還有小幅的提升空間。

 

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。