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


系統框圖

 

  

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

  從系統框圖上我們可以看到,可以划分為三個部分進行設計,一個是串口接收部分,然后是RAM數據存儲部分,最后是VGA驅動顯示部分。這里串口接收部分只需要用到串口接收代碼,代碼很多書上都有,我這里就不貼出來了,

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

打開IP Catalog,選擇block memory Generater

這里按如圖所示選擇,我這里將寫使能信號去掉,wea也可以代表寫使能

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

設置讀數據參數

這里因為我們是往RAM里面寫數據,所以這里不需要添加初始化RAM文件

點擊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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM