【问题标题】:how to optimize (reduce) the latency in the verilog HDL code (hardware) generated by the MATLAB HDL CODER add-on from a given Simulink model?如何优化(减少)由给定 Simulink 模型的 MATLAB HDL CODER 插件生成的 verilog HDL 代码(硬件)的延迟?
【发布时间】:2020-01-02 09:48:38
【问题描述】:

提前致谢,

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

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

Link to download the files

【问题讨论】:

  • 您无法从仿真中找到最大工作频率。您需要综合代码并从中找出最大工作频率是多少。请注意,FPGA 设计人员通常会尽量避免使用浮点数,因为它们速度非常慢并且会占用大量资源。
  • 好的!其实我的意思是如何在转换前使用管道设置

标签: matlab verilog simulink hdl-coder


【解决方案1】:

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

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

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

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

  • 提高时钟频率。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    相关资源
    最近更新 更多