基于Qsys的SDRAM控制器

1.Intel FPGA中SDRAM控制器IP示意图

  • 相比LED/数码管等简单外设,SDRAM芯片配置显得复杂许多,当然可以自行编写状态机实现初始化和读写控制,但是为了加快开发速度,可以借助Intel提供的基于Qsys系统的SDRAM控制器IP并进行简单的设置来实现对外设SDRAM的读写操作。
    基于Qsys的SDRAM控制器_第1张图片
  • PLL phase shift:使得输入SDRAM控制器和外部SDRAM芯片的时钟有一定的相位偏移(需要看具体SDRAM的手册),满足时序要求。
  • Avalon-MM Slave Port:通过在Qsys中配置NIOS CPU和SDRAM控制器连线完成对SDRAM的数据和命令写入。
    • address:地址线,在此处会把SDRAM的行列段地址映射成一种连续的地址形式;
    • data:数据线,宽度与SDRAM数据线位宽相同;
    • Control:读写信号;
    • waitrequest:请求等待,发送读请求或者写请求时,若该位为高则本次请求不会被处理;因为SDRAM的操作比较繁琐,包括刷新/预充电等,不同于片上的RAM/FIFO发送请求或者地址立刻出数据,也许片外SDRAM正在处于刷新状态,因此必须等待其处理完成自身的任务之后才可以处理FPGA发来的读写请求。
    • readdatavalid:当读取SDRAM芯片时,只有当本信号为高,读取的数据才是有效数据。
  • interface to SDRAM pins:同外部SDRAM的引脚接口。

2.Qsys SDRAM配置

  • Memory Profile
    基于Qsys的SDRAM控制器_第2张图片
    根据所使用的SDRAM数据手册查询相关信息填入即可。通过检查左下角系统算出的SDRAM大小与实际器件大小是否相符来判断数据填入是否有误。
  • Timing
    基于Qsys的SDRAM控制器_第3张图片
    从上到下解释参数
  • 初始化时需要刷新几个周期,可以查看SDRAM芯片数据手册。一般是要求大于等于2周期。
  • 间隔多少us执行一次刷新的命令,比如某器件每32ms刷新一次,每次刷新一行,一共有11bit表示行数,因此总的刷新指令周期=32000/(2^11)=15.625us。值得注意的是,本页面下所有设置的时间都是以Qsys系统输入时钟周期为参考的,也就是说并不一定能够达到小数点后3位的精度,但是会提前执行刷新
  • 在上电后需要延时多久后执行初始化,查手册。
  • 刷新指令持续时间(Trfc),指令周期,查手册,可以比手册的时间长一些。
  • 预充电指令持续时间(Trp),预充电周期,查手册。
  • 行列延时(Trcd),查手册,可以比手册的时间长一些。
  • 访问时间(Tac),查手册,根据上面的CAS的latency来选择参数。
  • 写回周期(Twr),差手册,可以大于手册要求时间。

3.SDRAM配置复用

  • 通过将上述设置信息保存产生.qprs配置文件,在软件安装路径下寻找到sopc_builder_ip/SDRAM_controller文件夹下的.qprs,将刚刚产生的配置信息复制粘贴到系统文件中即可在下次调用SDRAM IP时选中本次保存的配置信息。避免重复去查手册。

你可能感兴趣的:(ASIC/FPGA设计基础)