乐于分享
好东西不私藏

C2000 DSP中CLB应用简单说明

C2000 DSP中CLB应用简单说明

CLB LUT使用示例

参考clb_1.svg

使用in0 和 in1 输入,利用4输入的LUT0,进行逻辑运算,通过OUTLUT0 -> CLBOUT12 -> outputxbar -> gpio

CLB FSM使用示例

参考clb_2.svg

使用in0 和 in1 输入,利用4输入的FSM0,进行逻辑运算 和 状态跳转,

FSMOUT -> OUTLUT0 -> CLBOUT12 -> outputxbar -> gpio

FSM0_S0 -> OUTLUT1 -> clbout13 -> outputxbar -> gpio

FSM0_S1 -> OUTLUT2 -> clbout14 -> clboutputxbar -> gpio

CLB COUNTER使用示例

参考clb_3.svg

使用in0 和 in1 输入,利用4输入的COUNTER0,实现计数器功能,reset 来自cnt=match2, event事件来自in0,事件为add,当事件触发时,进行cnt+event_load_val的动作;

cnt=zero -> outlut0 -> clbout0;

cnt=match1->outlut1->clbout1;

cnt=match2->outlut2->clbout2;

CLBepwm输出制造死区

参考clb_4.svg

旨在确保有源高互补对 PWM 配置在任何情况下都始终以最小死区时间运行,不受生成 PWM 的模块如何配置的影响。该示例演示了如何配置 4 个独立的 PWM 模块,为 4 路 PWM 通道实现保护功能。其中,PWM 模块 1~4 的输出分别由 CLB 模块 1~4 进行控制。

Epwmxa->in0(检测下降沿)

Epwmxa->in1

Epwmxb->in2(检测下降沿)

Epwmxb->in3

原始输出:

经过CLB输出:

CLB1-4之间串联起来

参考clb_5.svg

数据流向为

Clb1in0->clb1outlut0->clb1out16->

Clb1in1->clb1outlut1->clb1out17->

Clb1in2->clb1outlut2->clb1out18->

Clb1in3->clb1outlut3->clb1out19->

Clb1in4->clb1outlut4->clb1out20->

Clb1in5->clb1outlut5->clb1out21->

Clb1in6->clb1outlut6->clb1out22->

Clb1in7->clb1outlut7->clb1out23->

Clb2in0->clb2outlut0->clb2out16->

Clb2in1->clb2outlut1->clb2out17->

Clb2in2->clb2outlut2->clb2out18->

Clb2in3->clb2outlut3->clb2out19->

Clb2in4->clb2outlut4->clb2out20->

Clb2in5->clb2outlut5->clb2out21->

Clb2in6->clb2outlut6->clb2out22->

Clb2in7->clb2outlut7->clb2out23->

Clb3in0->clb3outlut0->clb3out16->

Clb3in1->clb3outlut1->clb3out17->

Clb3in2->clb3outlut2->clb3out18->

Clb3in3->clb3outlut3->clb3out19->

Clb3in4->clb3outlut4->clb3out20->

Clb3in5->clb3outlut5->clb3out21->

Clb3in6->clb3outlut6->clb3out22->

Clb3in7->clb3outlut7->clb3out23->

Clb4in0->clb4outlut0->clb4out16->

Clb4in1->clb4outlut1->clb4out17->

Clb4in2->clb4outlut2->clb4out18->

Clb4in3->clb4outlut3->clb4out19->

Clb4in4->clb4outlut4->clb4out20->

Clb4in5->clb4outlut5->clb4out21->

Clb4in6->clb4outlut6->clb4out22->

Clb4in7->clb4outlut7->clb4out23->clboutputxbar->gpio