精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探秘HPM6200系列MCU的可編程邏輯陣列

MCU開發加油站 ? 來源:MCU開發加油站 ? 2023-07-05 18:13 ? 次閱讀

一、HPM6200 系列 PLA 整體結構

HPM6200 系列的 UM 中帶有 PLA 的結構簡圖。為了方便大家把握整體結構,我也繪制了一個稍微更詳細的結構圖,將 PLA 外設中的大部分元素都展示出來,并給出了單個通道內的具體結構。

185e8b9a-1b1c-11ee-962d-dac502259ad0.png

從總體來看,PLA 外設擁有 8 輸入、8 反饋、8 輸出,其中 8 輸入、8 反饋是內部的 8 個通道共享,8 輸出則是每個通道使用一個。輸入、輸出均連接到 TRGM 外設,再通過 TRGM 連接到定時器、編碼器、外部引腳等地方。需要注意的是,PLA 的 8 輸入、8 輸出并非全部都能引出至外部引腳中。每個 PLA 外設都連接到一個指定的 TRGM 外設,而每個 TRGM 外設最多僅可連接 12 個外部引腳,同時 TRGM 還可能有其他信號需要接到外部引腳中,如果想要使用更多外部引腳,則還需要使用 TRGM 間連接等方式。因此,在設計 PLA 程序時需要盡可能提前考慮 I/O 安排的問題。

每個 PLA 外設由一個濾波器 FILTER1 和 8 個通道組成,FILTER1 對輸入和反饋信號進行濾波后,寬度為 16bit 的信號將同時輸入到 8 個通道之中(這個扇出也挺驚人的)。每個通道的輸出寬度均只有 1bit,8 個通道合并組成的 8bit 就是 PLA 外設的輸出。下面我們將分別對 PLA 濾波器和單個通道進行介紹。

二、PLA 外設中的濾波器

和我們之前介紹過的 PLA 結構相比,HPM6200 系列的 PLA 最大的特點就是多出了一些濾波器。每個 PLA 外設都有一個 FILTER1 濾波器,8 個通道中每個通道還各有一個 FILTER2 濾波器和 FILTER3 濾波器。目前,文檔中并沒有向我們介紹這些濾波器的設計目的,不過我們也不難從其功能中窺探一二。無論是 FILTER 1, 2 還是 3,他們的功能基本一致:將輸入信號經過同步、邊沿檢測、軟件注入和擴展濾波四個環節后輸出。

1. 同步

文檔中并沒有告訴我們同步功能的具體實現方式,不過在這一段描述里面,我們可以大致猜測出很多信息

FILTER_SYNC_LEVEL 位選擇同步器級數,清 0 時為 2 級同步,置 1 時為 3 級同步。根據該位的設置,同步器會將信號延時 2 個或者 3 個時鐘周期。

2級、3 級同步可選,聽上去就與跨時鐘域處理中的同步器很像。比較了解 FPGAIC 設計的朋友知道,同步器是減少亞穩態對邏輯電路影響的一個常用措施,PLA 外設可以接受外部輸入的信號,自然也算是一種“跨時鐘域”傳遞信號的過程。同時,增加同步功能還有利于避免出現組合邏輯電路的競爭-冒險,畢竟 FPGA 和 CPLD 開發時有 EDA (盡管 EDA 也不完全可靠)工具幫忙看著,我們在和 PLA 玩耍的時候就沒那么好的條件了。因此我們不妨猜測同步功能實際上就是使用 2/3 級觸發器構成的同步器。

2. 邊沿檢測

這一功能很好理解,將邊沿轉為脈沖,此處不再贅述。

3. 軟件注入

這一功能也很好理解:強制將輸出設置為高電平或低電平。實際上各邏輯門前的四選一 MUX 也能實現類似的功能,這一功能更多是為可配置觸發器 CFF 或者是降低配置復雜度而生的。

4. 擴展濾波 擴展濾波要比上面三個功能復雜得多,文檔也并沒有講得特別清楚,下面我將結合實際例子,分別介紹它的四個濾波類型效果。

在開始之前,我們首先要了解 PLA 外設的時鐘。PLA 外設掛載在 AHB/APB 總線下,因此也受在 AHB/APB 時鐘(默認 200MHz)驅動。在上文提到的同步器同步周期數量中,2/3 級同步就是指的 AHB/APB 時鐘的 2/3 個周期。擴展濾波功能最高支持 65535 周期的擴展,對應的 AHB/APB 時鐘周期數也為 65535 周期,單個周期的時間為 5ns,這在我們后續的計算中會常常用到。對于 hpm_sdk v1.2 以前的版本,周期數配置部分存在一個小 bug,需在代碼中將計算出來的周期數乘二。

(1)輸入高電平擴展

這一個模式相對比較好理解:擴展高電平的長度,也就是在輸入信號變為低電平以后,輸出信號仍會保持高電平,時間為設定的周期數。下圖給出了一個例子。輸入信號是周期為 80μs,占空比 50% 的 PWM 信號,濾波器設置為輸入高電平拓展,周期數為 2000,輸出信號較輸入信號延遲10μs 變為低電平。

18e37fee-1b1c-11ee-962d-dac502259ad0.png

(2)輸入低電平擴展

這一個模式正好與上一個模式相反。下圖輸入信號仍是周期為 80μs,占空比 50% 的 PWM 信號,濾波器設置為輸入低電平拓展,周期數為 2000,輸出信號較輸入信號延遲 10μs 變為高電平。

18f4d014-1b1c-11ee-962d-dac502259ad0.png

(3)輸出狀態擴展

這一個模式可以看作是以上兩種模式的加和:既延長低電平時間,也延長高電平時間。輸入信號發生變化時,輸出信號將先在設定的周期數內維持現有狀態,結束后跟隨輸入信號變化。這一模式可以起到兩個效果,一是將脈沖寬度小于設定周期數的脈沖全部過濾掉,二是將脈沖寬度大于設定周期數的脈沖延遲設定周期后輸出。

下圖前半段輸入信號是一個脈沖寬度為 40μs 的 PWM 波,輸出信號對比輸入信號延遲了 10μs;在后半段將輸入信號和輸出信號對比,則可以發現所有寬度不大于 10μs 的波形都被過濾掉了。

1904be52-1b1c-11ee-962d-dac502259ad0.png

(4)輸入跳變擴展

這一模式下輸出信號跟隨輸入信號變化,但是當輸出信號發生過跳變以后,在設定周期數的時間內,輸出信號將保持不變,隨后輸出信號繼續跟隨輸入信號的變化。

下圖中前半段濾波器設置的周期數為 2000,對應 10μs 的時間,因此對于半周期 20μs 的 PWM 信號不會產生任何影響;后半段濾波器設置的周期數為 6000,對應 30μs 時間,因此在輸入信號從高電平跳變為低電平以后,輸出信號還會繼續保持高電平直至 30μs 結束。

19149976-1b1c-11ee-962d-dac502259ad0.png

三、PLA 外設通道結構

1. 與- 或陣列

每個通道的 16 信號輸入會分別接入到 8 個 16 輸入與門中,對單個輸出信號最高支持 8 個最小項相加(8 個與門),并可生成 7 個輸出信號(7 個或門)。每個邏輯門的輸入端都有一個四選一 MUX,可選邏輯 1、邏輯 0、原信號和原信號取反四種輸入。

2. 可配置觸發器

CFF 可被配置為 D 觸發器、雙邊沿 D 觸發器、JK 觸發器、T 觸發器、鎖存器、運算器和直接輸出信號這幾種功能。CFF 的輸出即為其所在通道的輸出,輸出信號寬度 1bit,輸入信號寬度則為 7bit,CFF 配置為各類觸發器時,觸發器的使能、置位、同步/異步復位、時鐘等信號均來自于 7bit 寬度的輸入信號,具體的分配表可見 UM 文檔。除了使用輸入信號以外,CFF 還可以使用 AHB/APB 的時鐘。

四、如何使用 HPM_SDK 中的PLA驅動

在之前介紹的各種含有 PLA 的芯片基本都會配置對應的 EDA 工具,用戶一般可以使用 verilog 編程或者圖形化界面編程,由 EDA 工具生成比特流。比如 PSoC 芯片用戶可以使用圖形化界面編輯狀態機的狀態轉移條件,再由軟件完成后端的處理。HPM6200 的 PLA 則沒有使用這種開發方式,而是將所有的可配置項均以寄存器的方式暴露給 CPU,CPU 設置好對應的寄存器以后,PLA 即可開始工作。

1. FILTER

濾波器的可配置項非常多,包括是否同步、是否啟用邊沿檢測、是否軟件注入等一系列內容,不過最關鍵的其實是準確把握配置的數量。PLA 中有 1 個 FILTER1、8 個 FILTER2 和 8 個 FILTER3,FILTER1/2/3 中分別有 16/8/7 個信號,每一個信號都可以獨立設置上述介紹過的所有濾波功能,也就是共有 136 個信號,很容易錯配、漏配。因此,除了所有通道共用的 FILTER1 單獨配置以外,FILTER2/3 建議和它們所在的通道一同配置,避免混淆的同時,如果部分通道沒有使用,也就不需要對它們的 FILTER2/3 進行配置了。

1926f594-1b1c-11ee-962d-dac502259ad0.jpg

濾波器的配置結構體是一個位域結構體,使用四個字節保存一個信號的濾波選項,其每個成員的功能結合手冊也非常容易理解,注意,配置結構體里面并沒有任何關于該配置位于哪個通道、哪個濾波器等位置的信息。結構體填充完成以后,則需要使用以下幾個函數完成設置:

1934d1dc-1b1c-11ee-962d-dac502259ad0.jpg

這里面實際上有不少容易踩坑的地方。例如 FILTER2/3 都只有一個函數,而 FILTER1 有 in/out 兩個函數。實際上 in/out 兩個函數分別負責 FILTER1 16 個信號里面前 8 個和后 8 個信號的配置,原因大概是前 8 個是 PLA 的輸入信號,后 8 個則是 PLA 的輸出信號反饋回來的。

剛剛提到的濾波器配置結構體里面并沒有關于位置的信息,因此這些信息要以參數的形式提供給設置函數。以在通道 3 的 FILTER2 為例,使用 pla_set_filter2() 時不僅要寫明通道 3,還要指出是 FILTER2 8 個信號中的具體哪一個信號。而 SDK 中通道參數和信號參數分別叫 chn 和 filter2_chn,使用時一定要注意區分兩者之間的差別。

2. 與門

16 輸入與門本身只有一個可配置的內容:各輸入信號的 MUX 選項。不過同樣需要注意數量和位置的問題。8 個通道里面,每個通道有 8 個與門,每個與門又有 16 個 MUX。當然,除了沒有使用的通道無需配置以外,部分沒有使用的與門也可以不進行設置,默認狀態下與門將輸出低電平。

194ea274-1b1c-11ee-962d-dac502259ad0.jpg

與門的配置結構體是 pla_aoi_16to8_chn_cfg,可以對一個與門進行配置,記得不要被它名字里面那個 chn 給欺騙了。結構體里面有 pla channel 和 aoi_16to8 channel 兩個“通道”成員,一個指的是 PLA 的通道,另一個則是指 8 個與門的編號。個人認為這樣設計其實容易混淆,可以在命名方面更加有區分度一些。

一個與門中有 16 個 MUX,因此 pla_aoi_16to8_chn_cfg 里面有長度為 16 的 MUX 配置結構體 pla_aoi_16to8_cfg_unit_t 數組。MUX 配置結構體的 signal 成員是信號的編號;op 成員的四個選項對應 MUX 的四個選項,對應關系在上面的代碼注釋中給出。 最后我們需要使用以下函數對一個與門進行配置。

1960f82a-1b1c-11ee-962d-dac502259ad0.jpg

3. 或門

或門的代碼和注意事項和與門大同小異,數量上一個通道有 7 個或門,每個或門有 8 個 MUX,比與門會少不少,其余部分基本一致,參照使用即可。

196f09b0-1b1c-11ee-962d-dac502259ad0.jpg

4. 可配置觸發器

CFF 可配置的內容并不多,主要就是功能選擇和時鐘源,具體情況可參考源代碼。需要注意的是觸發器的同步復位、同步置位、異步復位、異步置位等信號有的是高電平有效,有的則是低電平有效,且有優先級順序,使用時需要對照手冊仔細調整。

197f5ed2-1b1c-11ee-962d-dac502259ad0.jpg

5. 使能 PLA

在完成上述全部配置完成以后,還需要對每一個通道進行使能。

19987b42-1b1c-11ee-962d-dac502259ad0.jpg

在沒有使能的情況下,PLA 的寄存器可以作為 1KB 的 APB SRAM 使用。

五、一個簡單的例子:同步八進制計數器

1. 概述

在前面章節的基礎上,我們將實戰使用 PLA 構建一個經典的同步時序邏輯電路:同步八進制計數器。為了簡化問題讓大家更容易理解,我們要構建的計數器只會計數,沒有復位、沒有使能、沒有置數,長得更像是個分頻器,它的電路結構如下所示:

19a395e0-1b1c-11ee-962d-dac502259ad0.png

有了電路圖,下一步就是將電路結構轉換為 PLA 的配置代碼。不過,由于 PLA 是與或結構,我們不妨進一步直接將使用到的與門、或門和各種信號都繪制出來,在編碼時將會更加方便。

19b58584-1b1c-11ee-962d-dac502259ad0.png

對照上圖,我們可以提煉出以下信息:

此電路使用了 3 個 PLA 通道,每個通道的 CFF 均配置為 T 觸發器(圖上是 JK,實際功能是 T)

觸發器時鐘使用外部時鐘PLA OUT0OUT1OUT2 分別作為計數器 D2D1D3 的輸出

OUT1OUT2 將作為反饋信號進入通道 1 和 通道 2

2. 工程準備

本部分包括新建工程、使用 GPTMR 產生 1M PWM 作為時鐘的代碼,本文不打算討論這一部分內容,讀者可以參考 HPM_SDK 中的其他例程了解。為了區分三個通道的設置代碼,在 main 函數前聲明了三個通道的配置函數。

19c7e2ec-1b1c-11ee-962d-dac502259ad0.jpg

19e1df08-1b1c-11ee-962d-dac502259ad0.jpg

19edf360-1b1c-11ee-962d-dac502259ad0.jpg

3. TRGM 與 I/O

PLA 并沒有專屬于自己的輸入輸出引腳,和其他增強運動控制系統外設一樣,所有輸入輸出信號都要通過 TRGM 處理。因此,這里的代碼將 GPTMR0 CH2 的 PWM 輸出引入到了 PLA0 IN0 中,將 PLA0 OUT0/1/2 輸出到三個外部引腳中。為了方便對比時鐘波形和計數器輸出,還將 GPTMR CH2 的 PWM 也輸出到外部引腳中。

19f8e3ec-1b1c-11ee-962d-dac502259ad0.jpg

1a10973a-1b1c-11ee-962d-dac502259ad0.jpg

1a2bbe7a-1b1c-11ee-962d-dac502259ad0.jpg

1a395544-1b1c-11ee-962d-dac502259ad0.jpg

1a4bff50-1b1c-11ee-962d-dac502259ad0.jpg

4. FILTER1

FILTER1 并沒有特別的功能需求,因此我們只需要開啟同步功能即可。

1a5e07e0-1b1c-11ee-962d-dac502259ad0.jpg

5. 通道 0

來到通道 0 的配置函數,首先聲明與門陣列、或門陣列和兩個濾波器的配置結構體變量。

1a6df9a2-1b1c-11ee-962d-dac502259ad0.jpg

通道 0 使用了兩個與門。第一個與門根據兩個反饋信號相與生成 T 觸發器的 T 信號,先將它的全部 MUX 設為輸出邏輯 1,再將反饋通道對應的 9、10 號 MUX 修改為輸出原信號。第二個與門只需要輸出 PWM 時鐘信號,因此只設置一個 MUX 輸出原信號,其余全部設置輸出邏輯 1。

1a7cd922-1b1c-11ee-962d-dac502259ad0.jpg

1a90d8f0-1b1c-11ee-962d-dac502259ad0.jpg

1a9ffe7a-1b1c-11ee-962d-dac502259ad0.jpg

FILTER2 同樣只需要設置同步。

1aaf256c-1b1c-11ee-962d-dac502259ad0.jpg

通道 0 使用了兩個或門。第一個或門需要輸出與第一個與門完全相同的信號,因此 0 號 MUX 設置輸出原信號,其余 MUX 輸出邏輯 0(注意,沒有使用的信號 MUX,一般與門設置輸出邏輯 1,或門設置輸出邏輯 0),第二個與門也基本一致。

1acb7adc-1b1c-11ee-962d-dac502259ad0.jpg

1ad8f4a0-1b1c-11ee-962d-dac502259ad0.jpg

1aee131c-1b1c-11ee-962d-dac502259ad0.jpg

FILTER3 同樣設置信號同步,不過不要忘了 FILTER3 同時也輸出觸發器的同步異步復位置位,我們這個電路沒有相關功能,因此全部根據手冊設置為固定值即可。如果要使用這些功能,則需要另外構建他們的控制邏輯函數。

1afc330c-1b1c-11ee-962d-dac502259ad0.jpg

1b0e4a7e-1b1c-11ee-962d-dac502259ad0.jpg

最后是 CFF 并使能通道。

1b1b8c20-1b1c-11ee-962d-dac502259ad0.jpg

其余兩個通道配置過程大同小異,就不再復制粘貼那么多次了,完整的代碼可在先楫社區中獲取。最終的效果如下圖所示。

1b2c952e-1b1c-11ee-962d-dac502259ad0.png

六、結 語

通過介紹,相信大家對 PLA 已經有了一個較為全面的了解。在 6200 系列剛推出時,許多開發者非常關注的一點就是 PLA 外設能不能當作 FPGA 使用,對此,我個人的看法是“能,但不完全能”。PLA 擁有完備的邏輯結構,但是其資源數量注定只適合小型邏輯使用,尤其是觸發器資源的缺乏,使得 PLA 很難單獨構建稍復雜的時序邏輯電路。因此我們在開發 PLA 程序之前,對資源數量要把控地比較準確,以免做無用功。

除了底層資源的限制,個人認為,使用方式上 PLA 也有其遺憾之處:

重復的配置代碼相當多,開發效率不高,寫代碼時容易發生錯誤

無法對內部信號進行調試,對復雜邏輯調試困難

“牽一發而動全身”,難以通過模塊化設計等方式復用現有資料

基于以上原因,我認為圖形化配置,程序自動生成配置代碼將會是 PLA 極好的開發方式:PLA 配置項繁多但并不復雜,代碼由機器生成非常合適;圖形化配置的方式降低了開發者編寫大量重復代碼時出錯的可能性,還可以通過抽象出電路圖的方式協助開發者調試;甚至還可以以此為基礎造出 PLA 的模擬器。

當然,即使沒有這些,PLA 也仍不失為構建簡單邏輯的好工具,也期待有更多開發者給出他們使用 PLA 的姿勢與心得,共同學習共同進步。

以上內容來自先楫開發者的原創分享。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16992

    瀏覽量

    350315
  • 濾波器
    +關注

    關注

    160

    文章

    7728

    瀏覽量

    177685
  • EDA工具
    +關注

    關注

    4

    文章

    264

    瀏覽量

    31714
  • 同步器
    +關注

    關注

    1

    文章

    94

    瀏覽量

    14617
  • 可編程邏輯器

    關注

    0

    文章

    18

    瀏覽量

    4349

原文標題:探秘HPM6200系列MCU的可編程邏輯陣列

文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    開發者分享|探秘HPM6200系列MCU可編程邏輯陣列

    HPM6200系列PLA整體結構HPM6200系列的UM中帶有PLA的結構簡圖。為了方便大家把握整體結構,我也繪制了一個稍微更詳細的結構圖,將PLA外設中的大部分元素都展示出來,并給
    的頭像 發表于 07-05 10:06 ?1017次閱讀
    開發者分享|<b class='flag-5'>探秘</b><b class='flag-5'>HPM6200</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的<b class='flag-5'>可編程邏輯陣列</b>

    可編程邏輯陣列PLA內部邏輯結構示意

    可編程邏輯陣列(Programmable Logic Array,PLA)和可編程陣列邏輯(Programmable Array Logic,PAL)都是數字
    發表于 02-02 11:41 ?2453次閱讀
    <b class='flag-5'>可編程邏輯陣列</b>PLA內部<b class='flag-5'>邏輯</b>結構示意

    針對新能源、儲能、高性能控制等應用,先楫半導體推出HPM6200系列MCU

    高精度ADC、高性能PWM、比較器等。陳丹表示,儲能和數字電源同樣是先楫半導體最為聚焦的市場之一,HPM6200 100ps的高分辨率PWM、16bit ADC以及可編程邏輯陣列PLA,可以為新型的電源
    發表于 02-17 11:10

    先楫半導體近日發布全新MCU通用微控制器 HPM6200 系列

    可編程邏輯陣列 PLA,靈活實現組合邏輯和時序邏輯器件互聯,在芯片內實現用戶獨有的功能電路設計。3 個 2MSPS 16 位高精度 ADC,配置為 12 位精度時轉換率可達 4MSPS,多達 24 個模擬輸入通
    發表于 02-20 16:48

    HPM6200產品介紹

    HPM6200產品簡介
    發表于 05-25 06:59

    HPM6200系列高性能微控制器用戶手冊

    HPM6200用戶手冊
    發表于 05-29 14:11

    HPM6200系列高性能微控制器勘誤表

    HPM6200勞錯表
    發表于 05-30 06:47

    HPM6200系列微控制器***使用介紹

    HPM6200系列***使用介紹
    發表于 05-30 08:07

    可編程邏輯陣列fpga和cpld相關資料

    可編程邏輯陣列fpga和cpld
    發表于 09-20 07:58

    可編程邏輯陣列(PLA)簡介

    電子發燒友網核心提示 :PLA,ProgrammableLogicArray的簡稱,意為可編程邏輯陣列。本文將著重介紹可編程邏輯陣列PLA的一些基本概念、類型以及基礎應用。 一 . PLA的基本概念 可編程
    發表于 10-12 16:01 ?1.9w次閱讀

    可編程邏輯陣列fpga和cpld說明

    可編程邏輯陣列fpga和cpld說明。
    發表于 03-30 09:30 ?25次下載

    探秘HPM6200系列MCU可編程邏輯陣列

    HPM6200 系列的 UM 中帶有 PLA 的結構簡圖。為了方便大家把握整體結構,我也繪制了一個稍微更詳細的結構圖,將 PLA 外設中的大部分元素都展示出來,并給出了單個通道內的具體結構。
    的頭像 發表于 07-04 11:21 ?819次閱讀
    <b class='flag-5'>探秘</b><b class='flag-5'>HPM6200</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的<b class='flag-5'>可編程邏輯陣列</b>

    可編程邏輯器件有哪幾種 fpga和cpld的特點

    可編程邏輯陣列(Programmable Logic Array, PLA):PLA是最早的可編程邏輯器件之一,由與非門陣列和或門陣列組成,通過編程
    發表于 07-04 15:28 ?2367次閱讀

    HPM6200系列微控制器PLA使用介紹

    電子發燒友網站提供《HPM6200系列微控制器PLA使用介紹.pdf》資料免費下載
    發表于 09-19 16:32 ?2次下載
    <b class='flag-5'>HPM6200</b><b class='flag-5'>系列</b>微控制器PLA使用介紹

    什么是現場可編程邏輯陣列?它有哪些特點和應用?

    在電子工程領域,現場可編程邏輯陣列(Field Programmable Logic Array,簡稱FPLA)是一種具有強大靈活性和可編程性的半導體器件。它屬于可編程邏輯器件(PLD)的一種,通過
    的頭像 發表于 05-23 16:25 ?811次閱讀