新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > All Programmable SoC 進(jìn)軍制造行業(yè)

All Programmable SoC 進(jìn)軍制造行業(yè)

作者: 時(shí)間:2018-07-31 來(lái)源:網(wǎng)絡(luò) 收藏

制造領(lǐng)域?yàn)樵S多人提供了喜聞樂(lè)見(jiàn)的業(yè)余愛(ài)好,也激勵(lì)著年輕人從事科學(xué)、技術(shù)、工程和數(shù)學(xué)方向的職業(yè)。這個(gè)領(lǐng)域的許多項(xiàng)目都使用嵌入式處理器(通常如 Arduino 或 Raspberry PI 系列),以提供系統(tǒng)所需的智能化。

本文引用地址:http://2s4d.com/article/201807/384749.htm

Arduino 和 Raspberry PI 這兩大系列嵌入式處理器均得到的支持,為其提供多種軟件庫(kù)、模塊和實(shí)例。這些軟件庫(kù)、模塊和實(shí)例可幫助開(kāi)發(fā)人員迅速方便地接口到各類(lèi)型外設(shè),如攝像頭、加速計(jì)和電機(jī)等。正是這種易用性讓這些處理器在制造領(lǐng)域倍受青睞。

直到最近制造商都把 All Programmable SoC 排除在制造領(lǐng)域之外,認(rèn)為它適用于更專(zhuān)業(yè)的工程師。但隨著 ZynqBerry、Pynq 和 Snickerdoodle 等基于 Zynq® 的開(kāi)發(fā)板的推出以及基于軟件的開(kāi)發(fā)方法的問(wèn)世,這種情況已經(jīng)發(fā)生根本性變化。

這些開(kāi)發(fā)板配有賽靈思 All Programmable Zynq®-7000 SoC 系列器件。這些器件將雙核 ARM® Cortex™-A9 處理器與 All Programmable Artix®-7 FPGA 系列的可編程邏輯完美結(jié)合在一起。這可加快可編程邏輯架構(gòu)內(nèi)的功能,從而顯著提升系統(tǒng)性能。但是傳統(tǒng)的開(kāi)發(fā)工作將可編程邏輯的設(shè)計(jì)與軟件開(kāi)發(fā)工作分割開(kāi)來(lái),可編程邏輯設(shè)計(jì)的實(shí)現(xiàn)需要專(zhuān)門(mén)的開(kāi)發(fā)經(jīng)驗(yàn)?,F(xiàn)在已不存在這種情況。

當(dāng)這些開(kāi)發(fā)板與能在純軟件中開(kāi)發(fā)應(yīng)用的最新相結(jié)合,它們對(duì)制造業(yè)就變得極為有用。尤其是因?yàn)槭褂眠@些,用戶(hù)不必具備FPGA專(zhuān)家級(jí)水平就能夠開(kāi)發(fā)出可編程邏輯,從而充分發(fā)揮了軟硬件的優(yōu)勢(shì)。

從左到右制造商開(kāi)發(fā)板分別是 Arduino、ZynqBerry、Pynq、Raspberry 和 Snickerdoodle。

開(kāi)發(fā)環(huán)境

有兩種開(kāi)發(fā)環(huán)境可用于為這些 Zynq 開(kāi)發(fā)板創(chuàng)建應(yīng)用。第一種是基于 Eclipse 的 SDSoC™ 開(kāi)發(fā)環(huán)境。這種環(huán)境能夠使用 C 或 C++ 開(kāi)發(fā)應(yīng)用并無(wú)縫地將運(yùn)行在 ARM Cortex-A9 處理器上的功能移到可編程邏輯中加速。SDSoC 環(huán)境使用高層次綜合(HLS)將選定的 C 語(yǔ)言功能移到可編程邏輯中。在 HLS 完成連接后,就使用框架將 HLS 模塊與軟件應(yīng)用集成?,F(xiàn)在除了可編程邏輯中的功能加速帶來(lái)的性能提升,該流程還對(duì)用戶(hù)透明。功能在處理器和可編程邏輯間切換極為簡(jiǎn)便并可在 SDSoC 內(nèi)通過(guò)使用項(xiàng)目簡(jiǎn)介進(jìn)行控制。

SDSoC 項(xiàng)目簡(jiǎn)介

SDSoC 支持制造業(yè)常用的 Linux 操作系統(tǒng),同時(shí)也支持實(shí)時(shí)操作系統(tǒng)(FreeRTOS)和裸機(jī)。

第二種方法由 Pynq 提供,這種方法提供基于 Python 和 Juypter 筆記本的開(kāi)發(fā)框架。二者都在運(yùn)行于處理器上的 Linux 發(fā)行版上執(zhí)行,同時(shí)可編程邏輯有一個(gè)已定義的疊層,用于為 Pynq 上的外設(shè)提供連接。在用于支持外設(shè)和硬件疊層的 Linux 發(fā)行版內(nèi)有一個(gè)已定義的 Pynq 包,該包可讓我們使用 Python 直接接口外設(shè)。

因?yàn)?Pynq 提供兩個(gè) PMOD 接口,該軟件包能為 ADC、DAC 等各種 PMOD 提供重大支持,簡(jiǎn)化與 Python 應(yīng)用的集成。

在 Pynq 內(nèi),用許多疊層中的一個(gè)來(lái)加載可編程邏輯以實(shí)現(xiàn)硬件加速。除提供的基本疊層外,還存在多個(gè)開(kāi)源疊層。

用戶(hù)可通過(guò)借助 Web 瀏覽器連接到 Juypter 筆記本服務(wù)器為 Pynq 編程。連接到該筆記本電腦后,他們就能開(kāi)發(fā)自己的 Python 應(yīng)用并為其建立文檔,以便在 Pynq 上運(yùn)行。

這種使用 Python 并運(yùn)用 Python 直接接口 PMOD 的能力提供了一種極為強(qiáng)大的開(kāi)發(fā)平臺(tái)。

兩種開(kāi)發(fā)方法都提供使用 OpenCV 等開(kāi)源框架來(lái)執(zhí)行應(yīng)用的能力。在 Linux 發(fā)行版支持 USB 視頻類(lèi)或特定攝像頭(例如 ZynqBerry 支持的 Raspberry PI 攝像頭)時(shí),這些應(yīng)用能夠使用網(wǎng)絡(luò)攝像頭。

OpenCV 方便開(kāi)發(fā)人員使用 C/C++ 或者 Python 開(kāi)發(fā),運(yùn)用這一框架他們能夠便捷地實(shí)現(xiàn)復(fù)雜圖像處理算法,發(fā)揮 Zynq 可編程邏輯的加速功能,顯著提升性能。

這些應(yīng)用借助這一框架能處理圖像,檢測(cè)對(duì)象或面部等。

在需要實(shí)現(xiàn)簡(jiǎn)單的對(duì)象檢測(cè)算法時(shí),它們能在基于 Zynq 的平臺(tái)上運(yùn)行 Linux、Python 和 OpenCV。下面我們了解如何使用 OpenCV 和網(wǎng)絡(luò)攝像頭實(shí)現(xiàn)簡(jiǎn)單的對(duì)象跟蹤系統(tǒng)。他們要實(shí)現(xiàn)的算法是:

1.從網(wǎng)絡(luò)攝像頭捕獲第一幀。第一幀用作基準(zhǔn)背景幀。他們將檢測(cè)從第一幀的場(chǎng)景中發(fā)生的任何變化。

2.將色域從 RGB 轉(zhuǎn)換為灰度。這是一種常見(jiàn)的圖像分割技術(shù),能用于創(chuàng)建二值圖像。圖像分割涉及數(shù)種將圖像劃分為多個(gè)片段(常稱(chēng)為超像素)的方法。通過(guò)分割,更易于分析各片段的內(nèi)容。在他們的應(yīng)用中,他們使用閾值化來(lái)從前景中分割出背景。這樣可以生成二值圖像。

3.對(duì)圖像進(jìn)行高斯模糊。許多用于檢測(cè)對(duì)象或邊緣的圖像處理應(yīng)用的性能受抓取的幀內(nèi)存在的噪聲的不利影響。在進(jìn)一步處理前將圖像模糊化可降低幀內(nèi)的噪聲。這一方法常用于圖像處理,尤其是邊緣檢測(cè)算法(例如高斯邊緣檢測(cè)算法的拉普拉斯算子)。這一運(yùn)算的結(jié)果即為用于檢測(cè)變化的基準(zhǔn)圖像。

4.再次重復(fù)步驟1-3,從網(wǎng)絡(luò)攝像頭中捕獲另一圖像,從彩色域轉(zhuǎn)換到灰度并在圖像上執(zhí)行高斯模糊。

5.計(jì)算基準(zhǔn)幀和最近采集的圖像間的絕對(duì)差。

6.對(duì)絕對(duì)差進(jìn)行取閾,以創(chuàng)建二值圖像。

7.開(kāi)展形態(tài)學(xué)操作,擴(kuò)大圖像以放大任何差異。

8.找出二值圖像中剩余的等值線(xiàn)并忽略面積過(guò)小的任何等值線(xiàn)。

9.在每個(gè)被檢測(cè)出的等值線(xiàn)周?chē)?huà)一個(gè)方框,通過(guò) HDMI 輸出顯示原始采集的圖像。

開(kāi)發(fā)人員能直接在 ZynqBerry 上或是在 Juypter 筆記本內(nèi)的 Pynq 上運(yùn)行結(jié)果 python 代碼。他們看到的圖像如下圖所示,該圖識(shí)別出了與基準(zhǔn)圖像的差異并用方框高亮顯示出這些差異。

圖像跟蹤應(yīng)用的結(jié)果。

這個(gè)實(shí)例體現(xiàn)了開(kāi)發(fā)人員運(yùn)用熟悉的開(kāi)源框架,借助 Zynq 平臺(tái)執(zhí)行他們的嵌入式視覺(jué)應(yīng)用所帶來(lái)的強(qiáng)大功能和簡(jiǎn)便性。

結(jié)論

本文呈現(xiàn)的開(kāi)發(fā)環(huán)境展現(xiàn)了開(kāi)發(fā)人員發(fā)揮多個(gè)Zynq開(kāi)發(fā)板的功能的簡(jiǎn)便性。這些開(kāi)發(fā)環(huán)境讓用戶(hù)開(kāi)發(fā)出既能在處理器內(nèi)的處理內(nèi)核上執(zhí)行,又能使用可編程邏輯加速的設(shè)計(jì)。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉