我有一个特别大的信号处理转换,需要从matlab移植到VHDL。它绝对需要某种资源共享。经过一点计算,我得出以下结论:
- 512英尺64点
- 41210乘法加法运算
考虑到最大的Virtex 6 FPGA具有约2000个DSP48E块,我知道我可以共享资源以便多次重复使用资源。执行时间并不是真正的问题,就FPGA而言,处理时间可能会花费相对较长的时间。
查看资源使用情况,使用radix-2 lite架构可获得4dsp块/ FFT操作= 2048个DSP块,总计约43k。最大的Virtex FPGA具有2k块,或20个操作/复用器。
显然,将如此大的多路复用器包括到织物中也将占用很多片。在哪里可以找到该限制的上限?我无法无限地共享FPGA资源。41210乘数是否太大?我如何计算太大的东西?
我还查看了其他资源(切片,布拉姆斯等)。Radix-2 Lite还提供4 x 18k brams / fft = 2048 brams,最大的Xilinx FPGA包含2128 Brams。非常临界。我担心我的设计太大了。
更新:
有关设计本身的更多信息。我无法详细介绍,但是我可以提供以下内容:
Initial conditions -> 512 ffts -> 40k multipliers ---------|----> output data to host
^------re-calculate initial conditions----|
输出数据速率规范:“比Matlab模拟更快”
明智的计算,这就是我的位置:
FFT阶段:简单。我可以实现1/2/4/8 FFT,将结果存储在SDRAM中,然后再访问。相对较小,即使花费很长时间也没关系。使用radix-2 lite,我可以获得2个DSP48E和2个18k BRAMS / FFT。流提供6个DSP48E 0BRAMS / FFT。无论哪种情况,就FPGA资源而言,64点FFT都很小。
乘数:这是我的问题。乘法输入来自查找表或FFT数据。它实际上只是一大堆乘法加法。没有太多可优化的地方。不是过滤器,但具有类似于过滤器的特征。
考虑到FPGA上的资源共享,数学计算如下:一个LUT-6可用作4路复用器。N路M位多路复用器的公式如下:
N*M/3 = number of luts, or N*M/12 = slices (4 LUTS/slice).
为我的实现整理数字并没有取得好的结果。90%的virtix-6系列没有足够的切片来共享其DSP来执行40k运算。