漫談系列的前兩期分別介紹了 MM32F5270 所采用的?“星辰”STAR-MC1 處理器和多并發總線架構設計,相信讀者在讀完了前面的介紹后,已經對 MM32F5270 的高性能設計特點有了一定的了解。本期,筆者接著來聊聊在 MM32F5270 中首次采用的外設間互聯矩陣 MindSwitch 和組合邏輯單元 CLU,看看 MM32F5270 是如何通過 MindSwitch 和 CLU 來實現可任意編程、任意重組的外設間互聯系統的。 ?
注:為避免讀者把外設互聯和上期談到的總線互聯混淆,這里做一個簡單的解釋。總線互聯指的是CPU、DMA 等總線 Master 和存儲、外設等總線 Slave 間的數據傳遞,而外設互聯指的是外設間的控制信號的交互。
痛點:IP-to-IP
MCU 中文翻譯為微控制器,可以定義為使用處理器來控制外圍設備以實現和外部世界交互的控制單元,這里的交互包括外部信號的采集、通信以及對外部電路的控制。因此, MCU 一般具備比較豐富的外圍設備(外設,Peripherals),常見的外設如下表所示: ?
? 需要補充說明的是,上表中僅僅列舉了外設的類型,而在一個 MCU 中,其每種外設的數量可能是有很多個的,這樣一來,所有外設的數量就變得很龐大。 ? 而在實際應用中,這些外設往往不是孤立的,很多情況下都需要多個外設間的協同配合去實現某項功能,典型的例子如電機控制系統,這類系統中往往需要 ADC、定時器、PWM等模塊間的精確同步。因此,當這些數量龐大的外設間需要交互時,如何高效便捷的管理成了芯片設計中的一個主要難題(芯片設計人員一般將此叫做 IP-to-IP 設計)。 ? 而 MCU 的一個主要特點是其面向的應用非常廣泛,這就導致不同的用戶對于外設資源的使用千差萬別,外設間的同步邏輯更是各不相同。 ? 為滿足不同應用的需求,就需要外設間的互聯做到靈活可配。但在很多市面上常見的 MCU 中,外設間的同步邏輯是固定的,是軟件無法配置的。這種 IP-to-IP 設計雖然能夠滿足一些典型應用的需求,但確無法滿足所有用戶的需求。? 以靈動的產品為例,MM32F3270 和 MM32F5270 中均配備了2 個 5 通道高級定時器和 4 個 4 通道通用定時器,每個定時器都有一路觸發脈沖輸出(TRGO 信號,具體含義參考用戶手冊),同時定時器的每個通道都可以產生一個觸發脈沖輸出,因此,這里一共有 32 個觸發脈沖信號,這些脈沖可用于觸發其它模塊的執行,如觸發 ADC 的采樣和 DAC 的轉換,或觸發其它定時器的計數以實現多計數器間的同步。 ? 以定時器觸發 ADC 采樣為例,傳統的做法是根據應用經驗,固定幾種常見的觸發方式,這里可以參考 MM32F3270 中的做法,如下圖所示。可以看到,這里 ADC 的觸發源是通過一個 5 位的 TRGSEL 寄存器來選擇的。 ? 這里主要有兩個局限: ?觸發源有限? 這里的觸發源僅覆蓋了 32 個觸發脈沖信號中的半數,例如如果用戶想選擇 TIM1\_TRGO,或者 TIM2\_CC3 等來觸發,這里是無法實現的 ?觸發源的組合有限? 假如用戶需要在 1 個 PWM 周期內多次觸發 ADC,則需要多個觸發源的邏輯組合(OR 運算),但這里支持的信號組合非常有限。 ?
互聯矩陣 MindSwitch
MindSwitch就是針對這一痛點而設計,實現了可以任意編程、任意重組的 IP-to-IP 互聯網絡。MindSwitch 將系統常用的觸發源都連接到了其輸入端,解決了觸發源限制;而 MindSwitch 內置的組合邏輯單元 CLU (Combinational Logic Unit) 則支持任意信號的邏輯組合,解決了觸發源組合限制。? MindSwitch 和 CLU 的構造如下圖所示,其主要特性包括: ? 分為觸發矩陣(Trigger Matrix)和連接矩陣(Connection Matrix)? 可配置觸發源和觸發目標 ?
觸發源和觸發目標可自由配置
支持外設硬件觸發和軟件觸發
內部集成四個組合邏輯單元 CLU,提供 OR-OR 組合邏輯操作
可配置連接源和連接目標 ?
連接源和連接目標可自由配置
內部集成四個組合邏輯單元 CLU,提供多種組合邏輯操作
支持不同時鐘頻率的觸發源和觸發目標之間協同工作 ? 讀者可以把 MindSwitch 理解成兩個獨立的 M 到 N 映射矩陣,其中 M 是源的數量,N 是目標數量,任意源可以映射到任意目標上。 ?
? 這里,觸發指的是邊沿觸發(上升沿、下降沿),而連接指的是電平信號的直連。 ? 在 MindSwitch 內部,這兩種類型的互聯矩陣是互相獨立的,即 MindSwitch 內部包含了 1 個觸發類型互聯矩陣(Trigger Matrix)和 1 個連接類型 互聯矩陣(Connection Matrix),兩個 Matrix 互相獨立,互不干擾,觸發源僅能連接到觸發目標上,而連接源僅能和連接目標相連。 ? 這里 CLU 是一個 4 輸入 1 輸出的組合邏輯單元,后文會有更具體的介紹,這里先跳過。 ?用戶可將任意觸發源連接到任意觸發目標上,或者通過 CLU 將任意 4 個觸發源進行 OR-OR 邏輯組合后連接到任意觸發目標上。這里的配置都是軟件編程的,即用戶可以根據其應用場景的需要進行任意配置。 ? 觸發和連接的區別是,觸發信號需要 MindSwitch 做同步處理,且觸發信號僅支持 OR-OR 邏輯操作。 ? 下表整理了 MM32F5270 中的所有源和目標的數量和類別,具體列表可參考芯片的用戶手冊。 ?
?
組合邏輯單元 CLU
上文已經提到過 MindSwitch 中內置了 4 個 CLU 單元 (CLU0~CLU3),CLU 的全稱是 Combinational Logic Unit,即組合邏輯單元。顧名思義,即實現與、或、非等組合邏輯運算的單元。 ? 每個 CLU 都是一個 4 輸入 1 輸出的單元。4 個輸入命名為 CLUxIN0~CLUxIN3,這里將 CLUxIN0 和 CLUxIN1,CLUxIN2 和 CLUxIN3 兩兩組合(第一級組合),再將組合后的信號進行組合(第二級組合),得到 CLUx 的輸出。CLU 的運算類型根據兩級組合的不同進行區分,可以分為: ?
OR-OR
AND-OR
OR-XOR
AND-AND
以 AND-OR 為例,即CLUxIN0 和 CLUxIN1 做邏輯與(AND)運算,CLUxIN2 和 CLUxIN3 做邏輯與運算,兩者的結果再進行邏輯或(OR)運算,其邏輯表達式如下: ?CLUxOUT = (CLUxIN0 & CLUxIN1) | (CLUxIN2 & CLUxIN3)? 具體四種模式的電路圖如下圖所示。 ? 對于 Connection Matrix,每個 CLU 都可以通過 CLUMODE 寄存器來配置成上述任意模式;對于 Trigger Matrix,僅支持 OR-OR 操作。 ? 對于很多應用場景,用戶可能僅需要 2 個或 3 個信號的邏輯組合,此時,用戶只需要將空閑的一路或多路 CLUxINx 選擇為固定電平即可。同時注意到,任意 CLU 輸入都可以選擇邏輯取反操作,這大大增加了 CLU 的靈活性。 ?
實例說明
經過上述介紹,讀者可能還是無法直接感受到 MindSwitch 和 CLU 的強大。這里,以幾個典型用例來進一步說明。 ?
單電阻 FOC 中的 ADC 采樣控制
在單電阻 FoC 控制中,需要在一個 PWM 周期內依次采集兩相電流、母線電壓和環境溫度等信息。因此,需要在一個 PWM 周期內觸發多次 ADC 的采樣,這里以 3 次為例說明。 ? 還是以 MM32F3270 為例,參考上文中 MM32F3270 的 ADC 觸發源配置表,可知 MM32F3270 的多路觸發源僅支持 TIM1 或者 TIM8 ?的 CC4 或 CC5 觸發,因此其驅動電機的時候的資源分配是這樣的: ?
通過 TIM1 的通道 1、2、3 來做為三相電機的驅動,而通道 CC4 和 CC5 用于觸發 ADC 的采樣。
可以看出,這樣的操作有兩個弊端: ?
1 個 PWM 周期僅能觸發兩次 ADC 采樣,如果想要實現更多的采樣,則需要采用更復雜的軟件手段
假如使用其它定時器(TIM2/3/4/5)去做觸發,則僅支持最多一次采樣
而MM32F5270 采用 MindSwitch 可實現單 PWM 周期內任意時刻的 4 次 ADC 觸發。? 還是以上述應用場景為例,依然用 TIM1 的通道1、2、3 來驅動電機,但 ADC 觸發部分可以有以下兩種優化方法: ?方法1? 用 TIM1 的通道 4、5 觸發(CC4/CC5)加上 TIM1 的 TRGO 信號做觸發源,這三個信號通過 OR-OR 邏輯組合,再送到 ADC 做觸發。可實現每個 PWM 周期觸發 3 次 ADC 采樣。 ?方法2? 用 TIM3(或其它通用 4 通道定時器)的通道 1、2、3 (CC1/CC2/CC3)來做觸發,這三個信號通過 OR-OR 邏輯組合,再送到 ADC 做觸發。可實現每個 PWM 周期觸發 3 次 ADC 采樣。 ?
注:方法2 需要確保 TIM1 和 TIM3 是嚴格同步的。
方法 1 的優點是僅通過 TIM1 搞定一路電機的驅動和采樣。但如果定時器資源還有富余,則可以采用方法2。如果將 TIM3 的 CC4 或者 TRGO 信號也利用起來,則方法 2 能輕松實現每個 PWM 周期觸發 4 次 ADC 采樣。 ? 方法1 的內部連接示意如下: ?
? 方法2 的內部連接示意如下: ?
? 方法1 的整個步驟和定時器計數和觸發波形如下圖所示。讀者可以試著自己推導 方法 2 的定時器波形和 CLU 邏輯表達式。 ?
在 Sensorless BLDC 電機控制中,往往通過檢測反電動勢來判斷電機當前所處的位置,而其中的關鍵在于對反電動勢過零點的判斷。這里,一種比較快速的方法是通過芯片內置的高速比較器來判斷。 ? MM32F5270 中就包含了 3 路高速模擬比較器(COMP),可分別檢測三相反電動勢的過零點。 ? 但真實情況下,MOS 管在導通和關斷的瞬間會在反電動勢上產生較大的毛刺,如下圖所示。這個毛刺會導致比較器誤判,因此,需要通過某種方法讓比較器在 PWM 開關瞬間不工作。 ? 傳統的方法往往需要通過復雜的軟件干預,如通過中斷去定期使能和關閉比較器等。但這種方法會額外占用 CPU 帶寬,特別是對轉速要求較高的場景有較大限制。 ?
?而MM32F5270 通過 MindSwitch 和比較器的窗口功能可實現全硬件過零檢測。? 首先,MM32F5270 在模擬比較器中新增了窗口使能控制,僅在窗口信號有效時,比較器的輸出結果才有效。 ? 同時,可以采用某個定時器的輸出通過 MindSwitch 連接到比較器的窗口信號上。 ? 如果僅采用單個 TIM 通道輸出,則不需要 CLU 的參與;如果需要多路信號邏輯組合后來產生一個更復雜的窗口信號,則可加入 CLU 運算。 ?
? 整個步驟和定時器計數和觸發波形如下圖所示: ?
替代外部邏輯器件
在很多應用中,用戶可能需要對某些信號進行邏輯組合,常見的邏輯運算包括與運算、或運算、非運算(取反)等基礎單元以及更復雜真值表的組合邏輯運算。一般情況下,用戶需要額外購買邏輯芯片(如 74 系列)來實現上述功能。 ?MM32F5270 通過 CLU 可以覆蓋簡單的邏輯芯片,從而幫助用戶節省 BOM 成本。? 這里,用戶可以把需要進行邏輯組合的信號從 GPIO 輸入,進入 CLU 進行邏輯組合,并將 CLU輸出通過 GPIO交回給板級電路。此時的 MindSwitch 內部連接如下圖所示: ?
更靈活的 PCB 布線
在實際應用中,用戶可能會遇到下面這種情況: ? 在芯片的引腳分布上,某個引腳的腳位和其相關外圍電路的距離較遠,從而導致無法通過單層布通。此時,如果功能引腳的腳位是可調的,就能很好的解決這個問題。 ?MM32F5270 也將這個功能集成到了 MindSwitch 中,可通過 MindSwitch 實現靈活的 PCB 布局布線。? 如下圖所示。假設 TIMER 輸出的引腳是分布在芯片的左上角(橘黃色高亮),而其對應的外圍電路位于 PCB 的右下角(藍色方框)。可以看到,如果沒有 MindSwitch,TIMER 輸出需要很長的路徑才能繞線到 PCB 右側的外圍器件上(如圖中黃色路徑)。這個路徑是比較長的,且當布線層數較少時,可能無法成功布通,此時用戶需要調整其原有的布局,PCB 布線的難度提高。 ? 而通過 MindSwitch,用戶可以將 TIMER 的輸出連接到 MindSwitch 輸入,并通過 MindSwitch 將其連接到芯片右下角的 GPIO 上 (橘黃色高亮),再以較短的路徑連接到外圍器件。通過 MindSwitch 給用戶的布局布線提供了更高的靈活度。 ?
? 除了上述提到的 4 種典型應用場景,MindSwitch 和 CLU 還可以用于支持以下場景: ? 方便用戶調試 – 用戶可以將內部信號通過 MindSwitch 引出到片外通過示波器等觀測。 ? 靈活的波形組合 – 在一些復雜的應用中,需要用到非常規的控制波形,這樣的波形可以通過多個定時器的輸出波形進行邏輯組合產生。 ?需要強調的是,MindSwitch 和 CLU 的最大優勢就是可以任意編程、任意重組。?筆者相信,我們的用戶一定還可以將它們擴展到更多、更有趣的應用場景,讓我們拭目以待吧。
小結 & NEXT
本文介紹了MM32F5270 中引入的全新外設間互聯矩陣 MindSwitch 和組合邏輯單元 CLU 的功能和原理,并通過一些實例說明了 MindSwitch 和 CLU 對應用所帶來的幫助。 ? 未完待續!本文是 MM32F5 漫談系列的第三篇,后續將為大家持續更新,旨在分享 MM32F5 系列中所包含的那些有趣的技術,敬請期待! ?關于靈動? 靈動成立于 2011 年,是中國本土領先的通用 32 位 MCU 產品及解決方案供應商。公司基于 Arm Cortex-M 系列內核開發的 MM32 MCU 產品擁有 F/L/SPIN/W 四大系列,目前已量產 200?多款型號,累計出貨數億顆,每年都有近億臺配備了靈動 MM32MCU 的優秀產品交付到客戶手中,在本土通用 32 位 MCU 公司中位居前列。 ?
? 靈動客戶涵蓋智能工業、汽車電子、通信基建、醫療健康、智慧家電、物聯網、個人設備、手機和電腦等應用領域。靈動微電子是中國為數不多的同時獲得了 Arm-KEIL、IAR、SEGGER 官方支持的本土 MCU 公司,并建立了獨立、完整的通用 MCU 生態體系,可以為客戶提供從硬件芯片到軟件算法、從參考方案到系統設計的全方位支持。 ? ?
?
審核編輯 :李倩
?
評論
查看更多