當(dāng)前位置: 首頁 > 工業(yè)電氣產(chǎn)品 > 端子與連接器 > 線路板連接器 > FFC連接器
發(fā)布日期:2022-04-17 點(diǎn)擊率:36
許多業(yè)余愛好者、創(chuàng)客和 DIY 愛好者都使用 Arduino 微機(jī)開發(fā)板來監(jiān)視和控制他們的項(xiàng)目。于是,越來越多的專業(yè)工程師也開始將這些開發(fā)板用作評估和原型開發(fā)平臺,以便加快開發(fā)速度,降低集成電路 (IC)、傳感器和外設(shè)評估方面的成本。如《valuate-sensors-and-peripherals">使用 Arduino BOB 快速評估傳感器和外設(shè)》一文所述,這些工程師所在的團(tuán)隊(duì)可能比較精簡,而且還深受產(chǎn)品上市時間 (TTM) 日益縮短的制約。因此,他們必須承擔(dān)多個工程領(lǐng)域的工作,同時設(shè)法加快元器件評估并降低成本。
其中一種解決方案是將 Arduino 與傳感器和外設(shè)分線板 (BOB) 之類的開源硬件及庫和示例程序之類的開源軟件結(jié)合使用。盡管有多種 Arduino 開發(fā)板可以滿足一系列的處理和存儲器要求,但是使用浮點(diǎn)運(yùn)算器 (FPU) 卻能更好地完成某些計算,從而避免減慢主處理器的速度。在 Arduino 生態(tài)系統(tǒng)中,ShieldBuddy 就已經(jīng)解決了這一問題。
本文將介紹多種 Arduino 處理平臺選項(xiàng),解釋為什么 FPU 功能對許多應(yīng)用都很重要,然后介紹 ShieldBuddy,這款開發(fā)板與 Arduino 開發(fā)板采用類似的物理封裝,但具有三個獨(dú)立的 200 MHz 32 位處理器內(nèi)核,并且每個內(nèi)核都有各自的 FPU。此外,本文還將介紹該開發(fā)板的編程模型,展示其基于 Eclipse 的編程環(huán)境及其對 Arduino 集成開發(fā)環(huán)境 (IDE) 的支持如何幫助 DIY 愛好者和設(shè)計人員快速入門。
剛踏入 Arduino 領(lǐng)域的新手往往從 Arduino Uno Rev3(圖 1)入手,這款開發(fā)板基于 16 MHz 8 位 ATmega328P 微控制器。該開發(fā)板只有 32 KB 的閃存(程序),2 KB 的 SRAM,14 個數(shù)字輸入/輸出 (I/O) 引腳和 6 個模擬輸入引腳。其中 6 個數(shù)字引腳可以提供脈沖寬度調(diào)制 (PWM) 輸出,必要時模擬引腳也可用作數(shù)字 I/O 引腳。
圖 1:Arduino Uno Rev3 開發(fā)板基于 16 MHz 8 位 ATmega328P 微控制器。(圖片來源:Arduino.cc)
Arduino Uno Rev3 的排針封裝是連接擴(kuò)展板這一龐大子板生態(tài)系統(tǒng)的基礎(chǔ),包括 14 個數(shù)字 I/O 引腳、6 個模擬輸入引腳,以及多個電源、接地和基準(zhǔn)源引腳。
繼 Uno Rev3 之后,許多用戶都轉(zhuǎn)用 Arduino Mega 2560 Rev3 開發(fā)板(圖 2)。這款開發(fā)板基于 16 MHz 8 位 ATmega2560 微控制器。該開發(fā)板具有 256 KB 的閃存和 8 KB 的 SRAM。此外,該板的排針封裝表明它與 Uno 支持相同的擴(kuò)展板,不過,Mega 配有更多排針,因此具有 54 個數(shù)字 I/O 引腳和 16 個模擬輸入引腳。其中 15 個數(shù)字引腳可以提供 PWM 輸出;同樣,必要時模擬引腳也可用作數(shù)字 I/O 引腳。
圖 2:Arduino Mega 2560 Rev3 開發(fā)板基于 16 MHz 8 位 ATmega2560 微控制器。該板的排針封裝表明它與 Arduino Uno 支持相同的擴(kuò)展板,不過,它配有更多排針,因此共有 54 個數(shù)字 I/O 引腳和 16 個模擬輸入引腳。(圖片來源:Arduino)
除了受限于 8 位數(shù)據(jù)路徑和 16 MHz 的時鐘頻率之外,Arduino Uno 和 Arduino Mega 微控制器均不具備 FPU,因而任何涉及浮點(diǎn)數(shù)的計算都會顯著減慢這些處理器的速度。
如果用戶想要更強(qiáng)的處理能力,則可以升級使用 Arduino Due(圖 3)。這款開發(fā)板與 Arduino Mega 采用類似的物理封裝,但基于 Atmel/Microchip Technology SAM3X8E 的 84 MHz 32 位 Arm? Cortex?-M3 處理器。該開發(fā)板具有 512 KB 的閃存、96 KB 的 SRAM、54 個數(shù)字 I/O 引腳、12 個模擬輸入引腳,以及 2 個由數(shù)模轉(zhuǎn)換器 (DAC) 驅(qū)動的模擬輸出引腳。其中,只有 12 個數(shù)字引腳可以提供 PWM 輸出;同樣,必要時模擬引腳也可用作數(shù)字 I/O 引腳。不過,遺憾的是,與 Arduino Uno 和 Mega 一樣,Arduino Due 的處理器也不具備 FPU。
圖 3:Arduino Due 開發(fā)板基于 Atmel SAM3X8E 的 84 MHz 32 位 Arm Cortex-M3 處理器,排針封裝與 Arduino Mega 相同。(圖片來源:Arduino.cc)
許多用戶(包括業(yè)余愛好者和專業(yè)人士)都喜歡 Arduino Mega 和 Arduino Due 開發(fā)板具有較多的引腳。但是,即使是 Arduino Due 的 84 MHz 32 位處理器可能也難以執(zhí)行某些計算密集型任務(wù)。同樣,對于需要處理大量數(shù)據(jù)的大型程序,Due 配備的 512 KB 的閃存和 96 KB 的 SRAM 仍顯不足。
盡管如今的微控制器能處理的數(shù)據(jù)量越來越大,但是從提高效率和降低延遲方面考慮,使用 FPU 可以更好地完成某些計算。
要討論 FPU 為何有用,首先要說說計算機(jī)處理數(shù)字的原理。在計算機(jī)中,最簡單的數(shù)字表示法是整型(整數(shù)),而且使用整型數(shù)進(jìn)行計算,運(yùn)算成本較低。不過,整型數(shù)本質(zhì)上范圍有限,因而無法表示較大的動態(tài)范圍。
對于工程師和科學(xué)家而言,這是個問題,因?yàn)樗麄兂3P枰谕挥嬎阒惺褂脴O大和極小的數(shù)值。例如,物理學(xué)家可能需要同時使用光速 (300,000,000) 和牛頓引力常數(shù) (0.00000000006674) 來進(jìn)行計算。同樣,在數(shù)字信號處理 (DSP) 等任務(wù)以及人工智能 (AI) 和機(jī)器學(xué)習(xí) (ML) 應(yīng)用中,工程師則要使用較大動態(tài)范圍的數(shù)值。
在這種情況下,解決方案就是使用浮點(diǎn)數(shù)表示法,即小數(shù)點(diǎn)的位置可根據(jù)數(shù)值的各個數(shù)字“浮動”,從而實(shí)現(xiàn)更高的數(shù)字“分辨率”。但問題在于,盡管 32 位浮點(diǎn)數(shù)所占內(nèi)存與 32 位整型定點(diǎn)數(shù)相同,使用浮點(diǎn)數(shù)進(jìn)行計算卻需要更多的計算資源。
如果處理器必須使用標(biāo)準(zhǔn)定點(diǎn)硬件進(jìn)行浮點(diǎn)運(yùn)算,那么必定會極大地影響該處理器的性能。在這種情況下,解決方案就是為處理器配備特殊的 FPU,即可在很短的時鐘周期內(nèi)完成復(fù)雜的浮點(diǎn)運(yùn)算。
這正是 ShieldBuddy 的用武之地。
目前,一款相對較新的兼容 Arduino 的開發(fā)板是 Infineon Technologies 的 KITAURIXTC275ARDSBTOBO1,即 ShieldBuddy(圖 4)。這款嵌入式評估板主要面向 Infineon 的 TC275T64F200WDCKXUMA1 TC275 AURIX TC2xx TriCore 32 位微控制器。
圖 4:ShieldBuddy TC275 配備板載 Infineon TC275 32 位多核處理器,且與 Arduino Mega 和 Arduino Due 采用相同的封裝,因而可與市面上供應(yīng)的許多應(yīng)用擴(kuò)展板兼容。 (圖片來源:Hitex.com)
ShieldBuddy 與 Arduino Mega 和 Arduino Due 采用類似的物理封裝,可與許多應(yīng)用擴(kuò)展板兼容,但區(qū)別在于它配備的 TC275 具有三個獨(dú)立的 200 MHz 32 位內(nèi)核,并且每個內(nèi)核都有各自的 FPU。此外,ShieldBuddy 具有 4 MB 的閃存(分別是 Arduino Due 的 8 倍、Arduino Mega 的 16 倍),以及 500 KB 的 RAM(分別是 Arduino Due 的 5 倍、Arduino Mega 的 62 倍)。
有一點(diǎn)可明顯看出區(qū)別:Arduino Mega 內(nèi)核每微秒 (μs) 只能處理約 16 條 8 位指令;相比之下,TC275 每個內(nèi)核的周期時間為 5 ns,因而每個內(nèi)核每微秒通??蓤?zhí)行約 150 至 200 條 32 位指令。由于 ShieldBuddy 的每個處理器內(nèi)核都有各自的 FPU,因此該板進(jìn)行浮點(diǎn)運(yùn)算時,幾乎不會削弱性能。
使用 ShieldBuddy 時,專業(yè)軟件開發(fā)人員也許希望借助 Eclipse IDE,而業(yè)余愛好者和創(chuàng)客可能更偏好使用為人熟知的 Arduino IDE。該板可支持這兩個選項(xiàng)。
Arduino 的用戶都很清楚,每個草圖(程序)必須具有兩個標(biāo)準(zhǔn)函數(shù):setup()(單次運(yùn)行)和 loop()(多次運(yùn)行)。除此之外,用戶還可以創(chuàng)建自己的函數(shù)。
ShieldBuddy 的三個內(nèi)核分別稱作 Core 0、Core 1 和 Core 2。在使用 Arduino IDE 的情況下,大多數(shù)現(xiàn)有草圖都可以編譯,以便直接用于 ShieldBuddy 而無需修改。setup() 和 loop() 函數(shù)及其調(diào)用的所有用戶創(chuàng)建的函數(shù)經(jīng)編譯后,均默認(rèn)在 Core 0 上運(yùn)行。
創(chuàng)建新程序時,用戶可將這些函數(shù)命名為 setup0() 和 loop0() 以達(dá)到相同的效果。另外,用戶也可以創(chuàng)建 setup1() 和 loop1() 函數(shù)。這些函數(shù)及其調(diào)用的所有用戶創(chuàng)建的函數(shù)經(jīng)編譯后,均會自動在 Core 1 上運(yùn)行。同理,setup2() 和 loop2() 函數(shù)及其調(diào)用的所有用戶創(chuàng)建的函數(shù)經(jīng)編譯后,均會自動在 Core 2 上運(yùn)行。
默認(rèn)情況下,各個內(nèi)核獨(dú)立運(yùn)行,因此 ShieldBuddy 可以同時運(yùn)行三個完全獨(dú)立的程序。盡管如此,各內(nèi)核間也可使用共享存儲器等技術(shù)進(jìn)行通信。此外,每個內(nèi)核還都可以在其他內(nèi)核中觸發(fā)軟中斷。
事實(shí)證明,Arduino 的開源理念取得了巨大的成功,隨之衍生的硬件和軟件生態(tài)系統(tǒng)也得以發(fā)展,包含了數(shù)百種擴(kuò)展板、數(shù)千個庫和應(yīng)用程序。
盡管早期的 Arduino 開發(fā)板(例如 16 MHz 8 位 Arduino Uno 和 Arduino Mega)具有一定的局限性,但較新的產(chǎn)品(例如 84 MHz 32 位 Arduino Due)功能明顯就更強(qiáng)大。即便如此,許多用戶仍需要更多的程序存儲空間(閃存)、更多的數(shù)據(jù)存儲空間 (SRAM) 和更強(qiáng)的處理能力,而這些都絕非任何傳統(tǒng) Arduino 所能提供。
ShieldBuddy 具有 4 MB 的閃存、500 KB 的 SRAM 和三個獨(dú)立的 200 MHz 32 位處理器內(nèi)核,而且每個內(nèi)核都有各自的 FPU,將 Arduino 理念提升到一個全新的層次,因而追求極致的 DIY 愛好者和專業(yè)工程師都對它興趣濃厚。
向絕對初學(xué)者教授電子知識
通過 Arduino MKR Vidor 4000 快速輕松地應(yīng)用 FPGA
借助易用型 Arduino 入門套件,開啟創(chuàng)客世界大門
下一篇: PLC、DCS、FCS三大控
上一篇: 安裝醒目的工業(yè)燈塔,