首页 > 解决方案 > 如何优化(减少)由给定 Simulink 模型的 MATLAB HDL CODER 插件生成的 verilog HDL 代码(硬件)的延迟?

问题描述

提前致谢,

我有一个简单的 Simulink 模型,它采用 IEEE-754 格式的 32 位数字并添加相同的数字,从而再次以 32 位宽 IEEE-754 格式提供输出。我使用了 MATLAB 的 HDL CODER 插件并为它生成了 Verilog HDL 代码。当我为它编写一个测试平台时,我发现我从这段代码中得到的延迟是 100ns。但是有没有办法可以将它进一步减少,比如大约 10ns。

下面我附上了我用来生成 Verilog HDL 代码的 Simulink 模型,以及生成的 Verilog 文件。另外,我附上了模拟的屏幕截图,以防您不想浪费时间运行脚本

加法模拟

下载文件的链接

标签: matlabverilogsimulinkhdl-coder

解决方案


我的观点是如何在转换前使用管道设置

我假设“管道设置”是一个 MATLAB HDL 生成器参数。

基本上你所做的是“尝试”:使用管道设置并合成代码。如果你有松弛,你可以:

  • 减少流水线阶段的数量。

    或者

  • 增加时钟频率。

(对于负松弛,您使用反向方法)

现在事情变得棘手
了:大多数时候你不能真正加快速度。某个功能需要时间来计算。一些算法可以通过使用更多的并行资源来加速,但只能达到一个限制。加法器就是一个很好的例子:你可以有波纹进位、超前进位和更高级的技术,但你不能无限加速。(否则这些天的 CPU 将以 Terra Hz 运行)

我怀疑最后你会发现做你的 IEEE-754 加法器需要 T 时间。这可以是 A MHz 的 X 个时钟周期。B MHz 的时钟或 Y 时钟周期。但是X乘以A大约等于Y乘以B。

您可以做的是将大量计算注入您的管道,以便每个时钟周期都有一个新的计算出来。但是延迟仍然存在。


推荐阅读