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