平时积累的FPGA知识点(1)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐丹FPGA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值