今天給大俠帶來基于FPGA的實(shí)時(shí)圖像邊緣檢測(cè)系統(tǒng)設(shè)計(jì),由于篇幅較長(zhǎng),分三篇。今天帶來第二篇,中篇,話不多說,上貨。
導(dǎo)讀
隨著科學(xué)技術(shù)的高速發(fā)展,F(xiàn)PGA在系統(tǒng)結(jié)構(gòu)上為數(shù)字圖像處理帶來了新的契機(jī)。圖像中的信息并行存在,因此可以并行對(duì)其施以相同的操作,使得圖像處理的速度大大提高,這正好適合映射到FPGA架構(gòu)中用硬件算法得以實(shí)現(xiàn)。
本篇闡述了基于FPGA設(shè)計(jì)一個(gè)能夠?qū)崟r(shí)采集、實(shí)時(shí)處理并實(shí)時(shí)顯示的數(shù)字圖像處理系統(tǒng)的設(shè)計(jì)思想和流程,分析了攝像頭接口的時(shí)序;闡述了圖像信息的捕獲原理;詳細(xì)介紹了圖像邊緣檢測(cè)部分各模塊的功能;重點(diǎn)介紹了具有去噪功能的中值濾波模塊的設(shè)計(jì);簡(jiǎn)單描述了邊緣檢測(cè)算子的選用;系統(tǒng)的介紹了SDRAM的工作原理以及控制方式;介紹了VGA時(shí)序;最后針對(duì)整個(gè)系統(tǒng)做了驗(yàn)證和總結(jié),包括仿真波形的驗(yàn)證以及板級(jí)驗(yàn)證。
該系統(tǒng)基于實(shí)體FPGA開發(fā)板實(shí)現(xiàn)了圖像數(shù)據(jù)的實(shí)時(shí)采集、實(shí)時(shí)邊緣檢測(cè)和實(shí)時(shí)顯示,運(yùn)行穩(wěn)定,實(shí)時(shí)性能較高,從而也表明FPGA確實(shí)具有海量數(shù)據(jù)高速傳輸?shù)哪芰Α?/p>
本篇為本人當(dāng)年的畢業(yè)設(shè)計(jì)部分整理,各位大俠可依據(jù)自己的需要進(jìn)行閱讀,參考學(xué)習(xí)。
第二篇內(nèi)容摘要:本篇會(huì)介紹FPGA實(shí)現(xiàn)圖像的邊緣檢測(cè),包括圖像數(shù)據(jù)預(yù)處理(彩色圖像數(shù)據(jù)轉(zhuǎn)灰度圖像,中值濾波)、邊緣檢測(cè)。
還會(huì)介紹FPGA驅(qū)動(dòng)VGA接口實(shí)現(xiàn)圖像邊緣信息的實(shí)時(shí)顯示,包括圖像數(shù)據(jù)的緩存(SDRAM的工作原理,SDRAM的上電刷新,SDRAM讀寫數(shù)據(jù),圖像數(shù)據(jù)緩存的FPGA實(shí)現(xiàn)) 、圖像數(shù)據(jù)的實(shí)時(shí)顯示(VGA時(shí)序分析,VGA接口的FPGA驅(qū)動(dòng))等相關(guān)內(nèi)容。
三、FPGA實(shí)現(xiàn)圖像的邊緣檢測(cè)
3.1 圖像數(shù)據(jù)預(yù)處理
為了實(shí)現(xiàn)圖像的邊緣檢測(cè),需要對(duì)捕獲到的圖像數(shù)據(jù)進(jìn)行預(yù)處理操作:后續(xù)算法適用于灰度圖像,因此首先需要將捕獲到的彩色圖像轉(zhuǎn)換為保留有亮度信息的灰度圖像;實(shí)時(shí)采集到的圖像數(shù)據(jù)往往都會(huì)伴隨著噪聲,為了使圖像處理的結(jié)果更加準(zhǔn)確,我還采用了中值濾波算法對(duì)得到的灰度圖像進(jìn)行有效去噪。
3.1.1 彩色圖像數(shù)據(jù)轉(zhuǎn)灰度圖像
本系統(tǒng)所采用的算法全部適用于8位灰度圖像,因此在邊緣檢測(cè)和中值濾波之前需要將彩色圖像轉(zhuǎn)換成適于研究的8位灰度圖像,將圖像中的每個(gè)像素用下列公式(3-1)計(jì)算其灰度值,公式如下:
(3-1)
式中r、g、b分別為該像素對(duì)應(yīng)的R、G、B顏色分量,然后用求得的灰度值代替原來該像素的R、G、B分量就行了。如圖3-1所示,我在本系統(tǒng)設(shè)計(jì)中按照上述思路實(shí)現(xiàn)了從彩色圖像往灰度文件的轉(zhuǎn)換。
圖3-1 彩色圖像轉(zhuǎn)灰度文件對(duì)應(yīng)的RTL級(jí)視圖
3.1.2 中值濾波
在圖像處理中,為了保護(hù)邊緣信息和平滑噪聲,中值濾波被廣泛應(yīng)用。本系統(tǒng)設(shè)計(jì)的目的是對(duì)實(shí)時(shí)采集到的圖像進(jìn)行邊緣檢測(cè),因此邊緣信息檢測(cè)的準(zhǔn)確度在很大程度上決定了整個(gè)系統(tǒng)設(shè)計(jì)的性能,為了提高我所設(shè)計(jì)系統(tǒng)的性能,我采用了中值濾波。中值濾波是一種非線性信號(hào)處理技術(shù),基于排序統(tǒng)計(jì)理論,可以有效抑制噪聲,其基本原理是將數(shù)字圖像或者數(shù)字序列中一點(diǎn)的值用該點(diǎn)所在鄰域中各點(diǎn)值的中值代替,讓周圍的像素值盡可能的接近其真實(shí)值,從而能夠有效地消除孤立的噪聲點(diǎn)。分兩步實(shí)現(xiàn):1.采樣取出奇數(shù)個(gè)數(shù)據(jù)進(jìn)行排序;2.用排序后的中值代替所要處理的數(shù)據(jù)。
本設(shè)計(jì)選擇3*3的窗口模板,調(diào)用FIFO來對(duì)圖像數(shù)據(jù)進(jìn)行緩存,然后并行輸出3行數(shù)據(jù),在進(jìn)行數(shù)值比較之后順序輸出中值結(jié)果,有效提高了系統(tǒng)的處理速度。
圖3-2 中值濾波模塊框圖
如圖3-2所示為該系統(tǒng)中值濾波模塊的框圖,調(diào)用四個(gè)子模塊:shift_temp模塊、compara_fifo模塊、zhongzhilvbo模塊和midnum_mem模塊。其中,shift_temp模塊、compara_fifo模塊和midnum_mem模塊均為調(diào)用的IP核,其模塊架構(gòu)如圖3-2所示。
圖3-3 中值濾波模塊架構(gòu)圖
shift_temp模塊調(diào)用的IP核是一個(gè)移位寄存器,在寫請(qǐng)求信號(hào)wrreq的控制下,將輸入的8bit圖像灰度信息移位寄存到24bit寄存器中并實(shí)時(shí)傳送,接著在compara_fifo模塊和midnum_mem模塊中分別調(diào)用了一個(gè)FIFO,所謂FIFO就是先入先出存儲(chǔ)器,這里用作數(shù)據(jù)緩存,有效地保證了中值濾波過程中所處理信息的流暢性和可靠性。中值濾波模塊的核心運(yùn)算在zhongzhilvbo模塊中得以實(shí)現(xiàn),該模塊框圖如圖3-4所示。
圖3-4 zhongzhilvbo模塊框圖
中值濾波及其子模塊代碼及說明見附錄,編寫測(cè)試文件仿真運(yùn)行即可得到如圖3-2所示的仿真波形。
圖3-5 中值濾波模塊的仿真波形
3.2 邊緣檢測(cè)
一幅圖像中灰度變化比較劇烈的區(qū)域一般就是圖像邊緣,圖像的邊緣信息可以通過計(jì)算灰度圖像中各區(qū)域的梯度幅值來判斷。令圖像的亮度為f(x,y),則其灰度可以用以下公式來定義:
(3-1)
幅值為:
(3-2)
方向?yàn)椋?/p>
(3-3)
比較常用的邊緣檢測(cè)算子有Prewitt 邊緣檢測(cè)算子、Roberts 邊緣檢測(cè)算子、Laplacian 邊緣檢測(cè)算子、Sobel 邊緣檢測(cè)算子等。經(jīng)典Sobel邊緣檢測(cè)算法便是基于梯度的檢測(cè),利用垂直梯度和水平梯度2個(gè)方向模板和圖像進(jìn)行鄰域卷積完成。其中,垂直梯度方向模板和水平梯度方向模板分別用于檢測(cè)水平邊緣和垂直檢測(cè)。其利用Sobel算子在3*3的圖像鄰域內(nèi)和亮度數(shù)據(jù)作卷積運(yùn)算,表達(dá)式如下:
(3-4)
(3-5)
我選用如圖3-6所示的數(shù)據(jù)源,并分別采用上述幾種算子實(shí)施檢測(cè),其算子和檢測(cè)得到的結(jié)果分別如圖3-7、圖3-8、圖3-9和圖3-10所示。對(duì)比上述四幅檢測(cè)結(jié)果圖,我最終選用Sobel算子作為我的邊緣檢測(cè)算法。
圖3-6 邊緣檢測(cè)數(shù)據(jù)
圖3-7 Prewitt算子及邊緣檢測(cè)結(jié)果圖
圖3-8 Roberts算子及其邊緣檢測(cè)結(jié)果
圖3-9 Laplacian算子及其邊緣檢測(cè)結(jié)果
圖3-10 Sobel算子及其邊緣檢測(cè)結(jié)果
四、FPGA驅(qū)動(dòng)VGA接口實(shí)現(xiàn)圖像邊緣的實(shí)時(shí)顯示
4.1 圖像數(shù)據(jù)的緩存
實(shí)現(xiàn)了圖像數(shù)據(jù)的邊緣檢測(cè),接著就需要將其實(shí)時(shí)顯示,該系統(tǒng)設(shè)計(jì)最終基于VGA實(shí)現(xiàn)這一功能。這一功能說起來簡(jiǎn)單,實(shí)現(xiàn)起來卻并不容易,由于Ov7725輸出數(shù)據(jù)的時(shí)鐘和VGA輸入的時(shí)鐘不同,導(dǎo)致無法將檢測(cè)到的數(shù)據(jù)直接對(duì)接到VGA接口并輸出。其解決方案是在VGA實(shí)時(shí)顯示之前將檢測(cè)到的圖像數(shù)據(jù)先緩存起來,這里選用SDRAM作為圖像數(shù)據(jù)的緩存器,從而解決了這一難題。
SDRAM(Synchronous Dynamic Random Access Memory)即同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器。同步是指其時(shí)鐘頻率與CPU前端總線的時(shí)鐘頻率相同;動(dòng)態(tài)是指SDRAM位電容陣列,需要定期不斷的充放電來保證數(shù)據(jù)不丟失;隨機(jī)是指不是線性一次存儲(chǔ)數(shù)據(jù),而是可以進(jìn)行隨機(jī)地址的讀寫操作。該系統(tǒng)設(shè)計(jì)選用了海力士公司生產(chǎn)的HY57V641620ETP-7,其存儲(chǔ)大小約為4Banks x 1Mbits x 16 = 64Mbits,最高頻率可達(dá)143Mhz,在實(shí)際設(shè)計(jì)中選定SDRAM的驅(qū)動(dòng)頻率為100Mhz。
4.1.1 SDRAM的工作原理
SDRAM存儲(chǔ)器框圖如圖4-1所示,其主要功能是實(shí)現(xiàn)數(shù)據(jù)的高速讀寫操作,內(nèi)部模塊包括邏輯控制單元、地址寄存器和數(shù)據(jù)寄存器。在眾多的SDRAM控制器中,廠家往往會(huì)指定相關(guān)操作對(duì)應(yīng)的命令,因此在SDRAM內(nèi)部還有一個(gè)命令解碼器。SDRAM的上電刷新、讀數(shù)據(jù)和寫數(shù)據(jù)、預(yù)充電、刷新等操作實(shí)際上就是對(duì)每一個(gè)命令的操作,SDRAM的基本操作命令如圖4-2所示。
圖4-1 SDRAM存儲(chǔ)器框圖
圖4-2 SDRAM控制命令表
4.1.2 SDRAM的上電刷新
1)SDRAM初始化流程
在正式使用SDRAM之前,有一個(gè)非常關(guān)鍵的步驟——SDRAM的初始化,其主要功能是穩(wěn)定電路和完成SDRAM的配置,從而保證SDRAM能夠按照我們預(yù)期的工作模式來工作。SDRAM初始化的流程,如圖4-3所示。
圖4-3 SDRAM初始化流程圖
SDRAM初始化必須按照流程嚴(yán)格執(zhí)行,否則就會(huì)導(dǎo)致SDRAM在讀、寫數(shù)據(jù)出現(xiàn)問題。例如初始化流程中100us的等待時(shí)間必須給足,不然就會(huì)導(dǎo)致整個(gè)上電刷新模塊出現(xiàn)問題。SDRAM的Logicla Bank是電容結(jié)構(gòu),電容容易掉電使數(shù)據(jù)丟失,所以應(yīng)該定時(shí)給SDRAM充電,手冊(cè)中表示至少每64ms要對(duì)所有BANK進(jìn)行一次刷新,確保數(shù)據(jù)正確。該系統(tǒng)設(shè)計(jì)所用SDRAM的刷新周期是 64ms/4096 = 15.625us。模式寄存器配置完成之后,輸出一個(gè)標(biāo)志信號(hào)作為外部模塊讀寫SDRAM的握手信號(hào),從而保證圖像數(shù)據(jù)的正確讀寫。
2)模式寄存器設(shè)置
在進(jìn)行SDRAM初始化的時(shí)候,必須對(duì)模式寄存器(Mode Register,MR)進(jìn)行配置,模式寄存器的主要功能是配置SDRAM的讀/寫數(shù)據(jù)的突發(fā)長(zhǎng)度(Burst Length)、突發(fā)類型(Burst Type)、潛伏期(CAS Latency)、寫突發(fā)模式(Write Mode)等設(shè)置。如果模式寄存器沒有設(shè)置好,那么SDRAM 就不會(huì)按照預(yù)先的模式工作;上電初期對(duì)模式寄存器所進(jìn)行的設(shè)置,其信息將會(huì)持續(xù)保持直到下一次編程或者掉電為止,模式寄存器的地址總線及其意義如圖4-4所示。
圖4-4 SDRAM模式寄存器設(shè)置命令表
現(xiàn)對(duì)如圖4-4所示表格中的相關(guān)信息做一下說明:
⑴A2A1A0所控制的是突發(fā)長(zhǎng)度,SDRAM進(jìn)行數(shù)據(jù)讀寫時(shí)以此為單位,突發(fā)長(zhǎng)度有1、2、4、8、全頁突發(fā)(full page)。全頁突發(fā)是指每一個(gè)bank里面的一行中所有的數(shù)據(jù),其大小取決于SDRAM的列數(shù),本系統(tǒng)設(shè)計(jì)所選用的是64Mbits的SDRAM,其列數(shù)只有256個(gè)存儲(chǔ)單位,這就意味著我們一頁最多可讀寫256個(gè)數(shù)據(jù)。
⑵A3控制的是突發(fā)類型,分為連續(xù)發(fā)送和交替發(fā)送兩種,面對(duì)大數(shù)據(jù)的傳輸時(shí)我們一般選擇連續(xù)發(fā)送,這樣能夠保證相對(duì)較高的速度,本系統(tǒng)設(shè)計(jì)選擇連續(xù)發(fā)送數(shù)據(jù)。
⑶A6A5A4控制的是讀寫數(shù)據(jù)的潛伏期,潛伏期有1、2、3拍三種;潛伏期越大,系統(tǒng)的運(yùn)行速度就越高,本系統(tǒng)設(shè)計(jì)選擇3拍潛伏期。
⑷其余地址可以忽略。
4.1.3 SDRAM讀寫數(shù)據(jù)
SDRAM讀寫數(shù)據(jù)的方式有多種,可以根據(jù)需求讀取指定地址中的數(shù)據(jù),也可以連續(xù)讀寫最多256個(gè)數(shù)據(jù)。本系統(tǒng)設(shè)計(jì)中,所要緩存的圖像數(shù)據(jù)量比較大,因此選用突發(fā)讀寫整頁數(shù)據(jù)的方式來實(shí)現(xiàn),從而有效提高數(shù)據(jù)傳輸的帶寬。
圖4-5 SDRAM讀數(shù)據(jù)時(shí)序
如圖4-5所示為SDRAM讀數(shù)據(jù)的時(shí)序圖:在上電刷新時(shí),需要在模式寄存器內(nèi)設(shè)置好突發(fā)長(zhǎng)度和潛伏期,上圖中的潛伏期CL = 2,突發(fā)長(zhǎng)度是4;分析上圖不難發(fā)現(xiàn),自發(fā)出第一次讀命令后,讀數(shù)據(jù)操作便會(huì)自動(dòng)運(yùn)行。
如果不想突發(fā)中斷數(shù)據(jù)的讀取,實(shí)現(xiàn)數(shù)據(jù)的連續(xù)讀取,只需控制好兩次發(fā)送讀命令的間隔周期即可。在本系統(tǒng)設(shè)計(jì)中,需要處理的是邊緣檢測(cè)以后的視頻流數(shù)據(jù),因此設(shè)置為連續(xù)的突發(fā)讀寫模式,同時(shí)選擇全頁讀寫的方式進(jìn)行數(shù)據(jù)的操作,從而達(dá)到更大的帶寬、更高的效率,以實(shí)現(xiàn)更快的速度。這樣做的前提是在每次SDRAM讀數(shù)據(jù)或者寫數(shù)據(jù)時(shí),都必須要為其準(zhǔn)備好至少256個(gè)數(shù)據(jù)緩沖器,以保證數(shù)據(jù)可以連續(xù)的讀寫,因此需要調(diào)用FIFO作為SDRAM的緩沖器。
4.1.4 圖像數(shù)據(jù)緩存的FPGA實(shí)現(xiàn)
基于是上述分析,我們就可以基于FPGA編寫SDRAM的控制器代碼,同時(shí)必須要調(diào)用兩個(gè)FIFO分別用作SDRAM的讀數(shù)據(jù)和寫數(shù)據(jù)緩沖器,如圖4-6即為工程編譯成功以后圖像數(shù)據(jù)緩存模塊所對(duì)應(yīng)的RTL級(jí)視圖。
圖4-6 圖像數(shù)據(jù)緩存模塊所對(duì)應(yīng)的RTL級(jí)視圖
4.2 圖像數(shù)據(jù)的實(shí)時(shí)顯示
VGA(Video Graphics Array,視頻圖形陣列)是一種電腦顯示標(biāo)準(zhǔn),對(duì)于現(xiàn)如今的個(gè)人電腦市場(chǎng)來說,這個(gè)標(biāo)準(zhǔn)已十分過時(shí)。然而,VGA卻是眾多顯示設(shè)備制造商所共同支持的一個(gè)低標(biāo)準(zhǔn),因此具有一定的通用性。因此,本系統(tǒng)設(shè)計(jì)就選擇VGA作為圖像緩存數(shù)據(jù)到顯示器的橋梁,將邊緣檢測(cè)后的視頻圖像數(shù)據(jù)實(shí)時(shí)顯示到相關(guān)的顯示設(shè)備上。如圖4-7所示,VGA接口與串口的硬件結(jié)構(gòu)相類似,分為公頭與母頭(PC接口為母頭)。
圖4-7 VGA接口示意圖
VGA接口使用15針的D型接口,擁有15根信號(hào)線,分成三組,每組5根信號(hào)線。接口編號(hào)順序?yàn)椋汗^從左到右,依次遞增;母頭從右到左,一次遞減,兩者相互對(duì)應(yīng),各引腳功能描述見表4-1。
表4-1 VGA接口各引腳功能描述
4.2.1 VGA時(shí)序分析
廣義的VGA為VGA顯示器,狹義的VGA為VGA分辨率的時(shí)序。由IBM推出的采用RGB模擬信號(hào)的VGA視頻標(biāo)準(zhǔn),定義了具有60Hz刷新頻率、可產(chǎn)生16萬種色彩的640*480像素格式。VGA顯示器掃描方式分為逐行掃描和隔行掃描:逐行掃描是從屏幕左上角第一個(gè)點(diǎn)開始,從左向右逐點(diǎn)掃描,每掃描完一行,電子束回到屏幕的左邊下一行的起始位置,在這期間,CRT 對(duì)電子束進(jìn)行消隱,每行結(jié)束時(shí),用行同步信號(hào)進(jìn)行同步;當(dāng)掃描完所有的行,形成一幀,用場(chǎng)同步信號(hào)進(jìn)行場(chǎng)同步,并使掃描回到屏幕左上方,同時(shí)進(jìn)行場(chǎng)消隱,開始下一幀。隔行掃描是指電子束掃描時(shí)每隔一行掃一線,掃完一屏后再返回來掃描剩下的線,隔行掃描的顯示器閃爍快速,可能會(huì)使使用者眼睛疲勞(本實(shí)驗(yàn)采用逐行掃描的方式)。掃描原理清楚以后,緊接著再來看看VGA的行、列同步時(shí)序。
1)VGA行列時(shí)序
VGA列同步時(shí)序如圖4-8所示:
圖4-8 VGA列同步時(shí)序圖
VGA行同步時(shí)序如圖4-9所示:
圖4-9 VGA行同步時(shí)序圖
VGA 中定義行時(shí)序和列時(shí)序都需要同步脈沖(a 段)、顯示后沿(b 段)、顯示時(shí)序段(c 段)和顯示前沿(d 段)四部分。VGA 工業(yè)標(biāo)準(zhǔn)顯示模式要求:行同步、列同步都為負(fù)極性,即同步脈沖要求是負(fù)脈沖。
由 VGA 行時(shí)序可知:每一行都有一個(gè)負(fù)極性行同步脈沖(a 段),是數(shù)據(jù)行的結(jié)束標(biāo)志,同時(shí)也是下一行的開始標(biāo)志。在同步脈沖之后為顯示后沿(b段),在顯示時(shí)序段(c 段)為顯示器亮的過程,RGB 數(shù)據(jù)驅(qū)動(dòng)一行上的每一個(gè)像素點(diǎn),從而顯示一行。在一行的最后為顯示前沿(d 段)。在顯示時(shí)間段之外沒有圖像投射到屏幕,而是插入消隱信號(hào)。同步脈沖、顯示后沿和顯示前沿都是在行消隱間隔內(nèi),當(dāng)消隱有效時(shí),RGB 信號(hào)無效,屏幕不顯示數(shù)據(jù)。
2)VGA顯示標(biāo)準(zhǔn)
“分辨率”是衡量物體精確程度的一個(gè)參數(shù),對(duì)于顯示器而言,分辨率越高,意味著顯示圖像的清晰度越高,包含跟過的信息,具有更多細(xì)節(jié)的畫質(zhì),圖像更加保真細(xì)致。由于人眼的視覺暫留特性,想要實(shí)現(xiàn)CRT顯示器畫面不閃爍,至少需要實(shí)現(xiàn)每秒至少25幀的畫面更新。而顯示器為了保證畫面流暢,視覺效果更佳,通常一般的掃描幀速在每秒60幀以上。不同像素的行/列掃描刷新時(shí)序見表4-2。
表4-2 VGA標(biāo)準(zhǔn)顯示表
以本設(shè)計(jì)的顯示標(biāo)準(zhǔn) 640*480*60Hz 為例。(640 為列數(shù),480 為行數(shù),60Hz為刷新一屏的頻率),時(shí)鐘頻率大約是 25.175Mhz。列時(shí)序:屏幕對(duì)應(yīng)的行數(shù)為800(a+b+c+d=e 段),其中 640(c 段)為顯示行;每行均有行同步信號(hào)(a 段),為96個(gè)行周期的低電平。行時(shí)序:每個(gè)顯示行包括525列(a+b+c+d=e段),其中480(c段)為有效顯示區(qū),每列均有列同步信號(hào)(a段),為2個(gè)列周期的低電平。
3)VGA驅(qū)動(dòng)電路設(shè)計(jì)
由于FPGA輸出的是3.3V電平,而VGA要求0~0.714V的模擬信號(hào),為了設(shè)計(jì)VGA的標(biāo)準(zhǔn)接口,完成電平的轉(zhuǎn)換,需要設(shè)計(jì)DAC數(shù)模轉(zhuǎn)換電路,來實(shí)現(xiàn)0~0.714V模擬視頻信號(hào)的傳輸,針對(duì)RGB的分辨率高低,可以采用不同的數(shù)模實(shí)現(xiàn)方案,在VGA驅(qū)動(dòng)電路設(shè)計(jì)中,我們最需要關(guān)心的幾組信號(hào)見表4-3。
表4-3 VGA驅(qū)動(dòng)電路信號(hào)表
HSYNC與VSYNC為3.3V數(shù)字信號(hào),再設(shè)計(jì)中無須考慮電平轉(zhuǎn)換,可以直接接與FPGA互聯(lián)。而RGB為0~0.714V模擬信號(hào),這是需要我們轉(zhuǎn)換處理的部分,本設(shè)計(jì)采用專用的視頻轉(zhuǎn)換DAC芯片,其穩(wěn)定的ASIC保證了視頻傳輸?shù)馁|(zhì)量,具有很好的性價(jià)比。采用Analog Devices的視頻轉(zhuǎn)換芯片ADV7123,其參數(shù)如下:
⑴最大采樣率是330Mhz;
⑵3路10位視頻DAC轉(zhuǎn)換器;
⑶兼容TTL電平輸入;
⑷5V/3.3V單電源工作;
⑸輸出電流達(dá)到2~26mA;
⑹低功耗。
ADV7123具體的硬件電路圖如圖4-10所示。
圖4-10 ADV7123電路結(jié)構(gòu)圖
4.2.2 VGA接口的FPGA驅(qū)動(dòng)
分析了VGA接口的時(shí)序,我們就可以按照時(shí)序基于FPGA編寫相應(yīng)的VGA驅(qū)動(dòng)代碼,如圖4-11所示即為系統(tǒng)工程成功編譯以后VGA驅(qū)動(dòng)模塊對(duì)應(yīng)的RTL級(jí)視圖。
圖4-11 VGA驅(qū)動(dòng)模塊對(duì)應(yīng)的RTL級(jí)視圖
本篇到此結(jié)束,下一篇帶來基于FPGA的實(shí)時(shí)圖像邊緣檢測(cè)系統(tǒng)設(shè)計(jì)(下),介紹系統(tǒng)驗(yàn)證、結(jié)論以及各個(gè)模塊主要代碼,包括圖像實(shí)時(shí)采集模塊的主要代碼,圖像實(shí)時(shí)捕獲模塊的主要代碼,中值濾波模塊的主要代碼,邊緣檢測(cè)模塊的主要代碼,圖像緩存模塊的主要代碼,圖像實(shí)時(shí)顯示模塊的主要代碼等相關(guān)內(nèi)容。