Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优化(减少)由MATLAB HDL编码器插件从给定Simulink模型生成的verilog HDL代码(硬件)中的延迟?_Matlab_Verilog_Simulink_Hdl Coder - Fatal编程技术网

如何优化(减少)由MATLAB HDL编码器插件从给定Simulink模型生成的verilog HDL代码(硬件)中的延迟?

如何优化(减少)由MATLAB HDL编码器插件从给定Simulink模型生成的verilog HDL代码(硬件)中的延迟?,matlab,verilog,simulink,hdl-coder,Matlab,Verilog,Simulink,Hdl Coder,提前感谢, 我有一个简单的Simulink模型,它接受IEEE-754格式的32位数字,并添加相同的数字,从而再次以32位宽的IEEE-754格式提供输出。我使用了MATLAB的HDL编码器插件,并为其生成了Verilog HDL代码。当我为同样的代码编写测试台时,我发现我从这段代码中得到的延迟是100ns。但是有没有一种方法我可以把它进一步缩小,比如说10纳秒 下面我附上我用来生成Verilog HDL代码的Simulink模型,以及生成的Verilog文件。另外,我附加了一个模拟的屏幕截图,

提前感谢,

我有一个简单的Simulink模型,它接受IEEE-754格式的32位数字,并添加相同的数字,从而再次以32位宽的IEEE-754格式提供输出。我使用了MATLAB的HDL编码器插件,并为其生成了Verilog HDL代码。当我为同样的代码编写测试台时,我发现我从这段代码中得到的延迟是100ns。但是有没有一种方法我可以把它进一步缩小,比如说10纳秒

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

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

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

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

  • 减少管道阶段的数量

  • 增加时钟频率

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

现在事情变得棘手了:
大多数情况下,你无法真正加快速度。某些功能需要一段时间来计算。一些算法可以通过使用更多的并行资源来加速,但只能达到一个极限。加法器就是一个很好的例子:你可以使用ripple-carry、carry-look-ahead和更先进的技术,但你不能无限加速。(否则,现在的CPU将以Terra Hz的速度运行)

我怀疑最终你会发现做IEEE-754加法器不需要时间。这可以是兆赫的X个时钟周期。B MHz的时钟或Y时钟周期。但是X乘以A和Y乘以B差不多


你所能做的就是把大量的计算输入到你的管道中,这样每个时钟周期都会有一个新的计算出来。但是延迟仍然存在。

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