UDB中四個PLD(每個UDB有2個)的大多數(shù)乘積項可用于控制數(shù)據(jù)通路,生成中斷,提供狀態(tài)和控制功能,但這也使用了這種低成本微控制器中一半的UDB資源。
接下來的工作是明確這一附加硬件能為設計節(jié)省多少CPU開銷。以1,000個LED組成的陣列為例,其刷新頻率為30Hz。如果設計使用固件對接口進行位拆裂操作,會差不多占用100%的CPU資源。使用PSoC器件中的可編程硬件仍然可以做到每30微秒中斷一次,雖然這也是較重的負荷,但運行在48MHz的ARMCortex-M0足以應付。為測試CPU開銷,我創(chuàng)建了一個簡單的環(huán)路,以大約30Hz的頻率刷新顯示器。在主環(huán)路中,我觸發(fā)了一個引腳,然后使用示波器計算40毫秒內(nèi)的觸發(fā)數(shù)量。然后我禁用中斷,再次運行項目,并比較結果。與使用固件中的位拆裂造成的幾乎100%的CPU占用相比,持續(xù)顯示刷新只占用大約12%的CPU資源。這樣另外88%的CPU周期可用于外部通信和用戶界面。如果為設計添加DMA,該開銷可能會從12%下降到2%或更低。我使用的最廉價PSoC(約1美元)只包含UDB但未包含DMA,不過一些較大型的部件確實內(nèi)置有DMA。
隨后我實際制作了一個由6016個LED(960個LED)網(wǎng)格組成的真正RGBLED板,用于測試該組件。該組件的運行符合預期,可用作顯示基本的直線、矩形、圓圈以及文本的圖形界面。
接下來的工作是明確這一附加硬件能為設計節(jié)省多少CPU開銷。以1,000個LED組成的陣列為例,其刷新頻率為30Hz。如果設計使用固件對接口進行位拆裂操作,會差不多占用100%的CPU資源。使用PSoC器件中的可編程硬件仍然可以做到每30微秒中斷一次,雖然這也是較重的負荷,但運行在48MHz的ARMCortex-M0足以應付。為測試CPU開銷,我創(chuàng)建了一個簡單的環(huán)路,以大約30Hz的頻率刷新顯示器。在主環(huán)路中,我觸發(fā)了一個引腳,然后使用示波器計算40毫秒內(nèi)的觸發(fā)數(shù)量。然后我禁用中斷,再次運行項目,并比較結果。與使用固件中的位拆裂造成的幾乎100%的CPU占用相比,持續(xù)顯示刷新只占用大約12%的CPU資源。這樣另外88%的CPU周期可用于外部通信和用戶界面。如果為設計添加DMA,該開銷可能會從12%下降到2%或更低。我使用的最廉價PSoC(約1美元)只包含UDB但未包含DMA,不過一些較大型的部件確實內(nèi)置有DMA。
隨后我實際制作了一個由6016個LED(960個LED)網(wǎng)格組成的真正RGBLED板,用于測試該組件。該組件的運行符合預期,可用作顯示基本的直線、矩形、圓圈以及文本的圖形界面。
圖11使用960個RGBLED制作的廣告牌
無論是大型LED板還是簡單的定制界面,部分內(nèi)部可編程硬件會給設計性能造成重大影響。不是每一種定制界面都需要多字節(jié)FIFO或全硬件狀態(tài)機,但擁有這種靈活性能為您提供更多設計選擇、提高性能,或是讓現(xiàn)有設計迅速適合產(chǎn)品需求。