全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

可例化的XPM方案解析

时间:2020-10-30 15:39

人气:

作者:admin

标签: XPM 

导读:首先,什么是XPM?可能很多人没听过也没用过,它的全称是Xilinx Parameterized Macros,也就是Xilinx的参数化的宏,跟原语的例化和使用方式一样。可以在Vivado中的Tools- Language Templates中查看都...

首先,什么是XPM?可能很多人没听过也没用过,它的全称是Xilinx Parameterized Macros,也就是Xilinx的参数化的宏,跟原语的例化和使用方式一样。可以在Vivado中的Tools- > Language Templates中查看都有哪些XPM可以例化。

从上图中可以看出,目前可以例化的XPM主要有三种:跨时钟域处理、FIFO和MEMORY。

我们以MEMORY为例,在Vivado中可以通过下面四种方式调用FPGA中的存储单元,均可以选择是Block RAM还是Distributed RAM.

1. RTL代码

我们在定义一个memory变量后,可以在前面指定其资源类型:

(* ram_style = "block" *)reg [3:0] mem_bram [15:0] ;
(* ram_style = "distributed" *)reg [3:0] mem_dram [15:0] ;

使用RTL代码的方式非常灵活,但由于少了很多的控制项,综合后的结果可能不是最优的。

2. 原语(Primitive)

使用原语也可以例化MEMORY,但没见几个工程师这么用过,因为接口实在太多了,所以实用性不高。

3. IP Core

这种方式应该是使用最多的,但缺点也很明显:

当修改参数时需要重新打开IP,然后Generate;

不同版本的Vivado之间还需要进行Update;

有时没注意到IP中的参数,导致结果并不是自己想要的;

最近在调试中就碰到这样一个问题,FIFO中的默认输出延迟是1,即输出数据比读使能晚一拍,而且Output Registers默认是不勾选的。但这个选项不知道什么时候被改了,导致程序最终的输出结果一直有问题,在debug时一直检查的是RTL代码,直到定位到FIFO模块时才发现了这个问题。如果此时我们使用的是XPM,那从代码中很容易就能看出来
错误。

4. XPM_MEMORY

相对而言,XPM的缺点就不是很明显,纯代码例化的方式更加灵活、简单。

编辑:hfy

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信