閑庭信步使用圖像驗證平臺加速FPGA的開發:第八課——圖像數據的行緩存

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程文件請關注知識星球:成工fpga,關注即送200GB學習資料,鏈接已置頂!)

前面的分析大家應該都能理解,只要是涉及到算子的圖像的操作,不過是插值還是濾波,都需要NxN區域的圖像數據進行處理,比如常見的3x3,5x5和7x7等。

對于軟件開發人員,數據都是存在數組或者隊列中,隨便取就可以,想取哪個就取那個。但是對于FPGA的硬件開發來說,事情要遠遠復雜的多

圖像的數據是一個像素點一個像素點產生的,反應在時序上就是在場同步,行同步,數據有效等信號的控制下圖像數據有序的進入FPGA,并不是同一個時間點所有的數據都進入了FPGA。而我們又不可能緩存所有的圖像數據,原因是圖像一秒就是數十幀,以800x480圖像為例,一幀圖像的大小就是800x480x8,一秒圖像數據就是800x480x8x幀率,這個數據量是很大的,而FPGA的緩存又是有限的。

在這種情況下,FPGA就是對圖像的數據按行進行流水緩存,對于3x3的因子,緩存相鄰的3行數據即可。如下所示,也就先緩存第一行的數據,再緩存第二行的數據,再緩存第三行的數據,再緩存第四行的的數據.....如果使用3x3的因子,那第一個處理的數據應該是第1行的第1個數據,此時需要緩存到第2行的第2列,所以3x3的因子,數據的緩存延時了1行再加上1個像素;同理,5x5的因子,數據的緩存會造成2行加2個像素的延時

其實數據的緩存還有一個問題,對于3x3的因子,處理的第一個數據是第1行的第1個數據,其實第0行的數據根本沒有處理,其實不光是第一行,圖像的外圍一圈的像素點都沒有進行處理。而對于5x5的因子,處理的第一個數據是第2行的第2個數據,圖像的外圍兩圈的像素點都沒有進行處理。當然我們也可以對外圈的像素點進行特殊的處理,但是非常的麻煩。最簡單的方法是在圖片的外圈補0,3x3的因子,補一圈0,5x5的因子,補兩圈0。如下所示,這樣就能保證每個像素可以按照相同的方式就像處理。至于如何補零,需要對緩存ram進行靈活的處理。

緩存RAM可以直接使用Xilinx自帶的IP核,但是如果我們使用了Xilinx的IP核,modelsim就要使用Xilinx的仿真庫,存在的問題是仿真庫比較大,而且每個人的Xilinx版本可能還不一致,就會造成FPGA的仿真可能跑不起來。考慮到通用性,我們直接寫一個雙口RAM文件bram_sdp2,直接對數組進行操作

有了雙口RAM,那我們就可以對圖像的數據進行緩存,我們先完成3行數據的緩存,在src文件下新建cache文件夾,新建data_cache.sv文件,例化了3個雙口BRAM_SDP2

通過控制RAM的讀寫可以巧妙的完成補零。

還有一個問題,就是3行數據緩存后,圖像的處理要延時了一行,而圖像有效信號active無法按行進行延時,所以要在最后一行再新生成一個圖像數據有效信號active信號,如下所示。

sel_cnt信號用來指示最新需要緩存數據的行數,而start信號用來指示數據開始處理的行數。

最后根據sel_cnt信號讀出行緩存的數據(最新的行直接讀輸入數據即可)。

行緩存處理除了一行的延時外,還有3個時鐘周期的延時,把場同步,行同步,數據有效信號延時3個時鐘周期即可。

最后將3x3的因子數據輸出即可。

有了data_cache.sv模塊,后續3x3因子的處理就變得非常的簡單,不用花費精力在圖像數據的緩存上,直接對圖像的數據進行處理即可,我們下節課就能見識到。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88405.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

經典排序算法

文章目錄前言1. 排序的基本概念1.1 排序是什么?1.2 常見的排序算法概覽2. 常見排序算法的實現2.1 插入排序 (Insertion Sort)2.1.1 基本思想2.1.2 直接插入排序2.1.3 希爾排序 (Shell Sort)2.2 選擇排序 (Selection Sort)2.2.1 直接選擇排序2.2.2 堆排序 (Heap Sort…

RabbitMQ 消息隊列:從入門到Spring Boot實戰

RabbitMQ 作為一款開源的、基于 AMQP(Advanced Message Queuing Protocol)協議實現的消息代理,憑借其強大的功能、靈活的路由機制以及出色的性能,在業界得到了廣泛的應用。無論是處理高并發訂單、異步通知、日志收集還是系統解耦&…

代賬行業數字化破局:從“知道”到“做到”,三步走穩贏!

認知!降本!增收!數字化!——這不僅是口號,更是代賬行業在激烈競爭和時代變化中生存發展的關鍵。很多代賬同行其實都明白趨勢,也知道大概該怎么做。但問題卡在第一步:不知道怎么開始,…

Mac 電腦crontab執行定時任務【Python 實戰】

1、crontab -e 編輯定時任務列表 crontab -e查看當前定時任務列表,長按 i 編輯,編輯完之后按 esc 退出編輯,然后輸入:wq 保存并提出。 如下: (base) charles@zl ~ % crontab -e58 15 * * * /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 /Users/charle…

go go go 出發咯 - go web開發入門系列(三) 項目基礎框架搭建與解讀

go go go 出發咯 - go web開發入門系列(三) 項目基礎框架搭建與解讀 往期回顧 go go go 出發咯 - go web開發入門系列(一) helloworldgo go go 出發咯 - go web開發入門系列(二) Gin 框架實戰指南 前言 如…

【字節跳動】數據挖掘面試題0014:SQL中count(1), count(*), count(列)區別

文章大綱SQL 中 count(1)、count(*)、count(某列) 的區別一、核心定義與行為差異二、示例說明差異三、性能差異與優化四、適用場景建議五、面試應答要點六、索引掃描與全表掃描1. 索引掃描的觸發條件2. 全表掃描的適用場景3. 常見面試問題點Q1:索引掃描一定比全表掃…

Linux面試問題-軟件測試

1、你在上一家公司常用的Linux命令有哪些?答:使用vim/vi編輯文件,使用cat,more,less,head查看文件,使用grep過濾日志中的error,使用ps查看進程,使用top查看實時進程,netstat查看端口…

時序數據庫的存儲之道:從數據特性看技術要點

時序數據的獨特挑戰時序數據(Time-Series Data)是指按時間順序記錄的一系列數據點,在物聯網、金融、工業監控等領域無處不在。與傳統數據相比,時序數據具有幾個鮮明特點:時間導向性:每個數據點都帶有精確的時間戳高寫入量&#xf…

【vim中替換】

vim中替換1 : s/在Vim中經常高頻使用到的命令:1 : s/ :s 命令的基本語法是 :[range]s/{pattern}/{string}/[flags],其中: ? [range] 是可選的范圍,用于指定替換的行范圍。例如,% 表示全文,10,…

Qt實戰:使用QSqlDatabase連接MySQL,并實現增刪改查

文章目錄一、創建數據表二、連接MySQL數據庫三、封裝成一個完整的輕量級 ORM 風格類四、實現派生具體模型類五、支持多線程連接池 ORM 事務封裝一、創建數據表 數據庫名: 我們先創建一個數據庫,名字叫 game_db: CREATE DATABASE IF NOT E…

Python腳本保護工具庫之pyarmor使用詳解

概要 PyArmor是一個專門為Python代碼提供加密保護的第三方庫,旨在解決Python源代碼易被反編譯和泄露的安全問題。作為一種動態代碼保護工具,PyArmor能夠對Python腳本進行混淆和加密處理,有效防止源代碼被惡意獲取、分析或篡改。該庫特別適用于商業軟件開發、知識產權保護和…

倉頡編程語言:從入門到精通

為啥要瞅瞅倉頡這玩意兒? 有一說一,現在的編程語言多得跟米一樣,對吧?那一門新語言想火,沒點絕活兒肯定不行。倉頡(Cangjie)這哥們兒,是華為搞出來的新玩意兒,靜態編譯的…

線性探針是什么:是一種用于探測神經網絡中特定特征的工具

線性探針是什么 線性探針是一種在機器學習和相關領域廣泛應用的技術,用于評估預訓練模型特征、檢測數據中的特定序列等。在不同的應用場景下,線性探針有著不同的實現方式和作用: 評估預訓練模型特征:在機器學習中,線性探針是一種評估預訓練模型“特征遷移能力”的標準化方…

【論文閱讀】Few-Shot PPG Signal Generation via Guided Diffusion Models

從少量樣本數據選擇到后處理的整體框架。首先,擴散模型在N樣本數據集和指導下的訓練。接著,模型生成一個增強的數據集,并進一步優化以提高保真度。最后,這些合成數據與少量樣本訓練數據集結合,用于基準模型的訓練和評估。數據分布從最初的紅色變為保真度增強的藍色,這表明…

CentOS-7的“ifupdown“與Debian的“ifupdown“對比 筆記250706

CentOS-7的"ifupdown"與Debian的"ifupdown"對比 筆記250706 CentOS 7 和 Debian 的 ifupdown 工具名稱相同,但在實現機制、配置文件語法和系統集成上存在顯著差異。以下是核心對比分析: ?? 一、核心差異概覽 對比維度CentOS 7De…

架構如傳承:技術長河中的可持續樂章

代碼結構:協作基石 在軟件開發的世界里,代碼結構就如同建筑的框架,支撐著整個項目的運行。想象一下,你加入了一個新的開發團隊,接手一個已經有一定規模的項目。當你打開代碼庫,看到的是一團亂麻般的代碼&a…

Ubuntu22.04更新Openssh至9.9p2無法正常連接,報錯解決

Ubuntu22.04更新Openssh至9.9p2無法正常連接,報錯解決 1.報錯信息如下所示ExecStart/usr/sbin/sshd -D $SSHD_OPTS (codeexited, status255/EXCEPTION)2.這通常說明 SSH 配置文件存在語法錯誤、缺失關鍵文件,或者端口被占用等問題。 3.檢查配置文件是否有…

基于小程序的智能停車管理系統設計與開發

項目介紹 本課程演示的是一款基于小程序的智能停車管理系統設計與開發,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系統 3…

多模態大語言模型arxiv論文略讀(155)

Panther: Illuminate the Sight of Multimodal LLMs with Instruction-Guided Visual Prompts ?? 論文標題:Panther: Illuminate the Sight of Multimodal LLMs with Instruction-Guided Visual Prompts ?? 論文作者:Honglin Li, Yuting Gao, Chengl…

SAP ERP與Oracle EBS對比,兩個ERP系統有什么區別?

據統計,2024年中國ERP軟件市場規模預計突破210億元,其中SAP和Oracle占據第一梯隊,共占國內ERP市場45%以上的份額,在高端市場尤其顯著。SAP和Oracle作為ERP行業的兩大巨頭,具體有什么區別呢?SAP是什么&#…