1 AXI4 Interface Block Memory Generator的使用
我看了很久axi的Memory 也该自己写一个,找找相关代码和仿真的源码。
https://blog.csdn.net/liuhandd/article/details/115001224这是个例子 我在电脑上新建个项目study/project_1实际做一下
实例化这个ip后,等一会,等它自己综合完。右键就可以open example design了。
在新的example design的工程界面下,可以点击RTL ANALYSIS–>open elaborated design看到schematic。
2 非对齐操作
https://jishuin.proginn.com/p/763bfbd293ac
编译器倾向于根据变量的大小(size)将其放置在与其大小对齐的偶数地址上
怎么理解这句话呢?举个例子,如果我们没有给出特别的指示,编译器会倾向于:
将uint32_t(4个字节)对齐到4字节地址上,0x0、0x4、0x8、0xC…,也就是我们常说的对齐到字(Word Aligned);
将uint16_t(2个字节)对齐到2字节地址上,0x0、0x2、0x4…也就是我们常说的对齐到半字(Half-word Aligned);
将uint64_t(8个字节)对齐到8个字节上,0x0、0x8… 也就是我们常说的对齐到双字(Double Word Aligned);
3 DDR IP
ddr3的IP里可以选择是否带controller,但必须是带phy的,phy就是硬核了。注意看手册。
我查的文章:
1、控制器单元:包括输入命令解析,模式配置&控制部分;
2、行地址选通单元:行激活通过此处操作;
3、Bank控制逻辑:行/列地址解码用到bank选通
4、列地址选择单元,读写操作同时在打开列地址的时候送到1;
5、锁存与控制逻辑:刷新与预充电用到该模块;
6、内部存储阵列,此处分8个bank,每个bank分16384行,128列;
7、读写数据缓存及接口驱动; dq数据在此变换位宽后内外交互;
DDR基础操作步骤:
启动:上电->解复位->初始化->ZQCL->LEVELING->IDLE(READY)
读:IDLE—>行激活—>读数据(1次或多次突发)—>预充电—>IDLE
写:IDLE—>行激活—>写数据(1次或多次突发)—>预充电—>IDLE
刷新:IDLE->REF->IDLE
自刷新的进入与退出:IDLE->SFR->IDLE
定期校正:IDLE—>ZQCS—>IDLE,一般外部温度或电压改变时操作
动态更改配置:IDLE->MRS/MPR->IDLE
4 OCM
在zynq里使用OCM的时候,怎么可以把OCM重映射到高位地址0xfffc0000-0xfffffe00,我在设置完映射地址以后,ARM测就会进去死循环
我查的:
CPU0和CPU1上分别跑了自己的程序。这篇文章中我们需要让两个CPU之间能够进行通信,传递数据可以采用DDR或OCM(on chip memory)。OCM是一个单端口的存储空间,但是你可以利用ZynqSoC的DMA并行访问OCM其他的交换资源模拟出一个双端口的存储空间。要实现这个机制,访问必须是128位数据对齐,不管在任何情况下都要满足。这个方式能够实现较高的吞吐量,因为DMA可以实现高效的传输大量数据。
OCM共256KB按照64KB分为4块,其中前三块在SDK中表述为RAM0占192KB处于地址空间的最开头和DDR共用地址空间,最后一块64KB处于地址空间的最后。OCM可以组织成128位的字存储空间,根据PS部分定义的地址空间OCM存储空间可以划分为四块64k字节的不同位置的存储区域。初始配置是将前三个64k字节的存储块映射到PS部分起始的地址空间,最后一个64K字节存储块映射到PS部分的末端的地址空间
ZYNQ固化时,正常情况下都需要DDR参与,但是有时硬件设计时,可能将DDR去掉或设计出错,这将导致ZYNQ无法正常固化,之前有写过一个使用静态链接库进行无DDR固化的文章,当时那个是压缩了FSBL的相关代码只保留FLASH模式下的功能,对于其他模式可能无法正常使用,本文将无DDR固化的情况进一步进行介绍,讲解如何修改FSBL实现ZYNQ的程序固化,给出一个demo进行演示测试。
5 failfast
用于查询failfast的design utilities是在tool->Vivado store 或者tcl store安装
failfast这个报告好用
https://www.likecs.com/show-44843.html
平台:Vivado16.4
项目:EADCH_2.3.0_Beta
根据《UltraFast Design Methodology Timing Closure Quick Reference Guide 》(UG1292)中的设计流程,第一个阶段是"初始化设计流程检查",该阶段主要要读懂三个操作生成的报告,这三个操作是:
report_failfast
report_timing_summary
report_methodology
report_failfast生成的项目报告,查看哪些项是REVIEW,然后针对每项内容是什么含义,导致的可能原因,建议的优化方法等都可以从UG949中查看,不断反复尝试,直至可以接受的结果为止。
参考文献:
UG949
UG1292