如何使用 systemC AMS 和 TDF 建模形式从加速度计算速度
How to calculate speed from acceleration using systemC AMS and TDF modeling formalism
我有一个恒定的加速度,我需要计算瞬时速度和行驶距离。
所以我们知道速度是加速度的积分,行驶的距离是速度的积分。
使用具有 TDF 建模形式的 systemC AMS,没有积分运算符,但有拉普拉斯变换运算符。
我将实现的速度和距离计算模式如下:
注意:
// Declaration of private variables of SCA_TDF_MODULE
sca_tdf::sca_ltf_nd lft;
sca_util::sca_vector<double> num, den;
// initialisation of variables
num(0) = 1.0;
den(0) = 1.0;
所以我想我可以这样使用 sca_tdf::sca_ltf_nd
计算速度:
if (throttle_is_active) {
speed.write(lft(num, den, 2.78)); // speed is an output port
// distance ....
}
但我不确定这是否正确,而且我不知道如何保存此值以再次使用 ltf 计算行驶距离。
可以找到 tdf 模块的定义 here。
有人可以帮我吗?
另请参阅随概念验证库提供的 SystemC AMS 用户指南
SystemC-AMS中的系数定义如下:
H(s) = (num(0) + num(1)*s + num(2)*s**2 ...) / (den(0) + den(1)*s + den(2)*s**2 ...)
-> 积分器的系数是:
num(0)=1.0;
den(0)=0.0;
den(1)=1.0;
我有一个恒定的加速度,我需要计算瞬时速度和行驶距离。 所以我们知道速度是加速度的积分,行驶的距离是速度的积分。 使用具有 TDF 建模形式的 systemC AMS,没有积分运算符,但有拉普拉斯变换运算符。
我将实现的速度和距离计算模式如下:
注意:
// Declaration of private variables of SCA_TDF_MODULE
sca_tdf::sca_ltf_nd lft;
sca_util::sca_vector<double> num, den;
// initialisation of variables
num(0) = 1.0;
den(0) = 1.0;
所以我想我可以这样使用 sca_tdf::sca_ltf_nd
计算速度:
if (throttle_is_active) {
speed.write(lft(num, den, 2.78)); // speed is an output port
// distance ....
}
但我不确定这是否正确,而且我不知道如何保存此值以再次使用 ltf 计算行驶距离。 可以找到 tdf 模块的定义 here。 有人可以帮我吗?
另请参阅随概念验证库提供的 SystemC AMS 用户指南
SystemC-AMS中的系数定义如下:
H(s) = (num(0) + num(1)*s + num(2)*s**2 ...) / (den(0) + den(1)*s + den(2)*s**2 ...)
-> 积分器的系数是:
num(0)=1.0;
den(0)=0.0;
den(1)=1.0;