gpt4 book ai didi

c - 如何使一个参数跟随另一个参数的波形 - C代码

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:05 25 4
gpt4 key购买 nike

在 C 代码中,它从硬件(Altera Nios II 系统)获得输入,这个输入“vref”是一个正弦波形。编辑:在 vhdl 的 Altera Quartus 中,它为“vref”生成一个正弦波形,它成为 C 代码的输入。 (C代码用于对处理器NIos II进行编程)

在 C 代码中,我有另一个输入说“vref_new”,“vref_new”是一个变量,它的值根据一些计算不断变化。编辑:“vref_new”是振幅“vref”的新值

编辑:当我将“vref_new”绘制为图表上的输出时,我应该怎么做才能将“vref_new”绘制为正弦波形而不只是振幅? “vref_new”的频率和采样率应完全遵循“vref”。 vref 是一个正弦波,vref_new 只是更新后的振幅以替换 vref 中的振幅。

如果我知道“vref”的振幅是一个常数,比如说 40,那么我可以这样做:

vref_new= vref_new*vref*(1/40);

但问题是我不知道“vref”的幅度,因为它不是常数。

编辑:除以 40 的原因是为了得到“vref_new”给出的正确振幅。

编辑:vref 是 Quartus 中 vhdl 自定义 block 生成的正弦波,而 vref_new 只是一个值,表示正弦波的幅度。

vref 是变化的正弦信号,但是幅度需要用vref_new 更新。系统得到vref后,它做了一些计算来获得vref_new,但是vref_new只是一个幅度,那么我如何绘制vref_new来显示一个正弦信号呢?

如果我的问题听起来很愚蠢,我深表歉意......提前谢谢你

#define vref_base 0x00002220 
int16_t vref=0, vref_new=0;

vref = IORD_ALTERA_AVALON_PIO_DATA(vref_base);
vref_new = a*b/c; //some calculation
amp_vrefnew=(int16_t)vref;
vref_new = vref_new*vref/amp_vrefnew; //in order to make vref_new follows the sinewave of vref

看图中的绿线,我仍然没有得到正弦波形,绿线是 vref_new 而黑线是 vref

enter image description here

但是,如果我通过将“amp_vrefnew”替换为常量“3920”来执行以下操作,我可以获得 vref_new 的正弦波形,

#define vref_base 0x00002220 
int16_t vref=0, vref_new=0;

vref = IORD_ALTERA_AVALON_PIO_DATA(vref_base);
vref_new = a*b/c; //some calculation
vref_new = vref_new*vref/3920; //in order to make vref_new follows the sinewave of vref

最佳答案

问题是 vref_new 总是为零吗?那是因为 1/40 在 C 的整数运算中是零。

如果vref_new是不变的振幅,vref是[-1, 1]范围内的正弦信号,那么

x = vref_new * vref;

可能是你想要的。

关于c - 如何使一个参数跟随另一个参数的波形 - C代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31053084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com