基于FPGA的線陣CCD子圖像提取模塊的設(shè)計與仿真-設(shè)計應(yīng)用_第1頁
基于FPGA的線陣CCD子圖像提取模塊的設(shè)計與仿真-設(shè)計應(yīng)用_第2頁
基于FPGA的線陣CCD子圖像提取模塊的設(shè)計與仿真-設(shè)計應(yīng)用_第3頁
基于FPGA的線陣CCD子圖像提取模塊的設(shè)計與仿真-設(shè)計應(yīng)用_第4頁
基于FPGA的線陣CCD子圖像提取模塊的設(shè)計與仿真-設(shè)計應(yīng)用_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

精品文檔-下載后可編輯基于FPGA的線陣CCD子圖像提取模塊的設(shè)計與仿真-設(shè)計應(yīng)用摘要:根據(jù)線陣CCD圖像檢測和識別系統(tǒng)的要求,分析線陣CCD圖像與子圖像的位置關(guān)系,采用“圖像轉(zhuǎn)置緩沖區(qū)”和讀寫狀態(tài)機的處理方式,設(shè)計基于FPGA的線陣CCD子圖像提取模塊,具有FPGA資源占用少、邏輯清晰的特點。用MATLAB和Modelsim軟件進行聯(lián)合仿真,驗證了設(shè)計的正確性。

0引言

在工業(yè)生產(chǎn)自動化系統(tǒng)中,通過計算機視覺和圖像處理技術(shù)來實現(xiàn)產(chǎn)品的質(zhì)量監(jiān)測和控制,已逐漸成為一種有效的應(yīng)用技術(shù)。線陣CCD圖像傳感器廣泛地應(yīng)用于產(chǎn)品尺寸測量和分類、非接觸尺寸測量、條形碼、形態(tài)識別等眾多領(lǐng)域。在圖像檢測系統(tǒng)中,應(yīng)具備一個高速的子圖像提取和輸出模塊,本文采用FPGA器件EP3C25F256C8和CCD線陣圖像傳感器RL1024P,實現(xiàn)線陣CCD圖像檢測系統(tǒng)中的子圖像提取和輸出功能。

1子圖像提取模塊的設(shè)計

子圖像提取模塊的功能可描述為:采用FPGA器件實現(xiàn),根據(jù)串行輸入的黑白圖像和同步信號,提取該圖像中設(shè)定尺寸大小的子圖像。假設(shè)輸入圖像大小為i*j,某一像素點的坐標位置為(X,Y),要取出子圖像的大小為m*n,則用c代碼描述為:for(b=0;bj;b++){for(a=0;ai;a++){//取出Xa,Yb到Xa+m,Yb+n的子圖像;}}

根據(jù)系統(tǒng)設(shè)計的要求,線陣CCD圖像采集模塊采用串行的方式輸出1×1024像素的一行圖像,子圖像提取模塊接收該圖像數(shù)據(jù)、緩沖、再輸出16×16像素的子圖像。子圖像提取模塊的外部端口,如圖1所示。主要信號有:像素同步時鐘信號CCD_CLK、像素數(shù)據(jù)CCD_DATA、當前輸入像素的坐標CCD_ADDR[90];另外,N_RST和SYS_CLK為系統(tǒng)提供的復(fù)位信號和處理時鐘信號。其中,每個CCD_CLK的上升沿出現(xiàn)時CCD_DATA像素有效,且該像素所在的位置為CCD_ADDR[90]值。

為了實現(xiàn)每個CCD_CLK周期內(nèi)均輸出一個子圖像,SYS_CLK應(yīng)該為CCD_CLK的10倍左右。

本文采用“圖像轉(zhuǎn)置緩沖區(qū)”的方法來實現(xiàn)子圖像提取模塊?!皥D像轉(zhuǎn)置緩沖區(qū)”是一個按行寫入(更新)、按列讀出的一個RAM緩沖區(qū)。在FPGA內(nèi)部設(shè)置一個1024個單元的RAM緩沖區(qū),每個單元的位寬為16bits.線陣CCD采集模塊輸出的線陣圖像與子圖像的關(guān)系,如圖2所示。其中,第0行表示圖像的當前行,第N行為歷史行,每行有1024個像素,按照p0至p1023的像素順序輸出。假設(shè)當前CCD_CLK輸入的像素為第0行的p16像素,則其對應(yīng)的16X16子圖像為圖中的陰影部分。

“圖像轉(zhuǎn)置緩沖區(qū)”RAM塊存儲圖像的結(jié)構(gòu),如圖3所示。

RAM塊共有1024個單元,每個單元為16位的寬度,可存放近的16行圖像數(shù)據(jù)。對比圖2和圖3,可以發(fā)現(xiàn),RAM塊的地址編號相當于線陣CCD圖像的某一行像素的位置,某個RAM單元的位D15~D0對應(yīng)某一列的近16個像素,相當于對線陣圖像轉(zhuǎn)置后再存放到RAM塊中。對RAM緩沖區(qū)進行寫操作時,由于線陣CCD圖像的數(shù)據(jù)是按行逐位輸入的,每個CCD_CLK時鐘上升沿出現(xiàn)時,僅需更新RAM緩沖區(qū)中當前像素對應(yīng)的比特,因此在邏輯上是根據(jù)圖像按行寫入RAM區(qū)的。在FPGA器件中,可設(shè)計一個狀態(tài)機來實現(xiàn)“圖像轉(zhuǎn)置緩沖區(qū)”的讀寫操作,如圖4所示。

子圖像提取模塊輸出的子圖像有256個像素,在FPGA內(nèi)部通過寄存器暫存上一個輸出的子圖像;當更新RAM區(qū)的某個像素時,把16X16的滑動窗口向右移動一列像素的位置,把滑動窗口內(nèi)的數(shù)據(jù)作為輸出,就可以得到新的子圖像。

2設(shè)計仿真

在本文的設(shè)計仿真中,由于用到圖像文件的解析和圖像顯示,因此借助MATLAB和Modelsim軟件,通過文件讀寫的方式實現(xiàn)的聯(lián)合仿真,可使仿真處理更加便捷和直觀。其中,MATLAB用來把圖像文件轉(zhuǎn)換為輸入的像素,以及顯示輸出的子圖像;Modelsim用來仿真和驗證FPGA設(shè)計是否正確。

本文使用MATLAB和Modelsim進行聯(lián)合仿真,主要有以下三個步驟。步,在MATLAB中編寫m文件,讀取bmp位圖文件并把像素數(shù)據(jù)寫入文件datain.txt中,作為ModelSim仿真的輸入激勵信號。第二步,在ModelSim中,用VHDL編寫Testbench測試文件,讀取datain.txt文件,產(chǎn)生與CCD_CLK同步的像素信號;編寫DO文件進行自動化仿真,再把仿真輸出的子圖像數(shù)據(jù)保存在dataout.txt文件中。第三步,在MATLAB中編寫m文件,解析dataout.txt文件,依次顯示為16×16的黑白圖片序列,確定仿真結(jié)果是否正確。本設(shè)計仿真輸入的圖像及輸出的子圖像序列,如圖5所示。從仿真結(jié)果可知,設(shè)計方法是正確的,仿真結(jié)果符合設(shè)計功能的要求。

3結(jié)束語

應(yīng)用線陣CCD圖像傳感器進行產(chǎn)品檢測時,連續(xù)、高速地輸出子圖像序列是必不可少的重要環(huán)節(jié),采用FPGA實現(xiàn)子圖像序列的提取和輸出,有多種不同的設(shè)計方法。本文采用“圖像轉(zhuǎn)置緩沖區(qū)”和狀態(tài)機的方式,來實現(xiàn)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論