使用 MPLAB IDE 與 veryVerilog MINI FPGA KIT 快速上手 Microchip 可配置的邏輯區塊 CLB

本文將示範如何透過 veryVerilog MINI FPGA KIT 搭配 MPLAB® IDE,快速建立並驗證第一個可配置的邏輯區塊 CLB 應用。


圖 1. 展示了在 MPLAB IDE 中使用的 配置邏輯區塊(CLB)

image
圖 2. veryVerilog MINI FPGA KIT

專案說明

veryVerilog MINI FPGA KIT 作為開發平台,並搭配 MPLAB IDE 開啟範例專案進行實驗。
本範例將同時展示兩個功能:

  • 由 MCU 韌體控制 LED 週期性閃爍
  • 在 CLB 中實作獨立運作的 Verilog AND Gate 邏輯

透過此範例,可以快速了解 MCU 韌體與 CLB 可程式化邏輯之間的協同運作方式。

main.c 程式內容

#include "mcc_generated_files/system/system.h"

/*
    Main application
*/

int main(void)
{
    SYSTEM_Initialize();
  
    while(1)
    {
        CLBSWINL = 0;                                         // starts with digit "0" 
        for(uint8_t counter = 0x00; counter <= 0x0F; counter++)     // loop for incrementing between 0h and Fh
        {
            __delay_ms(1000);                                 // waits until displays 
            CLBSWINL = CLBSWINL + 1;                          // increments the displayed hexadecimal number
        }
    }    
}

此程式原本是設計用於控制傳統七段顯示器(7-Segment Display),本範例則將其簡化,用來展示 CLB 的基本操作概念。

在程式啟動時,main.c 會先完成以下模組初始化:

void SYSTEM_Initialize(void)
{
    CLOCK_Initialize();
    CLB1_Initialize();
    PIN_MANAGER_Initialize();
    CRC_Initialize();
    INTERRUPT_Initialize();
}

初始化內容包含:

  • 系統時脈設定(CLOCK)
  • CLB 模組設定(CLB1)
  • GPIO 腳位初始化
  • CRC 模組初始化
  • 中斷系統設定

完成初始化後,程式將持續執行計數器遞增動作,並透過 CLB 將訊號輸出至 LED。

開啟 MPLAB Code Configurator 設計環境

在 MPLAB IDE 中依序選擇:

「Windows」→「MPLAB Code Configurator」

接著從 Application Builder 中點選 CLB1

隨後即可開啟 CLB Synthesizer Library

CLB 設計說明

這裡,我們將 main.c 週期性控制的 CLBSWIN0 訊號直接連接到 CLB,再輸出至 PPS_OUT1 (映射到一顆 LED 顯示)。

在 CLB 中加入 Verilog AND Gate

除了 LED 閃爍功能之外,本範例還在 CLB 中實作了一個簡單的 Verilog AND Gate。

其輸入來源如下:

  • CLBIN1PPS → Input A
  • CLBIN3PPS → Input B

這兩個輸入分別對應開發板上的兩個按鍵。

AND Gate 的輸出則連接至:PPS_OUT2

並驅動另一顆 LED。若在 CLB Block Diagram 中雙擊 Verilog 模組,即可檢視如下所示的 Verilog 原始碼。

CLB 合成(Synthesize)

當 CLB 設計有任何修改時,務必重新再次按一下「Synthesize」按鈕 (系統會重新產生:clbBitstream.S 檔案),然後才能建立新的建置版本並將其下載到 Microchip PIC16F13145。此外,如下圖所示,veryVerilog MINI FPGA 套件中使用相應的原理圖,為這個簡單的演示在 PIN Package View 視圖中進行了正確的接腳分配。

現在,使用 MPLAB IDE 進行編譯 (編譯總耗時約 6 秒)

接著將程式燒錄至 Microchip PIC16F13145

執行結果

當程式成功下載後,即可執行本 CLB 示範。

其中:

  • PPS_OUT1 連接至其中一顆 LED
  • 該 LED 由 main.c 經由 CLB 控制並週期性閃爍

同時,Verilog AND Gate 則獨立運作:

  • 兩個輸入分別連接至按鍵
  • 輸出連接至另一顆 LED

從示範結果可以觀察到,當兩個按鍵同時按下時,AND Gate 輸出 LED 亮起,驗證 CLB 內部 Verilog 邏輯運作正常。

至此,veryVerilog MINI FPGA KIT 的基礎 CLB 範例展示完成。

結論

veryVERILOG MINI FPGA KIT 是一套相當容易上手的開發平台,可用於學習與驗證 Microchip CLB 功能。除了可直接透過 MPLAB IDE 進行開發之外,也支援線上設計流程。

例如可透過 veryVerilog - Logic Circuit Design 101 - Microchip Try 建立 CLB 邏輯設計,並將合成後產生的 .S 檔案匯入 MPLAB IDE 專案進行建置與下載。開發者亦可透過 WebICSP v1.8 完成程式下載。

對於想要學習 Microchip CLB、Verilog 設計以及可程式化邏輯應用 的初學者與工程師而言,veryVERILOG MINI FPGA KIT 提供了一個簡單且容易實作的平台,目前亦可透過 DigiKey 購買取得。

1 Like