NOTES:
這是第三屆全國大學生集成電路創新創業大賽 - Arm 杯 - 片上系統設計挑戰賽(本人指導的一個比賽)。主要划分為以下的 Top5 重點、難點、亮點、熱點以及創新點:1、通過 Arm Cortex-M3 CPU 軟核 IP 在 Xilinx Artix-7 純 FPGA 平台上構建一個 SoC 片上系統,該系統一方面能夠通過 HDMI 接口,在顯示屏上實時顯示 OV5640 攝像頭所采集的車牌視頻數據(比特流的生成是通過交叉編譯的方式,即 Verilog 編譯與 C 編譯);2、該系統另一方面能夠通過基於 FPGA 設計的 AI 神經網絡硬件加速 IP(協處理器),實現車牌的字符識別並顯示在 LCD 上;3、利用流水、並行、行緩存、分塊、乒乓、稀疏卷積等等一些硬件的優化加速策略,達到更快的識別速度的同時,減少了 FPGA 硬件資源的使用;4、利用流水並行、資源共享、狀態編碼、基於狀態機的操作數隔離等等一些低功耗設計,來減少該 AI 協處理器的功耗。
接下來,大致講一下整體設計流程,主要分為系統的搭建和車牌的識別:
一、系統的搭建:
首先呢,就是系統的搭建(如上所示)。當然,在系統的搭建之前,需要先確定好硬件平台,如 Xilinx Artix-7 開發板(集成了 28nm 中端芯片)、OV5640 攝像頭模塊、HDMI 線以及 HDMI 顯示屏模塊(或者 FPGA 引腳杜邦線以及 LCD 顯示屏模塊)、JTAG調試器(VCC、GND、TCK、TMS)。另外,需要再確定好軟件平台,如 Win10、Vivado 2018.2、Arm Keil uVision(MDK525)、PyCharm(OpenCV + TensorFlow)、JLink.exe、車牌生成器。因此,這是一個軟硬件協同設計的智能 SoC 系統。
搭建的系統能夠通過 HDMI 接口,在 HDMI 顯示屏上(或者通過 FPGA 引腳在 LCD 顯示屏上)實時顯示 OV5640 攝像頭所采集的車牌視頻數據。(當然,這個功能描述的貌似簡單粗暴,其實搭建起來能把你累成 Dog,其中就有 CPU 軟核 IP 的導入與測試,AXI4 總線的互聯,OV5640 和 HDMI 的 IIC 的設計,OV5640 和 HDMI 寄存器的配置,OV5640 解碼模塊的 IP 設計,VGA 行場同步的時序協議與基於 AXI4-Stream 流協議的數據流格式的轉換,VDMA 和 DDR3 MIG7 的配置,以及許多常見的 Xilinx IP 如 Vid_In、Vid_Out、VTC 等等 IP 的載入與配置,Clock Wizard 時鍾分頻 IP 的添加與配置,最終還有 Xilinx Vivado Verilog 代碼和 ARM Keil C 代碼的交叉編譯等等,哎,各個模塊都是一門學問啊,貼出來的是一個簡化版的系統搭建,只留下了 IP 和 AXI 總線)。
總而言之,系統合理地划分了軟硬件的功能,充分地展示了異構平台的優勢。
二、車牌的識別:
接着,就是車牌的識別。對於車牌的識別,主要分為車牌識別預處理(RGB2HSV、HSV2Binary、形態學)、定位、分割、縮放、卷積神經網絡(字符識別)五大部分。(其它文獻中分為車牌定位、字符分割、字符識別)。當然,在基於 Verilog 車牌識別設計之前,我們首先需要在 PyCharm 軟件平台上進行設計、訓練、測試與驗證(AI 芯片開發都是這樣的),例如在 PC 端進行車牌識別預處理、定位、分割、以及神經網絡模型的訓練,這里是基於 OpenCV 的車牌識別預處理和基於 TensorFlow 的神經網絡框架訓練的,訓練的模型准確率能夠高達 99%。通過獲取所有識別車牌的訓練集,即 00000→99999 ,訓練完畢之后,通過對測試集測試能夠達到一定的識別率之后,提取網絡中的權重參數(全連接層占據主要部分,卷積層占據次要部分),便完成了能夠在硬件上實現的固定的網絡模型與參數(當然,量化、緩存與加速策略等等還是需要自己定的啦),然后便開始你的 AI 芯片設計,這里主要是作為 CPU 的一個協處理器,一個字符識別的硬件加速 IP。
軟件平台實現之后,於是就生成了如下的車牌識別框圖,從頭到尾分別是 OV5640 輸入、基於 OpenCV 的車牌識別預處理(RGB2HSV、HSV2Binary、Morphology)、定位、分割、縮放、基於 TensorFlow 的卷積神經網絡(網絡輸入、第一層填充 + 卷積層 + ReLU + 池化層、第二層填充 + 卷積層 + ReLU + 池化層、全連接層、Softmax、網絡輸出)、LCD 顯示。
哎,略顯復雜,王者局的生活,往往就是這么朴實無華,且枯燥。
之后,我們便開始進行基於 FPGA 的硬件實現(准備開始我們的發際線推后之旅)(我太難了)。
原文鏈接:https://blog.csdn.net/MicroTalent12/article/details/106586328