0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用于改进应用的自定义逻辑外设

星星科技指导员 来源:microchip 作者:microchip 2023-05-06 09:51 次阅读

PIC® 和 AVR® 微控制器MCU) 上的自定义逻辑外设是功能强大的工具,可用于创建独立于 CPU 运行的分立逻辑小块。PIC 微控制器具有可配置逻辑单元 (CLC),而 AVR 微控制器具有可配置自定义逻辑 (CCL) 外设。为了快速轻松地进行设置,MPLAB® 代码配置器 (MCC) 可用于为正在使用的外设设置和生成 API。

本文将重点介绍使用这些外设增强设计的几种方法。

外围设备如何工作?

CLC和CCL外设都用于实现逻辑功能,但它们采用不同的方法。

CLC 通过有选择地将内部逻辑元素启用到预定义的配置中来实现其逻辑功能。每个输入的功能因单元的配置而异。PIC18-Q40 系列中 CLC 配置的一些示例包括:

4 输入和

OR-异或

2 个带复位功能的输入 D 触发器

1 个带设置和复位功能的输入透明锁存器

AVR MCU 上的 CCL 外设基于查找表 (LUT) 工作。输入信号用于查找外设的相应输出,如下面的(简化)示例所示,该示例实现了逻辑功能(A |(B&C))。

poYBAGRVso2AIL_YAAB5FctYerc791.png

此外,锁存器和触发器可以连接到LUT的输出,以实现同步逻辑功能。

为什么使用自定义逻辑外设?

使用自定义逻辑外设有几个好处。首先,配置完成后,外设可以独立于CPU运行。如果 CPU 进入睡眠模式,外围设备可以继续运行。这假设输入源在睡眠状态下仍处于活动状态,并且为 AVR MCU 上的 CCL 设置了 RUNSTDBY。

其次,外设可以比CPU更快地执行逻辑运算。微控制器执行的相同操作将需要多个时钟周期才能完成。所需的最小指令时钟周期数为2:求解逻辑功能,然后更改I/O引脚状态。在实际应用中,几乎可以肯定需要比这更多的指令时钟。

使用案例

自定义逻辑外设有很多用例。这是在应用程序中使用这些外设的一些可能方法的简要列表。

实现逻辑函数

逻辑功能是自定义逻辑外设最直接的应用。简单的功能可以使用单个LUT或单元来实现。通过将单元或LUT互连在一起,可以实现更复杂的功能。

此功能的一个用例是替换PCB上的分立逻辑IC,从而减少物料清单(BOM)和设计区域。使用自定义逻辑外设的另一个设计优势是灵活性。如果在开发过程中需要更改逻辑功能,则只需要进行一些小的软件调整。使用分立IC需要交换IC和/或修改电路以获得适当的功能。

开关去抖动

自定义逻辑外设的另一个常见用途是去抖动按钮或开关。有很多方法可以实现这一点 - 一些方法纯粹基于CLC或CCL,而其他方法则使用自定义逻辑外设与设备上的板载定时器串联。

AN2805:使用独立于内核的外设进行鲁棒性去抖动介绍了一些使用 CLC 的方法,而 AN4:AVR 上的独立于内核外设入门的第 2451 节展示了一种使用 CCL 和事件系统 (EVSYS) 外设的方法。

提高信号路由灵活性

最近发布的大多数PIC和AVR微控制器都具有外设引脚选择(PPS)(用于PIC MCU)或PORTMUX外设(用于AVR MCU)。这些外设的工作方式类似,因为它们都允许在微控制器上灵活路由数字外设信号。两种实现之间的最大区别在于可能的位置数量。PPS 外设比 PORTMUX 外设有更多的选择。但是,即使使用 PPS 或 PORTMUX,仍有可能某些位置可能无法直接路由到特定外设。

通过使用自定义逻辑外设,可以将一些数字外设信号重新路由到通常不可用的端口/外设。下图显示了 CLC 的简单直通配置,该配置接收PWM1_OUT1信号并将其路由到 CLC 的输出。PPS 用于设置 CLC 的输出位置,绕过 PWM 输出的端口不可用。

poYBAGRVsoqAGfGIAACkgX13Ufo955.png


CCL 外设的使用方式类似,当输入为 1 时将查找表设置为 1,当输入为 0 时,查找表设置为 0。请注意,这要求CCL的时钟运行至少是输入信号频率的两倍。PORTMUX 可用于选择 CCL 的输出位置。

自定义逻辑外设的类似用途是调试内部信号。自定义逻辑可用于直通模式,将外设输出或数字信号复制到I/O引脚,以便直接观察和测量。这对于调试没有输出的外设或调试独立于内核的外设的复杂组合非常有用。例如,如果使用定时器自动触发ADC的程序不工作,则可以将定时器信号输出到I/O,以确认定时器以预期频率运行。

结论

PIC 和 AVR MCU 上的自定义逻辑外设是简单但非常灵活的工具。CLC 和 CCL 提供了一种快速简便的方法,可以在微控制器内外实现分立逻辑。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6784

    浏览量

    147559
  • mcu
    mcu
    +关注

    关注

    145

    文章

    15982

    浏览量

    343283
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10406

    浏览量

    206448
收藏 人收藏

    评论

    相关推荐

    Android端自定义铃声 MobPush对安卓端自定义铃声的教程

    如何为APP推送设置独特的通知铃声呢?本次带来的是MobPush对安卓端自定义铃声的教程,快来看看吧~
    的头像 发表于 10-21 15:34 803次阅读
    Android端<b class='flag-5'>自定义</b>铃声 MobPush对安卓端<b class='flag-5'>自定义</b>铃声的教程

    逻辑分析仪的自定义工具设计

    逻辑分析仪的自定义工具设计
    发表于 09-18 06:51

    自定义外设自定义指令在SOPC系统中是如何运行的?

    自定义外设自定义指令在SOPC系统中是如何运行的?怎样去验证?
    发表于 05-26 06:33

    SOPC中自定义外设自定义指令性能分析

    SOPC中自定义外设自定义指令性能分析 NiosII是一个建立在FPGA上的嵌入式软核处理器,灵活性很强。作为体现NiosII灵活性精髓的两个最主要方面,自
    发表于 03-29 15:12 1498次阅读
    SOPC中<b class='flag-5'>自定义</b><b class='flag-5'>外设</b>和<b class='flag-5'>自定义</b>指令性能分析

    1602自定义字符

    1602液晶能够显示自定义字符,能够根据读者的具体情况显示自定义字符。
    发表于 01-20 15:43 1次下载

    RTWconfigurationguide基于模型设计—自定义

    基于模型设计—自定义目标系统配置指南,RTW自动代码生成相关资料。
    发表于 05-17 16:41 3次下载

    如何使用Vivado功能创建AXI外设

    了解如何使用Vivado的创建和封装IP功能创建可添加自定义逻辑的AXI外设,以创建自定义IP。
    的头像 发表于 11-29 06:48 6836次阅读
    如何使用Vivado功能创建AXI<b class='flag-5'>外设</b>

    微软计划改进Windows中的自定义选项

    显然,在将来的Windows 10更新中,微软计划改进Windows中的自定义选项。计划的更新包括Desktop Spotlight功能,该功能将以幻灯片形式将Bing图像带到桌面。
    的头像 发表于 10-16 09:55 1377次阅读

    OpenHarmony自定义组件CircleProgress

    组件介绍 本示例是OpenHarmony自定义组件CircleProgress。 用于定义一个带文字的圆形进度条。 调用方法
    发表于 03-23 14:06 4次下载
    OpenHarmony<b class='flag-5'>自定义</b>组件CircleProgress

    用于鸿蒙的自定义组件框架Carbon案例教程

    项目名称:Carbon 所属系列:ohos的第三方组件适配移植 功能:一个适用于鸿蒙的自定义组件框架,帮助快速实现各种需要的效果 项目移植状态:大部分移植 调用差异:基本没有使用差异,可以参照
    发表于 04-07 09:49 5次下载

    自定义视图组件教程案例

    自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲button效果) 3.自定义组件-progress(progress效果) 4.
    发表于 04-08 10:48 14次下载

    ArkUI如何自定义弹窗(eTS)

    自定义弹窗其实也是比较简单的,通过CustomDialogController类就可以显示自定义弹窗。
    的头像 发表于 08-31 08:24 1420次阅读

    labview自定义控件

    labview自定义精美控件
    发表于 05-15 16:46 9次下载

    自定义算子开发

    一个完整的自定义算子应用过程包括注册算子、算子实现、含自定义算子模型转换和运行含自定义op模型四个阶段。在大多数情况下,您的模型应该可以通过使用hb_mapper工具完成转换并顺利部署到地平线芯片上……
    的头像 发表于 04-07 16:11 1882次阅读
    <b class='flag-5'>自定义</b>算子开发

    labview超快自定义控件制作和普通自定义控件制作

    labview超快自定义控件制作和普通自定义控件制作
    发表于 08-21 10:32 5次下载