新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > All Programmable SoC 進軍制造行業

        All Programmable SoC 進軍制造行業

        作者: 時間:2018-07-31 來源:網絡 收藏

        制造領域為許多人提供了喜聞樂見的業余愛好,也激勵著年輕人從事科學、技術、工程和數學方向的職業。這個領域的許多項目都使用嵌入式處理器(通常如 Arduino 或 Raspberry PI 系列),以提供系統所需的智能化。

        本文引用地址:http://www.104case.com/article/201807/384749.htm

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

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

        這些開發板配有賽靈思 All Programmable Zynq®-7000 SoC 系列器件。這些器件將雙核 ARM® Cortex™-A9 處理器與 All Programmable Artix®-7 FPGA 系列的可編程邏輯完美結合在一起。這可加快可編程邏輯架構內的功能,從而顯著提升系統性能。但是傳統的開發工作將可編程邏輯的設計與軟件開發工作分割開來,可編程邏輯設計的實現需要專門的開發經驗。現在已不存在這種情況。

        當這些開發板與能在純軟件中開發應用的最新相結合,它們對制造業就變得極為有用。尤其是因為使用這些,用戶不必具備FPGA專家級水平就能夠開發出可編程邏輯,從而充分發揮了軟硬件的優勢。

        從左到右制造商開發板分別是 Arduino、ZynqBerry、Pynq、Raspberry 和 Snickerdoodle。

        開發環境

        有兩種開發環境可用于為這些 Zynq 開發板創建應用。第一種是基于 Eclipse 的 SDSoC™ 開發環境。這種環境能夠使用 C 或 C++ 開發應用并無縫地將運行在 ARM Cortex-A9 處理器上的功能移到可編程邏輯中加速。SDSoC 環境使用高層次綜合(HLS)將選定的 C 語言功能移到可編程邏輯中。在 HLS 完成連接后,就使用框架將 HLS 模塊與軟件應用集成。現在除了可編程邏輯中的功能加速帶來的性能提升,該流程還對用戶透明。功能在處理器和可編程邏輯間切換極為簡便并可在 SDSoC 內通過使用項目簡介進行控制。

        SDSoC 項目簡介

        SDSoC 支持制造業常用的 Linux 操作系統,同時也支持實時操作系統(FreeRTOS)和裸機。

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

        因為 Pynq 提供兩個 PMOD 接口,該軟件包能為 ADC、DAC 等各種 PMOD 提供重大支持,簡化與 Python 應用的集成。

        在 Pynq 內,用許多疊層中的一個來加載可編程邏輯以實現硬件加速。除提供的基本疊層外,還存在多個開源疊層。

        用戶可通過借助 Web 瀏覽器連接到 Juypter 筆記本服務器為 Pynq 編程。連接到該筆記本電腦后,他們就能開發自己的 Python 應用并為其建立文檔,以便在 Pynq 上運行。

        這種使用 Python 并運用 Python 直接接口 PMOD 的能力提供了一種極為強大的開發平臺。

        兩種開發方法都提供使用 OpenCV 等開源框架來執行應用的能力。在 Linux 發行版支持 USB 視頻類或特定攝像頭(例如 ZynqBerry 支持的 Raspberry PI 攝像頭)時,這些應用能夠使用網絡攝像頭。

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

        這些應用借助這一框架能處理圖像,檢測對象或面部等。

        在需要實現簡單的對象檢測算法時,它們能在基于 Zynq 的平臺上運行 Linux、Python 和 OpenCV。下面我們了解如何使用 OpenCV 和網絡攝像頭實現簡單的對象跟蹤系統。他們要實現的算法是:

        1.從網絡攝像頭捕獲第一幀。第一幀用作基準背景幀。他們將檢測從第一幀的場景中發生的任何變化。

        2.將色域從 RGB 轉換為灰度。這是一種常見的圖像分割技術,能用于創建二值圖像。圖像分割涉及數種將圖像劃分為多個片段(常稱為超像素)的方法。通過分割,更易于分析各片段的內容。在他們的應用中,他們使用閾值化來從前景中分割出背景。這樣可以生成二值圖像。

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

        4.再次重復步驟1-3,從網絡攝像頭中捕獲另一圖像,從彩色域轉換到灰度并在圖像上執行高斯模糊。

        5.計算基準幀和最近采集的圖像間的絕對差。

        6.對絕對差進行取閾,以創建二值圖像。

        7.開展形態學操作,擴大圖像以放大任何差異。

        8.找出二值圖像中剩余的等值線并忽略面積過小的任何等值線。

        9.在每個被檢測出的等值線周圍畫一個方框,通過 HDMI 輸出顯示原始采集的圖像。

        開發人員能直接在 ZynqBerry 上或是在 Juypter 筆記本內的 Pynq 上運行結果 python 代碼。他們看到的圖像如下圖所示,該圖識別出了與基準圖像的差異并用方框高亮顯示出這些差異。

        圖像跟蹤應用的結果。

        這個實例體現了開發人員運用熟悉的開源框架,借助 Zynq 平臺執行他們的嵌入式視覺應用所帶來的強大功能和簡便性。

        結論

        本文呈現的開發環境展現了開發人員發揮多個Zynq開發板的功能的簡便性。這些開發環境讓用戶開發出既能在處理器內的處理內核上執行,又能使用可編程邏輯加速的設計。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泌阳县| 定结县| 慈利县| 右玉县| 衡东县| 田东县| 孟州市| 临夏县| 瑞昌市| 花莲县| 集贤县| 鱼台县| 永靖县| 比如县| 招远市| 浙江省| 嘉祥县| 太谷县| 平乡县| 永昌县| 西乡县| 文山县| 醴陵市| 建湖县| 家居| 旬邑县| 福清市| 杭锦后旗| 北宁市| 扶风县| 东宁县| 安泽县| 泰安市| 眉山市| 涿州市| 浦江县| 苏州市| 沅江市| 武冈市| 铜鼓县| 莱州市|