【導讀】開發人員可利用PIC16F13145系列單片機中的可配置邏輯模塊(CLB)外設實現硬件中復雜的分立邏輯功能,從而精簡物料清單(BOM)并開發定制專用邏輯。
開發人員可利用PIC16F13145系列單片機中的可配置邏輯模塊(CLB)外設實現硬件中復雜的分立邏輯功能,從而精簡物料清單(BOM)并開發定制專用邏輯。
在許多嵌入式系統應用中,通常都會使用分立式邏輯器件,例如74’HC系列。這些邏輯器件的優勢在于可以獨立于單片機(MCU)工作,并且響應速度比軟件快得多。但是,這些器件會增加物料清單(BOM)并且需要占用額外的PCB面積。
為了解決這一問題,Microchip的許多單片機都集成了一種名為可配置邏輯單元(CLC)的外設(在PIC? MCU上)或名為可配置定制邏輯(CCL)的類似外設(在AVR? MCU上)。這兩種外設都實現了軟件定義的定制邏輯,可以獨立于CPU執行。換句話說,一旦設置了定制邏輯功能,其行為就獨立于單片機。
但是,這兩種外設存在限制,即每個實例的邏輯數量非常小。每個CLC大約相當于一個查找表(LUT),而CCL相當于一個內部具有幾個獨立LUT的實例。這兩種外設的功能非常強大,可用于開發簡單邏輯電路、將各種信號混合在一起以及與其他硬件外設相集成。例如,硬件按鈕去抖、WS2812輸出生成和正交解碼這些示例都需要使用這兩種外設,但單片機中這兩種外設的數量并不多,因此限制了應用的復雜度。
為了支持更復雜的應用,PIC16F13145系列單片機引入了一種名為可配置邏輯模塊(CLB)的新型邏輯外設(如圖1所示)。請注意,CLB并不會取代CLC或CCL外設,器件可以同時配備CLC/CCL和CLB。
圖1—— CLB框圖
PIC16F13145系列單片機上的CLB包含四個邏輯組,每組包含八個BLE。不同邏輯組的BLE之間彼此連接——每個邏輯組代表兩個GPIO輸出和一個可選的CPU中斷。當工作電壓為5.5V時,BLE的傳播時間典型值小于6 ns。整個結構中的所有BLE共用一個公共時鐘,其時鐘源與可選的時鐘分頻器一起在軟件中進行配置。CLB可以使用單片機的內部時鐘源之一或外部提供的時鐘源。
該外設從單片機的存儲器中進行初始化,之后可通過外設引腳選擇(PPS)直接從自身結構中控制引腳。用戶可通過PPS重新分配用于硬件外設的I/O引腳,從而獲得更大的設計靈活性。舉例來說,如果SPI時鐘先前使用RA1,但使用RA6會更有利,那么便可以通過PPS重新映射引腳。
CLB中的其他元件包括專用的3位硬件定時器(帶解碼輸出)、用于輸入信號的邊沿檢測器以及32位輸出寄存器(用于調試)。單片機上的其他獨立于內核的外設(CIP)輸出可用作CLB的輸入,以便實現更復雜的設計。
由于CLB比CLC或CCL復雜得多,因此Microchip開發了一款名為CLB合成器的新工具。CLB合成器提供了一個用于配置邏輯的圖形界面,如下面的圖2所示。除了邏輯原語之外,該工具還支持更高級的邏輯模塊庫(可由用戶預先提供或定制)。
與該圖形工具交互時,后臺會自動生成一個Verilog模塊用于合成。如果開發人員更喜歡編寫自己的Verilog或者已準備好該文件,則可以將其作為模塊直接導入工具。
圖2——已打開相移鍵控(PSK)示例的CLB合成器
CLB合成器的輸出是一個匯編文件,其中包含用于設置CLB的比特流和一些用于將CLB配置為外設的源代碼。該工具可通過MPLAB?代碼配置器(MCC)或獨立在線工具運行。MCC是一款代碼生成實用程序,允許用戶使用可視化界面來設置和配置單片機中的外設。當硬件外設完成配置后,MCC將生成初始化代碼和器件API。
在運行時,使用板上硬件直接從程序存儲器加載CLB比特流。這種實現的好處在于如果在程序運行時需要更改CLB配置,則可以使用存儲在器件存儲器中的不同比特流重復執行加載過程。
為了演示CLB的應用,我們創建了一系列用例示例。這里我們將討論兩個示例:7段顯示轉換器和SPI至WS2812轉換器。用例示例可作為構件復制以用作完整解決方案的一部分。這里旨在展示該外設的實用性以及它能夠為設計帶來哪些價值。
第一個用例是7段顯示轉換器。7段顯示器可通過一組普通的I/O引腳驅動,但標準實現通常需要使用軟件定義的查找表將輸入數字轉換為適合顯示器的正確輸出模式。在該實現中,CLB充當硬件查找表。所需的輸出字符(0到F)從軟件加載到CLB輸入寄存器中。顯示器的每個輸出段均由LUT控制,以將輸入映射到輸出。
該用例示例在內部用于構建計時系統的新控制板。最初的用戶界面是在20世紀80年代使用74’HC系列邏輯開發。使用CLB后,一個20引腳的單片機即可實現電路板上的顯示和鍵盤邏輯,極大地精簡了物料清單(BOM)。圖3并排給出了兩種方案以供比較。
圖3——原PCB與新PCB的并排比較。該示例由Josh Booth開發。
下一個示例是SPI至WS2812轉換器。WS2812是一種單線串行協議,用于通過脈寬調制控制LED陣列。在本例中,SPI硬件用作要發送到LED的數據的移位寄存器,而CLB用于將SCLK和SDO轉換為預期的輸出。
在本例中,這是通過單觸發3位計數器、帶使能功能的D鎖存器和4輸入LUT來實現,如下面的圖4所示。該實現的技巧體現在SPI和CLB的時鐘源。SPI時鐘設置為空閑高電平、在上升沿改變狀態并以WS2812輸出的頻率(800 kHz)運行,而CLB的時鐘源以前者10倍的頻率(8 MHz)運行。當SCLK為低電平時,將觸發3位計數器并開始計數。當計數到7(0b111)時,3位計數器將停止并保持為0,直到時鐘脈沖的下一個低電平周期為止。
計數器的輸出與輸出數據的鎖存版本一起饋入4輸入LUT。這將設置數據的輸出模式,如圖4的右側所示。計數器復位后,計數器輸出將保持為0以完成循環。之后,可根據需要發送SPI硬件中的下一個字節,重復該循環。
圖4——SPI至WS2812轉換器框圖(由Petre Teodor-Emilian開發)
這兩個示例都證明了單片機內部分立邏輯的優勢。硬件外設可將CPU從各種任務中解放出來,從而縮短響應時間并降低功耗,同時減少元器件數量。有了CLB,之前無法在單片機內部實現的復雜應用現在都可以順利開發。目前,可前往Microchip直銷網站或其他代理商處購買PIC16F13145系列單片機來獲取CLB。
Robert Perkel是Microchip的一名應用工程師。他主要負責編輯應用筆記,投稿文章和視頻等技術內容,以及分析外設的用例和開發代碼示例與演示。Perkel畢業于弗吉尼亞理工大學,獲得了計算機工程理學學士學位。
(作者: Microchip Technology Inc. 8位單片機業務部 應用工程師 Rober)
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理。
推薦閱讀: