如何实现这个函数不动点和函数生成hdl代码吗?

2视图(30天)
我有下面的功能,我想生成hdl代码并将其转换为virsualization定点在仿真软件中,我得到了错误(exp和spdiags)不支持对hdl代码生成。金宝app金宝app我也有一个简单的testbench调用这个函数。
f
涂油礼[c,计数]= sfft (x)
%输入:x,可以是一个向量(行或列)或矩阵。当x =
%的矩阵,傅里叶变换columnwise执行。
% x的长度是2的幂。如果不是这样,
% 0将被填充的x增加它的长度
% 2的幂。多维数组的输入
%的金宝app支持。
%
%输出:c,复杂的傅里叶系数。它保留了
%的尺寸当补零不应用于x。
%如果补零,c将长或高
比x %。
%
全球%计算乘法的数量。
% %准备递归调用。
数= 0;zeropad = false;
[siz1 siz2] =大小(x);
如果siz1 = = 1% x是一个行向量
n = siz2;
字母l = log2 (n);
如果国防部(哦,1)~ = 0,
字母l =装天花板(魔法);n = 2 ^魔法;x (+ 1: n) = 0;zeropad = true;
结束
x = x (:);% recur_sfft需要一个列向量。
c = recur_sfft (x);
c = c。';
其他的% x是一个列向量或矩阵
n = siz1;
字母l = log2 (n);
如果国防部(哦,1)~ = 0,魔法=装天花板(魔法);n = 2 ^魔法;x(终端+ 1:n,) = 0;结束
c = recur_sfft (x);
结束
如果zeropad
警告(输入一直在增加其长度到下一个2的幂。)
结束
函数c = recur_sfft (x)
全球
n =大小(x, 1);
如果n > 2
c_even = recur_sfft (x (1:2: n));% (0:2:n - 1) + 1
c_odd = recur_sfft (x (2:2: n));% (1:2:n - 1) + 1
%甚至意味着(0:2:n - 1),奇怪意味着1:2:n - 1,但他们需要添加1满足基于Matlab的指标。
k = 1: n / 2;
w = exp(我/ n -π* 2);
D = spdiags (w。^ (k - 1)。”,0,k(结束)、k(结束));
c_odd = D * c_odd;
数=数+ k(结束)*大小(c_odd 2);
%计算乘法
%填写下半年c
:c (k + n / 2) = c_even-c_odd;
%也预先分配内存上半年的c
%现在做上半年的X。
:c (k) = c_even + c_odd;
其他的
%达到底部,2点的x。
c = [x (: 1) + (2:)
x (1:) - x (2:)];
结束

答案(1)

Bharath Venkataraman
Bharath Venkataraman 2022年8月3日
编辑:Bharath Venkataraman 2022年8月5日
对于高密度脂蛋白,您将需要实现流媒体方式。租赁看看FFT流模型中提供 这个例子 。你需要修改它垫在零输入的大小小于FFT的大小。