基于FPGA的運(yùn)動(dòng)估計(jì)設(shè)計(jì)
2.1 地址計(jì)數(shù)器模塊
地址計(jì)數(shù)器主要是產(chǎn)生出可以在RRAM(參考?jí)K存儲(chǔ)器)和CRAM(當(dāng)前塊存儲(chǔ)器)中有目的地進(jìn)行尋址的地址信號(hào)。如圖4所示。本文引用地址:http://www.ex-cimer.com/article/190177.htm
地址計(jì)數(shù)器模塊的設(shè)計(jì)與當(dāng)前塊和參考?jí)K的存儲(chǔ)有很大的關(guān)系。將數(shù)據(jù)存入當(dāng)前塊存儲(chǔ)器和參考?jí)K存儲(chǔ)器時(shí)的順序是由左到右,由下到上,即當(dāng)前塊存儲(chǔ)器是(-7,-7),(-6,-7),(-5,-7)……(8,-7),(-7,-6),(-6,-6)……(8,7),(8,8)。而參考?jí)K存儲(chǔ)器是(-15,-15),(-15,-14),(-15,-13)……(-15,16),(-14,-15),(-14,-14)……(16,15),(16,16)。則可知在尋址當(dāng)前塊存儲(chǔ)器時(shí)可以直接按照地址的由左到右,由下到上累加。其計(jì)算公式如式(2)所示:
C_addr=(j+7)×16+(i+8) (2)
對(duì)于參考?jí)K存儲(chǔ)器,它是一個(gè)32x32的數(shù)據(jù)塊,設(shè)計(jì)的目的是從其中取出符合三步搜索法的9個(gè)數(shù)據(jù)塊,當(dāng)然這九個(gè)數(shù)據(jù)塊都是16x16的,而且是以原點(diǎn)為中心組成的搜索點(diǎn)群。其計(jì)算公式如式(3)所示:
R_addr=(j+15)x32+(i+16) (3)
Clk是時(shí)鐘頻率信號(hào),當(dāng)它發(fā)生上升沿跳變時(shí)會(huì)使得產(chǎn)生的地址跳變到下一個(gè)新值。
Clr是清零信號(hào),當(dāng)它是低電平時(shí),地址計(jì)數(shù)器可以產(chǎn)生從零開(kāi)始的連續(xù)地址。
由于,當(dāng)前塊存儲(chǔ)器只是一個(gè)16x16的RAM,其總的存儲(chǔ)空間是256,則可知使用八位地址就可以進(jìn)行尋址整個(gè)空間,即CRAM_ADDR是八位輸出信號(hào)。而參考?jí)K存儲(chǔ)器是一個(gè)32x32的的RAM,其總的存儲(chǔ)空間是1 024,則可知使用十位地址就可以進(jìn)行尋址整個(gè)空間,即RRAM_ADDR是十位輸出信號(hào)。
2.2 參考?jí)K分頻器模塊
參考?jí)K分頻器模塊主要是將從參考?jí)K存儲(chǔ)器中輸出的信號(hào)經(jīng)過(guò)分頻處理后,存儲(chǔ)在9個(gè)獨(dú)立的單元,以便后續(xù)的處理,如圖5所示。
由參考?jí)K輸出的信號(hào)是256x9個(gè)連續(xù)的像素值,而當(dāng)前塊輸出的信號(hào)只是256個(gè)連續(xù)信號(hào)在連續(xù)時(shí)鐘驅(qū)動(dòng)下的九次重復(fù),這樣就很難在256x9個(gè)時(shí)鐘周期內(nèi)完成對(duì)9個(gè)匹配塊的處理,更難在256個(gè)時(shí)鐘周期內(nèi)完成。因此要通過(guò)參考?jí)K分頻器將參考?jí)K存儲(chǔ)器連續(xù)輸出的256x9個(gè)像素點(diǎn)值進(jìn)行九次分頻,存儲(chǔ)在9個(gè)RAM單元之中。這樣當(dāng)下一個(gè)時(shí)鐘周期的上升沿到來(lái)時(shí),這9個(gè)RAM可以同時(shí)輸出信號(hào),并在接下來(lái)的255個(gè)時(shí)鐘周期之后將里面存儲(chǔ)的所有信號(hào)輸出,而且輸出的這些信號(hào)相互之間是完全獨(dú)立的。同時(shí),為了使后面的各模塊能夠很好的進(jìn)行,參考?jí)K分頻器模塊還引入了當(dāng)前塊的像素值信號(hào),使得存入9個(gè)RAM單元的信號(hào)不僅僅是參考?jí)K的像素點(diǎn)值,還有當(dāng)前塊的像素點(diǎn)值以便保證后面的減法器可以正常工作。
評(píng)論