中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

潮州網(wǎng)站開發(fā)黃頁(yè)推廣2021

潮州網(wǎng)站開發(fā),黃頁(yè)推廣2021,寶山區(qū)建設(shè)和交通委員會(huì)網(wǎng)站,公司網(wǎng)站建設(shè)高端網(wǎng)站建設(shè)網(wǎng)頁(yè)設(shè)計(jì)目錄 1、前言版本更新說(shuō)明給讀者的一封信FPGA就業(yè)高端項(xiàng)目培訓(xùn)計(jì)劃免責(zé)聲明 2、相關(guān)方案推薦我這里已有的FPGA圖像縮放方案本方案在Xilinx Kintex7 系列FPGA上的應(yīng)用本方案在Xilinx Artix7 系列FPGA上的應(yīng)用本方案在國(guó)產(chǎn)FPGA紫光同創(chuàng)系列上的應(yīng)用本方案在國(guó)產(chǎn)FPGA高云系列上的應(yīng)…

目錄

  • 1、前言
    • 版本更新說(shuō)明
    • 給讀者的一封信
    • FPGA就業(yè)高端項(xiàng)目培訓(xùn)計(jì)劃
    • 免責(zé)聲明
  • 2、相關(guān)方案推薦
    • 我這里已有的FPGA圖像縮放方案
    • 本方案在Xilinx Kintex7 系列FPGA上的應(yīng)用
    • 本方案在Xilinx Artix7 系列FPGA上的應(yīng)用
    • 本方案在國(guó)產(chǎn)FPGA紫光同創(chuàng)系列上的應(yīng)用
    • 本方案在國(guó)產(chǎn)FPGA高云系列上的應(yīng)用
  • 3、設(shè)計(jì)思路框架
    • 設(shè)計(jì)框圖
    • 視頻源選擇
    • ov5640 i2c配置及采集
    • 動(dòng)態(tài)彩條
    • 圖像縮放模塊詳解
    • 圖像縮放模塊使用
    • 圖像緩存
    • 視頻輸出
    • PL端邏輯工程源碼架構(gòu)
    • PS端SDK軟件工程源碼架構(gòu)
  • 4、vivado和matlab聯(lián)合仿真
  • 5、工程代碼9詳解:掌握?qǐng)D像縮放模塊用法
  • 6、工程代碼10詳解:掌握?qǐng)D像縮小操作
  • 7、工程代碼11詳解:掌握?qǐng)D像放大操作
  • 8、工程移植說(shuō)明
    • vivado版本不一致處理
    • FPGA型號(hào)不一致處理
    • 其他注意事項(xiàng)
  • 9、上板調(diào)試驗(yàn)證并演示
    • 準(zhǔn)備工作
    • 工程9輸出演示
    • 工程10輸出演示
    • 工程11輸出演示
  • 10、福利:工程源碼獲取

FPGA高端項(xiàng)目:Xilinx Zynq7020 系列FPGA純verilog圖像縮放工程解決方案 提供3套工程源碼和技術(shù)支持

1、前言

沒(méi)玩過(guò)圖像縮放都不好意思說(shuō)自己玩兒過(guò)FPGA,這是CSDN某大佬說(shuō)過(guò)的一句話,鄙人深信不疑。。。目前市面上主流的FPGA圖像縮放方案如下:
1:Xilinx的HLS方案,該方案簡(jiǎn)單,易于實(shí)現(xiàn),但只能用于Xilinx自家的FPGA;關(guān)于HLS實(shí)現(xiàn)圖像縮放請(qǐng),參考我之前寫的文章HLS實(shí)現(xiàn)圖像縮放點(diǎn)擊查看:HLS圖像縮放
2:非純Verilog方案,大部分代碼使用Verilog實(shí)現(xiàn),但中間的fifo或ram等使用了IP,導(dǎo)致移植性變差,難以在Xilinx、Altera和國(guó)產(chǎn)FPGA之間自由移植;
3:純Verilog方案,也就是本方案,一個(gè)字:牛逼!!!

本文使用Xilinx的Zynq7020系列FPGA純verilog代碼實(shí)現(xiàn)圖像縮放,視頻源有兩種,分別對(duì)應(yīng)開發(fā)者手里有沒(méi)有攝像頭的情況,一種是使用廉價(jià)的OV5640攝像頭模組;如果你的手里沒(méi)有攝像頭,或者你的開發(fā)板沒(méi)有攝像頭接口,則可使用代碼內(nèi)部生成的動(dòng)態(tài)彩條模擬攝像頭視頻;視頻源的選擇通過(guò)代碼頂層的define宏定義進(jìn)行,默認(rèn)使用ov5640作為視頻源;圖像縮放模塊支持領(lǐng)域插值和雙線性插值2種算法,通過(guò)模塊頂層參數(shù)選擇,默認(rèn)使用雙線性插值;縮放后的圖像使用我常用的FDMA圖像緩存架構(gòu)進(jìn)出DDR3等存儲(chǔ)設(shè)備進(jìn)行圖像的三幀緩存,縮放后的視頻最好進(jìn)行緩存操作,因?yàn)榭s放后原本的視頻時(shí)序已經(jīng)被打亂,不緩存的話直接讀出基本是錯(cuò)誤且不對(duì)齊的數(shù)據(jù),輸出的圖像是亂碼;從DDR3讀出視頻經(jīng)過(guò)VGA時(shí)序生成標(biāo)準(zhǔn)的VGA時(shí)序視頻,最后用純verilog顯示的HDMI輸出模塊送顯示器顯示即可;針對(duì)目前市面上主流的FPGA,本純verilog圖像縮放方案一共移植了17套工程源碼,本博文介紹其中基于Xilinx Zynq7020系列FPGA的3套工程,詳情如下:
在這里插入圖片描述
這里說(shuō)明一下提供的3套工程源碼的作用和價(jià)值,如下:

工程源碼1:圖像不縮放操作
ov5640或者動(dòng)態(tài)彩條輸入,HDMI輸出,圖像經(jīng)過(guò)圖像縮放模塊,但并不做縮放操作,即圖像進(jìn)入圖像縮放模塊前的分辨率為1280x720,圖像經(jīng)過(guò)圖像縮放模塊出來(lái)后的分辨率依然為1280x720,目的是讓讀者知道圖像縮放模塊的用法,為后面的縮小和放大等操作打好基礎(chǔ);

工程源碼2:圖像縮小操作
ov5640或者動(dòng)態(tài)彩條輸入,HDMI輸出,圖像經(jīng)過(guò)圖像縮放模塊,并進(jìn)行縮小操作,即圖像進(jìn)入圖像縮放模塊前的分辨率為1280x720,圖像經(jīng)過(guò)圖像縮放模塊出來(lái)后的分辨率為800x600,目的是讓讀者知道圖像縮放模塊縮小操作的用法,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;

工程源碼3:圖像放大操作
ov5640或者動(dòng)態(tài)彩條輸入,HDMI輸出,圖像經(jīng)過(guò)圖像縮放模塊,并進(jìn)行放大操作,即圖像進(jìn)入圖像縮放模塊前的分辨率為1280x720,圖像經(jīng)過(guò)圖像縮放模塊出來(lái)后的分辨率為1920x1080,目的是讓讀者知道圖像縮放模塊放大操作的用法,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;

本博客詳細(xì)描述了FPGA高端項(xiàng)目:Xilinx Zynq7020 系列的純verilog圖像縮放工程解決方案的設(shè)計(jì)方案,工程代碼可綜合編譯上板調(diào)試,可直接項(xiàng)目移植,適用于在校學(xué)生、研究生項(xiàng)目開發(fā),也適用于在職工程師做學(xué)習(xí)提升,可應(yīng)用于醫(yī)療、軍工等行業(yè)的高速接口或圖像處理領(lǐng)域;
提供完整的、跑通的工程源碼和技術(shù)支持;
工程源碼和技術(shù)支持的獲取方式放在了文章末尾,請(qǐng)耐心看到最后;

版本更新說(shuō)明

此版本為第3版,之前根據(jù)讀者的建議,對(duì)第1版工程做了改進(jìn)和更新形成如下的第2版:
1:增加了輸入視頻動(dòng)態(tài)彩條的選擇,有的讀者說(shuō)他手里沒(méi)有OV5640攝像頭或者攝像頭原理圖和我的不一致,導(dǎo)致在移植過(guò)程中困難很大,基于此,增加了動(dòng)態(tài)彩條,它由FPGA內(nèi)部產(chǎn)生,不需要外接攝像頭就可以使用,使用方法在后文有說(shuō)明;
2:優(yōu)化了FDMA,之前的FDMA內(nèi)AXI4的數(shù)據(jù)讀寫突發(fā)長(zhǎng)度為256,導(dǎo)致在低端FPGA上帶寬不夠,從而圖像質(zhì)量不佳,基于此,將FDMA內(nèi)AXI4的數(shù)據(jù)讀寫突發(fā)長(zhǎng)度改為128;
3:優(yōu)化了HDMI輸出模塊,之前用的自定義IP,有讀者說(shuō)IP無(wú)法更新,雖能正常使用,但看源碼不方便,基于此,將HDMI輸出模塊改為純verilog實(shí)現(xiàn)的,直接了當(dāng);
4:更新了輸出時(shí)序模塊,我的輸出時(shí)序模塊采用1080P背景中顯示有效區(qū)域圖像的方式,之前的版本,除有效區(qū)域圖像外,其他區(qū)域是花屏的,有讀者說(shuō)看著不舒服,基于此,將,除有效區(qū)域圖像外的圖像優(yōu)化為黑色,即黑色背景中顯示有效區(qū)域圖像的方式,在后面有貼圖;
現(xiàn)在根據(jù)讀者的建議,又對(duì)第2版工程做了改進(jìn)和更新形成如下的第3版:
1:優(yōu)化了圖像縮放模塊代碼結(jié)構(gòu),將原來(lái)的跨時(shí)鐘域FIFO納入圖像縮放模塊內(nèi)部,并添加了新的頂層接口和配置參數(shù),使能原來(lái)復(fù)雜的頂層接口和參數(shù)變得十分簡(jiǎn)潔;
2:新增了純verilog實(shí)現(xiàn)的異步FIFO,代碼里可選Xilinx的FIFO IP核,也可選verilog實(shí)現(xiàn)的異步FIFO,通過(guò)頂層參數(shù)選擇,這樣就使得圖像縮放模塊移植性和通用性更強(qiáng);
3:新增了一套工程源碼,該工程主要針對(duì)高分辨率輸入視頻的圖像縮放的項(xiàng)目需求,新增的工程采用高達(dá)1920x1080@60Hz的HDMI輸入視頻進(jìn)行圖像縮放操作;
4:工程整體使用難度大大降低,由于優(yōu)化了圖像縮放模塊和整體代碼架構(gòu),加之將原來(lái)很多參數(shù)進(jìn)行了統(tǒng)一的設(shè)置,代碼量和行數(shù)減少了近45%,僅需修改集合參數(shù)就能快速實(shí)現(xiàn)工程的移植和修改;

給讀者的一封信

FPGA作為當(dāng)今熱門行業(yè),入行門檻很高,工資待遇不錯(cuò),一時(shí)間引無(wú)數(shù)英雄盡折腰,但很多初學(xué)者甚至工程師都還有很多誤區(qū),現(xiàn)給讀者一封信如下:
1、矮要承認(rèn)挨打站穩(wěn)
要學(xué)FPGA,甚至吃這碗飯,每個(gè)人都是從零基礎(chǔ)開始的,你對(duì)自己有自信,認(rèn)為你行,就自學(xué);你不自信,就找別人學(xué);和古代拜師學(xué)藝是一回事兒;首先思維要符合邏輯;
2、基礎(chǔ)問(wèn)題需要自己解決
最基礎(chǔ)的知識(shí),比如:verilog語(yǔ)法、vivado工具使用、模電數(shù)電基礎(chǔ)常識(shí)、電腦使用、計(jì)算機(jī)基本結(jié)構(gòu)。。。這些基礎(chǔ)知識(shí)在網(wǎng)上都是免費(fèi)的,既有文字資料也有視頻資料;這些基礎(chǔ)知識(shí)你一定要具備,因?yàn)檫@是你能獲得的性價(jià)比最高的東西了,首先它免費(fèi);其次它簡(jiǎn)單,只需要你花時(shí)間,不需要花腦子;最后它重要,這是你干FPGA的基礎(chǔ);
3、有了源碼等于零
你可能認(rèn)為,我有了源碼就能做項(xiàng)目了,我可以肯定的告訴你,該醒醒了;原子彈的詳細(xì)原理和原料配方甚至生產(chǎn)工藝流程在網(wǎng)上都是公開的,為啥全世界就那聯(lián)合國(guó)幾大流氓能造出來(lái)的?同樣的,源碼給你,你看得懂嗎?你知道怎么用嗎?看不懂不會(huì)用的源碼,跟廢物有什么區(qū)別?你需要的是源碼+工程,最完美的是源碼+工程+技術(shù)支持;有了源碼,就有了可開發(fā)的底層架構(gòu),有了工程就知道源碼或者模塊怎么使用,有了技術(shù)支持就可以根據(jù)源碼修改開發(fā)自己的項(xiàng)目;
4、先學(xué)會(huì)爬在學(xué)會(huì)跑
對(duì)于初學(xué)者,沒(méi)有資格研究代碼,你首先需要做的是對(duì)工程進(jìn)行復(fù)現(xiàn);比如給你一個(gè)圖像的工程,你首先在自己的開發(fā)板上復(fù)現(xiàn)這個(gè)工程的功能,然后再去閱讀理解代碼,然后對(duì)代碼的功能部分做小幅修改,比如改一下接口,增加幾個(gè)輸出接口,比如加一個(gè)LED輸出;小幅修改后再慢慢增加修改幅度,以符合自己的需求;
5、學(xué)FPGA要不求甚解
學(xué)FPGA要不求甚解,甚至不需要理解,這句話咋聽著有點(diǎn)不符合邏輯呢?對(duì)于很多功能性模塊而言,你不需要理解它怎么實(shí)現(xiàn)的,你只需要知道怎么使用它,比如一個(gè)圖像縮放模塊,這種東西都是很老的知識(shí),以你目前的知識(shí)水平,該模塊的代碼你怎么看也看不懂的,但你只要知道怎么使用它就行了,知道怎么使用,就能做項(xiàng)目,就能在公司呆下去了,原因很簡(jiǎn)單,老板招你來(lái)是干活兒的,不是招你來(lái)學(xué)習(xí)的,那是學(xué)校的事兒;如果要等什么都懂了才干活兒,那公司早垮了,學(xué)FPGA就是在實(shí)踐中學(xué)習(xí),先上前線去干活,邊干邊學(xué),在實(shí)踐中遇到問(wèn)題,并主動(dòng)去查資料問(wèn)大佬理解問(wèn)題,才是成長(zhǎng)最快的,而不是一味的咬文嚼字刨根問(wèn)底;

FPGA就業(yè)高端項(xiàng)目培訓(xùn)計(jì)劃

鑒于目前的FPGA就業(yè)和行業(yè)現(xiàn)狀,本博推出了FPGA就業(yè)高端項(xiàng)目培訓(xùn):純verilog圖像縮放 工程解決方案的計(jì)劃,該計(jì)劃旨在讓一部分人先學(xué)會(huì)FPGA純verilog圖像縮放,提高從業(yè)者的技術(shù)水平和工資待遇,詳細(xì)計(jì)劃如下:
在這里插入圖片描述
FPGA就業(yè)高端項(xiàng)目培訓(xùn)計(jì)劃細(xì)節(jié):
1、我發(fā)你上述17套工程源碼和對(duì)應(yīng)的工程設(shè)計(jì)文檔網(wǎng)盤鏈接,你保存下載,作為培訓(xùn)的核心資料;
2、你根據(jù)自己的實(shí)際情況安裝好對(duì)應(yīng)的開發(fā)環(huán)境,然后對(duì)著設(shè)計(jì)文檔進(jìn)行淺層次的學(xué)習(xí);
3、遇到不懂的隨時(shí)問(wèn)我,包括代碼、職業(yè)規(guī)劃、就業(yè)咨詢、人生規(guī)劃、戰(zhàn)略規(guī)劃等等;
4、每周末進(jìn)行一次騰訊會(huì)議,我會(huì)檢查你的學(xué)習(xí)情況和面對(duì)面溝通交流;
5、你可以移植代碼到你自己的FPGA開發(fā)板上跑,如果你沒(méi)有板子,你根據(jù)你自己的需求修改代碼后,編譯工程,把bit發(fā)我,我?guī)湍阆螺d到我的板子上驗(yàn)證;

免責(zé)聲明

本工程及其源碼即有自己寫的一部分,也有網(wǎng)絡(luò)公開渠道獲取的一部分(包括CSDN、Xilinx官網(wǎng)、Altera官網(wǎng)等等),若大佬們覺得有所冒犯,請(qǐng)私信批評(píng)教育;基于此,本工程及其源碼僅限于讀者或粉絲個(gè)人學(xué)習(xí)和研究,禁止用于商業(yè)用途,若由于讀者或粉絲自身原因用于商業(yè)用途所導(dǎo)致的法律問(wèn)題,與本博客及博主無(wú)關(guān),請(qǐng)謹(jǐn)慎使用。。。

2、相關(guān)方案推薦

我這里已有的FPGA圖像縮放方案

我的主頁(yè)目前有FPGA圖像縮放專欄,改專欄收錄了我目前手里已有的FPGA圖像縮放方案,從實(shí)現(xiàn)方式分類有基于HSL實(shí)現(xiàn)的圖像縮放、基于純verilog代碼實(shí)現(xiàn)的圖像縮放;從應(yīng)用上分為單路視頻圖像縮放、多路視頻圖像縮放、多路視頻圖像縮放拼接;從輸入視頻分類可分為OV5640攝像頭視頻縮放、SDI視頻縮放、MIPI視頻縮放等等;以下是專欄地址:
點(diǎn)擊直接前往

本方案在Xilinx Kintex7 系列FPGA上的應(yīng)用

本方案適應(yīng)于所有FPGA平臺(tái),針對(duì)目前市面上主流的FPGA,本博將本方案分別移植到了Xilinx 的Artix7、Kintex7、Zynq7020、紫光同創(chuàng)、高云等平臺(tái),本文講述的是在Xilinx Zynq7020 系列FPGA上的應(yīng)用,想要直接應(yīng)用于Xilinx Kintex7 系列FPGA的讀者,可以參考我之前寫得博客,以下是博客地址:
點(diǎn)擊直接前往

本方案在Xilinx Artix7 系列FPGA上的應(yīng)用

本方案適應(yīng)于所有FPGA平臺(tái),針對(duì)目前市面上主流的FPGA,本博將本方案分別移植到了Xilinx 的Artix7、Kintex7、Zynq7020、紫光同創(chuàng)、高云等平臺(tái),本文講述的是在Xilinx Zynq7020 系列FPGA上的應(yīng)用,想要直接應(yīng)用于Xilinx Artix7 系列FPGA的讀者,可以參考我之前寫得博客,以下是博客地址:
點(diǎn)擊直接前往

本方案在國(guó)產(chǎn)FPGA紫光同創(chuàng)系列上的應(yīng)用

本方案適應(yīng)于所有FPGA平臺(tái),針對(duì)目前市面上主流的FPGA,本博將本方案分別移植到了Xilinx 的Artix7、Kintex7、Zynq7020、紫光同創(chuàng)、高云等平臺(tái),本文講述的是在Xilinx Zynq7020 系列FPGA上的應(yīng)用,想要直接應(yīng)用于國(guó)產(chǎn)FPGA紫光同創(chuàng)系列FPGA的讀者,可以參考我之前寫得博客,以下是博客地址:
點(diǎn)擊直接前往

本方案在國(guó)產(chǎn)FPGA高云系列上的應(yīng)用

本方案適應(yīng)于所有FPGA平臺(tái),針對(duì)目前市面上主流的FPGA,本博將本方案分別移植到了Xilinx 的Artix7、Kintex7、Zynq7020、紫光同創(chuàng)、高云等平臺(tái),本文講述的是在Xilinx Zynq7020 系列FPGA上的應(yīng)用,想要直接應(yīng)用于國(guó)產(chǎn)FPGA高云系列FPGA的讀者,可以參考我之前寫得博客,以下是博客地址:
點(diǎn)擊直接前往

3、設(shè)計(jì)思路框架

設(shè)計(jì)框圖

本博客提供4套vivado工程源碼,設(shè)計(jì)框圖如下:
在這里插入圖片描述
本設(shè)計(jì)的圖像緩存在Zynq7020 PS側(cè)DDR3中,需要調(diào)用Zynq7軟核完成DDR3的配置;

視頻源選擇

視頻源有兩種,分別對(duì)應(yīng)開發(fā)者手里有沒(méi)有攝像頭的情況,一種是使用廉價(jià)的OV5640攝像頭模組;如果你的手里沒(méi)有攝像頭,或者你的開發(fā)板沒(méi)有攝像頭接口,則可使用代碼內(nèi)部生成的動(dòng)態(tài)彩條模擬攝像頭視頻;視頻源的選擇通過(guò)代碼頂層的define宏定義進(jìn)行,默認(rèn)使用ov5640作為視頻源;視頻源的選擇通過(guò)代碼頂層的`define宏定義進(jìn)行;如下:
在這里插入圖片描述
選擇邏輯代碼部分如下:
在這里插入圖片描述
選擇邏輯如下:
當(dāng)(注釋) define COLOR_TEST時(shí),輸入源視頻是ov5640攝像頭;
當(dāng)(不注釋) define COLOR_TEST時(shí),輸入源視頻是動(dòng)態(tài)彩條;

ov5640 i2c配置及采集

視頻源有兩種,分別對(duì)應(yīng)開發(fā)者手里有沒(méi)有攝像頭的情況,一種是使用廉價(jià)的OV5640攝像頭模組;如果你的手里沒(méi)有攝像頭,或者你的開發(fā)板沒(méi)有攝像頭接口,則可使用代碼內(nèi)部生成的動(dòng)態(tài)彩條模擬攝像頭視頻;視頻源的選擇通過(guò)代碼頂層的define宏定義進(jìn)行,默認(rèn)使用ov5640作為視頻源;ov5640需要i2c配置才能使用,需要i2c配置分辨率,然后將DVP接口的兩個(gè)時(shí)鐘一個(gè)像素的GRB565視頻數(shù)據(jù)采集為一個(gè)時(shí)鐘一個(gè)像素的RGB565或者RGB888視頻數(shù)據(jù);ov5640i2c配置及采集代碼如下:
在這里插入圖片描述
ov5640配置和采集模塊頂層參數(shù)如下:

module helai_ov5640_rx #(parameter DELAY        = 1    ,	// 有的攝像頭使用轉(zhuǎn)接板與FPGA開發(fā)板連接,可能需要考慮上電延時(shí),不需要是設(shè)為0parameter DEVID        = 8'h78, // i2c 從機(jī)器件地址parameter IMAGE_WIDTH  = 1280 ,	// ov5640輸出視頻寬度parameter IMAGE_HEIGHT = 720  ,	// ov5640輸出視頻高度parameter RGB_TYPE     = 1'd0	// 設(shè)為0-->輸出RGB565;設(shè)為1-->輸出RGB888	
)(input         clk_25m     ,	// 固定輸入 25M 時(shí)鐘input         rst_n       ,	// 低電平復(fù)位output        cmos_scl    ,	// ov5640的scl接口inout         cmos_sda    ,	// ov5640的sda接口input         cmos_pclk_i ,	// ov5640的pclk接口input         cmos_href_i ,	// ov5640的href接口input         cmos_vsync_i,	// ov5640的vsync接口input  [7:0]  cmos_data_i ,	// ov5640的data接口output        cmos_xclk_o ,	// ov5640的xclk接口,如果你的攝像頭自帶晶振,則此信號(hào)不需要output [23:0] ov5640_rgb  ,	// 輸出的RGB視頻像素?cái)?shù)據(jù)output        ov5640_de   ,	// 輸出的RGB視頻像素?cái)?shù)據(jù)有效信號(hào)output        ov5640_vs   ,	// 輸出的RGB視頻場(chǎng)同步信號(hào)output        ov5640_hs   ,	// 輸出的RGB視頻行同步信號(hào)output        cfg_done      // ov5640配置完成拉高信號(hào)
);

ov5640配置和采集模塊的例化請(qǐng)參考工程源碼的頂層代碼;

動(dòng)態(tài)彩條

如果你的手里沒(méi)有ov5640,或者你得開發(fā)板沒(méi)有ov5640接口,則可使用代碼內(nèi)部生成的動(dòng)態(tài)彩條模擬攝像頭視頻;視頻源的選擇通過(guò)代碼頂層的define宏定義進(jìn)行,動(dòng)態(tài)彩條可配置為不同分辨率的視頻,視頻的邊框?qū)挾?#xff0c;動(dòng)態(tài)移動(dòng)方塊的大小,移動(dòng)速度等都可以參數(shù)化配置,我這里配置為辨率1280x720,動(dòng)態(tài)彩條模塊代碼位置和頂層接口和例化如下:
在這里插入圖片描述
在這里插入圖片描述
動(dòng)態(tài)彩條模塊的例化請(qǐng)參考工程源碼的頂層代碼;

圖像縮放模塊詳解

圖像縮放模塊功能框圖如下,由跨時(shí)鐘FIFO、插值+RAM陣列構(gòu)成,跨時(shí)鐘FIFO的目的是解決跨時(shí)鐘域的問(wèn)題,比如從低分辨率視頻放大到高分辨率視頻時(shí),像素時(shí)鐘必然需要變大,這是就需要異步FIFO了,插值算法和RAM陣列具體負(fù)責(zé)圖像縮放算法層面的實(shí)現(xiàn);
在這里插入圖片描述
插值算法和RAM陣列以ram和fifo為核心進(jìn)行數(shù)據(jù)緩存和插值實(shí)現(xiàn),設(shè)計(jì)架構(gòu)如下:
在這里插入圖片描述
圖像縮放模塊代碼架構(gòu)如下:模塊的例化請(qǐng)參考工程源碼的頂層代碼;
在這里插入圖片描述
圖像縮放模塊FIFO的選擇可以調(diào)用工程對(duì)應(yīng)的vivado工具自帶的FIFO IP核,也可以使用純verilog實(shí)現(xiàn)的FIFO,可通過(guò)接口參數(shù)選擇,圖像縮放模塊頂層接口如下:

module helai_video_scale #(//---------------------------Parameters----------------------------------------parameter FIFO_TYPE          =	"xilinx",		// "xilinx" for xilinx-fifo ; "verilog" for verilog-fifoparameter DATA_WIDTH         =	8       ,		//Width of input/output dataparameter CHANNELS           =	1       ,		//Number of channels of DATA_WIDTH, for color imagesparameter INPUT_X_RES_WIDTH  =	11      		//Widths of input/output resolution control signals	
)(input                            i_reset_n         ,    // 輸入--低電平復(fù)位信號(hào)input  [INPUT_X_RES_WIDTH-1:0]   i_src_video_width ,	// 輸入視頻--即縮放前視頻的寬度input  [INPUT_X_RES_WIDTH-1:0]   i_src_video_height,	// 輸入視頻--即縮放前視頻的高度input  [INPUT_X_RES_WIDTH-1:0]   i_des_video_width ,	// 輸出視頻--即縮后前視頻的寬度input  [INPUT_X_RES_WIDTH-1:0]   i_des_video_height,	// 輸出視頻--即縮后前視頻的高度input                            i_src_video_pclk  ,	// 輸入視頻--即縮前視頻的像素時(shí)鐘input                            i_src_video_vs    ,	// 輸入視頻--即縮前視頻的場(chǎng)同步信號(hào),必須為高電平有效input                            i_src_video_de    ,	// 輸入視頻--即縮前視頻的數(shù)據(jù)有效信號(hào),必須為高電平有效input  [DATA_WIDTH*CHANNELS-1:0] i_src_video_pixel ,	// 輸入視頻--即縮前視頻的像素?cái)?shù)據(jù)input                            i_des_video_pclk  ,	// 輸出視頻--即縮后視頻的像素時(shí)鐘,一般為寫入DDR緩存的時(shí)鐘output                           o_des_video_vs    ,	// 輸出視頻--即縮后視頻的場(chǎng)同步信號(hào),高電平有效output                           o_des_video_de    ,	// 輸出視頻--即縮后視頻的數(shù)據(jù)有效信號(hào),高電平有效output [DATA_WIDTH*CHANNELS-1:0] o_des_video_pixel 		// 輸出視頻--即縮后視頻的像素?cái)?shù)據(jù)
);

FIFO_TYPE選擇原則如下:
1:總體原則,選擇"xilinx"好處大于選擇"verilog";
2:當(dāng)你的FPGA邏輯資源不足時(shí),請(qǐng)選"xilinx";
3:當(dāng)你圖像縮放的視頻分辨率較大時(shí),請(qǐng)選"xilinx";
4:當(dāng)你的FPGA沒(méi)有FIFO IP或者FIFO IP快用完了,請(qǐng)選"verilog";
5:當(dāng)你向自學(xué)一下異步FIFO時(shí),,請(qǐng)選"verilog";
6:不同F(xiàn)PGA型號(hào)對(duì)應(yīng)的工程FIFO_TYPE參數(shù)不一樣,但選擇原則一樣,具體參考代碼;

2種插值算法的整合與選擇
本設(shè)計(jì)將常用的雙線性插值和鄰域插值算法融合為一個(gè)代碼中,通過(guò)輸入?yún)?shù)選擇某一種算法;
具體選擇參數(shù)如下:

input  wire i_scaler_type //0-->bilinear;1-->neighbor

通過(guò)輸入i_scaler_type 的值即可選擇;

輸入0選擇雙線性插值算法;
輸入1選擇鄰域插值算法;

代碼里的配置如下:
在這里插入圖片描述

圖像縮放模塊使用

圖像縮放模塊使用非常簡(jiǎn)單,頂層代碼里設(shè)置了四個(gè)參數(shù),如下:
在這里插入圖片描述
上圖視頻通過(guò)圖像縮放模塊但不進(jìn)行縮放操作,旨在掌握?qǐng)D像縮放模塊的用法;如果需要將圖像放大到1080P,則修改為如下:
在這里插入圖片描述
當(dāng)然,需要修改的不僅僅這一個(gè)地方,FDMA的配置也需要相應(yīng)修改,詳情請(qǐng)參考代碼,但我想要證明的是,圖像縮放模塊使用非常簡(jiǎn)單,你都不需要知道它內(nèi)部具體怎么實(shí)現(xiàn)的,上手就能用;

圖像緩存

Xilinx系列FPGA工程使用我常用的FDMA架構(gòu),紫光同創(chuàng)系列FPGA工程使用我常用的HDMA架構(gòu),高云系列FPGA工程使用自家?guī)У腎P架構(gòu);圖像緩存的作用是將圖像送入DDR中做3幀緩存再讀出顯示,目的是匹配輸入輸出的時(shí)鐘差和提高輸出視頻質(zhì)量,關(guān)于FDMA,請(qǐng)參考我之前的博客,博客地址:點(diǎn)擊直接前往
FDMA圖像緩存架構(gòu)在Block Design中如下:
在這里插入圖片描述
需要注意的是,Xilinx系列的Artix7、Kintex7以及紫光和高云工程都使用DDR3作為緩存,Zynq7020工程使用PS端的DDR3作為緩存;Artix7、Kintex7工程調(diào)用MIG IP實(shí)現(xiàn)DDR3讀寫;Zynq7020工程調(diào)用Zynq軟核實(shí)現(xiàn)DDR3讀寫;

視頻輸出

視頻從FDMA讀出后,經(jīng)過(guò)VGA時(shí)序模塊和HDMI發(fā)送模塊后輸出顯示器,代碼位置如下:
在這里插入圖片描述
VGA時(shí)序配置為1920X1080,HDMI發(fā)送模塊采用verilog代碼手寫,可以用于FPGA的HDMI發(fā)送應(yīng)用,關(guān)于這個(gè)模塊,請(qǐng)參考我之前的博客,博客地址:點(diǎn)擊直接前往

PL端邏輯工程源碼架構(gòu)

Xilinx Zynq7020 系列FPGA工程源碼架構(gòu)具有高度相似性,以工程9為例截圖如下:
在這里插入圖片描述

PS端SDK軟件工程源碼架構(gòu)

Xilinx Zynq7020 系列FPGA純verilog圖像縮放工程沒(méi)有用官方推薦的VDMA方案,而是用了自定義的FDMA方案,雖然不需要SDK配置,但FDMA的AXI4接口時(shí)鐘由Zynq提供,所以需要運(yùn)行SDK程序才能啟動(dòng)Zynq,從而為PL端邏輯提供時(shí)鐘;由于不需要SDK配置,所以SDK軟件代碼就變得極度簡(jiǎn)單,只需運(yùn)行一個(gè)“Hello World”即可,如下:
在這里插入圖片描述

4、vivado和matlab聯(lián)合仿真

需要注意的是,方針的目的是為了驗(yàn)證,這一步我已經(jīng)替你們做完了,所以讀者不再需要單獨(dú)仿真,如果讀者是在需要自己仿真玩玩兒,需要自己寫仿真代碼;vivado和matlab聯(lián)合仿真詳細(xì)步驟如下:
第一步:網(wǎng)上下載一張1280X720的圖片,并用matlab將圖片轉(zhuǎn)換為RGB格式的txt文檔;
第二步:在vivado下設(shè)計(jì)tstbench,將RGB格式的txt文檔作為視頻輸入源給到圖像縮放模塊,并將縮放后的圖像數(shù)據(jù)寫入輸出txt文檔;
第二步:用matlab將輸出txt文檔轉(zhuǎn)換為圖片,并于原圖一并輸出顯示以做比較;
根據(jù)以上方法得到以下仿真結(jié)果:
雙線性插值算法原圖1280X720縮小到800x600如下:
在這里插入圖片描述
鄰域插值算法原圖1280X720縮小到800x600如下:
在這里插入圖片描述
雙線性插值算法原圖1280X720放大到1920x1080如下:
在這里插入圖片描述
鄰域插值算法原圖1280X720放大到1920x1080如下:
在這里插入圖片描述

5、工程代碼9詳解:掌握?qǐng)D像縮放模塊用法

開發(fā)板FPGA型號(hào):Xilinx–Zynq7020–xc7z020clg400-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭或動(dòng)態(tài)彩條,分辨率1280x720;
輸出:HDMI,1080P分辨率下的720P有效區(qū)域顯示;
輸入輸出縮放方案:輸入1280x720–>輸出1280x720;
工程作用:掌握?qǐng)D像縮放模塊的用法,為后面的縮小和放大等操作打好基礎(chǔ);
工程Block Design請(qǐng)參考第3章節(jié)“設(shè)計(jì)思路框架”的“圖像緩存”小節(jié)內(nèi)容;
工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“設(shè)計(jì)思路框架”的“PL端邏輯工程源碼架構(gòu)”和“PS端SDK軟件工程源碼架構(gòu)”小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:該工程使用的是純verilog fifo方案;
在這里插入圖片描述

6、工程代碼10詳解:掌握?qǐng)D像縮小操作

開發(fā)板FPGA型號(hào):Xilinx–Zynq7020–xc7z020clg400-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭或動(dòng)態(tài)彩條,分辨率1280x720;
輸出:HDMI,1080P分辨率下的800x600有效區(qū)域顯示;
輸入輸出縮放方案:輸入1280x720–>輸出800x600;
工程作用:掌握?qǐng)D像縮放模塊縮小操作的用法,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design請(qǐng)參考第3章節(jié)“設(shè)計(jì)思路框架”的“圖像緩存”小節(jié)內(nèi)容;
工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“設(shè)計(jì)思路框架”的“PL端邏輯工程源碼架構(gòu)”和“PS端SDK軟件工程源碼架構(gòu)”小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:該工程使用的是純verilog fifo方案;
在這里插入圖片描述

7、工程代碼11詳解:掌握?qǐng)D像放大操作

開發(fā)板FPGA型號(hào):Xilinx–Zynq7020–xc7z020clg400-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭或動(dòng)態(tài)彩條,分辨率1280x720;
輸出:HDMI,1080P分辨率下的1920x1080有效區(qū)域顯示;
輸入輸出縮放方案:輸入1280x720–>輸出1920x1080;
工程作用:掌握?qǐng)D像縮放模塊放大操作的用法,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design請(qǐng)參考第3章節(jié)“設(shè)計(jì)思路框架”的“圖像緩存”小節(jié)內(nèi)容;
工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“設(shè)計(jì)思路框架”的“PL端邏輯工程源碼架構(gòu)”和“PS端SDK軟件工程源碼架構(gòu)”小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:該工程使用的是Xilinx fifo ip方案;
在這里插入圖片描述

8、工程移植說(shuō)明

vivado版本不一致處理

1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點(diǎn)擊文件–>另存為;但此方法并不保險(xiǎn),最保險(xiǎn)的方法是將你的vivado版本升級(jí)到本工程vivado的版本或者更高版本;
在這里插入圖片描述
3:如果你的vivado版本高于本工程vivado版本,解決如下:
在這里插入圖片描述
打開工程后會(huì)發(fā)現(xiàn)IP都被鎖住了,如下:
在這里插入圖片描述
此時(shí)需要升級(jí)IP,操作如下:
在這里插入圖片描述
在這里插入圖片描述

FPGA型號(hào)不一致處理

如果你的FPGA型號(hào)與我的不一致,則需要更改FPGA型號(hào),操作如下:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
更改FPGA型號(hào)后還需要升級(jí)IP,升級(jí)IP的方法前面已經(jīng)講述了;

其他注意事項(xiàng)

1:由于每個(gè)板子的DDR不一定完全一樣,所以MIG IP需要根據(jù)你自己的原理圖進(jìn)行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據(jù)你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;

9、上板調(diào)試驗(yàn)證并演示

準(zhǔn)備工作

需要如下器材設(shè)備:
1、FPGA開發(fā)板;
2、OV5640攝像頭或HDMI輸入設(shè)備,比如筆記本電腦,兩者都沒(méi)有則使用動(dòng)態(tài)彩條;
2、HDMI連接線和顯示器;

工程9輸出演示

工程9輸出演示,我將動(dòng)態(tài)彩條原圖1280x720和ov5640攝像頭原圖1280x720輸出的視頻剪輯整理后如下:
視頻前半段為動(dòng)態(tài)彩條原圖1280x720輸出;
視頻前后段為ov5640攝像頭原圖1280x720輸出;

R-720P-720P-2024

工程10輸出演示

工程10輸出演示,我將動(dòng)態(tài)彩條原圖1280x720縮小到800x600和ov5640攝像頭原圖1280x720縮小到800x600輸出的視頻剪輯整理后如下:
視頻前半段為動(dòng)態(tài)彩條原圖1280x720縮小到800x600輸出;
視頻前后段為ov5640攝像頭原圖1280x720縮小到800x600輸出;

R-720P-600P-2024

工程11輸出演示

工程11輸出演示,我將動(dòng)態(tài)彩條原圖1280x720放大到1920x1080和ov5640攝像頭原圖1280x720放大到1920x1080輸出的視頻剪輯整理后如下:
視頻前半段為動(dòng)態(tài)彩條原圖1280x720放大到1920x1080輸出;
視頻前后段為ov5640攝像頭原圖1280x720放大到1920x1080輸出;

R-720P-1080P-2024

10、福利:工程源碼獲取

福利:工程代碼的獲取
代碼太大,無(wú)法郵箱發(fā)送,以某度網(wǎng)盤鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤資料如下:
在這里插入圖片描述

http://www.risenshineclean.com/news/45628.html

相關(guān)文章:

  • perl網(wǎng)站開發(fā)西安網(wǎng)站搭建
  • wordpress訪客明細(xì)win7優(yōu)化大師官方網(wǎng)站
  • 人才招聘網(wǎng)站模板網(wǎng)站推廣的營(yíng)銷策劃方案
  • 網(wǎng)站建設(shè)的項(xiàng)目描述品牌推廣思路
  • 做標(biāo)簽網(wǎng)站杭州百度優(yōu)化
  • 城鄉(xiāng)住建局官網(wǎng)北京seo優(yōu)化廠家
  • 可以做熱圖的工具網(wǎng)站百度網(wǎng)盤搜索
  • 百度上做網(wǎng)站需要錢嗎百色seo關(guān)鍵詞優(yōu)化公司
  • 做秒殺網(wǎng)站南昌seo教程
  • b2b網(wǎng)站介紹友情鏈接是什么意思
  • 廈門網(wǎng)站建設(shè)合同網(wǎng)店推廣方法
  • 網(wǎng)站設(shè)計(jì)公司石家莊google關(guān)鍵詞分析工具
  • 安丘做網(wǎng)站的公司百度廣告推廣平臺(tái)
  • 電商建站價(jià)格常熟seo網(wǎng)站優(yōu)化軟件
  • 網(wǎng)站建設(shè)與管理方案書搜索引擎優(yōu)化論文
  • 動(dòng)態(tài)網(wǎng)站開發(fā)大賽即刻搜索引擎入口
  • 網(wǎng)站快照歷史廣州網(wǎng)站建設(shè)
  • html制作電影網(wǎng)站百度開戶流程
  • 做品牌文化的網(wǎng)站少女長(zhǎng)尾關(guān)鍵詞挖掘
  • 看一個(gè)網(wǎng)站是用什么語(yǔ)言做的麗水網(wǎng)站seo
  • 安陽(yáng)哪里做網(wǎng)站愛站關(guān)鍵詞搜索
  • 怎么找網(wǎng)站的根目錄自己怎么做網(wǎng)站
  • 更改網(wǎng)站的布局欒城seo整站排名
  • 怎么給幼兒園做網(wǎng)站seo專業(yè)培訓(xùn)機(jī)構(gòu)
  • 用css做網(wǎng)站菜單廣告多的網(wǎng)站
  • 版權(quán)申請(qǐng)網(wǎng)站磁力天堂
  • 網(wǎng)站開發(fā)現(xiàn)在主要用什么語(yǔ)言女教師遭網(wǎng)課入侵直播錄屏曝
  • 寧晉網(wǎng)站建設(shè)模板建站公司
  • 網(wǎng)站建設(shè)分金手指排名五鄭州網(wǎng)站制作選擇樂(lè)云seo
  • 網(wǎng)站建設(shè)源代碼網(wǎng)絡(luò)營(yíng)銷的四個(gè)特點(diǎn)