在進行MCU開發時,有時需要用到一些簡單的數字邏輯電路,LPC804與LPC55XX系列集成了PLU(Programmable Logic Unit),即可編程邏輯單元,可創建小型組合與時序邏輯電路,降低成本。
有些客戶在使用PLU時,對PLU的概念以及使用方法有些許疑問,本文對此進行講解。
1、PLU簡介
LPC804與LPC55XX的PLU在使用上是完全相同的。包含了6個輸入、8個輸出、26個5輸入查找表(LUT)、4個觸發器(state Flip-Flops),其中26個PLU是相互連接的,輸出與查找表、觸發器之間采用多路復用,如下:
數字邏輯電路分為組合邏輯電路與時序邏輯電路,只有時序邏輯電路需要使用觸發器。當使用觸發器時,需要外部向PLU_CLKIN提供時鐘輸入,即使用組合邏輯電路無需外部提供時鐘,使用時序邏輯電路時需要外部時鐘。如下:
2、PLU配置
測試最簡單的組合邏輯電路與時序邏輯電路,如下:
根據LPC55S69-EVK引出的引腳,如下:
配置引腳,如下:
配置時鐘,PLU的CLKIN時鐘設置為10K輸入,如下:
配置PLU外設,如下:
配置PWM外設,設置PWM為50%占空比,10K頻率,如下:
3、PLU Configuration tool 配置
NXP開發了PLU Configuration tool,此工具可以根據數字邏輯電路生成對應代碼,去配置PLU及其真值表,下載鏈接可以在PLU外設配置界面復制,鏈接如下:
https://www.nxp.com/mcu-plu-config-tool
3.1 原理圖配置
打開PLU配置工具,選擇原理圖設計,做一個簡單的或運算與D觸發器實驗,如下:
點擊菜單欄File-》Export-》PLU source file將其導出為C文件,將C文件的內容復制到main函數中,如下:
/* LUT0 (or01) */
PLU->LUT[0].INP_MUX[0] = 0x00000003; /* IN3 (IN3) */
PLU->LUT[0].INP_MUX[1] = 0x00000004; /* IN4 (IN4) */
PLU->LUT[0].INP_MUX[2] = 0x0000003F; /* default */
PLU->LUT[0].INP_MUX[3] = 0x0000003F; /* default */
PLU->LUT[0].INP_MUX[4] = 0x0000003F; /* default */
PLU->LUT_TRUTH[0] = 0xeeeeeeee; /* or01 (or01) STD 2 INPUT OR */
PLU->OUTPUT_MUX[5] = 0x0000001a; /* FF0 (FF01) -> OUT5 */
邏輯分析儀檢測結果如下:
注意只有在verilog文件中聲明posedge clock才會使用到觸發器,而且不能使用negedge sys_rst_n用來復位。always語句中的posedge clock將由CLKIN引腳的時鐘輸入代替,所以clock引腳是不起作用的。將生成的代碼復制到main函數中,用邏輯分析儀測試的結果如下:
審核編輯:郭婷
-
mcu
+關注
關注
146文章
17316瀏覽量
352239 -
觸發器
+關注
關注
14文章
2003瀏覽量
61286 -
plu
+關注
關注
1文章
6瀏覽量
7283
原文標題:LPC804與LPC55XX中的可編程邏輯單元PLU介紹及實例分析
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論