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.

[参考译文] TMS320F280023:CLB 模块:外部信号作为输出 LUT 块的输入

Guru**** 2394095 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE, TMS320F280023

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1085124/tms320f280023-clb-module-external-signal-as-input-to-output-lut-block

部件号:TMS320F280023
在“线程:sysconfigC2000WARE,LAUNCXL-F280025C”中讨论的其他部件

背景:尝试使用 输出 LUT 块插入三个脉冲(从外部硬件到三个 GPIO)的查找表功能:CLB 模块,输出需要在 ECAP 中使用。 因此,我需要先查看输出 LUT 块到 GPIO 的输出信号,以使用示波器查看其性质,然后连接到 ECAP1。 在经历“云杉7a”的过程中,许多地方感到困惑。

1. 我使用以下代码:  

CLB 输入 X-bar 用作三个 GPIO 的输入,如下所示:

ClbInputXbarRegs.INPUT1SELECT=11;//作为 CLB 输入的 GPIO11
ClbInputXbarRegs.INPUT1SELECT=27;//作为 CLB 输入的 GPIO27
ClbInputXbarRegs.INPUT1SELECT=42;//作为 CLB 输入的 GPIO42  

因此,CLB 输入 X 条信号可以进入输出 LUT 块的输入:页码1279 (图12-14)中的 CLB 模块。

2.第1271页,表12-4将8个“外部信号”23至31定义为输出 LUT 块的输入:CLB 模块。 但是,混淆了:哪些信号构成了这些外部信号?

3.如何将这8个数字的“外部信号”连接到第1265页图12-5中 CLB 输入 X-bar 输出的 Input1-INPUT16信号。

4.让我知道我需要为自己的目的配置哪些关联的寄存器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    西巴拉萨德

    我认为这里缺少一个巨大的块。

    我感觉:

    1.您使用的是位字段-您应该使用 driverlib

    2.您没有使用 CLB 工具- GUI 工具。

    3.您没有使用 C2000 sysconfig -(它具有集成的 CLB 工具)

    4.您没有找到展示所有这些联系的 CLB 示例。

    你需要浏览这些材料,然后一切都将变得非常有意义。

    是否要查看上述项目的资源?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是什么类型的支持??? 我 非常具体地回答了我提到页数和表格的所有问题。

    在回答所有4个问题时,您是否能够特别和非常具体? 如果你没有时间传递给其他人。

    我认为这里有一个巨大的碎片丢失了。”丢失的碎片指的是我需要浏览的文件。

    SIBAPRASAD,(不是 sibarasad?? 至少对我的名字正确!!!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SIBAPRASAD,

    我认为,正在发生的事情是,您正在尝试向 CLB 提供代码,这将需要您的大量时间。 我正在努力为您节省时间。  

    下面是您问题的答案:

    1. CLB 输入 XBAR 选项在 本地 mux 上可用:

    然后,您必须选择要将其路由到边界 INX 的本地 mux 输入。 然后将边界 inx (现在您在磁贴中)路由到实际磁贴中的 OUTLUT,

    2.磁贴的外部输入是边界 INX 信号。 在 CLB GUI 工具中,它们作为下拉列表提供。

    3.这8个边界 INX 信号来自各种粘性。

    4.同样,您尝试配置/编码以配置的重新签名者都将由 GUI 工具生成。 但是,如果要手动配置它们,则必须配置:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Nima,很好的解释,

    评论:我不确定 GUI 工具如何帮助人们!! 一个人仍然需要了解信号路由和操作所涉及的寄存器。 从 GUI 生成的代码在我看来是一个黑框,很难操作。 你可以从一个有权力背景的人那里得到第二个意见。 我认识的人持有同样的观点。

    但是,感谢您花时间解释:文档应该使用“边界 INX”代替“外部输入”,这可能会让我的生活更轻松。

    实施后我会回来,

    此致,

    SIBAPRASAD

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SIBAPRASAD,

    我认为 GUI 工具可以帮助指导您编写代码。 我同意用户仍需要了解连接。

    我建议查看 C2000Ware 最新版本的 CLB 文件夹中的示例8。

    还有 CLB 输入 XBAR,CLB 输出 XBAR 等示例。

    对于 CLB,您最好使用该工具。

    例如,在 LUT3 (输出 LUT)上,您有3个输入:i0,i1,i2和输出。

    假设您要实施:(I0&i1)|i2^i0

    此逻辑的寄存器值是多少? 每次 更改时,都必须计算寄存器的值。

     在 GUI 工具中,您只需键入:(I0&i1)|i2^i0

    它真的很强大。  

    您知道,我们的设备中有 CLB 已有3年了,我们 在使用 sysconfig GUI 工具之前没有向客户公开 CLB,因为我们知道很难配置。

    我保证,有人在 CLB 工作了6年,您将从转换到 GUI 工具中受益。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你,NIMA,

    我尊重您的意见,但不同意您使用此 GUI 工具来开发代码。 您需要从整体角度看待问题,而不仅仅是将代码开发作为一项孤立的任务。 请参阅,代码是为目标电源硬件开发的,让电源硬件正常运行以达到所需性能令我们头痛不已。 因此,一名电力人员需要了解电源硬件设备,UC 板设备和固件代码的完整流程。 因此,每一个过程都需要非常非常透明和易于理解。 牢记这一点,CLB 工具需要非常非常透明和全面。 最终,需要配置很少的寄存器才能实现所需的逻辑,编码器需要深入了解他正在配置的寄存器的确切位置以及原因。 我想说,你需要在 CLB 上有更好的方框图来描述各种元素之间的连通性。 没有人想要快速开发代码,但希望开发易于理解和操作的代码。

    相反,GUI 是一个黑框,生成的代码可能无法为人所理解,最终会给程序员增加更多压力。 我想,这是一个很好的工具,适合那些想玩统一通信的初学者,而不是想让电力硬件与统一通信一起工作的电力专家。 你可能知道,人们很难让一个强国和一个编码器让系统正常工作,因为他们彼此不了解。 此问题已广为人知。

    这款 TMS320F280023处理器比 piccolo 要好得多,我非常喜欢它。 但是,有时我觉得 TI 急于将其记录下来。 我希望有关 CLB 的文档更广泛。 请像大家一样制作好的方框图,用于 PWM,GPIO 等,这将有所帮助。 很抱歉有矛盾,  

    此致

    SIBAPRASAD Chakrabarti 博士,博士,

    美国威斯康星大学麦迪逊分校的 Power Electronics

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    背景:我有三个脉冲(在时间范围内,每个脉冲的频率为333Hz,相隔120度),从外部硬件输入到三个 GPIO: 当 这些 GPIO 信号引导至 XBAR ,然后路由 至三个 eCAP 时,我可以计算这些脉冲的周期并在我的监视窗口中成功显示周期值,下面的代码就像这样工作。 我正在使用 TI LAUNHXL-F280025C 板进行此实验。

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    EALLOW;
    InputXbarRegs.INPUT1SELECT = 11;//11,第798页,图
    InputXbarRegs.INPUT2SELECT = 27;/27
    InputXbarRegs.INPUT3SELECT = 42;//42
    EDIS;

    ECap1Regs.ECCTL0.bit.INPUTSL=0;//第1986页
    ECap2Regs.ECCTL0.bit.INPUTSL=1;
    ECap3Regs.ECCTL0.bit.INPUTSL=2;

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    现在,我想将这三个 GPIO 脉冲和 XORed 信号作为输入仅 XCAP1。 请参阅我的以下代码, 并告诉我 需要配置哪些其他寄存器,因为 我在监视窗口的 eCAP1中没有得到 XORed 信号的期间值??????

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    CpuSysRegs.PCLKCR17.bit.CLB1=1;//启用 CLB1时钟

    EALLOW;
    ClbInputXbarRegs.INPUT1SELECT=11;// GPIO11 AS CLB 输入 X 条输入,第1265页,表12-5
    ClbInputXbarRegs.INPUT2SELECT=27;//作为 CLB 输入 X 条输入的 GPIO27
    ClbInputXbarRegs.INPUT3SELECT=42;// GPIO42作为 CLB 输入 X 条输入

    //来自 CLB 输入 X 条的 Input1配置为本地信号,并作为边界 IN_0传递(已在 CLB 图块内),第1256页,图 12-4,表12-2


    clb1LogicCtrlRegs.CLB_CLC_MUX_SEL_1.bit.CLL_MUX_SEL_IN_0=48;
    clb1LogicCtrlRegs.CLB_CLC_MUX_SEL_1.bit.CLL_MUX_SEL_IN_1=49;
    clb1LogicCtrlRegs.CLB_CLC_MUX_SEL_1.bit.CLL_MUX_SEL_IN_3=50;

    //外部输入0 (边界 IN_0)与 IN_0一样,通过静态交换块输出 CLB 的 LUT 块,第1271页,表12-4,第1279页,图 12-14.


    Clb1LogicCfgRegs.CLB_OUTPUT _7.bit.IN0=24;
    Clb1LogicCfgRegs.CLB_output_LUT _7.bit.IN1=25;
    Clb1LogicCfgRegs.CLB_OUTPUT _7.bit.in2 = 26;
    Clb1LogicCfgRegs.CLB_OUTPUT _7.bit.FN=0x96;// XOR 函数 LUT

    Clb1LogicCtrlRegs.CLB_OUT _EN=0xffff;

    Clb1LogicCfgRegs.CLB_MISS_ACCESS_CTRL.Bit.BLKEN=1;//允许 CLB1_OUTx 至 CLB 输出 X-bar,第1267页,图 12-7,注册:第1340页,表:12-57

    我是否需要这一行,如果是,有什么原因?


    // ClbOutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0= 0;// CLB1_OUT0至 CLB_OUTPOUT_XBAR_1输出信号,第806页,表9-6
    EDIS;

    ECap1Regs.ECCTL0.bit.INPUTSL=17;/eCAP 输入来自 CLB1_CLBOUT15 (即 CLB1_CLBOUT7,第1266页,表12-6),第1960页,表18-1
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="62085" url="~/support/icls/c2000-icros-group/c2f/c2000微控制器-forum/1085124/tms320f280023-CLB-模块-外部信号作为输入到输出- LUT 模块/4022492#4022492"]Clb1Logicffff_Cll_EN/Out;

    为什么要将 CLB_OUT _EN 设置为0xFFFF?

    这将导致 CLB 输出覆盖设备内部的所有类型的信号。

    您只需将其设置为 BIT15即可启用 ECAP 信号。

    [引用 userid="62085" url="~/support/icins/c2000微控制器-组/CC2000 /f/c2000 -微控制器-论坛/1085124/tms320f280023-CLB 模块-外部信号作为输入到输出- LUT 模块/4022492#4022492"]ECap1Regs=PUT0=17位;

    这是正确的。

    你能告诉我你的 CFG OUTLUT7寄存器的最终值吗?

    这是我从 CLB 工具中获得的:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你,NIMA,

    问题1. 我得到了你的 CLB_OUTPUT _7=0x004B6B38,但   你的答复中第二个值556B38是什么?

    问题2. 即使 0x004B6B38与您的匹配,我也无法获得 eCAP 的周期值!!

    问题3. 我是否需要任何其他寄存器配置???

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.红色的第二个值是旧值。 当您在工具中更改设置时,工具会显示实时更改日志。 绿色是重要的,它匹配。

    问题3. 我认为唯一可能导致出现这种情况的其他因素是 mux 选择信号。 我认为所有粘液的配置边界可能不正确。 在我们研究之前,如果您使用 OUTPUTXBAR 将 OUTLUT7的信号输出到 GPIO,您能看到 XORed 信号吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 NIMA 的持续支持,

    问题1. 看, 我 以前使用的程序在监视窗口中使用了 INPUTXBAR 获得了 eCAP1,eCAP2,eCAP3的时间段值。

    问题2. 我在以后的程序中使用了相同的 GPIO 信号,但使用了 CLB 输入 XBAR 和输出 LUT,因此我使用的 MUX 选择是:

    EALLOW;

    ClbInputXbarRegs.INPUT1SELECT=11;// GPIO11 AS CLB 输入 X 条输入,第1265页,表12-5
    ClbInputXbarRegs.INPUT2SELECT=27;//作为 CLB 输入 X 条输入的 GPIO27
    ClbInputXbarRegs.INPUT3SELECT=42;// GPIO42作为 CLB 输入 X 条输入

     

    clb1LogicCtrlRegs.CLB_CLC_MUX_SEL_1.bit.CLL_MUX_SEL_IN_0=48;
    clb1LogicCtrlRegs.CLB_CLC_MUX_SEL_1.bit.CLL_MUX_SEL_IN_1=49;
    clb1LogicCtrlRegs.CLB_CLC_MUX_SEL_1.bit.CLL_MUX_SEL_IN_3=50;

    EDIS;

    问题3. 您能给我发送 CLB1外围设备的所有寄存器值吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我需要配置吗? SysPeriphAcRegs.CLB1_AC.bit.CPU1_ACC=3;

    以下是 CLB1寄存器值,我可以看到一些 寄存器的值不为零。 请检查任何差异,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用用户名="62085" url=~ë/support/icles/c2000-icls-group/c2f/c2000-微控制器-forum/1085124/tms320f280023-CLB-模块-外部信号以输入到输出- LUT 块/4023868#4023868"]Sysiph_ac.cp1;

    这些是访问控制寄存器。 我不会影响这一点。

    让我获得一组功能,这些功能需要设置才能将您的信号传送到 CLB 中。

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,下面是我所拥有的:

    1. CLB 输入 XBAR 设置:

    2. CLB 多路复用器选择(本地多路复用器,选择 CLB 输入 XBAR 条目):

    3. CLB 磁贴配置

    最后,接着覆盖 ECAP 信号。

    这就是所需要的一切。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你,NIMA,

    看起来这些都是配置的,代码是否加载到处理器中并经过验证?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    所有生成的代码都在设计时经过验证。 如果您将代码加载到设备中,则可以检查寄存器的值,并将它们与手动代码进行比较。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要检查的项目是查看 CLB_configLocalInputMux 和 CLB_configGlobalInputMux 是否像您一样修改了寄存器。 有时还会设置一些额外的位以确保配置正确,例如:

    您必须有第71行,第70行才能传播到粘液中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 NIMA 的持续支持,

    配置完 CLB1寄存器值后,您是否可以向我发送这些值,我将进行交叉检查。

    我在现有项目中添加系统配置时也遇到了问题,情况正在发生。,我会发布问题...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     

    我一直在为你争取价值。 我本不应该真正运行代码,但我希望您能尽快检查代码。

    Clb1LogicCfgRegs	Register Group			
    	CLB_COUNT_RESET	Register	0x00000000		
    	CLB_COUNT_MODE_1	Register	0x00000000		
    	CLB_COUNT_MODE_0	Register	0x00000000		
    	CLB_COUNT_EVENT	Register	0x00000000		
    	CLB_FSM_EXTRA_IN0	Register	0x00000000		
    	CLB_FSM_EXTERNAL_IN0	Register	0x00000000		
    	CLB_FSM_EXTERNAL_IN1	Register	0x00000000		
    	CLB_FSM_EXTRA_IN1	Register	0x00000000		
    	CLB_LUT4_IN0	Register	0x00000000		
    	CLB_LUT4_IN1	Register	0x00000000		
    	CLB_LUT4_IN2	Register	0x00000000		
    	CLB_LUT4_IN3	Register	0x00000000		
    	CLB_FSM_LUT_FN1_0	Register	0x00000000		
    	CLB_FSM_LUT_FN2	Register	0x00000000		
    	CLB_LUT4_FN1_0	Register	0x00000000		
    	CLB_LUT4_FN2	Register	0x00000000		
    	CLB_FSM_NEXT_STATE_0	Register	0x00000000		
    	CLB_FSM_NEXT_STATE_1	Register	0x00000000		
    	CLB_FSM_NEXT_STATE_2	Register	0x00000000		
    	CLB_MISC_CONTROL	Register	0x00000000		
    	CLB_OUTPUT_LUT_0	Register	0x00000000		
    	CLB_OUTPUT_LUT_1	Register	0x00000000		
    	CLB_OUTPUT_LUT_2	Register	0x00000000		
    	CLB_OUTPUT_LUT_3	Register	0x00000000		
    	CLB_OUTPUT_LUT_4	Register	0x00000000		
    	CLB_OUTPUT_LUT_5	Register	0x00000000		
    	CLB_OUTPUT_LUT_6	Register	0x00000000		
    	CLB_OUTPUT_LUT_7	Register	0x004B6B38		
    	CLB_HLC_EVENT_SEL	Register	0x00000000		
    	CLB_COUNT_MATCH_TAP_SEL	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_0	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_1	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_2	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_3	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_4	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_5	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_6	Register	0x00000000		
    	CLB_OUTPUT_COND_CTRL_7	Register	0x00000000		
    	CLB_MISC_ACCESS_CTRL	Register	0x0000		
    	CLB_SPI_DATA_CTRL_HI	Register	0x0000		
    

    Clb1LogicCtrlRegs	Register Group			
    	CLB_LOAD_EN	Register	0x0002		
    	CLB_LOAD_ADDR	Register	0x0000003F		
    	CLB_LOAD_DATA	Register	0x00000800		
    	CLB_INPUT_FILTER	Register	0x00000000		
    	CLB_IN_MUX_SEL_0	Register	0x00000000		
    	CLB_LCL_MUX_SEL_1	Register	0x70004A30		
    	CLB_LCL_MUX_SEL_2	Register	0x00000000		
    	CLB_BUF_PTR	Register	0x00000000		
    	CLB_GP_REG	Register	0x00000000		
    	CLB_OUT_EN	Register	0x00020000		
    	CLB_GLBL_MUX_SEL_1	Register	0x00000000		
    	CLB_GLBL_MUX_SEL_2	Register	0x00000000		
    	CLB_PRESCALE_CTRL	Register	0x00000000		
    	CLB_INTR_TAG_REG	Register	0x0000		
    	CLB_LOCK	Register	0x00000000		
    	CLB_HLC_INSTR_READ_PTR	Register	0x0000		
    	CLB_HLC_INSTR_VALUE	Register	0x0800		
    	CLB_DBG_OUT_2	Register	0x00000780		
    	CLB_DBG_R0	Register	0x00000000		
    	CLB_DBG_R1	Register	0x00000000		
    	CLB_DBG_R2	Register	0x00000000		
    	CLB_DBG_R3	Register	0x00000000		
    	CLB_DBG_C0	Register	0x00000000		
    	CLB_DBG_C1	Register	0x00000000		
    	CLB_DBG_C2	Register	0x00000000		
    	CLB_DBG_OUT	Register	0x800F0F0E		
    

    NIMA