我的一位朋友需要在硬件中实施一些统计计算。 她希望使用VHDL完成它。
(穿过我的心,我还没有用VHDL编写一行代码,对其细微之处一无所知)
特别是,她需要直接模拟MATLAB的betainc
函数。
这样做有没有好的方案? 任何有关实施的提示也受到高度赞赏。 如果它根本不是一个好主意,请告诉我它。
非常感谢!
答案 0 :(得分:6)
在Xilinx工具集中没有可用的核心执行不完整的beta功能。我不能代表其他可用的工具集,虽然我怀疑有这样的事情。
Xilinx提供的是一组信号处理模块,如乘法器,加法器和RAM模块(其中包括滤波器,FFT),它们可以一起用于实现各种自定义信号变换。
为了完成这项工作,需要完全理解要应用的变换的内部工作原理。
良好的第一步是在matlab中实现“手动”功能作为概念证明:
您的朋友可以尝试仅使用乘法器和加法器等基本运算符来实现该功能,而不是使用matlab中的内置函数。
可以将结果与内置函数生成的结果进行比较。
然后可以使用提供的构建块将概念移动到VHDL。
对于不完整的beta函数执行此操作不适合胆小的人,但可以这样做。
答案 1 :(得分:2)
据我所知,没有工具允许VHDL和matlab的接口。
但是VHDL和C的接口相当简单,所以如果你可以在C中实现你的代码(MATLAB的betainc函数),那么可以用FLI(外语接口)轻松完成。
如果您使用下面的modelsim链接可能会有所帮助。
答案 2 :(得分:2)
首先要警告,如果您之前没有进行任何VHDL / FPGA工作,这可能不是最好的起点。使用VHDL(和其他HDL语言),您基本上是在描述硬件,而不是在处理器上执行的顺序命令行(就像使用C / C ++一样)。因此,在进行FPGA开发时,您需要完全不同的技能和思维。仅仅因为某些东西可以用VHDL编写,并不意味着它实际上可以在FPGA芯片中工作(可以合成)。
据说,Xilinx(FPGA芯片和开发工具的主要制造商之一)确实提供了System Generator封装,它与Matlab接口并可以自动生成FPGA芯片的代码。我自己没有用过它,所以我不确定它是否适用于你朋友的情况 - 但它可能是一个很好的起点。
System Generator User guide(链接在以前链接的页面上)也提供了一般的FPGA芯片简介,以及在Matlab中使用它的背景。
答案 3 :(得分:1)
你可以自己写。然而,不完整的β函数是不可或缺的。对于参数的许多值(只要两者都大于1),它表现得相当好。但是,当任一参数小于1时,在端点处出现奇点,使问题有点令人讨厌。关键是,除非你在数值分析方面有扎实的背景,否则不要自己写。
无论如何,C语肯定有很多版本可供使用。 Netlib必须有一些东西,或者看看Numerical Recipes。或者从MATLAB编译它。然后将其链接为nav_jan建议。
答案 4 :(得分:0)
作为VHDL的替代方案,您可以使用MyHDL来编写和测试您的beta函数 - 它可以生成可合成的(即可以进入FPGA芯片)VHDL(或者您想要的Verilog)后端。
MyHDL是一个基于Python的额外模块集,允许对硬件进行建模,验证和生成。与VHDL相比,Python将是一个更熟悉的编写验证代码的环境(它缺少您在编程语言中可能认为理所当然的许多抽象数据类型)。
测试中的代码仍然必须使用“硬件思维模式”编写,但这通常是比测试环境更小的代码片段,因此在某些方面比解决如何解决验证限制更少麻烦VHDL。