TLC与sfunction(一)代码架构

代码架构

在研究目标语言编译器(TLC)的特定代码生成部分之前,请考虑目标语言编译器如何为简单模型生成代码。从下图中可以看到,块将代码放入Mdl例程中。这显示了MdlOutputs。

static void simple_output(int_T tid)
{
    /* Sin Block: '<Root>/Sine Wave' */
    simple_B.SineWave_d = simple_P.SineWave_Amp *
    sin(simple_P.SineWave_Freq * simple_M->Timing.t[0] +
    simple_P.SineWave_Phase) + simple_P.SineWave_Bias;
    /* Gain: '<Root>/Gain' */
    simple_B.Gain_d = simple_B.SineWave_d * simple_P.Gain_Gain;
    /* Outport: '<Root>/Out1' */
    simple_Y.Out1 = simple_B.Gain_d;
}

块block具有输入、输出、参数、状态以及其他一般属性。

例如,块block输入和输出通常写入块I/O结构(使用model_B类型的标识符生成),其中model是模型名称)。块输入也可以来自外部输入结构(model_U),或者当连接到积分器的状态端口(model_X)时来自状态结构,或者如果未连接或接地,则来自地(rtGround)。块输出也可以转到外部输出结构(model_Y)。下图显示了一般块数据映射。

这个讨论应该让你对块对象的外观有一个大致的了解。现在,您可以查看特定于目标语言编译器的代码生成过程的具体部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值