Microchip PIC 可設定邏輯區塊 (CLB) 入門指南

摘要

本文介紹 Microchip 的 PIC16 可設定邏輯區塊(CLB)。內容包括閘級(gate-level)範例和 Verilog 範例。本文是基於 CLB 的步進馬達專案的另一入門文章。

點擊此處下載初始項目:
SeedProject.X.zip (541.2 KB)

什麼是 Microchip PIC 配置邏輯區塊(CLB)?

最新的 Microchip PIC16 微控制器包含 CLB,其作用類似於先前由分離邏輯晶片提供的「緊連邏輯」。

  • CLB 位於 PIC 晶粒上。

  • 即使微控制器處於睡眠狀態,CLB 也能自由運作。

  • CLB 包含一個用於跨時脈域的同步器。輸入訊號可以鎖定到微控制器的高頻振盪器或其他訊號,例如定時器溢位訊號。

  • CLB 引腳可以連接到實體 I/O 引腳。仍提供弱上拉電阻等選項。

種子項目描述

本專案基於 Microchip PIC16F13145 Curious 評估板,如圖 1 所示。

  • PIC 的 I/O 配置為 4-輸入 8-輸出邏輯區塊 (CLB)。

  • 所有工作都在 CLB 中完成,因為主迴路為空。

  • 中斷服務常式(ISR)用於提供一個佔空比為 50% 的每秒脈衝訊號,該訊號被路由至 RB5。這是一個簡便的 1Hz 訊號,可用於調試狀態機。

  • ISR 提供了一個主迴路不執行任何操作。PIC16 微控制器核心的使用非常有限。實際上,main() 是一個空迴路,只有一個輸出。


圖 1:作者工作台上搭建的 Microchip PIC16F13145 Curious 試驗電路板電路圖。

CLB 種子專案的引腳和線路圖

試驗電路板電路原理圖如圖 2 所示,MPLAB 引腳配置如圖 3 及圖 4 所示。此電路設計便於在試驗電路板上使用,輸入和輸出訊號採用連續引腳分配。

專案特點:

  • 如圖 2 所示,包含四個按鈕。

  • CLB 的引腳分配如圖 3 所示。

    • 輸入引腳標識為 CLBINXPPS。

    • 輸出引腳標識為 CLBPPSOUTx。

  • 輸入引腳使用弱上拉電阻,從而最大限度地減少所需元件的數量,如圖 4 所示。

  • 包含六個 LED 用於顯示輸出引腳的狀態。為簡單起見,我們使用如圖 1 所示的焊接電阻的 LED(綠色方形 LED)。點擊此連結了解更多關於這些易於使用的LED邏輯探針的資訊。


圖 2:PIC16F13145-curiosity 試驗電路板電路原理圖,附按鈕和 LED。


圖 3:Seed 專案 I/O 引腳配置。

技術提示:圖 3 中的引腳分配看似隨機,但實際上是為了方便起見,並考慮到 Curious 評估板的佈局而選擇的。例如,輸出引腳 RB7、RC7、RC6、RB6 和 RB4 按順序排列。同樣,輸入引腳 RA2、RA1、RC0 和 RC1 也依序排列,如圖 1 中按鈕線介面所示。


圖 4:弱上拉電阻啟動的圖形顯示。

種子項目屬性

種子程式的邏輯如圖 5 所示。請記住,本項目旨在幫助您建造試驗電路板電路。因此,其邏輯非常簡單:

  • 每個輸入直接連接到一個輸出引腳。例如,CLBIN3PPS 連接到 PPS_OUT3。

  • 每個輸入都包含一個反相器,用於將邏輯從低電平有效切換到高電平有效。請記住,每個輸入引腳都預先連接了一個弱上拉電阻。按下按鈕時,該電阻會被拉低(負邏輯)。

  • 一個簡單的 Verilog 範例包含在 CLK_Demo 中。


圖 5:種子程式的混合 CLB 邏輯,包括閘級和分層 Verilog 模組。

Verilog 示範程式碼說明

Verilog 示範程式碼如清單 1 所示。程式碼設計為一個簡單的二分頻電路,在每個 CLK 脈衝的上升沿觸發轉換。在模組的核心部分,我們可以看到賦值語句 q <= !q;

CLK 訊號是這段 Verilog 程式碼中最重要的部分之一。這個原本隱藏的訊號可以在 Verilog 強大的 always @(posedge CLK) 條件語句中使用。

module CLK_Demo (CLK, enable, q);
    input CLK;
    input enable;
    output reg q;
    always @(posedge CLK) begin
        if (enable) begin
            q <= !q;
        end
    end
endmodule

清單 1:種子項目中使用的 Verilog 程式碼。

請注意,致能訊號由 CLBIN0PPS 驅動,如圖 5 所示。 Verilog 驅動的 LED 僅在按下 B0 按鈕時才會閃爍。

CLK 訊號的選擇

CLK 訊號可以從許多不同的微控制器訊號中選擇,例如高頻振盪器或定時器溢位訊號。在種子專案中,我們使用了一個預先配置的 1ms 定時器溢位訊號。如圖 6 所示,該訊號進一步細分為 128 份,以提供一個慢速訊號來驅動連接到 RB4 的 LED 閃爍。


圖 6:CLB 時脈訊號的配置。

電路搭建

本入門專案旨在協助您快速上手使用 Microchip 的 PIC16F13145 微控制器上的 CLB 電路。電路搭建在試驗電路板上,​​並以圖 2 的原理圖為參考。之後,您可以使用 MPLAB 載入該入門專案。然後,您可以根據需要開始故障排除程序。

技術提示:對於配置了弱上拉電阻的微控制器,電源軌上會出現電壓。您可以使用電壓表檢測該電壓,以驗證按鈕是否已正確連接到電路中。圖 6:CLB 時脈訊號的配置。

Microchip CLB 的後續步驟

種子專案運作成功後,您就可以開始編寫自己的邏輯電路了。CLB 具有 4 個輸入訊號和 8 個輸出訊號,可用於探索許多經典的數位電路,包括單閘電路、積之和電路,甚至狀態機。作為演示,我建造了一個帶有致能和方向輸入的半步進馬達驅動器。我將在近期發布該設計。

相關文章

如果您喜歡這篇文章,您可能也會覺得以下相關文章很有幫助: