基於FPGA的Uart接收圖像數據至VGA顯示

系統框圖html

 

  

  前面咱們設計了基於FPGA的靜態圖片顯示,並對一幅彩色圖片提取了灰度,學習了RGB轉Gray算法。這是基於一幅靜態圖片的,那麼後面咱們要怎麼模擬一下一幅動態圖片的顯示,最終對動態數據進行濾波、邊緣檢測等算法,下來咱們首先來創建一個基於FPGA的動態圖片顯示基礎框架,本實驗內容爲:由PC端上位機軟件經過串口發送一幅圖像數據至FPGA,FPGA內部將圖像數據存儲,最後掃描到VGA屏幕上顯示。算法

  從系統框圖上咱們能夠看到,能夠劃分爲三個部分進行設計,一個是串口接收部分,而後是RAM數據存儲部分,最後是VGA驅動顯示部分。這裏串口接收部分只須要用到串口接收代碼,代碼不少書上都有,我這裏就不貼出來了,微信

  數據存儲部分須要使用的是雙口RAM IP Core,一端將數據寫入RAM中,一端將數據讀出來用VGA顯示,下面是基於Vivado的雙口RAM IP Core調用方法。框架

打開IP Catalog,選擇block memory Generaterpost

這裏按如圖所示選擇,我這裏將寫使能信號去掉,wea也能夠表明寫使能學習

設置寫數據位寬和深度,使能選擇always enable測試

設置讀數據參數url

這裏由於咱們是往RAM裏面寫數據,因此這裏不須要添加初始化RAM文件spa

點擊OK設計

 

最後generate綜合完成。

         雙口RAM IP調用完成之後,接下來是在用頂層文件把串口接收模塊和存儲模塊和VGA驅動模塊鏈接起來。這裏須要注意的是,雙口RAM的讀地址和寫地址都是須要在外面本身計數的,我這裏把寫使能信號設置爲串口接收完成標誌,讀使能設置爲always enable。對於VGA顯示圖片部分能夠參考我寫的另一篇博客:基於FPGA的VGA顯示靜態圖片。對於這個工程的仿真技巧能夠參考個人另外一篇博客:FPGA計算3行同列數據之和,裏面有串口接收發送的仿真技巧。

         這樣硬件部分其實就已經完成了,如今咱們須要的是一幅圖片的像素數據而後經過上位機串口調試助手發送給FPGA開發板,首先找一幅200x200的圖像數據,由於我這裏是開出的200x200的顯示區域(參考如上連接),使用MATLAB就能夠直接生成你想要的這幅圖像的像素數據,這裏的MATLAB代碼我給出連接:http://pan.baidu.com/s/1dFAMPjj  密碼:uu71,只須要修改下面如圖所示的imread(」」)這裏就行了,就能夠直接轉化你想轉化的圖片。注意圖片必須和這個.m文件在同一個文件夾,最後生成一個txt文件,這個txt文件裏面的數據就是咱們所須要的圖像數據

 

其實這三個文件裏面的數據是徹底相同的,那爲何不直接用前面那兩個文件的數據呢?這裏博主親身體驗過,那是絕對不行的,由於前面兩個文件的數據實際上是有回車的,可能會被串口默認爲一個字符,txt文件中是沒有的,空格的話這裏被串口調試助手忽略了!以下圖,點擊發送就OK啦!

         最後經過串口發送到開發板最終顯示的效果如圖所示,咱們能夠看到這裏MATLAB代碼生成的就直接是彩色圖像,最終發送過程當中實際上是動態顯示的,由於串口波特率的速度比VGA的掃描速度是要慢不少的,這裏的動態顯示視頻請看個人微博連接:http://t.cn/RO7UsfK

  最後通過測試咱們的lena女神的顯示效果最好了,看來真不愧是咱們圖像處理屆的模特鼻祖呀!最後看來,顯示效果仍是不錯的呢!

  本文以前還有一點小問題,如今博主已經修改,請查看該連接查看錯誤緣由:糾錯:基於FPGA串口發送彩色圖片數據至VGA顯示

  若是你想得到本文的全部課件和工程代碼,請關注本人的我的微信訂閱號:開源FPGANingHeChuan或掃描下方二維碼關注訂閱號,在後臺回覆圖像處理,便可得到本文的全部課件、資料、和工程源碼哦!

 

轉載請註明出處:NingHeChuan(寧河川)

我的微信訂閱號:開源FPGANingHeChuan

若是你想及時收到我的撰寫的博文推送,能夠掃描左邊二維碼(或者長按識別二維碼)關注我的微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/7294576.html 

相關文章
相關標籤/搜索