signal-processing - 如何使用 LogiCORE DSP48 宏?
问题描述
我想学习如何使用 LogiCORE DSP48 Macro。我正在阅读 Xilinx 文档,但我无法很好地理解如何使用 DSP48 宏开始我的第一个设计。谁能帮我做一个简单的设计来更好地理解这个IP核吗?
提前致谢!
解决方案
在许多情况下,您将通过编写包含加、减和乘的 Verilog/VHDL 表达式来使用 DSP48。
x = a * b + c
上述表达式的一个问题是乘法和加法发生在一个循环中。如果操作可以流水线化,您可以以更高的频率运行表达式。Vivado 有时可以跨寄存器重定时这些表达式,以利用 DSP48 流水线寄存器。
但是,我理解想直接使用 DSP48。您可以像其他 RTL 模块一样实例化 DSP48。您正在使用的 FPGA 逻辑的 DSP Slice 用户指南中描述了端口、参数和行为。
wire [47:0] c;
wire [24:0] a;
wire [17:0] b;
DSP48E1#() dsp(
.a(a),
.b(b),
.c(c),
.p(x),
.opmode(5),
.alumode(0)
);
这个实例是从我的一个内部产品实现中复制而来的。它是完全流水线的,因为我的目标是 500MHz 操作。由于其他组合路径,仅达到 400MHz。
对于 Xilinx 7 系列: DSP48E1 Slice 用户指南
对于 Xilinx Ultrascale: DSP48E2 Slice 用户指南
推荐阅读
- python - 个人资料照片未更新 Django 3
- python - 如何通过渲染模板将上标“2”(m2或ft2)从django返回到模板?
- apache-nifi - 为什么一台机器上的NIFI Flow偶尔不能同步另一台机器?
- azure - 现有应用程序的配置模式失败,但适用于新创建的应用程序
- android - 验证受信任的 Web 活动以隐藏应用程序中的地址栏
- excel - 双击复制单元格并自动粘贴到另一张纸上的不同单元格
- c# - 如何在静态构造函数中使用 ILogger
- arrays - Unity - 在方法中添加多个数组参数(用于添加多个项目)
- r - 将多行转换为多列(长到宽格式不起作用(?))
- android - Android:当应用程序在前台时,Firebase 推送通知不同的图标,而当应用程序在后台时,另一个图标