1 背景知識(shí)
因?yàn)閆ynq-7000 PS(Processing System)端嵌入了Cortex-A9 ARM 處理核以及PL(Programmable Logic)端為基于Kintex-7或者Artix-7的FPGA架構(gòu)使得Xilinx Zynq-7000更加強(qiáng)悍,應(yīng)用領(lǐng)域更加廣泛。下面將從以下方面介紹Zynq-7000的應(yīng)用領(lǐng)域:汽車、通信系統(tǒng)、機(jī)器人、控制和儀器 、圖像和視頻處理 、醫(yī)藥、工業(yè)控制和許多其他領(lǐng)域。
2 應(yīng)用概述
考慮 Zynq、FPGA 和相關(guān)芯片的應(yīng)用廣泛,選擇幾個(gè)重要的領(lǐng)域給大家介紹。雖然有大量的可能性應(yīng)用,但這里的只是選擇一些有代表性的應(yīng)用。?
2.1 汽車
圖1 汽車系統(tǒng)(左:輔助駕駛系統(tǒng);右:道路標(biāo)識(shí)識(shí)別 )
現(xiàn)在的汽車?yán)锒加写罅康?a target="_blank">電子裝置,從引擎管理到車窗、倒車輔助系統(tǒng)、駕駛員輔助系統(tǒng)、后視鏡和燈光等控制功能,以及導(dǎo)航和資訊娛樂系統(tǒng)都有。先進(jìn)駕駛輔助系統(tǒng) (Advanced Driver Assistance Systems,ADAS)專門指的就是汽車?yán)餅榱笋{駛員的安全和便捷所提供的系統(tǒng)的總和,包括:偏離車道告警系統(tǒng)、道路標(biāo)識(shí)識(shí)別(如進(jìn)入限速較低的路段時(shí)提醒駕駛員)、泊車輔助、抬頭顯示,以及甚至能監(jiān)視駕駛員的清醒程度。圖1左是輔助駕駛抬頭顯示系統(tǒng),圖1右是道路標(biāo)識(shí)識(shí)別系統(tǒng)。?
FPGA,以及現(xiàn)在的 Zynq 芯片,可以用來(lái)實(shí)現(xiàn)這些汽車系統(tǒng) 。Zynq 的處理能力使它特別適合做這樣的系統(tǒng),而且能夠降低元件的數(shù)量在一個(gè)對(duì)成本和功耗敏感并且還往往對(duì)物理空間有要求的市場(chǎng)中是一種優(yōu)勢(shì)。?
2.2 通信系統(tǒng)
圖2 通信系統(tǒng) (左:無(wú)線基站;中:衛(wèi)星地面站;右: 有限網(wǎng)絡(luò)交換機(jī))?
FPGA 是對(duì)基于包交換的無(wú)線和有線通信進(jìn)行計(jì)算密集型處理的平臺(tái)。這個(gè)領(lǐng)域很多樣化,包括地面和衛(wèi)星傳輸?shù)氖瞻l(fā)信機(jī)、移動(dòng)通信骨干網(wǎng)絡(luò)、有線網(wǎng)絡(luò)設(shè)備、雷達(dá)、聲納、全球定位系統(tǒng) (Global Positioning System, GPS)和許多其他的通信系統(tǒng)。圖2左為無(wú)線基站,中為地面衛(wèi)星雷達(dá),右為網(wǎng)絡(luò)交換機(jī)。?
在無(wú)線通信中,無(wú)線電頻譜日益緊張,而與此同時(shí)大量無(wú)線系統(tǒng)和標(biāo)準(zhǔn)不斷在擴(kuò)張。柔性無(wú)線電 (flexible radio)的概念有可能更好地利用無(wú)線電頻譜,并能把無(wú)線電設(shè)備穩(wěn)固在一個(gè)能動(dòng)態(tài)改變操作的單個(gè)設(shè)備上。Zynq 就是一個(gè)理想的柔性無(wú)線電平臺(tái)。在有線通信中,通過(guò)使用 “ 軟定義網(wǎng)絡(luò)(softly defined networks,SDN)” 使其達(dá)到類似程度的靈活性,SDN 能在軟件的控制下升級(jí)功能。?
2.3 機(jī)器人、控制和儀器?
圖3 控制和儀器儀表系統(tǒng)(左:工業(yè)控制室;中:風(fēng)力發(fā)電廠;右:高能物理實(shí)驗(yàn))?
從制造和加工到高能物理實(shí)驗(yàn)的工業(yè)和科學(xué)處理,都需要精密的控制和儀器。圖3 分別展示了工廠控制室、風(fēng)力發(fā)電廠和 CERN 的高能物理實(shí)驗(yàn)裝置 。?
FPGA 和 Zynq 芯片是非常合適的平臺(tái),因?yàn)榻柚?PL 的能力,它們能快速、實(shí)時(shí)地同時(shí)處理多個(gè)傳感器的輸入并操作多個(gè)動(dòng)作器的輸出。Zynq 在系統(tǒng)集成和操作的靈活性上還有更大的潛力。比如,可以監(jiān)視一個(gè)控制環(huán)的性能,如果有必要就可以改變它的配置轉(zhuǎn)用軟件控制。如果需要,PS 還可以支持實(shí)時(shí)操作系統(tǒng)及 (或)GUI (圖形用戶界面)。
電機(jī)控制算法在工業(yè)的很多領(lǐng)域都是極為重要的。比如,對(duì)美國(guó)制造業(yè)工廠的調(diào)查發(fā)現(xiàn),工業(yè)中消耗的大約 50% 的電力是用于 “ 機(jī)器驅(qū)動(dòng) ”,也就是電機(jī)、泵和風(fēng)扇 。由于在 PS 和 PL 之間的高帶寬連接,能夠形成緊密的反饋回路,并能利用 AMS 包所提供的 DAC 采樣能力,使得 Zynq 很適合做電機(jī)控制。?
2.4 圖像和視頻處理?
圖 4 醫(yī)藥應(yīng)用(左:MRI 掃描;右:機(jī)器人輔助手術(shù))
在醫(yī)療診斷中一個(gè)重要的問題是要 “ 看見 ” 人體的內(nèi)部,這就需要像計(jì)算機(jī)斷層攝影(Computer Tomography,CT)掃描、超聲波和核磁共振成像(Magnetic Resonance Imagers,MRI)這樣的醫(yī)療影像設(shè)備。為了增強(qiáng)和顯示通過(guò)這樣的設(shè)備所獲得的圖像,往往就需要對(duì)大量的數(shù)據(jù)做精密的圖像處理算法。和其他圖像處理應(yīng)用一樣,Zynq 綜合了 PS 和 PL 的能力,既支持高速并行計(jì)算,也支持基于軟件的算法。醫(yī)學(xué)領(lǐng)域所涉及到的進(jìn)一步的應(yīng)用包括機(jī)器人輔助手術(shù)中的儀器控制,以及實(shí)時(shí)手術(shù)圖像,比如內(nèi)窺鏡設(shè)備、病人監(jiān)視設(shè)備和家庭保健技術(shù) 。?
2.5 其他及未來(lái)的應(yīng)用?
接下去,會(huì)給出 FPGA 和 Zynq 的一些關(guān)鍵應(yīng)用領(lǐng)域的概述。不過(guò),還有很多正在開展的和潛在的應(yīng)用沒能詳細(xì)列在這里,從音頻信號(hào)處理到基于 Zynq 的無(wú)人機(jī)都有!?
2.5.1智能系統(tǒng)和智能網(wǎng)絡(luò)?
智能這個(gè)術(shù)語(yǔ)在很多應(yīng)用領(lǐng)域都能找到,包括智能電網(wǎng)、智能建筑、智能家居、智能交通、智能城市、智能農(nóng)業(yè)等等。
智能家居用的是和智能建筑類似的原理,讓民居也在成本和環(huán)境上受益。除了能管理暖氣、燈光和電器的使用,智能家居可能還包括室內(nèi)保安和娛樂方面的功能。圖 5是一個(gè)智能家居的展示。?
圖5 智能家居的某些功能
2.5.2 圖像和視頻處理,及計(jì)算機(jī)視覺?
圖像處理的特征是它具有巨大的并行性:每個(gè)圖像,或等價(jià)的視頻的每個(gè)幀,是由二維的像素點(diǎn)的矩陣組成的,而且在 X 和 Y 軸上可能有超過(guò) 1000 個(gè)像素點(diǎn)。比如,全高清(HD)視頻通常定義為1920 x 1080 個(gè)像素點(diǎn),也就是總共有 2073600 個(gè)像素點(diǎn)。還得考慮到每個(gè)像素點(diǎn)是由三個(gè)通道組成的才能表達(dá)顏色!如果用8 位的通道來(lái)分別表達(dá)紅色、綠色和藍(lán)色的數(shù)據(jù),這樣每個(gè)像素點(diǎn)就需要 24 位,而每幅 HD 圖像就需要 49766400 位。數(shù)碼相機(jī)產(chǎn)生的圖片可能還會(huì)更大。考慮到這么大的尺寸,因此任何對(duì)單個(gè)像素點(diǎn)的計(jì)算就需要大量的計(jì)算并行展開,這就是很適合在FPGA 或是 Zynq 芯片的 PL 部分上做的事情了。當(dāng)然,最好能降低要計(jì)算的數(shù)據(jù)的量,而且有些圖像處理是可以在更高的抽象層級(jí)上做的,在較少的數(shù)據(jù)上執(zhí)行更高級(jí)的算法,也就是可能由軟件來(lái)做。對(duì)于視頻處理,更多的關(guān)注在壓縮方面。單幅圖片通常在空間域上壓縮來(lái)縮減文件大小,但是在視頻應(yīng)用中,當(dāng)幀速率達(dá)到每秒100 幀(在某些特殊應(yīng)用中更高)的時(shí)候,由于涉及到更為大量的數(shù)據(jù),對(duì)壓縮的需求尤為突出,還可能需要實(shí)時(shí)計(jì)算的約束。但是時(shí)間域給壓縮提供了進(jìn)一步的機(jī)會(huì),因?yàn)檫B續(xù)的視頻幀往往存在高度的重合。可以用算法來(lái)發(fā)送一小段時(shí)間片段內(nèi)完整的、最新的幀,然后在這些幀之間,對(duì)幀與幀之間的不同進(jìn)行編碼。已經(jīng)存在很好的視頻壓縮標(biāo)準(zhǔn)了,而且還在不斷地發(fā)展和進(jìn)步。?
圖6 圖像處理中的抽象
圖7 可以用計(jì)算機(jī)視覺來(lái)檢測(cè)路口車輛?
如前所述,計(jì)算機(jī)視覺需要識(shí)別出特征和目標(biāo)來(lái),這樣就能從圖像中析取出含義來(lái)。這就牽涉到復(fù)雜的運(yùn)算和軟件算法。比如,為了判斷是否有車輛,就可能必須在圖像中分析識(shí)別出來(lái)的線條,然后甚至可以把車輛的類型分類為摩托車、小汽車、大巴等。這個(gè)階段表達(dá)了向圖6 中所示的最高抽象層級(jí)的轉(zhuǎn)化,從而能得到圖像內(nèi)容的描述。比如,在圖7中,圖像顯示的是交叉路口的小車。汽車的數(shù)量可以用計(jì)算機(jī)視覺算法被檢測(cè)并記錄下來(lái),然后甚至還可以根據(jù)行駛的方向做出分類來(lái)。
? ? 視頻處理應(yīng)用還可能進(jìn)一步調(diào)用目標(biāo)追蹤,比如如果在 CCTV 畫面中識(shí)別出感興趣的人了,那個(gè)人在畫面中的進(jìn)一步的運(yùn)動(dòng)就可以被追蹤。類似的,如果路口的畫面形成了視頻,那么車輛就可以被追蹤。從圖像處理和計(jì)算機(jī)視覺算法中獲得的數(shù)據(jù)可以用作更高層級(jí)應(yīng)用的數(shù)據(jù)。比如,在車輛識(shí)別的實(shí)例中,計(jì)算機(jī)視覺系統(tǒng)可以提供關(guān)于車輛通過(guò)一個(gè)路口的統(tǒng)計(jì)數(shù)據(jù),可以用來(lái)做交通管理和城市規(guī)劃。
除了芯片的架構(gòu),我們還應(yīng)該考慮在促進(jìn)為 Zynq 開發(fā)圖像處理系統(tǒng)的設(shè)計(jì)中,Xilinx 和第三方開發(fā)工具的作用。以下羅列了一些值得一提的相關(guān)說(shuō)明:
? Xilinx IP 包 — 在 IP Integrator 里有很多 IP 包是用于圖像和視頻處理應(yīng)用的,包括視頻存儲(chǔ)、圖像增強(qiáng)和色彩調(diào)整功能。
? ? ? OpenCV — 開放計(jì)算機(jī)視覺(Open Computer Vision)是一個(gè)開源項(xiàng)目,實(shí)現(xiàn)了一組用于圖像和視頻處理的 C/C++ 庫(kù)。OpenCV 的工具可以用來(lái)開發(fā)運(yùn)行在 PS 上的軟件算法。
? ? ? Vivado HLS 視頻庫(kù) — Vivado HLS 包含一個(gè)能綜合到 HDL 里去的函數(shù)庫(kù),實(shí)現(xiàn)了對(duì)圖像和視頻處理的特殊支持。這些函數(shù)可以替代部分 OpenCV 函數(shù),因此如有需要,對(duì)應(yīng)的功能就能方便地被劃分到硬件中去。
? ? ? MATLAB / Simulink — MATLAB 和 Simulink 提供了豐富的用于圖像和視頻處理以及計(jì)算機(jī)視覺的工具。不僅提供相關(guān)的函數(shù)和開發(fā)環(huán)境,還可以把開發(fā)好的算法轉(zhuǎn)換成能實(shí)現(xiàn)在 Zynq 上的 C/C++ 代碼。??
評(píng)論