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))。
此外,鎖存器和觸發器可以連接到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 輸出的端口不可用。
CCL 外設的使用方式類似,當輸入為 1 時將查找表設置為 1,當輸入為 0 時,查找表設置為 0。請注意,這要求CCL的時鐘運行至少是輸入信號頻率的兩倍。PORTMUX 可用于選擇 CCL 的輸出位置。
自定義邏輯外設的類似用途是調試內部信號。自定義邏輯可用于直通模式,將外設輸出或數字信號復制到I/O引腳,以便直接觀察和測量。這對于調試沒有輸出的外設或調試獨立于內核的外設的復雜組合非常有用。例如,如果使用定時器自動觸發ADC的程序不工作,則可以將定時器信號輸出到I/O,以確認定時器以預期頻率運行。
結論
PIC 和 AVR MCU 上的自定義邏輯外設是簡單但非常靈活的工具。CLC 和 CCL 提供了一種快速簡便的方法,可以在微控制器內外實現分立邏輯。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7801瀏覽量
153134 -
mcu
+關注
關注
146文章
17617瀏覽量
356984 -
cpu
+關注
關注
68文章
10989瀏覽量
214803
發布評論請先 登錄
相關推薦
SOPC中自定義外設和自定義指令性能分析

微軟計劃改進Windows中的自定義選項
OpenHarmony自定義組件CircleProgress

適用于鴻蒙的自定義組件框架Carbon案例教程
自定義視圖組件教程案例
自定義算子開發

評論