我打算生成一个应用在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板,在“求解器选项”中我选择了类型:“固定步”和解算器:“离散(不继续)状态)”。
非常感谢。
答案 0 :(得分:1)
这在许多层面都是错误的。
首先,你永远不会在MATLAB函数中定义时间向量,这就是Simulink引擎的作用。将时间作为MATLAB功能块的输入,并使用时钟块生成时间输入。
其次,上面的模拟很好,但听起来你正在从Simulink模型生成C代码,以便在DSP上(实时)运行它。这不是我的专业领域,但是从内存来看,我认为你需要启用“绝对时间”或类似的东西才能使用代码生成。但是,我认为这是依赖于目标的,因此我不确定这是否适用于您的DSP。
答案 1 :(得分:0)
在最后的函数类型plot(t,y)中。你正在产生一个20khz的方波(假设你在1e-7采样)。基本上你的生成它是有效的。
现在,您正在使用的DSP板/与您的问题相关的任何信息是什么?
当你说“解决者”时,我不知道你指的是什么。
“模拟”是示波器还是程序?无论哪种方式,也许它没有正确触发?是否有边缘触发选项?