0

我打算生成一个应用于 DSP 的方波。

我已经编写了这些代码并将它们放入嵌入式 Matlab 函数中。

function y = fcn(u)
    %#eml
t=0:0.001:1

h = sign(sin(125600*t+u));

y= (h+1)/2

其中,u是一个常数值0.582,用于移动方波。

问题在于模拟的输出,而不是得到方波,我只看到两条直线y=o and y=1

请让我知道我无法获得方波的问题在哪里?

请注意,方波的频率必须为 20 kHz。因此,我将采样时间调整为1e-7 s。而且它的幅度在 0 和 1 之间此外,由于这个信号必须传输到 DSP 板,在“求解器选项”中,我选择了类型:“固定步长”,求解器:“离散(没有继续状态)”。

非常感谢。

4

2 回答 2

1

这在很多层面上都是错误的。

首先,您永远不会在 MATLAB 函数中定义时间向量,这就是 Simulink 引擎所做的。将时间作为输入传递给 MATLAB Function 模块,并使用 Clock 模块生成时间输入。

其次,以上对于仿真来说很好,但听起来您正在从 Simulink 模型生成 C 代码以在您的 DSP 上(实时)运行它。这不是我的专业领域,但根据记忆,我认为您需要启用“绝对时间”或类似的东西才能使上述代码生成。但是,我认为这取决于目标,所以我不确定这是否适用于您的 DSP。

于 2014-01-21T09:57:55.200 回答
0

在你的函数类型 plot(t,y) 最后。您正在生成 20khz 方波(假设您在 1e-7 采样)。基本上你的生成它正在工作。

现在,您正在使用的 DSP 板是什么/与您的问题相关的任何信息?

当您说“求解器”时,我也不知道您指的是什么。

“模拟”是示波器还是程序?无论哪种方式,它可能都没有正确触发?有边沿触发选项吗?

于 2014-01-21T05:28:44.093 回答