小编bup*_*d82的帖子

SP605 Spartan 6 DDR3寻址

下一篇文章很长,但是由于我已经有一个多月无法使SP605板与DDR3正确交互,因此希望这对在我遇到相同情况的其他人也很有用。我可以肯定的是一个简单的配置或概念性错误,但我很乐意尽快解决此问题。

===场景===

我创建了一个USB-UART接口来与FPGA通信并控制DDR3。使用ISE中的IP生成器,我生成了MIG包装器,然后设计了内存接口控制器。但是,我参考了手册ug388和ug416,但是我无法使DDR3发挥预期的作用。

===问题陈述===

通过读写命令的突发长度,我能够从DDR3取回数据,但是寻址方案似乎不正确,因为数据在地址0和1、2和3、4和5中重复等等。另外,例如,每当我写入地址0时,都不会改变。然后,当我写入地址1时,地址0和1都用我刚刚发送的数据值更新。由于这种耦合效应,我似乎正在“丢失”一半的存储空间。

=== DDR3 IP配置===

下面列出了使用IP生成器的DDR3的设置-考虑到SP605板的情况。总之,我激活了DDR3 Bank 3并将Port0配置为32位双向。

内存选择:

  • 启用AXI界面:未选中

  • 使用扩展的MCB性能范围:未选中

  • 存储区3的内存类型:DDR3 SDRAM

  • bank 1的内存类型:无

C3的选项– DDR3 SDRAM

  • 频率:400 MHz

  • 内存部分:MTJ41J64M16XX-187E

C3 – DDR3 SDRAM的内存选项

  • 输出驱动器阻抗控制:RZQ / 6

  • RTT(标称)– ODT:RZQ / 4

  • 自动自我刷新:已启用

C3的端口配置– DDR3 SDRAM

  • 两个32位双向和四个32位单向端口

  • 端口0:选中

  • 端口1:未选中

  • Port2:未选中

  • 端口3:未选中

  • Port4:未选中

  • 端口5:未选中

  • 内存地址映射选择:行库列

C3的FPGA选项– DDR3 SDRAM

  • 内存接口引脚端接:校准的输入端接

  • 选择RZQ引脚位置:R7

  • 选择ZIO引脚位置:W4

  • 内存控制器的调试信号:禁用

  • 系统时钟:差分

===数据结构===

我从Matlab发送了一个64位命令,该命令应根据此命令中提供的地址和数据写入或读取DDR3。

wire [00:00] cmd_instruction = usb_data[63:63];         // ‘0’ = write; ‘1’ = read
wire [27:00] cmd_address = usb_data[62:37];             // 26-bit address
wire [31:00] cmd_data …
Run Code Online (Sandbox Code Playgroud)

memory verilog spartan interface xilinx

5
推荐指数
0
解决办法
427
查看次数

标签 统计

interface ×1

memory ×1

spartan ×1

verilog ×1

xilinx ×1