王紹徐
(上海電力學(xué)院計(jì)算機(jī)與信息工程學(xué)院,上海 200090)
直角坐標(biāo)和極坐標(biāo)是兩種不同的坐標(biāo)體系,在不同的領(lǐng)域發(fā)揮著重要的作用.例如,在圖像處理、視頻處理、數(shù)字模擬電視等領(lǐng)域中一般采用直角坐標(biāo)體系,這是由于電視機(jī)、顯示器等器件均是采用點(diǎn)陣掃描方式,是按照直角坐標(biāo)(x,y)逐點(diǎn)實(shí)現(xiàn)的;而在天線、雷達(dá)等系統(tǒng)中按照角度掃描時(shí)就需要用到極坐標(biāo),尤其是雷達(dá)系統(tǒng)中,掃描時(shí)基于角度旋轉(zhuǎn)并通過發(fā)射天線發(fā)出微波電磁波,處在此方向上的物體會(huì)反射電磁波,雷達(dá)天線接收到此反射波后即可處理并提取有關(guān)該物體的信息(如距離、方位、高度及距離變化率或徑向速度等).但雷達(dá)系統(tǒng)在處理及顯示物體信息時(shí),必須通過直角坐標(biāo)來(lái)實(shí)現(xiàn),因此其系統(tǒng)內(nèi)部同時(shí)存在直角坐標(biāo)和極坐標(biāo)體系,也就存在兩個(gè)坐標(biāo)的轉(zhuǎn)換問題.已有很多文獻(xiàn)對(duì)此問題進(jìn)行了研究[1].
隨著集成電路及現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)的發(fā)展,越來(lái)越多的研究基于FPGA來(lái)實(shí)現(xiàn)坐標(biāo)體系的轉(zhuǎn)化[2,3].
本文分析了由極坐標(biāo)到直角坐標(biāo)的轉(zhuǎn)換方法,提出了一種簡(jiǎn)單實(shí)用且效率高的FPGA實(shí)現(xiàn)方法.
雷達(dá)是利用微波波段電磁波探測(cè)目標(biāo)的電子設(shè)備.在雷達(dá)系統(tǒng)中,發(fā)射機(jī)通過天線將電磁波能量以定向方式發(fā)射到空間中的某一方向,處在此方向上的物體反射碰到的電磁波,再由雷達(dá)天線接收此反射波,并送至接收設(shè)備進(jìn)行處理,提取有關(guān)該物體的某些信息(如目標(biāo)物體至雷達(dá)的距離,距離變化率或徑向速度、方位、高度等).測(cè)量距離實(shí)際是測(cè)量發(fā)射脈沖與回波脈沖之間的時(shí)間差,因電磁波以光速傳播,據(jù)此就能換算出目標(biāo)的精確距離.雷達(dá)的優(yōu)點(diǎn)是白天黑夜均能探測(cè)遠(yuǎn)距離的目標(biāo),且不受霧、云和雨的阻擋,具有全天候的特點(diǎn),并有一定的穿透能力.因此,它不僅成為軍事上必不可少的電子裝備,而且廣泛應(yīng)用于社會(huì)經(jīng)濟(jì)發(fā)展和科學(xué)研究中.其中,航海雷達(dá)得到了廣泛的應(yīng)用,其發(fā)射天線處于二維平面,可用于檢測(cè)海平面上是否有船只,以及其距離和運(yùn)動(dòng)情況等.
航海雷達(dá)中,雷達(dá)天線的掃描是以固定點(diǎn)為中心,以恒定速率勻速旋轉(zhuǎn),在每一個(gè)角度采集返回的雷達(dá)回波數(shù)據(jù)并進(jìn)行處理,這時(shí)坐標(biāo)體系采用極坐標(biāo),當(dāng)進(jìn)行數(shù)據(jù)處理和圖像顯示時(shí)使用直角坐標(biāo)[4].坐標(biāo)轉(zhuǎn)換的目的就是將極坐標(biāo)下的(ρ,θ)坐標(biāo)轉(zhuǎn)換為直角坐標(biāo)系下的(x,y)坐標(biāo),并把在極坐標(biāo)下指向(ρ,θ)的數(shù)據(jù)重新指向與之對(duì)應(yīng)的直角坐標(biāo)系下的(x,y)區(qū)域,同時(shí)完成對(duì)當(dāng)前數(shù)據(jù)的存儲(chǔ)和后續(xù)的數(shù)據(jù)處理.常見的坐標(biāo)轉(zhuǎn)換方法有很多,基本原理都是按照(x,y)=(x0+ρsinθ,y0+ ρcosθ)來(lái)計(jì)算直角坐標(biāo)的位置,然后將采集的數(shù)據(jù)存入(x,y)對(duì)應(yīng)的數(shù)據(jù)空間.若以(x0,y0)為顯示中心坐標(biāo),則由極坐標(biāo)掃描且直角坐標(biāo)存儲(chǔ)的原理如圖1所示.
圖1 極坐標(biāo)掃描直角坐標(biāo)存儲(chǔ)示意
坐標(biāo)轉(zhuǎn)換實(shí)現(xiàn)流程如圖2所示,其中包括第一象限數(shù)據(jù)存儲(chǔ).
圖2 坐標(biāo)轉(zhuǎn)換軟件實(shí)現(xiàn)流程
在本系統(tǒng)中,當(dāng)開始新的一屏掃描時(shí),設(shè)備產(chǎn)生一個(gè)航首信號(hào)HD,系統(tǒng)據(jù)此設(shè)定初始化角度θ=θ0.當(dāng)開始一條新的掃描線時(shí),設(shè)備產(chǎn)生一個(gè)方位角信號(hào)BP,據(jù)此設(shè)定ρ=0,并且θ增加一個(gè)增量.在處理一條掃描線時(shí),保持θ不變,針對(duì)該掃描線進(jìn)行模數(shù)轉(zhuǎn)換,得到采樣值.當(dāng)顯示分辨率為1 024×1 024時(shí),就需要2 048×2 048個(gè)實(shí)際采樣點(diǎn),即每一條回波掃描線的采樣點(diǎn)為1 024個(gè).每處理完一條回波掃描線,則θ增加一個(gè)增量,重新開始下一條掃描線.為了增加分辨率,每周循環(huán)角度均勻等分為8 192份,因此對(duì)于第一象限而言,角度循環(huán)次數(shù)為2 048次,循環(huán)增量為2π/8 192.
除了CPU軟件以外,DSP軟件也可用于實(shí)現(xiàn)計(jì)算,DSP內(nèi)部具有乘加運(yùn)算功能,可以預(yù)先存儲(chǔ)sin和cos的值,用兩個(gè)乘法器和加法器并行計(jì)算x和y的值.由于本系統(tǒng)的分辨率較高,顯示刷新的速度非???,其計(jì)算量特別大,一般的CPU和DSP已經(jīng)無(wú)法勝任,最佳的方案是使用FPGA來(lái)實(shí)現(xiàn).目前,F(xiàn)PGA可以在300 MHz的頻率下工作,因此可以完全實(shí)時(shí)地實(shí)現(xiàn)坐標(biāo)的轉(zhuǎn)換、處理和顯示.
由于系統(tǒng)分辨率和顯示刷新速率越來(lái)越高,坐標(biāo)轉(zhuǎn)換可以使用FPGA配合大容量存儲(chǔ)器sdram來(lái)實(shí)現(xiàn),其原理如圖3所示.系統(tǒng)中核心處理單元為 FPGA,采用 Altera公司的 CycloneII EP2C35F672C7N.其輸入數(shù)據(jù)為雷達(dá)信號(hào)產(chǎn)生模塊產(chǎn)生的行首信號(hào)和方位角信號(hào),以此作為一幀、一條掃描線開始的觸發(fā)信號(hào).然后對(duì)收到的雷達(dá)回波信號(hào)進(jìn)行模數(shù)采樣(采樣分辨率為1 024),并將其作為該掃描線的采樣數(shù)據(jù),存入坐標(biāo)轉(zhuǎn)換后得到的對(duì)應(yīng)直角坐標(biāo)點(diǎn)(x,y)所在的存儲(chǔ)空間,如圖1所示.采用兩幀圖像AB Buffer機(jī)制,當(dāng)數(shù)據(jù)采集存儲(chǔ)進(jìn)A空間時(shí),F(xiàn)PGA同時(shí)處理B空間中的數(shù)據(jù),并實(shí)時(shí)顯示;反之,則交換.除了坐標(biāo)轉(zhuǎn)換模塊外,F(xiàn)PGA還包括了sdram控制器,以及雷達(dá)信號(hào)數(shù)據(jù)處理等模塊,系統(tǒng)中的CPU主要用于實(shí)現(xiàn)人機(jī)接口、系統(tǒng)配置等功能.
圖3 FPGA實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換的原理示意
FPGA中實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換最有效的方法是查找表法,按照輸入的(ρ,θ),查找極坐標(biāo)-直角坐標(biāo)關(guān)系表,即可直接得到(x,y),從而直接將數(shù)據(jù)存入該空間,具體實(shí)現(xiàn)流程如圖4所示.
運(yùn)用查找表法實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換時(shí),系統(tǒng)的半徑分辨率為1 024,角度分辨率為2π/8 192,查找表容量為1 024×8 192=8 MB,表格內(nèi)容為x和y的坐標(biāo),范圍為0~2 047,需11 ×2=22 bit,因此存儲(chǔ)器容量共為176 Mbit,即22 MB.顯然該方法在理論上是可行的,但實(shí)際因存儲(chǔ)器容量太大而無(wú)法實(shí)現(xiàn).
由于在同一方位角θ時(shí)ρ的增量為1,根據(jù)x=ρsinθ和y=ρcosθ計(jì)算每個(gè)點(diǎn)坐標(biāo)與上一點(diǎn)坐標(biāo)的變化量,并對(duì)該差值進(jìn)行處理,每個(gè)點(diǎn)x和y的存儲(chǔ)值變?yōu)? bit,查找表的大小為8 MB×2 bit=16 Mbit=2 MB.另外,由于4個(gè)象限是對(duì)稱的,在具體轉(zhuǎn)換時(shí)可使用方位角的高兩位表示不同的象限,見圖 1.當(dāng)掃描線開始時(shí),(x0,y0)=(1 024,1 024),其他點(diǎn)的坐標(biāo)(xn,yn)可表示為:第1象限(xn,yn)=(xn-1+dx,yn-1- dy),第 2 象限(xn,yn)=(xn-1+dx,yn-1+dy),第 3 象限(xn,yn)=(xn-1- dx,yn-1+dy),第 4 象限(xn,yn)=(xn-1-dx,yn-1-dy),其中 dx和 dy分別取 0 或 1,即表中每點(diǎn)取值2 bit,對(duì)應(yīng)x和y的增量,因此查找表空間又可減小為2 M/4 bit=512 kB,完全可以用FPGA來(lái)實(shí)現(xiàn),具體流程見圖5.
圖4 FPGA查找表實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換示意
用改進(jìn)的FPGA查找表實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換的過程示意如圖5所示.首先將查找表數(shù)據(jù)通過CPU存入sdram中,當(dāng)開始新的一屏掃描時(shí),設(shè)備產(chǎn)生一個(gè)航首信號(hào)HD,F(xiàn)PGA根據(jù)這一信號(hào)設(shè)定初始化角度θ=θ0,ρ=0.當(dāng)開始新的掃描線時(shí),設(shè)備產(chǎn)生一個(gè)方位角信號(hào)BP,F(xiàn)PGA據(jù)此設(shè)定ρ=0,并且θ++.此時(shí),F(xiàn)PGA取出sdram查找表中對(duì)應(yīng)該θ的整行數(shù)據(jù)(即1024×2 bit=256 B),隨著該掃描線數(shù)據(jù)的不斷輸入,按照?qǐng)D5流程來(lái)實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換,同時(shí)將數(shù)據(jù)正確存入直角坐標(biāo)系中.
圖5 改進(jìn)的FPGA查找表實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換示意
圖5表示的是第一象限的實(shí)現(xiàn)情況,即按x=x+LUT_x(j,i),y=y - LUT_y(j,i)計(jì)算,F(xiàn)PGA具體實(shí)現(xiàn)時(shí)的加減是按照不同的象限分別處理的,象限的區(qū)分可以從方位角的最高兩位取得.
在同時(shí)具有極坐標(biāo)和直角坐標(biāo)體系的系統(tǒng)中,數(shù)據(jù)的采集、處理和顯示的過程中都必須進(jìn)行坐標(biāo)轉(zhuǎn)換.由于轉(zhuǎn)換時(shí)數(shù)據(jù)量大,實(shí)時(shí)性高,需要采用FPGA來(lái)實(shí)現(xiàn),本文介紹了FPGA實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換的原理和方法,并采用查找表方式對(duì)算法進(jìn)行了改進(jìn).
[1]梁景新,薛余網(wǎng).PPI雷達(dá)信號(hào)微機(jī)顯示中的快速極坐標(biāo)-直角坐標(biāo)映射[J].上海交通大學(xué)學(xué)報(bào),1999(1):57-60.
[2]徐國(guó)庫(kù),陳禾.基于CORDIC算法的坐標(biāo)轉(zhuǎn)換電路的FPGA實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2006(10):108-110.
[3]胡明,余柏生,吳順君.基于CPLD技術(shù)的雷達(dá)光柵掃描坐標(biāo)變換器的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代雷達(dá),2001(6):77-79.
[4]王世遠(yuǎn).航海雷達(dá)與ARPA[M].大連:大連海事大學(xué)出版社,1998:1-109.
[5]劉福江.船用導(dǎo)航雷達(dá)坐標(biāo)轉(zhuǎn)換中的盲點(diǎn)問題及解決方法[J].船用導(dǎo)航雷達(dá),2002(4):5-7.