TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR)
简单介绍了X-BAR。
前言
X-BAR是TI新一代DSP中独特的功能,笔者认为如果想发挥DSP的全部性能,掌握其使用方法是必须的。在笔者看来,X-BAR像是一个信号路由器,将信号在GPIO与外设之间相互传递。比如将GPIO的输入信号路由到各个外设;再将外设的输出路由到GPIO进行输出。
在手册中,X-BAR的章节位于第九章,很靠前,可见其重要性。笔者猜测推出该功能的原因是因为新一代DSP的功能非常丰富,信号的传递变得非常复杂,需要有一个类似总线的东西,将所有外设挂在上面,实现信号的任意传递。
这部分内容在刚开始学280049C的时候完全不知所云,后来在学习其他外设之后才逐渐理解了其作用。X-BAR使用起来并不难,仅需几行代码就可以完成配置。
本文翻译了手册[1]有关章节的内容,希望对后来者有帮助。如有不妥之处还请大家指正。
概述
交叉开关(在本文档中称为X-BAR)为在各种外设中连接设备输入、输出和内部资源提供了灵活性。总共包含三个X-BAR:Input X-BAR、Output X-BAR和ePWM X-BAR。每个X-BAR都是根据它们接收信号的位置来命名的。例如,Input X-BAR将外部信号“输入”到设备。Output X-BAR将内部信号“输出”到GPIO。ePWM X-BAR接收信号并将其带到ePWM模块。
在该设备上,输入X-BAR用于将信号从GPIO路由到许多不同的IP块,如ADC、eCAP、ePWM和外部中断。输入X-BAR可以访问每个GPIO,并且可以将每个信号路由到前面提到的任何(或多个)IP块。AIOs的数字输入也可以在输入X-BAR上找到。这种灵活性可以减轻器件对外设muxing的一些限制,将功能拓展到任意GPIO引脚。需要注意的是,在GPIO mux上选择的功能不会影响输入X-BAR。输入X-BAR将输入缓冲区上的信号简单地连接到选定的目的地。因此,您可以执行诸如将一个外设的输出路由到另一个外设(比如使用eCAP测量ePWM的输出以进行频率测试)。
INPUT X-BAR
通过INPUTxSELECT寄存器配置输入X-BAR。每个输入的可用IP目的地如图9-1所示。
ePWM X-BAR
ePWM X-BAR向ePWM模块发送信号。具体地说,ePWM X-BAR连接到每个ePWM模块的数字比较Digital Compare (DC)子模块,用于诸如tripzones和syncing之类的动作。请参阅ePWM章节,以了解更多有关DC子模块使用的其他方式的信息。图9-5显示了ePWM X-BAR的体系结构。值得注意的是,ePWM X-BAR的体系结构与输出X-BAR的体系结构相同(除了输出锁存器)。
ePWM X-BAR有八个输出,它们被路由到每个ePWM模块。图9-2表示单个输出的架构,但它与所有其他输出的架构相同。
首先,参考表9-2确定应传递给ePWM的信号。您可以为每个TRIPx输出选择最多一个信号(总共32个mux)。通过TRIPxMUX0TO15CFG和TRIPxMUX16TO31CFG寄存器选择每个mux的输入。为了将任意信号传递给ePWM,还必须在TRIPxMUXENABLE寄存器中使能mux。所有已启用的mux在被传送到ePWM上的相应TRIPx信号之前,都将在逻辑上取或。也可以选择通过TRIPOUTINV寄存器反转信号。
表格参加手册。
CLB X-BAR
CLBX-BAR向CLB模块发送信号。图9-5显示了CLBX-BAR的体系结构。值得注意的是,CLB X-BAR的体系结构与输出XBAR的体系结构相同(除了输出锁存器)。
CLB X-BAR有八个输出,它们被路由到每个CLB模块。图9-3表示单个输出的体系结构,但它与所有其他输出的体系结构相同。
首先,参考表9-3确定应传递给CLB的信号。对于每个AUXSIGx输出,您最多可以为每个mux选择一个信号(总共31个mux)。通过AUXSIGxMUX0TO15CFG和AUXSIGxMUX16TO31CFG寄存器选择每个mux的输入。为了将任何信号传递给CLB,还必须在AUXSIGxMUXENABLE寄存器中使能mux。所有已启用的mux在被传递到CLB上的相应AUXSIGx信号之前都将被逻辑取或。您也可以选择通过AUXSIGOUTINV寄存器反转信号。
表格参见手册。
OUTPUT X-BAR
GPIO输出X-BAR从设备内部接收信号并将其输出到GPIO。图9-5显示了GPIO输出X-BAR的体系结构。表9-4中列出了可提供给GPIO的信号。X-BAR包含八个输出,每个输出将包含GPIO mux上的至少一个位置,表示为OUTPUTXBARx。X-BAR允许选择单个信号或最多32个信号的逻辑或。
输出X-BAR有八个输出,它们被路由到GPIO模块。图9-4表示单个输出的体系结构,但它与所有其他输出的体系结构相同。值得注意的是,输出X-BAR的架构(除了输出锁存)与ePWM X-BAR的架构相同。
首先,参考表9-4确定应传递给GPIO的信号。您可以为每个输出xBarx输出选择每个mux最多一个信号(总共32个mux)。通过OUTPUTxMUX0TO15CFG和UTPUTxMUX16TO31CFG寄存器选择输入。
为了将任意信号传递给GPIO,还必须在OUTPUTxMUXENABLE寄存器中启用mux。所有已启用的mux在被传递到GPIO模块上的相应OUTPUTx信号之前,都将在逻辑上取或。您也可以选择通过OUTPUTINV寄存器反转信号。只有通过GpioCtrlRegs.GPxMUX和GpioCtrlRegs.GPxGMUX寄存器选择正确的OUTPUTx muxing选项,才能在GPIO上看到该信号。
参考文献
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)