你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

专家秘笈大放送:在Zynq上用MIG扩展内存(1)-XPS

发布者:jackzhang 时间:2013-08-31 12:23:06

硬件平台:ZC706开发板

软件工具:XPS & SDK 14.4

 

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

AXI接口: 200MHz, 32bit

Memory接口: 800MHz, 64bit

 

Step 1: 创建工程

    启动XPS 14.4。用器件XC7Z045(FFG900, -2)创建一个新的工程。创建工程时不要选择‘AXI Reset Module’。

Step 2: 配置Zynq

    按照labfiles里面的Zynq-PS-DDR-Configuration.png配置PS DDR3的参数。

    将CPU的频率设置为733MHz

    取消‘Enable Programmable Clock and reset to PL’

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

    取消所有外设,仅仅保留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提供时钟的,必须是CLKOUT0 (axi_7series_ddrx_0::freq_refclk)的1/16。

Step 4: 配置MIG

    从IP Catalog 里面添加 ‘AXI 7 Series Memory Controller(DDR2/DDr3)’ 到当前设计

    配置PHY to Controller Clock Ratio为4:1

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

    更改AR/AW/B/R/W 寄存器的状态为‘AUTOMATIC’

    确认RTT为RZQ/4

    选中‘DCI Cascading’

    从labfiles\zc706_ddr3_sodimm_pinout.ucf中导入DDR3的管脚配置

    将axi_7series_ddrx_0的内存大小修改为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’类匹配相应的ucf约束

 

Step 6:GUI之外的更改

    关闭当前工程。

    用文本编辑器打开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

    重新打开工程,电机Generate BitStream生成.bit文件,然后Export Design to SDK。

    在SDK里面,可以用模板“Memory Tests”创建一个工程,测试确认MIG工作正常。

 

Zynq PL侧的DDR PHY的最高速率为1866Mbps。如果配置MIG的’PHY to Controller Clock Ratio’为4:1,MIG的AXI端口的最高工作频率只能到233.33MHz。如果PL里面的IP对MIG的访问数据量比较大,这种配置有优势。如果CPU通过MIG访问扩展内存比较频繁,就需要提高MIG的AXI端口的工作频率。

 

以下面的MIG配置为例:

AXI接口: 250MHz, 32bit

Memory接口: 500MHz, 64bit

 

在上面的基础上,要做以下修改:

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对应的信号的名字也删除前缀。这可以帮助工具完成时序收敛。

 

在新的配置下,CPU通过MIG访问扩展DDR3内存的吞吐量会得到一定的提升。通过分析Timing Analyzer发现,MIG的工作频率在250MHz的基础上还有小幅的提升空间。

 

==END==

 

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了