有关IP核的配置,上一篇文章写的很详细。这里主要写自己使用的过程中需要注意的地方。
1
2
这里的数据位宽可选,不如32bit 256bit 512bit。那为什么这里就用了256bit呢?当然也不是随便选的。
一种算法是,芯片800M 时钟,双沿触发,数据位宽32bit。IP核生成的用户时钟是芯片时钟的4分之一,也就是200M。(800 * 2*32)/200 = 256 . 一定要满足这样的关系,否则DDR初始化时可以过,数据读写的时候就会出错。
3
4
关于复位,IP核中有好几处复位。这里配置的system reset 其实就是IP核中的sys_rst。这里配置的是高复位,也就是sys_rst信号先高后低。这里也需要注意,如果前期sys_rst复位时间过短,初始化也是过不去。我这里代码写了高电平时间是740us ,当时也没有依据,随便写的,可以自行再改大。
IP核自己还有一个复位输入 aresetn,低复位。我代码里直接写的就是sys_rst取反直接给这里用。
IP核还有一个输出的复位ui_clk_sync_rst 。这是IP核自己的复位信号,高复位。
5
set_property DCI_CASCADE {32} [get_iobanks 33]
其中,BANK 33 是 地址和控制信号所在bank。网上看这句话的意思是 ,两个bank之间电压关联的意思。
6
引脚分配可以自己写,如果有现成的,可以直接导入
IP 核里面还有其他一些变量没有说明,基本不用变,如果调试失败,详细看看,再做更改。