版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于FPGA的實時圖像邊緣檢測系統(tǒng)的研究I單芯片系統(tǒng)。系統(tǒng)的整個設(shè)計過程是在QuartusⅡ以及DE1等軟硬件環(huán)境下完成的,內(nèi)容主要包括系統(tǒng)結(jié)構(gòu)的分析以及各模塊的設(shè)計述了乒乓操作在本系統(tǒng)中的實現(xiàn)方式,通過VHDL實現(xiàn)了攝像頭驅(qū)動、視頻數(shù)據(jù)流的格式打下了堅實的理論與實踐基礎(chǔ)。為了滿足系統(tǒng)對實時性的要求,在系統(tǒng)體系結(jié)構(gòu)中采用了讀寫雙口RAM的處理方式以及處理器中的多級流水線結(jié)構(gòu)可以作為后續(xù)設(shè)計實時圖像處Withtherapiddevelopmentofintegratedcircuittechnology,single-chipimageprocessingmodule,inwhichadetailedanalysisoftheping-pongoperationofthesysteminways,implementbrightness,edgedataprocessingandsoon.processor,thedesignisbasedonthehardwaretoachieve,includingthecalculatioreal-timeimagedataprocessing,includingreadanoperationmodeaswellasthemulti-pipelineprocessorcanbeagKeywords:FPGA;real-timeimageprocessing;multi-pipeline;ping-pongoperationn論文獨創(chuàng)性聲明文中不包含任何未加明確注明的其他個人或集體已經(jīng)公開發(fā)表的成論文知識產(chǎn)權(quán)權(quán)屬聲明圖像邊緣是圖像最基本的特征,其中包含著有價值的目標(biāo)邊界信息,這些信息可以用在對實時圖像處理的過程中,需要各種有效的檢測算法獲取需要的圖像信息,但是傳專用集成電路(ASIC)就是按用戶的具體要求(如功能、性能或技術(shù)等),為用戶的特定一步發(fā)展的產(chǎn)物2。由于擁有ASIC的穩(wěn)定性、大容量、高集成度等優(yōu)點,而且采用硬件描述語言所設(shè)計的電路可以直接綜合成RTL級電路并對目標(biāo)器件進(jìn)行配置實現(xiàn),極大的提高過程3。2FPGA是英文FieldProgrammableGateArray的縮寫,是作為專用集成電路(ASIC)FPGA是由存放在片內(nèi)RAM中的程序來配置其工作狀態(tài)的,因此工作的時候需要通過1.2.2FPGA的優(yōu)點FPGA可以被稱為可定制的特殊ASIC,它除了具有ASIC的特點之外,還具有以下幾個2.FPGA芯片在出廠之前都做過百分之百的測試,不需要設(shè)計人員承擔(dān)投片風(fēng)險和費3.用戶可以反復(fù)的編程、擦除、使用或者在不改動外圍電路的情況下下載不同的數(shù)據(jù)3根據(jù)FPGA基本結(jié)構(gòu)的不同,可以將其劃分為乘稅項技術(shù)的FPGA和基于查找表技術(shù)基于乘積項的FPGA主要由3個模塊組成——邏輯單元陣列(LogicCellArray)、可編基于查找表技術(shù)的FPGA是目前主流的產(chǎn)品。查找表簡稱LUT,其本質(zhì)就是一個RAM。完成FPGA開發(fā)以后,軟件會生成一個最終的配置文件,不同類型的FPGA使用不同打印口上,另一端接在FPGA開發(fā)板的10芯插座上,F(xiàn)PGA有4個管腳與此插頭相連a基于查找表技術(shù)的FPGA常使用SRAM保存程序。由于SRAM工藝特點,掉電后配置4圖像是人類認(rèn)識客觀世界和相互交流的重要媒體,科學(xué)研究表明,人類獲得信息的80%來自于視覺系統(tǒng)。可見,視覺信息的客觀作用是其他信息所不能夠替代的。計算機(jī)視覺處理可以看作是為了實現(xiàn)某一任務(wù)而從包含有大量不相關(guān)的隨機(jī)量中提取不變量,即信息的簡化。這就意味著要過濾掉一些不必要的信息而獲得圖像中的不變信息。而邊緣信息就是一種非常重要的不變信息,比如在不同的光暗條件下物體某區(qū)域的外觀可能會發(fā)生改變,但是物體的邊緣不會改變,更重要的是,人的視覺系統(tǒng)對圖像的邊緣是非常敏感的,對圖像的理解絕大部分來自圖像的邊緣信息。為了使計算機(jī)也能夠像人類一樣理解圖像信息,邊緣檢測便成為此工作基礎(chǔ)和前提。邊緣檢測的主要任務(wù)是對圖像亮度變化的度量、檢測和定位,在圖像處理中有以下幾(1)圖像分割利用計算機(jī)進(jìn)行圖像處理主要有兩方面的目的,其一是產(chǎn)生更適合人類理解的圖像,其二是讓計算機(jī)能夠自動識別和處理圖像。無論為達(dá)到哪一種目的,其中很關(guān)鍵的一部是把原有的圖像分解成更小的基元,這些基元相對于整幅圖更容易被處理或識別。圖像分割的方法和種類有很多,有些分割運算可直接應(yīng)用于任何圖像,而另一些只能適用于特殊類別的圖像。有些算法需要先對圖像進(jìn)行粗分割,對分割的結(jié)果再進(jìn)行細(xì)致的處理。例如,可以對圖像的亮度級設(shè)置門限的方法分割。許多不同種類的圖像或景物都可作為待分割的圖像數(shù)據(jù),而且不同類型的圖像,或是不同的應(yīng)用領(lǐng)域,分割方法都不盡相同,某些分割方法只是適合于某些特殊類型的圖像分割。其分割結(jié)果的好壞需要根據(jù)具體的場合及要求來衡量。圖像分割是從圖像處理到圖像分析的關(guān)鍵步驟,可以說,圖像分割結(jié)果的好壞直接影響對計算機(jī)對圖像的理解5。(2)圖像識別圖像識別可在分割的基礎(chǔ)上選擇需要提取的特征,并對某些參數(shù)進(jìn)行測量,再提取這些特征,最后根據(jù)測量結(jié)果進(jìn)行分類。為了更好地識別圖像,還要對整個圖像作結(jié)構(gòu)上的分析,對圖像進(jìn)行描述,以便對圖像的主要信息得到一個解釋和理解,并通過許多對象相互間的結(jié)構(gòu)關(guān)系對圖像加深理解,以便更好地幫助識別。所以圖像識別是在分割后的每個部分中,找出它的邊緣,形狀及紋理等特征,即特征抽取(有時也包括圖像分割),以便對圖像進(jìn)5對圖像亮度(濃淡)空間分布模式的提取和分析。紋理分析在遙感圖像、X射線照片、當(dāng)今的FPGA工藝線寬己經(jīng)達(dá)到40nm,數(shù)十萬個邏輯宏單元,內(nèi)嵌數(shù)十兆的存儲位。工程師可以通過傳統(tǒng)的原理圖輸入法或是硬件描述語言自由的設(shè)計一個片上系統(tǒng),并通過EDA工具仿真。以Altera公司提供的FPGA的視頻和圖像處理方案為例,它包括經(jīng)過優(yōu)化和全定制的ASIC相比,更可貴的是FPGA的現(xiàn)場可重構(gòu)性。在圖像處理過程中,如果61.4.1論文的主要研究內(nèi)容(1)對攝像頭時序進(jìn)行研究,并設(shè)計相應(yīng)的驅(qū)動模塊;(3)分析片上RAM在不同頻率下的延遲,獲得相應(yīng)的讀寫時序規(guī)則;(7)驗證系統(tǒng)功能,討論其特點及不足。1.4.2論文的章節(jié)安排7長安大學(xué)碩學(xué)位論i第二章邊緣檢測算法及硬件平臺簡介2.1基于梯度的邊緣檢圖像邊緣檢測是圖像的基本特征之一,它蘊含了圖像中豐富的信息,廣泛應(yīng)用于圖像2.1.1問題的描述通常圖像邊緣可以劃分為階躍狀邊緣和屋頂狀邊緣,其中階躍狀邊緣兩邊的亮度值有況。圖2.3描述的是兩種邊緣的二階導(dǎo)數(shù)變化8測算法及00圖2.1階躍狀和屋頂狀邊緣亮度曲線圖2*2階躍狀和屋頂狀邊緣亮度的一階導(dǎo)數(shù)圖23階躍狀和屋頂狀邊緣亮度的二階導(dǎo)數(shù)可見,通過對圖像函數(shù)梯度值的推導(dǎo)即可得到圖像的邊緣信息。這種檢測方法是最為常用也是最為簡單的檢測方法,主要分為兩種類型:一種是以一階導(dǎo)數(shù)為基礎(chǔ)的邊緣檢測算子通過求二階導(dǎo)數(shù)中的過零點來檢測邊緣,檢測處的邊緣寬度較細(xì),有利于邊緣的精確定9長安大學(xué)碩土學(xué)位論文2.1.2基于一階導(dǎo)數(shù)的檢測算子邊緣是圖像中亮度變化較為劇烈的區(qū)域,可以通過檢測亮度圖像中各區(qū)域的梯度幅值大小來判定邊緣信息。設(shè)圖像的亮度為/Oc,:y),則在x方向,y方向以及0方向的一階方向?qū)?shù)為:fy)-;”(2.1)它在位置Oc,>O的梯度定義為/^=\px^\fxy\fy(>yf(2.4)應(yīng)歐式距離)其方向為:為了硬件實現(xiàn)的方便,可采用“城市距離”(以1為模)方式計算梯度幅值:或采用“棋盤距離”(以O(shè)O為模)方式計算幅值:邊緣檢測算子檢查每一個像素的鄰域并對其亮度變化率進(jìn)行量化,通常也包括方向的確定。以上各式中的偏導(dǎo)數(shù)需對每個像素位置進(jìn)行計算,在實際應(yīng)用中通常采用小區(qū)域模板的卷積來實現(xiàn)。對各用一個模板,兩個模板組合起來構(gòu)成一個梯度算子。根據(jù)模板的大小以及模板中元素值的不同,人們提出了許多不同的梯度算子,最常用的有以下幾個:Roberts算子等。這些梯度算子都是基于一階導(dǎo)數(shù)的算子,當(dāng)圖像中亮度過渡比較尖銳且圖像中噪聲比較小的時候,此算子的工作效果比較好。Roberts邊緣檢測算子是一種利用局部差分算子尋找邊緣的算子。對數(shù)字圖像/(工,y),它的Roberts梯度由下式給出:其中和口,可用圖2.4所示的模板計算。模板的計算結(jié)果為:如果G,Oc,>O大于某一閾值,則認(rèn)為該點為邊緣點。此算子的最大優(yōu)點是計算量小,速度快,對實時圖像處理非常有利。但該方法由于是采用偶數(shù)模板,所求的Oc,>O處的梯度幅度值4像素交叉點處的值,從而導(dǎo)致在圖像Oc,>O處所求的梯度幅度值偏移了半個像素。Sobel邊緣檢測算子在以像素為中心的3X3鄰域內(nèi)做亮度加權(quán)運算,根據(jù)該點是否處于極值狀態(tài)進(jìn)行邊緣檢測,其梯度表達(dá)式如下:))fx-l,y-1)-4(x,y-)~f(x+l,y-1)Sobel梯度算子的卷積模板如圖2.5所示:長安人學(xué)碩七學(xué)位論文可見,Sobel邊緣檢測算子是綜合圖像每一個像素點的上下左右亮度加權(quán)和,接近模板中心的權(quán)值較大。由于采用了比Roberts更大的模板,對噪聲有了一定的平滑作用,而且沒有梯度幅值在像素上的偏移。但此模板會檢測出一些偽邊緣,導(dǎo)致檢測的邊緣比較粗,降低111111111111111111111111111111111111111111111111110001220001221010001020110201012100000012133333033303333330333303333 圖2.8Kirsch方向算子的卷積模板這三種邊緣檢測算子不把重點放在相鄰的像素上,對噪聲有一定的平滑作用,但檢測的邊緣也比較粗,定位精度比較低,容易損失例如角點這樣的邊緣信息。由于這三種邊緣檢測算子是通過8個方向模板向量對圖像進(jìn)行卷積,顯然其運算量是相當(dāng)大的,對于硬件的處理速度要求非常高。2.13基于二階導(dǎo)數(shù)的檢測算子為了克服一階導(dǎo)數(shù)邊緣檢測算子的缺點,人們相繼提出了與邊緣方向無關(guān)的二階導(dǎo)數(shù)邊緣檢測算子,如Laplacian算子和LOG算子。利用二階導(dǎo)數(shù)零交叉處為一個像素的特點,保證了邊緣定位的精度。但是由于圖像邊緣的噪聲也是頻域中的高頻分量,二階導(dǎo)數(shù)算子更容易受到噪聲的影響,因而需要在導(dǎo)數(shù)運算之間進(jìn)行適當(dāng)?shù)臑V波。Laplacian算子是一個標(biāo)量而不是向量,具有各向同性的性質(zhì)。如果只關(guān)心邊緣點的位置而不需要了解其周圍的實際灰度時,一般選擇該算子提取圖像邊緣。Laplacian算子即是估算算子的輸出,找出零交叉點的位置。對于一連續(xù)函數(shù)Bx2dy2在數(shù)字圖像中,此算子可近似用差分表示為:其模板表示如圖2.9所示:此算子特點是各向同性、線性和位移不變性,對細(xì)線和孤立點檢測效果好。但是邊緣的方向信息會丟失,常產(chǎn)生雙像素的邊緣,對噪聲有雙倍加強(qiáng)作用。由于算子是二階導(dǎo)數(shù)運算,與只包含一階導(dǎo)數(shù)的算子相比,對噪聲更加敏感,增強(qiáng)了噪聲對圖像的影響,因此通常先要對圖像進(jìn)行濾波平滑處理。LOG算子是在Laplacian算子的基礎(chǔ)上發(fā)展而來的,該算子得益于對人的視覺機(jī)理的研究,有一定的生物學(xué)與生理學(xué)意義。數(shù)學(xué)上已經(jīng)證明,LOG算子是按照二階導(dǎo)數(shù)零交叉點檢測階躍型邊緣的最佳算子。LOG算子為了減少噪聲的影響先對待檢測的圖像進(jìn)行平滑處理,然后采用Laplacian算子檢測圖像邊緣。平滑函數(shù)采用了具有正態(tài)分布的高斯函數(shù)即:平滑后的圖像函數(shù)為:g{x,y)=V2[G(x,y,a)*f(x,y)]=2(Gx,y,a)]*fix,y)(2.18)可見,通過以下兩種方法計算Laplacian值是等價的:1.先求圖像與高斯濾波函數(shù)卷積,再求卷積的Laplacian值;2.先求高斯濾波函數(shù)的Laplacian值,再求與圖像的卷積;常用的LOG算子模板如圖2.10所示:染-章邊緣染-章邊緣0000000000000000高斯函數(shù)的平滑作用會導(dǎo)致圖像中邊緣和其他尖銳不連續(xù)部分變得模糊,丟失一些重要的邊緣信息,而且cr越大,平滑作用也就越強(qiáng),但丟失的邊緣信息就越多。如果采用較又會將它們連接在一起,這樣只能夠檢測出一個邊緣。因此,在抗干擾和檢測能力上存在比2.1.4本設(shè)計采用的檢測算子通過以上的分析可知,雖然二階檢測算子的精度很好,但計算復(fù)雜度較高,不適合作而一階檢測算子中除了Roberts算子之外,每次檢測操作都需要9個或是更多的數(shù)據(jù),Roberts算子的硬件比較容易實現(xiàn),并且可以獲得較小的延遲。本系統(tǒng)的要求是數(shù)據(jù)處理輸出的速度不應(yīng)小于數(shù)據(jù)輸入的速度,否則將會出現(xiàn)數(shù)據(jù)丟失。但是無論是那一種算法,每計算一個邊緣像素都需要4~9個像素的亮度信息,如果在讀取若干個像素之后再進(jìn)行檢測運算,勢必會導(dǎo)致計算過程無法在有限的讀取周期內(nèi)完成,為此必須采用多流水線方式進(jìn)行運算。流水線的數(shù)目應(yīng)該和每次參與運算所需像素個數(shù)相同,即如果采用Roberts算子,要用到4條流水線,其他的算法將用到9條或是更多的流水線??紤]到課題研究的重點并不是檢測算法的設(shè)計,所以本系統(tǒng)將采用Roberts算子作為實時圖像處理的驗證算法。2.2FPGA開發(fā)板本設(shè)計采用了由Altera公司提供的DE1開發(fā)板,如圖2.11所示:此開發(fā)板核心芯片為Cyclone⑧Ⅱ系列的2C20FPGA,其周邊硬件資源如下:*4個按鍵(按下輸出低電平*10個撥動開關(guān)*10個紅色貼片式LED發(fā)光管*8個綠色貼片式LED發(fā)光管*24位音頻編解碼芯片*VGADA轉(zhuǎn)化芯片*RS-232接口芯片以及9針插座*PS/2接口*兩個40針擴(kuò)展插槽染--章邊緣檢測算ii及圓件平臺問介2.3Cyclonell系列芯片簡介Altera公司所生產(chǎn)的Cyclone系列芯片具有低成本、大容量、高性能資源以及嵌入式存列。由于設(shè)計所采用的為Cyclonell系列FPGA,以下將重點對此進(jìn)行介紹。2.3.1基本特性Multipliers)、嵌入式存儲塊(M4KBlaocks)、輸入輸出單元(IOEs)以及數(shù)字鎖相環(huán)(PLL)構(gòu)成。其 圖2.12器件CycloneIIEP2C20邏輯單元是Cyclonell架構(gòu)中的最小單位,其中包括了18x18位的乘法器、專用外部存儲器供高效的邏輯利用率。表2.1列出了Cyclonell器件的特性。LEs數(shù)M4KRAM塊總RAM比特數(shù)嵌入式乘法器鎖相環(huán)數(shù)22最大用戶I/0引腳Cydonell器件提供多個18x18位的乘法器(見圖2.13),法器都可以被配置為一個18x18位或兩個9x9位的乘法器。 aB鎮(zhèn)AAoxr圖2.13CycloneII器件內(nèi)部的嵌入式乘法器U類型也可以。所輸入的數(shù)據(jù)DataA和DataB的數(shù)據(jù)類型通過signa和signb來控制,當(dāng)其為Register可以把乘法器配置為寄存器輸入輸出或直接輸入輸出方式最大位寬為32位的雙口存儲模塊。若干個M4K塊在芯片中排成列形成M4KColumns,這些列分布在一第_.章邊緣檢測算法及哽件平臺間介6每一個M4K塊可以實現(xiàn)不同的存儲器類型,包括truedual-port(實雙口)模式RAM、simpledual-port(簡單雙口)類型RAM、single-port(單口)RAM、ROM以及FIFO緩表2.2不同器件型號中的M4KColumn的數(shù)量以及M4K塊的數(shù)量:M4K塊數(shù)量222335Cyclonell器件具備最多4個增強(qiáng)型鎖相環(huán)(PLL),提供先進(jìn)的時鐘管理能力,其主長安人學(xué)碩t學(xué)位淪文(1)外部時鐘輸出和時鐘反饋每個PLL支持一個差分或一個單端外部輸出時鐘。每個PLL帶有一對外部時鐘輸出管腳。外部時鐘輸出管腳支持多種I/O標(biāo)準(zhǔn),如表2.1所示。外部時鐘輸出可被用作系統(tǒng)時鐘(2)可編程相移(3)鎖定檢測信號鎖定輸出指示當(dāng)前己經(jīng)有一個穩(wěn)定的和參考時鐘同步的時鐘輸出信號。鎖定檢測信號(4)可編程占空比可編程占空比允許PLL產(chǎn)生不同占空比的輸出時鐘??删幊陶伎毡忍匦詫τ陔p倍數(shù)據(jù)速率(DDR)應(yīng)用非常有效,在這里數(shù)據(jù)可以在時鐘的正負(fù)邊沿都進(jìn)行數(shù)據(jù)傳送。可編程占(5)可編程帶寬住參考時鐘,并抵制時鐘中的任何變化。低帶寬的PLL將花費較(6)時鐘擴(kuò)頻擴(kuò)頻技術(shù)被用于降低系統(tǒng)的電磁干擾(EMI)。這種技術(shù)通過在寬頻率范圍內(nèi)分配時鐘在200kHz的調(diào)制頻率上進(jìn)行了2%中心擴(kuò)展的輸入時鐘。2.4THDB-D5M攝像頭2.4.1攝像頭的接口描述圖2.15是本設(shè)計采用的圖像傳感器外觀及其接口,是由Terasic公司生產(chǎn)的500萬像素COMS“THDB-D5M”型攝像頭(簡稱D5M)。DMtNC此攝像頭采用40幀引腳接口,和DEl開發(fā)板的擴(kuò)展槽完全兼容。表2.3為外部引表2*3D5M攝像頭引腳功能描述傳輸方向描述外部輸入時鐘像素同步時鐘r2C總線時鐘,頻率小于400KHZ1C總線數(shù)據(jù)線幀同步信號線,高電平有效行同步信號線,高電平有效像素數(shù)據(jù)輸出f位端,低電平有效拍照模式觸發(fā)信號拍照模式閃光燈輸出信號D5M以逐行掃描的方式把傳感器中的視場像素值通過數(shù)據(jù)線D0-D11輸出,并通過FVAL、LVAL以及PKCLK信號進(jìn)行同步。為了讓D5M以希望的方式進(jìn)行工作,可以通過IC總線對其進(jìn)行配置。配置后的D5M可以工作在連續(xù)攝像模式或拍照模式,本設(shè)計只用到連續(xù)攝像模式,所以表2.3最后兩個接口不會用到。2.4.2攝像頭的像素矩陣結(jié)構(gòu)D5M的像素矩陣大小為2752列X2004行。不同的行列地址對應(yīng)了視場中不同位置的bourdny4原點其中ActiveImage區(qū)域為D5M默認(rèn)的輸出像場,分辨率為2592行X1944列。外圍的ActiveR、B)。如圖2.17所示,在每一行的像素中,只有兩種顏色的數(shù)據(jù)。這種像素分布格式對于顯示效果非常有利但對于計算亮度就必須連續(xù)采樣到兩行之后才能進(jìn)行。原點RBBRBBRB圖2.17彩色像素的輸出格式默認(rèn)配置下,像素矩陣的原點位于傳感器像場的右上角,并且被從右向左逐行讀取輸出。在行與行之間以及幀與幀之間還有若干空白數(shù)據(jù),通過配置可以改變有效像場的分辨率2A3D5M的數(shù)據(jù)輸出時序 lijUTi] 晏T圖2.18D5M的數(shù)據(jù)輸出時序2.S.1LTM液晶屏接口描述為文天其公重為文天其公重DGG21欺R道R表2.4為主要接口功能描述。表2.4LTM液晶屏弓腳功能描述傳輸方向描述主時鐘復(fù)位端,低電平有效行同步信號線,低電平有效幀同步信號線,低電平有效像素數(shù)據(jù)有效使能,高電平有效三基色像素數(shù)據(jù)輸入為正確使用此液晶顯示器,對其工作時序的分析是相當(dāng)重要的,圖2.20以及圖2.21為NCLKt圖2.20行同步時序2.21幀同步時序G0-G7液晶屏的行、幀同步時序圖.K的周期長度。后沿時間和前沿時間分別占用216和40個時鐘脈寬。有效像素數(shù)據(jù)寬度。占用800個時鐘脈寬,行周期共計1056個時鐘脈寬。8位的像素值R、G、B將在DEN有效且NCLK上升沿處寫入LCD并顯示出來。幀同步時序中,VD為同步信號,VD的低電平對應(yīng)一行的開始,電平寬度為1個行周期。后沿時間和前沿時間~^分別占用35和10個行周期。有效行數(shù)據(jù)寬度^為480個行周期,一行共計525個行周期。長安人朵碩丨學(xué)位論文3.1系統(tǒng)工作流程介紹存證圖3.1系統(tǒng)工作流程行儲據(jù)壤沖)3.2系統(tǒng)結(jié)構(gòu)框圖RESET信號轉(zhuǎn)換處理器圖3.2系統(tǒng)結(jié)構(gòu)框圖(6)行RGB存儲器。從FIFO讀入的是RGB格式數(shù)據(jù),并且三種(7)亮度處理器。通過乒乓操作方式讀取行RGB存儲器中的數(shù)據(jù)并把計算的亮度值寫入幀(8)幀亮度存儲器。保存每一幀的亮度值。3.3重要模塊介紹的時序要求。但是作為一種好的系統(tǒng)設(shè)計理念,專門構(gòu)建一個RESET模塊協(xié)調(diào)整個系統(tǒng)之端(RESET_OUT[0..7】),且都是低電uuTT3.3.2攝像頭的IC接口配置D5M攝像頭的工作模式有兩種,連續(xù)工作模式與觸發(fā)工作模式。觸發(fā)工作模式適用于瞬時圖像信息的獲取,本系統(tǒng)中不采用,而默認(rèn)的連續(xù)工作模式中,攝像頭所傳圖像的分辨率以及幀速都不能夠滿足系統(tǒng)的要求,即使?jié)M足,也應(yīng)該能夠通過某種方式來改變?yōu)楹罄m(xù)的調(diào)試提供方便。所以在系統(tǒng)正常工作之前,必須對攝像頭進(jìn)行配置,實現(xiàn)的方式是通過IC串行通信接口對它進(jìn)行寄存器配置。如圖3.4,其中SCLK為時鐘線,SDAT為數(shù)據(jù)線。D5MD5M攝像頭由于配置過程中需要從主機(jī)向從機(jī)(攝像頭)發(fā)送信息,所以用單向箭頭表示信號的傳輸方從攝像頭DATA端口傳出的數(shù)據(jù)中不但包含了RGB像素信息,還有一系列用于調(diào)節(jié)過FIFO緩沖。但直接把11位的像素數(shù)據(jù)寫入緩沖隊列不但會占用大量的存儲位,而其會損BB像素值像素值像素值像索值地址地址BB像素值像素值像素值像索值地址地址地址地址RR像素值像素值像素值像索值地址地址地址地址地技地址地址律素值像景值像景值像素值地址地址地址地址圖3*5地址作為同步信息直接寫入隊列每一幀的分辨率為256x512,所以每個像素的地址需要占用17個同步位,這對于采用EP2C20型的FPGA的片上RAM來實現(xiàn)的FIFO是不現(xiàn)實的。步位置“1”,其他所有同步位置“0”(如圖3.6所示)。當(dāng)把這樣的數(shù)據(jù)流從FIFO讀出重海幀的開始重海幀的開始(同步位)值0R律像值像君見像肅硫像素白像整值像素血像繁優(yōu)像素值像紫像像覺信牌素值值承BBt0000000000圖3.6幀開始寫入同步信息此方法要求同少位必須精確的寫第三草贛弁始,更重要的是同步位的周期必須嚴(yán)格等亮度處理器完成把從FIFO讀入的RGB格式的像素信息轉(zhuǎn)換成亮度格式信息并存儲在亮度存儲器中。除FIFO之外,亮度處理器將讀取四塊RAM,兩個用于存儲彩色行信^息,如圖3.7所示,從攝像頭輸出的RGB三基色像素分布在兩行數(shù)據(jù)中。為了計算一個亮度信息,必須連續(xù)采樣完畢1行+2像素,以獲得相鄰4個RGB像素值。在圖中所示的完整的像素單元中GI、R和B、G2之間剛好相差一行的像素。B1閑基于以上的分析,可以采用乒乓緩存、乒乓計算的方式來獲得像素的亮度值。亮度處理器從FIFO中讀取兩行彩色像素值并存儲到一個行緩沖存儲器中,同時讀取另一個行緩沖幀數(shù)據(jù)之后就轉(zhuǎn)向?qū)懭氪鎯ζ鰾,如圖3.8所示,圖中的虛線和實線區(qū)分了乒乓操作的不同3*3.5邊緣檢測處理器邊緣檢測處理器的任務(wù)就是通過乒乓操作讀取這兩個存儲器中的亮度信息并計算邊緣信息。所計算的結(jié)果同樣要以乒乓操作方式寫入到兩個邊緣存儲器中。如圖3.9所所計算的結(jié)果同樣要以乒乓操作方式寫入到兩個邊緣存儲器中。如圖3.9所來自亮度處理器(緩存1幀亮度信息)(緩存1幀亮度信息)圖3.9乒乓操作方式計算邊緣信息3.3.6邊緣數(shù)據(jù)的分配輸出最終的檢測結(jié)果同樣需要采用乒乓操作的方式讀取出來。由于輸入到LCD的顯示數(shù)據(jù)邊緣得到邊緣信息之后,最終通過LCD顯示屏輸出顯示。由于此時信息己經(jīng)保存在邊緣RAM中,需要把數(shù)據(jù)從此RAM讀取到LCD。但是LCD液晶顯示器本身也有嚴(yán)格的時序,此時序和RAM的讀取時序并不一致。所以需要通過控制器把數(shù)據(jù)從RAM中讀取出來并依照嚴(yán)格的時序驅(qū)動LCD顯示。如圖3.11所示。圖3.11LCD接口控制3.4乒乓操作時序研究乒乓操作是本系統(tǒng)實時特性的關(guān)鍵,其難點是時序的同步機(jī)制的控制。本節(jié)將詳細(xì)介紹各處理器之間的工作時序同步情況,為后續(xù)的硬件實現(xiàn)奠定基礎(chǔ)。圖3.12為整個乒乓操為了表述的方便,把相關(guān)的存儲器以及處理器等模塊表示如下:長&人學(xué)哽I:學(xué)位論文保存保存幀息12乒巽操作系統(tǒng)框保存1整5保存2行保存1賴亮度信息圖保存|幀!制器彩色像素數(shù)據(jù)并完成一行的亮度計算工作。由于系統(tǒng)最后輸出的邊緣圖像分辨率為256列的行列分辨率必須加倍。即從攝像頭讀取的采樣分辨率應(yīng)該是512列X256行。所以每一幀的亮度計算需要從攝像頭讀取256行數(shù)據(jù),對應(yīng)了128次行緩沖周期,64次行乒乓操作周期。圖3.13為PROJL的乒乓操作周期示意圖。從圖中可以看到,PRO_L是具有兩個流水線,流水線1負(fù)責(zé)從FIFO讀取數(shù)據(jù)并存儲到RAM_LINE_A和RAM_LINE_B中;流水線2負(fù)責(zé)從讀取RAM_LINE_B和RAM_UNE_A經(jīng)過128次行緩沖周期計算出了128行的亮度信穩(wěn)分析完成一幀亮度計算(注:第1個行緩沖周期中計算的是前一幀的最后一行的亮度信息)。流水線第丨個第丨個帳級沖周期。第丨個行兵兵操作周期,向幀RAM寫入H行攝像頭前1幀的最后兩行數(shù)據(jù)讀攝像頭第!幀的508、509行讀攝像頭菜1幀的最后兩行(511、512行)11RAMLIGHTIB并i1算,結(jié)果寫入RAMEDGEi-讀RAMLIGHTA并計算,結(jié)果寫入RAMEDGEB*-第1個行緩沖周期—------------X-------------第2個行緩沖周期.............*流水線2讀RAMLIGHT_B并計算,結(jié)果寫入RAMEDGE_B讀RAMLIGHTA并計算,結(jié)果寫入RAY'EDGEA第1楨的最后兩行數(shù)據(jù)讀FIFO云RAML1GHTA流水線2第1個行緩沖周期-----?《—----第2個行緩沖周期-------------《—----第128個行乒乓操作周期,共寫入了2幀---通過以上的分析,采用狀態(tài)機(jī)實現(xiàn)處理過程時,如果每一個行緩沖周期對應(yīng)sta_1個狀態(tài),則每一次幀乒乓操作一共需要的狀態(tài)數(shù)為:2x64kc2xs學(xué)硬1256論ta_l每一個行緩沖周期和所需處理的數(shù)據(jù)量以及采用的流水線數(shù)目有關(guān)為了提高系統(tǒng)的實時性這個狀態(tài)數(shù)越少越好。在處理器的設(shè)計實現(xiàn)中將采用多流水線結(jié)構(gòu)以降低所需的狀態(tài)數(shù),提PROL和PRO_E交替的對幀亮度存儲器RAMLIGHT_A和RAMLIGHT_B進(jìn)行讀寫操作。圖3.14描述的是一次邊緣檢測中對幀RAM中數(shù)據(jù)的讀取過程。讀取RAM_FRAMEA中的第一個像素數(shù)據(jù)pz-2pz-2圖3.14PRO_E讀取幀RAM322為了保證PRO_E能夠?qū)崟r的把數(shù)據(jù)從存儲器中讀出并在做完邊緣檢測之后立刻寫入描述了通過4級流水線同步對讀取的數(shù)據(jù)進(jìn)行邊緣檢測過程??梢?,通過4級流水線,每一個像素處理周期被延長到讀取周期的4倍,這種方法有效的解決了系&實時性和邊緣檢測對2|34級流水線邊緣檢測運算第四章系統(tǒng)設(shè)與實現(xiàn)4.1復(fù)位模塊設(shè)計由于本設(shè)計中有若干需要進(jìn)行復(fù)位的模塊,如攝像頭、I2C控制器、液晶屏等,這些模塊復(fù)位所需的脈寬不盡相同,如果簡單的使用一根復(fù)位線,很可能會造成某個模塊沒有成功復(fù)位確被其他模塊看作處于正常工作狀態(tài)。為此設(shè)計系統(tǒng)復(fù)位電路,使各模塊的復(fù)位過程分4.1.1波形設(shè)計設(shè)計的復(fù)位電路具有8個復(fù)位輸出端,通過復(fù)位輸入使能,可以使這8個復(fù)位輸出端4.1.2硬件設(shè)計通過VHDL語言設(shè)計(源代碼見附錄1),所生成的電路模塊外部接口如圖4.2所示:GG保存1賴5當(dāng)通過硬件對電路進(jìn)行復(fù)位之后,此狀態(tài)機(jī)取值為staO,RESETi復(fù)位信號使能之后,狀態(tài)機(jī)狀態(tài)將變?yōu)閟ta(i+1)。在狀態(tài)機(jī)變化之前,有一個計數(shù)延遲過程,模塊中的模256進(jìn)制計數(shù)器把輸入時鐘進(jìn)行了分頻,產(chǎn)生計數(shù)寄存器tempO,之后每當(dāng)tempO加1對應(yīng)延遲一個單位。圖4.2中的9個參數(shù)的單位就是這個延遲時間。通過時狀態(tài)機(jī)處于的復(fù)位信號輸出狀態(tài)通過QuartusH軟件的時序仿真,得出波形如圖4.3所示:關(guān)敗關(guān)敗4.2D5M攝像頭的配置模塊設(shè)計在D5M中有256個16位控制寄存器對攝像頭的工作方式進(jìn)行配置,從而改變攝像頭使用奇數(shù)來設(shè)定每一幀的像素高度,最終實現(xiàn)的高度等于設(shè)定值加1,如果使用了偶數(shù)來設(shè)定,則等效設(shè)定偶數(shù)加1。取值范圍是1—2005。使用奇數(shù)來設(shè)定每一幀的像素寬度,最終實現(xiàn)的寬度等于設(shè)定值加1,如果使用了偶數(shù)來設(shè)定,則等效設(shè)定偶數(shù)加1。取值范圍是1—2751。增大或減小此值可以改變幀內(nèi)相鄰兩行有效數(shù)據(jù)之間的像素數(shù),從而改變圖像數(shù)據(jù)的值范圍8—2047。在D5M上電之后可以通過IC串行接口協(xié)議對這些寄存器進(jìn)行寫入。圖4.4是寫入鐘線的頻率不能高于400KHZ。起始位應(yīng)答位一數(shù)據(jù)低宇節(jié)—答讀寫控制宇—應(yīng)答位數(shù)據(jù)離字節(jié)—應(yīng)寄存器地址應(yīng)答位位如圖所示,一次完整串行配置數(shù)據(jù)中包括如下幾部分信息:1.起始位:當(dāng)主機(jī)的時鐘線為高電平時,數(shù)據(jù)線出現(xiàn)了下降沿,則被從機(jī)認(rèn)為是一次傳送的開始。2.讀寫控制字:通過總線,主機(jī)可以讀寫攝像頭的寄存器內(nèi)容。在起始位之后有一個8位的讀寫控制字節(jié),當(dāng)此字節(jié)為“OXBA”時,實現(xiàn)寫控制,為“OXBB”時,實現(xiàn)讀控制。3.寄存器地址:攝像頭內(nèi)部一共有255個控制寄存器,用8位二進(jìn)制數(shù)進(jìn)行尋址。由于采用的是16位的寄存器,所以需要把16位二進(jìn)制數(shù)分為高低字節(jié)分別傳送。5.應(yīng)答位:在每一次的8位串行數(shù)據(jù)傳送之后,緊接著就是一個應(yīng)答位,但本設(shè)計中對此應(yīng)答位進(jìn)行忽略以簡化設(shè)計。6.停止位:當(dāng)主機(jī)的時鐘線為高電平時,數(shù)據(jù)線出現(xiàn)上升沿,則被從機(jī)認(rèn)為是一次傳送的結(jié)束。本設(shè)計最終的采樣分辨率為256列X128行,所以圖像采集的分辨率應(yīng)為512列X256行。由于攝像頭中靠近中心的CMOS傳感器靈敏度較高,而且便于操作,所以將圖像位置盡量放在中心位置。假設(shè)傳感器最大像素寬度為W,最大像素高度為H,采樣所需的像素寬度為w,高度為h,則像素原點坐標(biāo)應(yīng)為:即RowStart寄存器應(yīng)寫入“0x038A”;ColumnStart寄存器應(yīng)寫入“0x0480”;RowSize寄存器應(yīng)寫入“Ox0OFF”;ColumnSize寄存器應(yīng)寫入“OxOIFF”。其他的寄存器寫入默認(rèn)值,在最終_試需要時再適當(dāng)調(diào)節(jié)。4.2.2D5M的I2C控制模塊設(shè)計圖4.5是VHDL語言所編寫的控制模塊,其源代碼見附錄;T2C*Controilef)ACKrXCLK是外部時鐘輸入端,考慮使用的頻率數(shù)據(jù)線。ACKn是應(yīng)答數(shù)據(jù)線,不過此設(shè)計中ACKn不使用。圖4.6描述了此設(shè)計的所采用0K圖4.6IC控制模塊的時序狀態(tài)圖00經(jīng)止取態(tài)經(jīng)止取態(tài)由于時鐘要求的最高頻率為400KHZ,所以必須對外部頻率進(jìn)行分頻,indk就是被分在STARTn之前有效。為了方便對數(shù)據(jù)信號線和時鐘信號線進(jìn)行同步控制,在模塊內(nèi)部放置一個狀態(tài)機(jī),在inclk上升沿,狀態(tài)機(jī)從staO依次變化到sta42。當(dāng)RESETn信號有效時,狀態(tài)機(jī)被置為sta42,復(fù)位信號過后一旦STARTn輸入有效狀態(tài)機(jī)將從staO·變化到sta42,此過程中,32位的數(shù)據(jù)將分4組嚴(yán)格依照時序要求傳送出去。每一組8位數(shù)據(jù)傳送之后應(yīng)該接受來攝像頭的應(yīng)答位,為簡化設(shè)計,此處對應(yīng)答位不做處理,直接從數(shù)據(jù)端輸出高阻,在圖中用仿真,得到圖4.7的仿真波形和設(shè)計波形完全吻..omo心43T心434.3像素數(shù)據(jù)的格式轉(zhuǎn)換4*3.1像素位寬的轉(zhuǎn)換通過對2C20中存儲位的計算,發(fā)現(xiàn)FIFO數(shù)據(jù)位最寬只能為3bit,其中Ibit為幀同步位,所以有效的像素位寬為2bit。從D5M中輸出的數(shù)據(jù)位寬為12bit,取值范圍0~2"-1。如辨能力·為此設(shè)計控制接口用以通過DE1開發(fā)上的撥動開關(guān)來改變轉(zhuǎn)換所需要的閾值。通過VHDL語言實現(xiàn)后的轉(zhuǎn)換模塊如圖4.8所示。其代碼見附錄3。AA米自圖4.8像素位寬轉(zhuǎn)換】這10個撥動開關(guān)的輸出狀態(tài)·并記錄前3個輸出高電平的開關(guān)序號,把這三個序號存儲到三個數(shù)組數(shù)據(jù)取4種不同值的分界線。這種方式可以很形象的通過撥動開關(guān)對原像素范圍進(jìn)行分段,相鄰兩個撥動開關(guān)如果置為高電平意味著這兩個分界線最小(為370),相距越遠(yuǎn)分界線也相補了由于像素精度偏小帶來的缺陷。HFO數(shù)據(jù)的最高2位為轉(zhuǎn)換后的像素值,最低位為每一幀的起始位標(biāo)志。此模塊將對D5M輸出的行、幀同步信號進(jìn)行分析,找出幀起始時刻,并向?qū)?yīng)的像素值后追加幀起始位,形成3bit寬的數(shù)據(jù)流送入FIFO中。圖4.9即為通過VHDL語言所實現(xiàn)模塊圖形符號,其源代碼見附錄3》其源代碼見附錄3》此模塊的輸入信號為來自D5M的幀同步信號fval、場同步信號Ival、像素同步時鐘信通過圖2.8可以看出,如果fval為高電平時1val從低電平跳變的高電平那一定對應(yīng)了一行的開始。如果fval從低電平跳變到高電平后Ival第一次從低電平跳變那一定對應(yīng)了一巾貞的開始。程序通過fval_sta和Ival_sta保存上一次時鐘pix_clk下降沿時fval和Ival的電平狀態(tài),和本次下降沿的fval、Ival電平對比即可知道本次數(shù)據(jù)是否為幀起始像素或行起始像素,雖然本設(shè)計中并不適用行同步信息,但為了調(diào)試的方便,程序中也實現(xiàn)了行起始位的計算,但相關(guān)代碼被注釋掉了,以備調(diào)試需要。為了向FIFO準(zhǔn)確寫入有效的數(shù)據(jù),過濾掉空白數(shù)據(jù),如圖4.10所示,可以將wrequest信號和fval、Ival的電平狀態(tài)相關(guān)聯(lián),顯然只有兩d2圖4.10幀開始部分波形圖對設(shè)計進(jìn)行時序仿真的結(jié)果如圖4.10-4.13所示:011 仿真的輸入時鐘pix_clk采用50MHz方波,數(shù)據(jù)data_from_d5m采用自加計數(shù)方式模擬像素值,fval和Ival都設(shè)定為合適的波形,通過分析波形圖,發(fā)現(xiàn)數(shù)據(jù)data_to_fifo有大約8.9ns的延遲,并且輸出數(shù)據(jù)穩(wěn)定在fifo_clk始變?yōu)橛行?,結(jié)束于最后一個幀像素數(shù)據(jù)之后,雖然數(shù)據(jù)出現(xiàn)延遲,但是從圖中可以看出,數(shù)據(jù)都能夠穩(wěn)定在時鐘的上升沿。分析wrequest的延遲發(fā)現(xiàn)相對于fifo_clk的上升沿,只有約6ns的建立時間,如圖4.13所示,此時間長度可能將影響后續(xù)寫入FIFO>.CSus6.09us613us61了u:5MegaWizard工具即可配置出所需的電路端口功能由表4.1描述:表4.1FIFO端口描述傳輸方向描述輸入被格式化后的數(shù)據(jù)流寫FIFO請求信號,高電平有效寫FIFO時鐘信號,上升沿有效讀FIFO請求信號,高電平有效讀FIFO時鐘,上升沿有效FIFO讀出數(shù)據(jù)4.4.2時序仿真分析由于系統(tǒng)工作頻率較高,電路中的延遲可能會對所設(shè)計的電路邏輯產(chǎn)生嚴(yán)重的破壞,A時刻如圖4.15所示,設(shè)定輸入數(shù)據(jù)DATAJN為自加計數(shù),計數(shù)頻率和寫入頻率wrclk、讀出頻率rddk相同,都為50MHz,考慮到前面對數(shù)據(jù)流格式化的時序分析結(jié)果,寫入時鐘相移設(shè)定為17ns,這樣就較好的模擬了寫入端的時序情況,如圖4.16所示:龜dr圖4.16寫入時鐘相移的設(shè)定仿真結(jié)果顯示,在A時刻和B時刻之間數(shù)據(jù)保持不變,ftdrI^-0*此處的FIFO為空,A、B兩時刻附近的讀出波形如圖4.17及4.18所示。圖4.18B時刻后FIFO數(shù)據(jù)非空寫入數(shù)據(jù)在wrclk上升沿且wreq為高電平時有效,所以在此時間段附近寫入的數(shù)據(jù)時刻的仿真結(jié)果,如圖4.19所示及4.20所示。s21.34u寫入錯誤位015箱021.34u寫入錯誤位015箱0*的仿真波形可知,在C、D時刻附近所寫入的數(shù)據(jù)為…0、1、0、1…,但讀出的數(shù)據(jù)卻為…0、1、1、1…,第三個數(shù)扼應(yīng)該是0卻被讀出了研究之后發(fā)現(xiàn)是在寫第二個“0”時所加的wrrcq有效電平到來的太晚,雖然在wrclk上升沿以前到來,但是由于建立沿處,問題得以解決,如圖4.21所示。沿處,問題得以解決,如圖4.21所示。江的訴畫電平提前r向田“0”被讀出T5i-長安大學(xué)碩1:學(xué)位論義如果rddk也設(shè)定為50MHz,則仿真結(jié)果如圖4.22所示:MasterTimeBar21.2300860J《*Pop>te》21.03utIntervat-20009njru-LnrLTLnjij’8~圖4*22有效讀取時刻為rddk的上升沿rrrtg良k/ 圖4*23讀請求信號的時序測試需要把rdreq置為有效或無效,為了保證精確的讀出每一個像素信息,從圖4.23可以看出,換中,如果FIFO沒有溢出即可連續(xù)讀出FIFO中的數(shù)據(jù)》4.5片上RAM的配置與仿真冶W孕系統(tǒng)設(shè)計馬*現(xiàn)終的讀寫時序和理想情況產(chǎn)生很大的是異,所以需要對配的RAM進(jìn)行嚴(yán)格的時序仿真測試,獲収真實可靠的時序關(guān)系。為后續(xù)處理器的設(shè)計提供重要依據(jù)。4.5.1雙口RAM(DPRAM)的配置本系統(tǒng)要用到3組共6個片上DPRAM,各組分別用于緩沖四行彩色像素數(shù)據(jù)、兩幀亮度圖像數(shù)據(jù)和兩幀邊緣圖像數(shù)據(jù)。其中行存儲器大小為1024字,每個字為2位;幀亮度存儲器大小為32768(=215)字,每個字為2位;幀邊緣存儲器大小為32768字,每個字為1位。圖4.24為配置后所生成的圖形符號。32768wprd(s)兩圖不同,讀寫時鐘也相互獨立起來。這主要考慮到數(shù)據(jù)最終的輸出顯示是通過LCD控制器來讀取幀邊緣存儲器的,控制器讀取的速度不可能和邊緣檢測處理器寫入的速度相匹配。以上三個存儲器只有寫使能控制端,沒有讀使能控制端,這種配置方式可以減少處理器的控制4.5.2時序仿真分析首先對DPRAM進(jìn)行功能仿真,獲得理想的讀寫時序關(guān)系。圖4.25為時鐘為50MHz時的DPRAM的讀寫仿真波形圖。1藝斯現(xiàn)在荒口處人地址130國r習(xí)7從圖中可以看出,仿真過程中,寫入使能一直有效,數(shù)據(jù)在時鐘上升沿處寫入存儲器。在190ns處q端輸出數(shù)據(jù)2,M然這是地址1處的數(shù)據(jù),但此地址在前一個上升沿圖4.26為寫使能仿真波形。其中寫使能信號在290ns處被設(shè)為無效,并且在時鐘的上升沿以前變?yōu)榈碗娖?,而有在下一個上升沿之前變讀出無效數(shù)據(jù)0vradd數(shù)據(jù)通過仿真結(jié)果可以看到。最終讀取的數(shù)據(jù)中地址14的輸出值為0,而地址15的數(shù)據(jù)輸311r+19M5M+H0.0159174n*JX6XXIBXITX18X19X20L通過仿真結(jié)果可以看出,當(dāng)讀寫地址都為15-21時,輸出端口數(shù)據(jù)為零(無效)。在時刻140ns處,兩地址又不同,讀出數(shù)據(jù)有效。所以在使用DPRAM的時候要防止同時對一個ru~i_rxj~Ln_njurLrLTLX仿真結(jié)果表明,當(dāng)時鐘頻率為50MHz的時候,從地址在上升沿送入存儲器開始,數(shù)據(jù)在延遲1.5個時鐘周期后出現(xiàn)在端口處,最佳的讀取數(shù)據(jù)時刻在地址送入后的第二個上升沿圖4.29為寫使能測試的時序仿真結(jié)果,其中的寫使能信號wren在時鐘上升沿的590ns之前開始變?yōu)榈碗娖剑Y(jié)果表明這個低電平并沒有起作用,地址49單元仍然被寫入了數(shù)據(jù)1。研究其原因是因為wren的低電平出現(xiàn)的太晚,導(dǎo)致建立時間不夠。通過若干次試驗,發(fā)現(xiàn)只有當(dāng)建立時間大于6ns時,此低電平才能夠起到作用,仿真結(jié)果如圖4.30所示。0鋁然六數(shù)活圖4.29寫使能低電平無效45xX4TX^8X49X50x5圖4.31是通過若干次測試得到的寫使能控制的極限情況,從圖中可以看到,在電路延遲的影響下,寫使能信號需要在時鐘上升沿前約6ns到達(dá),并保持至少2ns時間。如果寫使能高電平不能滿足這個電平時序.數(shù)據(jù)將無法$$寫使能信號習(xí)3.8節(jié)中介紹了亮度處理器?110_1^的乒乓操作過程,本人以此為基礎(chǔ),通過硬件描述4.6.1處理器的端口描述首先PRO_L是以并行方式來完成數(shù)據(jù)的讀寫和運算的。從圖3.24的設(shè)計結(jié)果來分析,處理器的最小處理周期為一個行緩沖周期。在此周期中,處理器將從行RAM中讀取RGB像素數(shù)據(jù)并把計算的像素亮度數(shù)據(jù)寫入幀亮度_中,同時將從FIFO讀取RGB像素數(shù)據(jù)并寫入另一個行RAM中。所以處理器所設(shè)計的關(guān)鍵就是對這個操作過程的實現(xiàn)。圖4.32為VHDL設(shè)計實現(xiàn)后生成亮度處理器模塊,完整的源代碼見附錄4。其外部端口描述如表4.2所示。 圖4J2亮度處理器模塊表4.2亮度處理器的外部端口描述端口名稱10方向功能描述時鐘信號復(fù)位信號,低屯平有效HF0數(shù)據(jù)輸入端口HF0讀空信號輸入端,高電平有效行RAM(A)數(shù)據(jù)輸入端行RAM(B)數(shù)據(jù)輸入端讀FIFO請求信號,高屯平有效raml_ab_wraddr_out[9..寫行RAM地址輸出端ram.ab_rdaddr一out[9.讀行RAM地址輸出端raml_ab_data_out[1..寫行RAM數(shù)據(jù)輸出端寫行RAM(A)使能輸出端,高電平有效寫行RAM(B)使能輸出端,高電平有效ramf_ab_wraddr_out[9..A寫幀亮度RAM地址輸出端寫幀亮度RAM(A)使能輸出端,高電平有效寫幀亮度RAM(B)使能輸出端,高電平有效ramfapp一free—reset幀亮度RAM(A)空閑信號輸出端,低電平有效幀亮度RAM(B)空閑信號輸出端,低電平有效寫幀亮度RAM數(shù)據(jù)輸出端4.6.2處理器的狀態(tài)描述處理機(jī)的狀態(tài)機(jī)工作的核心,所有的操作過程都是在此狀態(tài)的同步下有條不紊的進(jìn)行的。處理器通過采用4組狀態(tài)寄存器實現(xiàn)整個處理過程的狀態(tài)計數(shù):這四個狀態(tài)寄存器從staIbuf到stafpp嵌套計數(shù),以完成兩幀亮度信息的計算存儲過程。整個行緩沖周期的機(jī)器狀態(tài)數(shù)是大于兩行的像素數(shù)1024的,因為狀態(tài)數(shù)目要同時滿足讀寫FIFO和RAM而且要滿足亮度計算存儲過程。狀態(tài)改變發(fā)生在elk的上升沿,并且其初始化時通過讀取并判斷FIFO中的幀開始標(biāo)志位實現(xiàn)的。圖4.33描述出一個行緩沖處理周期中PROL的工作狀態(tài)。網(wǎng)輯出心嘗據(jù) A225.4結(jié)的分析結(jié)果指出,對FIFO讀取的最佳時機(jī)在FIFO讀時鐘的上升沿,為此特別安排FIFO和PRO_L的時序同相位。當(dāng)處理器上升沿到來的時刻,F(xiàn)IFO的輸出數(shù)據(jù)已經(jīng)穩(wěn)定的出現(xiàn)在了端口處,如圖5.32中所示,其中菱形框中表示的是像素在行中的偏移地址。為了在一個緩沖周期中連續(xù)的讀取1024個像素數(shù)據(jù),所以令讀FIFO的使能信號線fifo_rdreq_out的有效時間為從末態(tài)轉(zhuǎn)換完成之后開始到1023狀態(tài)剛剛轉(zhuǎn)換完畢結(jié)束。這種設(shè)定的方法也是基于5.4結(jié)的分析結(jié)果,可以保證連續(xù)讀取兩行的RGB數(shù)據(jù)。從FIFO讀取數(shù)據(jù)之后要立刻寫入行RAM中,為了不讓寫入過程占用額外的處理器狀態(tài),采用并行讀寫方式。即連續(xù)從FIFO讀取的數(shù)據(jù)同時連續(xù)寫入RAM。如圖所示,處理器從FIFO端口讀出數(shù)據(jù)之后就立刻建立寫入輸出地址,并和剛讀取的數(shù)據(jù)送到端口處,這樣一來在相鄰的始終下降沿數(shù)據(jù)就會被寫入行RAM中。(為了使數(shù)據(jù)在elk在寫RGB數(shù)據(jù)到行RAM的同時,處理器還要從另一個行RAM中讀取像素數(shù)據(jù)計算亮度信息并把計算結(jié)果存儲到幀RAM中。如3.3.4所指出的亮度計算方法,計算每個亮度信息所需要讀取的行RAM的地址和緩沖狀態(tài)關(guān)系如表4.3所示。表4.3計算亮度時所讀的行RAM地址與行緩沖狀態(tài)的關(guān)系行緩沖地址023⑤把add_reg除以4(右移兩位)并送到端口ramf_ab_data_out;前4個步驟是不間斷被執(zhí)行的,所以必須把后三步并為一步進(jìn)行實現(xiàn)??紤]到前三步4.33所示的寫幀RAM的地址和數(shù)據(jù)輸出時序,菱形框中所寫的是所寫亮度信息在對應(yīng)行的偏移地址,顯然這個寫入速度是前面所述的讀取RAM速度的1/4,所以有著充裕的時間計算4.7邊緣處理器的設(shè)計4.7.1處理器的端口描述邊緣處理器的任務(wù)是基于經(jīng)典Rob算法對幀亮度RAM中的圖像數(shù)據(jù)進(jìn)行邊緣檢測。最終處理的結(jié)果將存儲到邊緣RAM中以供LCD控制器讀取。為了保證處理的實時性,同樣采用乒乓操作方式完成數(shù)據(jù)讀取、處理和數(shù)據(jù)寫入過程。并在數(shù)據(jù)處理過程采用4級流水線式實現(xiàn)閾值的變化。通過VHDL語言生成的邊緣處理器模塊如圖4.34 rame一bwren一out 表4.4邊緣處理器的外部端口描述端口名稱10方向功能描述。時鐘信號幀亮度RAM(A)數(shù)據(jù)輸入端幀亮度RAM(B)數(shù)據(jù)輸入端幀亮度的乒乓操作控制輸入aramf一b_pp—reseti叩ut幀亮度_的乒乓操作控制輸入b邊緣檢測閾值增大控制ramf_ab_rdaddr_out[14.讀幀亮度RAM的地址輸出邊緣檢測結(jié)果數(shù)據(jù)輸出rame_ab_wraddr_out[14..a寫邊緣RAM的地址輸出邊緣RAM(A)寫使能輸出邊緣RAM(B)寫使能輸出邊緣(A)讀允許控制輸出邊緣(B)讀允許控制輸出邊緣檢測閩值LED顯示輸出4.7.2處理器的狀態(tài)描述圖4.35為邊緣處理器PRO_E的狀態(tài)時序圖。在對PRO_E的狀態(tài)控制中,采用了對整個幀進(jìn)行運算作為一個狀態(tài)周期。從亮度處理器傳來的乒乓操作復(fù)位信號到來之后,PRO_E將讀取沒有被亮度處理器寫入的亮度RAM。通過這種方式,邊緣檢測運算將被啟動,并可以保證?11O_1^和PRO_E不會同時操作一個亮度RAM?!禰亮度RAM時鐘處理《狀態(tài)Oil入線入寫邊緣跑第四競系統(tǒng)設(shè)計與實現(xiàn)1B圖43SPROE的狀態(tài)時序gC數(shù)輸水從圖中可以看出,讀幀RAM的地址和PRO_E狀態(tài)同步遞增??紤]到讀RAM的時序要求,PRO_E和RAM的時鐘頻率相同且反相,以此可以保證輸出的地址可以在幀RAM時鐘上升沿處被可靠鎖存。從4.5節(jié)對雙口RAM的讀取時序分析結(jié)果可知,幀RAM的輸出數(shù)據(jù)將穩(wěn)定輸出在數(shù)輸水對進(jìn)行邊緣檢測所需的像素數(shù)據(jù)。如圖4.36所示。運算寄存器圖4J6邊緣檢測過程中所用的寄存器由于每一次運算的過程需要獲取四個像素的亮度值,但如果每計算一個邊緣像素都從RAM中讀取數(shù)據(jù)勢必會產(chǎn)生亮度值重復(fù)讀取的現(xiàn)象,使處理器的吞吐量大大降低。為此,通過寄存器把后續(xù)需要用到的亮度數(shù)據(jù)緩存起來。圖4.36中的寄存器regO~reg255為行寄存器,每-次讀取的亮度值都會被存儲在這個行寄存器中,以備下一行的邊緣計LQ安大學(xué)碩士學(xué)位論文reyeg_cS之前以讀取的亮度值。處理器中的4個流水線都有自己的運算寄存器,記為圖437寄存器的讀寫在處理器的4級流水線中,每一級都有以下三個工作狀態(tài),如圖4.35所示,每個工作狀態(tài)A:第四章系統(tǒng)設(shè)計與實現(xiàn)狀態(tài)B:狀態(tài)C:計算邊緣RAM的寫入地址并把regj送出端口輸出地址,也送出到輸出觸發(fā)器的數(shù)據(jù)輸入端上,等處理器進(jìn)入C狀態(tài)之后(此從邊緣RAM中讀取,并且LCD所需要的同步信號必須完全自行設(shè)計,綜合考慮這些需求,口,可以有效的從RAM中讀取邊緣信息。接口模塊如下圖4.38,其源代碼見附錄6。此模塊依照LCD同步時序要求輸出行(hd)、幀(vd)以及數(shù)據(jù)有效(den)同步信號而地址信號。在read_clk的下降沿處,邊緣RAM的數(shù)據(jù)會被鎖存到內(nèi)部寄進(jìn)程中采用變量count_h、count_v作為行、列掃描計數(shù)器,count_h在主時鐘下降沿到來之后進(jìn)行循環(huán)計數(shù),計數(shù)范圍為0一(Thbp+Thd+Thfi)—1),(:O11時_^在OO1111_11歸零時刻進(jìn)行循環(huán)計數(shù),計數(shù)范圍為0一(Tvbp+Tvd+Tvfi)—1)。在進(jìn)程中,程序?qū)⒖疾檫@些計數(shù)器的值來改變hd、vd、den同步信號的電平。同步信號的波形仿真結(jié)果如圖4.39所示: ECLf5CM從仿真結(jié)果發(fā)現(xiàn),主時鐘nclk_Ick和同步信號之間有大約3ns的延遲,為了檢驗延遲對顯示效果的影響,把輸入數(shù)據(jù)設(shè)定為高電平,下載后顯示效果如圖4.40所示。除此之外,為了產(chǎn)生讀取RAM的地址信號,進(jìn)程采用變量addr_h和addr_v輸出圖像的坐標(biāo)映射值,addr_h為行坐標(biāo)值,取值范圍為(0一255),addr_v為縱坐標(biāo)值,取值范圍為(0一127)。由于邊緣圖像的分辨率為256X128.而顯示器分辨率遠(yuǎn)大于此,所以程序設(shè)計的初(addr_h/Thd*col_input+col_input*addrv/Tvbp*row_input,1但是仿真之后發(fā)現(xiàn),所輸出的地址值為0,分析發(fā)現(xiàn)是因為此代碼綜合之后電路比較復(fù)雜,所產(chǎn)生的運算延遲時間遠(yuǎn)大于主時鐘的周期,導(dǎo)致運算無法正常進(jìn)行,為此將以上算法進(jìn)行了簡化.即不采用壓縮變換方式,而是把邊緣圖像放大兩倍的方式顯示在屏幕中心,這樣的運算過程只會涉及加減運算以及除2運算,使綜合后的硬件延遲大為降低,仿真結(jié)果如圖4.41結(jié)果顯示地址的輸出邏輯正常。由于從RAM中讀取數(shù)據(jù)將比讀取時鐘延遲兩個時鐘周期,而且LCD的數(shù)據(jù)是在主時鐘nclkjck的上升沿寫入的,而且電路本身也有延遲,所以采if(count_h>=(Thbp-2+14由于從邊緣RAM中讀取到的數(shù)據(jù)將延遲一個讀取時鐘周期,所以代碼中地址產(chǎn)生提前4.9系統(tǒng)設(shè)計與實現(xiàn)結(jié)果圖4.42實時邊緣檢測系統(tǒng)電路圖圖4.43為系統(tǒng)硬件外觀,圖4.44為實時邊緣檢測結(jié)果。通過實時檢測可以看到在只有50MHz的時鐘頻率系統(tǒng)下獲得了和PC機(jī)相當(dāng)?shù)膶崟r處理速度,圖像沒有絲毫斷幀或停頓現(xiàn)象,檢測效果理想。但缺點就是分辨率太小,攝像頭的視角很小。這個缺陷完全是存儲芯片的嵌入式RAM位太少導(dǎo)致的。為了能夠正確使用攝像頭和LCD顯示器,必須詳細(xì)的掌握其驅(qū)動方式。其中的時序波續(xù)模塊的捕獲和鑒別數(shù)據(jù)功能的設(shè)計提供依據(jù),而且要LCD要考慮系統(tǒng)資源允許的分辨能力而且還要兼顧有較好的顯示效果,以及主動讀取RAM系統(tǒng)的工作時鐘在50MHz,FPGA的延遲大約有半個時鐘周期,會極大的影響各模塊的工4.模塊的VHDL代碼實現(xiàn)。1.通過片外RAM或更大的嵌入式RAM提升圖像質(zhì)量系統(tǒng)最終有效分辨率只有256列X128行,只有4階亮度,導(dǎo)致攝像頭的視角很小,并設(shè)計結(jié)果已經(jīng)完全驗證了系統(tǒng)結(jié)構(gòu)和處理器的可靠性。多級流水線設(shè)計的成功保證了今后可以通過硬件實現(xiàn)更好的邊緣檢測算法,使檢測的效果得到質(zhì)的提升。[1]蔡立晶蔡立娟楊立.基于指紋圖像邊緣檢測算法的比較研究[J].中國新技術(shù)新產(chǎn)品,2009(01):34[2]劉昌孝.專用集成電路設(shè)計[M].北京:國防工業(yè)出版社,1995:12-14[13]馬濤,趙宇,來清民.基于80C552單片機(jī)的多芯片同步復(fù)位電路[J].微計算機(jī)信息,2007,(11):[15J朱玉娥,吳曉紅,何小海.基于GPU圖像邊緣檢測的實時性[J].電子測量技術(shù),[16]左顥睿,張啟衡,徐勇,趙汝進(jìn).基于GPU的快速Sobel邊緣檢測算法【J].光電工程2009,(01):8-12[17]邱鐵西方,遲宗止,ARM流水線關(guān)鍵技術(shù)分析與代碼優(yōu)化[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009,(03):[18】蓋素麗,基于GPU的數(shù)字圖像并行處理方法(J】.電子產(chǎn)品世界,2009,02):38*40,48[19]陳勇濤,段成華.一種適合ECC的三級流水模乘加單元設(shè)計[J].微電子學(xué)與計算機(jī),2009,(02):Algorithmica,1994,12(2-3):72~109.2007,1(2):156~165.[27]戴立新,王澤勇,王黎.I2C總線接口的設(shè)計及驗證[J].現(xiàn)代電子技術(shù),2009,(02):132-134[36]王喆,劉金國,王亞軍.高速數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)流無縫緩存技術(shù)[J】.微計算機(jī)信息,XCLK:INSTD_LOGIC;RESETO:OUTSTD_LOGIC—the2nddelayedresetoutput—the4thdelayedresetoutputARCHITECTURERESET_architectureOFRE,,rst7:std_logic:='r;signallocked:boolean:=false;process(HARD_RESET,XCLK)varst_sta:type_sta_ma:=:if(HARD_RESET='0'andlocif(temp1=DELAY0)thenrst0<='0';rst_sta:=stal;endif;if(templ=DELAYI)thenK安大學(xué)碩士學(xué)位論文rst_sta:=sta6;endif;rst_sta:=sta7;endif;elsif(templ=DELAY7+LOW_WIDTH)endif;endcase;endif攝像頭配置模塊源碼X”BA0300FF”signalConfig_Data:std_logic_vector(signaltran_count:integerrange0toConfig^Data_Table'high:=Config_Data_Table'high;signalcik_gate:boolean:=false;if(freconter<dispart/0when8=>when21=>—ackn2<=12C一SDAT;25=> I2CJSDAT<=Configwhen31=>I2C_SDwhen32=>I2C_SDwhen33=>I2C_SDwhen34=>I2C_SDwhen35=>I2C—SDwhen37=>I2C_SDwhen39=>sclk<=0';I2C_SDAT<=0';clk_gate<=false;when附錄3像素數(shù)據(jù)的格式轉(zhuǎn)換源碼architectureoneofMINI_DATAissignalgrey_levell:intege
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB 3705T 47-2024黃河口灘區(qū)肉羊繁育技術(shù)規(guī)范
- 二手房買賣合同范本解析
- 個人與公司委托代繳公積金合同范本
- 中小企業(yè)借款合同模板
- XX公司委托培訓(xùn)合同
- 中鐵物資商城采購合同新范本
- 上海市臨時勞動合同模板
- 個人投資入股合同范例
- 不動產(chǎn)行紀(jì)買賣合同書
- 個人意外傷害保險合同醫(yī)療附加條款(暫行)
- 年產(chǎn)30萬噸高鈦渣生產(chǎn)線技改擴(kuò)建項目環(huán)評報告公示
- 民謠酒吧項目創(chuàng)業(yè)計劃書
- 2023年珠海市招考合同制職員筆試參考題庫(共500題)答案詳解版
- 心電監(jiān)護(hù)考核標(biāo)準(zhǔn)
- 特種行業(yè)許可證申請表
- 古典芭蕾:基本技巧和術(shù)語
- 內(nèi)地居民前往香港或者澳門定居申請表
- DB43-T 2612-2023林下竹蓀栽培技術(shù)規(guī)程
- 三下《動物的一生》教材解讀
- 神木市孫家岔鎮(zhèn)神能乾安煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 非煤礦山安全應(yīng)急預(yù)案
評論
0/150
提交評論