单片机萌新
我主要从工程实践角度说。
自己写控制器,最难的是调试。当初始化失败或读写出错时,你需要一套强大的调试手段。比如,在FPGA里嵌入ILA,同时抓取命令总线、地址总线和数据总线信号,分析波形。这要求你对协议很熟。
具体技术难点:
- PHY接口:需要处理IO延迟、时钟相位调整。Xilinx的IDELAYCTRL和IODELAY原语要用好,这部分文档在UG471和UG571。
- 命令调度:采集卡是持续写,但DDR3读写有行冲突,频繁换行会导致性能下降。最好设计成尽量保持同一行,写满后再预充电换行。
- 刷新中断处理:刷新期间不能进行任何操作,如何避免影响数据流连续性?通常用深FIFO缓冲数据。
开源设计:可以看看LiteX项目中的LiteDRAM,它支持多种FPGA和DDR3,代码结构清晰,适合学习。但注意,它依然依赖一些平台特定的原语。
最后,如果为了学习,强烈支持;如果为了项目尽快完成,还是买IP吧。
