大家好:
一 个星期以来,我一直困扰着我,我想在 CLA,中实施一个切换滤波器,控制频率为20kHz。
转换函数为 g=(z *^2- 0.5391 * z + 0.6536 )/(z^2- 0.7166 0.5391 * z + 0.3702 )。F=20Khz
哪一个dcgain是1,但 我是在CLA中实现的,当输入信号为50Hz时,增益是关于1.5,我在MATLAB函数中实现了,它工作得很好,增益是1.it是如此奇怪,
代码低于:


This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好:
一 个星期以来,我一直困扰着我,我想在 CLA,中实施一个切换滤波器,控制频率为20kHz。
转换函数为 g=(z *^2- 0.5391 * z + 0.6536 )/(z^2- 0.7166 0.5391 * z + 0.3702 )。F=20Khz
哪一个dcgain是1,但 我是在CLA中实现的,当输入信号为50Hz时,增益是关于1.5,我在MATLAB函数中实现了,它工作得很好,增益是1.it是如此奇怪,
代码低于:


您好,James:
您是以COFF还是ELF格式构建代码? 如果为ELF格式,请在每个常量之后添加f,以强制常量为浮点而不是双精度值。 这是因为默认情况下,带有小数点的EFL常量假定为双精度而不是浮点。 COFF格式没有此行为,即使没有后缀ff.,也将被视为浮点
示例: CLAVar.f32InvCntlVoutL1OLD*0.5391f
重新分级代码,这是来自TI提供的一些示例,还是这是您自己的代码? 因此,我将与其他专家联系。
谢谢!
Ashwini
您好,James:
您是否尝试过设置断点,然后单步执行代码以查看计算不正确的位置,这可能会提供一些线索。
我在这里查看C代码:
CLAVar.f32cnvoutL1 =110.0104万 = (2.8075万(CLAVar.f32lv1cander*12.8075万CLAVar.f32lv1cander*1 0.3702) 0.7166 (0.5391 0.5391)(CLavl0) 0.6536而且不清楚这如何映射到传输功能,因此逐步浏览代码是一个好方法。
[quote userid="49.1935万" url="~/support/mspectors/c2000-mspicros/group/sc2000/f/c2mspurer-forum/1100104/tms320f28075-about-The-tms320f28075-digit-filers-imple-in-CLA"<xmt-block0>2000 0.7166110.0104万 0.7166</xmt-block>2.8075万 *z2.8075万 *z^7166^ 2 - 0.5391 0.3702 *z + 0.6536 )/(z^2 - 0.5391 z/Khz=20f)以下是一些有关调试的提示:
https://software-dl.ti.com/C2000/docs/cla_software_dev_guide/debugging.html?highlight=debug
要考虑的另一点是CLAVAR结构是如何定义的-它是否在C28和CLA之间共享,以及它是否有任何"int"成员,因为在C28和CLA上int的大小不同。 下面是一些附加信息。
谢谢!
Ashwini
James,
以下所有内容看起来都正确,并且与缺口过滤器的传输功能一致。 我要问的问题是,在历史样本更新和输出计算之间,您是否有更新当前输入样本的内容(例如,从输入缓冲区读取)。 我相信你会这样做。
James,
很抱歉,我忘记了该部件。
1. fp_mode和fp_reassoc如何?
2.您使用的优化级别是什么? 如果您更改优化级别,您是否注意到任何变化?
3.在其他频率下,滤波器的性能如何? 您是否在20kHz时获得了所需的缺口行为?
4.您是否尝试过Ashwini的建议,即单步执行,检查计算值并与预期值进行比较? 您甚至可以使用临时变量将C代码分解为多个步骤(而不是包含多个乘法和增减法的一个步骤)。 并关闭优化功能。
谢谢!
Sira