FPGA 上 DDR3 管脚如何分配

不论是哪一款 DDR ,DQ 在组内都是可以互换的,       因为数据的具体内容只要读入和读出一致即可

1 确定占用的 bank

在 pin_planer 界面,首先右键打开 show_banks,确定好 DDR3 要占用的 banks,使用1.5v供电,记住 bank位置

每组 DDR3 只能使用同一个 column,即bank号里的 数字 必须相同

所有pin尽量在1个bank上,以减少爬坡时间提高频率,但是每个bank只能支持 1组 lanes+ 控制管脚或者 四组 lanes,没有控制管脚),若大于1组 lanes 则需要多个bank

每个lane即 DQx8 + DM + 差分 DQS + dummy 共12个pin,即一个DQS group,如下图

如果要使用多个 bank,需要 bank号连续,控制管脚必须位于多个 bank的中间,所有控制管脚在同一个bank 上

2  分配所有 DQS group

一对S 即为 DQS和DQSN 管脚,10个Q为 8个DQ 和 1个DM,另外一个冗余

DM必须和某一个 DQ组成差分对,其余没有要求随意

3  分配 pll_ref_clk , rzq ,  任一个addr[x]

完成所有 DQS group相关pin 后, 右键打开 show_hard_memory_interface_pins DDR3 DDR3_scheme1 参考实例

指针随意停留在某一个 pin上,可以看到 此pin 在参考实例中的分配名称,如下图

每组 bank中 addr[0-14],ba[0-3],  mem_reset_n, 和 we 四种管脚是唯一的,检查 DQS group 是否占用了此四种管脚,若冲突,修改 DQS group 到别的 group 中

将任意 某一个 addr 分到 对应管脚上

将 pll_ref_clk 分配到 某一个差分输入clk 管脚上,ddr所在的 所有bank 都可以,不要占用 上述  唯一管脚

rzq 分配到 同一column,相同电压bank 的 rzq管脚上

4  编译,自动完成剩余 i/o 填充

然后 assignment → back_annotake assignment ,  再次打开 pin_planner就会发现所有的pin分配ok

官方文档 https://www.intel.com/content/www/us/en/programmable/documentation/hco1416492180052.html#hco1416490861769

xilinx ddr 管脚分配原则:

xilinx 的 ultrascale系列分配规则在 DDR_ip文档 pg150 的 第91页上,7系列在 ug586 的 P193,详情见上传的资料 

不同点:

1    DQS与 DM管脚是固定的,x8时 必须在 N7/N8 与 N0 上

2  控制管脚是可以随意换的,包括 DQ占据的Byte lanes中没有使用的N0/N12管脚,但是必须要在同一个bank(reset除外)

7系列最多支持连续的三个bank,且要求 ctrl/addr 在中间bank;ultrascale系列最多支持连续的5个bank,最大9个compent,ctrl/addr 可以在任意bank

注意ref_clk管脚要从专用时钟进入,ck_t/c要从差分出

3 注意sparten7系列ddr3  需要两组clock,

在vivado中例化后的名字为的sys_clk实际上是其他情况下的 pll_ref_clk,倍频后为ck_p/ck_n,然后8分频为 ui_clk.

在vivado中例化后的名字为的 ref_clk用来做ddr中 iodelay的时钟,调整接口时序,其他片子没有单独的iodelay时钟,是共用的 pll_ref_clk

3  用 vivado2019.1 及以上版本,zynq7000系列  ps 部分  的管脚是可交换的,但是 ultrascale 及以上系列 没有展示管脚,所以不能换

 lvds 管脚分配规则:

altera 的 tx 和 rx,和2.5v的其他电平 可以在同一个bank,但是tx和rx的如果要在同一个bank,ip里 iopll 的ref_clk 必须要用 globle 的或者在不同的bank

xilinx  的 tx 和 rx,和2.5v的其他电平 可以在同一个bank,但是 byte_lane 2的N0 必须是 rx,任意一个byte_lane的N0如果是tx,那么这个byte_lane整个bank都是tx,是rx或者nc则没有限制

  • 10
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
FPGA(Field-Programmable Gate Array)可以实现DDR3(Double Data Rate 3)内存。DDR3是一种内存规格,属于SDRAM(Synchronous Dynamic Random Access Memory)家族的内存产品。DDR3在DDR2的基础上实现了更高的性能和更低的电压。在FPGA中实现DDR3内存需要进行一些设置和分配。可以通过手工分配或导入现成的管脚分配文件来设置DDR3的数据、地址和控制信号的FPGA管脚分配和IO电平。 DDR3内部结构包括逻辑控制单元、行地址选通单元、内部存储阵列、bank控制逻辑单元、IO锁存和DM标记单元、数据读写驱动接口和列地址选择单元。这些模块共同协作完成DDR3的读写操作。在7系列FPGA芯片中,Xilinx提供了一个DDR控制的IP核,称为MIG IP控制器,方便用户通过MIG控制器读写DDR存储器。DDR3控制器包含用户接口模块(User interface Block)、存储器控制模块(Memory Controller)和DDR3的物理接口(Physical Layer)。通过使用vivado创建DDR3的MIG控制器,可以按照一定的步骤进行设置和配置。 总结就是,FPGA可以实现DDR3内存,需要进行管脚分配和设置,并可以利用MIG控制器进行读写操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [FPGA读写DDR3](https://blog.csdn.net/csdnqiang/article/details/108081393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值