999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于SystemVerilog的CORDIC算法IP核實(shí)現(xiàn)方案*

2020-03-25 07:35:06盛業(yè)斐
通信技術(shù) 2020年1期
關(guān)鍵詞:設(shè)計(jì)

盛業(yè)斐

(南京郵電大學(xué) 海外教育學(xué)院,江蘇 南京 210023)

0 引 言

坐標(biāo)旋轉(zhuǎn)數(shù)字運(yùn)算法(Coordinate Rotation Digital Computer,CORDIC)是一種坐標(biāo)旋轉(zhuǎn)算法,常用來計(jì)算向量旋轉(zhuǎn)、三角與反三角函數(shù)以及乘、除法等初等函數(shù)值[1]。隨著現(xiàn)代電子通信技術(shù)的發(fā)展,特別是數(shù)字通信領(lǐng)域,包括OFDM信道估計(jì)與均衡、峰值因子降低(Crest Factor Reduction,CFR)、數(shù)字預(yù)失真(Digital Pre-Distortion,DPD)、接收機(jī)載波同步與相位補(bǔ)償、直接序列擴(kuò)頻捕獲與跟蹤等場(chǎng)景,對(duì)數(shù)字通信信號(hào)的處理往往涉及到復(fù)數(shù)乘除法、矩陣QR分解及相位補(bǔ)償?shù)冗\(yùn)算[2]。CORDIC算法由于低復(fù)雜度、精度和延遲的可控性得到了大規(guī)模應(yīng)用。然而,CORDIC算法形式多樣,包括三種坐標(biāo)形式和兩種旋轉(zhuǎn)模式,分別對(duì)應(yīng)著不同的初等函數(shù)運(yùn)算結(jié)構(gòu)。雖然J.Walther在1971年給出了CORDIC算法在三種坐標(biāo)系下的統(tǒng)一數(shù)學(xué)表達(dá)式[3],可以方便地在軟件編程上實(shí)現(xiàn)不同的CORDIC運(yùn)算,但是在實(shí)際應(yīng)用中特別是在通信物理層信號(hào)處理前端,CORDIC運(yùn)算往往需要在FPGA硬件中實(shí)現(xiàn)。常規(guī)做法是根據(jù)不同函數(shù)運(yùn)算需求設(shè)計(jì)特定的RTL代碼,導(dǎo)致代碼靈活性和可移植性受到了極大限制。盡管市面上FPGA生產(chǎn)廠家已經(jīng)將CORDIC算法IP核集成到各自的EDA開發(fā)工具中,用戶可以免費(fèi)調(diào)用,但是不同廠家提供的IP核之間無法兼容,加之用戶無法獲得其IP源碼,進(jìn)而無法在不同廠家平臺(tái)開發(fā)之間進(jìn)行移植,且代碼仿真效率不高。本文根據(jù)CORDIC各種運(yùn)算形式和特性,利用SystemVerilog語言實(shí)現(xiàn)了CORDIC算法通用IP核制作,大大提高了RTL代碼的可讀性、靈活性和可移植性,并且在FPGA中進(jìn)行了仿真驗(yàn)證和性能分析。

1 CORDIC算法原理

CORDIC是一種依靠角度旋轉(zhuǎn)逼近計(jì)算目標(biāo)的算法[4]。它的基本推導(dǎo)來自直角坐標(biāo)系下的坐標(biāo)旋轉(zhuǎn)變換。xoy坐標(biāo)系點(diǎn)(x1,y1)旋轉(zhuǎn)θ角度后到點(diǎn)(x2,y2),則點(diǎn)(x1,y1)到點(diǎn)(x2,y2)的變換滿足:

如果忽略cosθ對(duì)系統(tǒng)的影響,得到偽變換形式為:

令tanθi=(1/2)i,每次旋轉(zhuǎn)arctan((1/2)i)角度,累計(jì)旋轉(zhuǎn)角度與給定的角度θ之差記為z。

當(dāng)z>0,則下一次旋轉(zhuǎn)對(duì)應(yīng)于第i+1次將沿反方向旋轉(zhuǎn),且旋轉(zhuǎn)角度為-arctan((1/2)i)。如此經(jīng)過多次變換后,最終旋轉(zhuǎn)角度將無限逼近(1/2)i,此時(shí)z數(shù)值也將趨于0。偽變換與旋轉(zhuǎn)變換區(qū)別在于受到旋轉(zhuǎn)因子cosθi的影響,多次變換后的結(jié)果值將會(huì)產(chǎn)生總的幅度畸變因子為:

當(dāng)N→+∞時(shí),上述值趨向于0.607 3,即畸變補(bǔ)償因子為K=1.647。

經(jīng)過如上簡(jiǎn)化后,計(jì)算點(diǎn)(x1,y1)旋轉(zhuǎn)θ角度后的坐標(biāo)值,只需要經(jīng)過N次旋轉(zhuǎn),旋轉(zhuǎn)角度分別為θ1,θ2,θ3,…,θN。其中,每旋轉(zhuǎn)一個(gè)角度只需要進(jìn)行一次判斷、兩次移位操作和三次加(減)法。與其他計(jì)算方法相比,無需使用乘法器和大量的查找表,大大降低了硬件實(shí)現(xiàn)的復(fù)雜度,因此得到了大規(guī)模應(yīng)用。

以上推導(dǎo)為CORDIC算法在圓周坐標(biāo)系下的表達(dá)式。J.Walther在1971年給出了CORDIC算法在圓周坐標(biāo)、線性坐標(biāo)和雙曲坐標(biāo)共3種坐標(biāo)系下統(tǒng)一數(shù)學(xué)表達(dá)式:

針對(duì)3種不同坐標(biāo)系,基于旋轉(zhuǎn)和向量模式得到以下6種不同的CORDIC形式。它在各種不同模式下取不同的輸入量,對(duì)應(yīng)不同輸出結(jié)果作為初等函數(shù)運(yùn)算,最終歸納出其對(duì)應(yīng)關(guān)系如表1所示。例如,要計(jì)算sinθ的數(shù)值,從表1可以看出其對(duì)應(yīng)旋轉(zhuǎn)模式且μ=1,每次旋轉(zhuǎn)角度為arctan2-i,di=sign(z(i)),初始輸入值為x0=1/K,y0=0,z0=θ。經(jīng)過N次旋轉(zhuǎn)后最終結(jié)果為:

則xN即為最終計(jì)算結(jié)果。

2 SystemVerilog介紹

常見支持可編程邏輯門陣列(Field Programable Gate Array,F(xiàn)PGA)開發(fā)的硬件描述語言有VHDL和Verilog兩種。SystemVerilog簡(jiǎn)稱為SV語言,建立在Verilog語言的基礎(chǔ)上,是IEEE 1364 Verilog-2001標(biāo)準(zhǔn)的擴(kuò)展增強(qiáng),兼容Verilog 2001,于2009年成為了IEEE 1800-2009標(biāo)準(zhǔn)[5]。目前,SystemVerilog語言發(fā)展已經(jīng)逐漸成熟,幾乎所有的RTL編譯和仿真器均支持它。SystemVerilog將硬件描述語言(Hardware Description Language,HDL)與現(xiàn)代高層級(jí)驗(yàn)證語言(Hardware Verification Language,HVL)結(jié)合起來[6],支持多維壓縮數(shù)組的操作,使得原來使用Verilog需要多種重復(fù)性的操作,直接通過generate循環(huán)對(duì)寄存器數(shù)組操作,大大精簡(jiǎn)了代碼量,提升了代碼可維護(hù)性、靈活性和可移植性[7]。本文充分利用SystemVerilog語言特點(diǎn),結(jié)合各種CORDIC算法形式,實(shí)現(xiàn)了CORDIC算法IP核的制作,并且通過Quartus II和Modelsim對(duì)代碼進(jìn)行綜合與仿真,在FPGA中進(jìn)行了驗(yàn)證和性能分析。

表1 CORDIC算法不同形式關(guān)系總結(jié)表

3 CORDIC算法IP核制作與驗(yàn)證

根據(jù)表1給出3種坐標(biāo)系及其對(duì)應(yīng)的2種模式,共有6種不同CORDIC算法結(jié)構(gòu)。本文充分對(duì)比6種不同結(jié)構(gòu)的核心共性,結(jié)合J.Walther提出的統(tǒng)一表達(dá)式,利用支持現(xiàn)代高層級(jí)驗(yàn)證語言的SystemVerilog進(jìn)行硬件RTL描述,設(shè)計(jì)了CORDIC算法硬件IP核。以下將從CORDIC算法硬件實(shí)現(xiàn)流程出發(fā),對(duì)設(shè)計(jì)的IP核進(jìn)行仿真驗(yàn)證,最后給出本IP核性能分析。

3.1 CORDIC算法IP核硬件實(shí)現(xiàn)

根據(jù)理論推導(dǎo),設(shè)計(jì)CORDIC算法IP核的硬件功能框圖如圖1所示,主要包括常量計(jì)算與存儲(chǔ)、輸入數(shù)據(jù)預(yù)處理、流水線CORDIC以及輸出數(shù)據(jù)處理等部分。

圖1 CORDIC算法硬件實(shí)現(xiàn)架構(gòu)

3.1.1 常量計(jì)算與存儲(chǔ)

從J.Walther提出的CORDIC統(tǒng)一表達(dá)式出發(fā),根據(jù)表1提出的6種結(jié)構(gòu)形式可知,不同坐標(biāo)系對(duì)應(yīng)著不同的旋轉(zhuǎn)角度因子常量e(i)和伸縮因子K,不同旋轉(zhuǎn)模式對(duì)應(yīng)著不同的模式符號(hào)di。因此,實(shí)現(xiàn)CORDIC算法IP核的制作,首先需要針對(duì)表1提出的6種結(jié)構(gòu)計(jì)算6組e(i)、K、di常量表。另外,由于在硬件FPGA中實(shí)現(xiàn)時(shí)考慮到速度與資源的平衡,一般采用定點(diǎn)運(yùn)算,需要對(duì)e(i)、K、di常量進(jìn)行定點(diǎn)化。本設(shè)計(jì)充分利用SystemVerilog支持現(xiàn)代高層級(jí)驗(yàn)證的特點(diǎn),設(shè)計(jì)18個(gè)二維寄存器數(shù)組來存取定點(diǎn)化后的e(i)、K、di常量,并且根據(jù)6種結(jié)構(gòu)的CORDIC分別進(jìn)行宏定義,由用戶在代碼編譯之前根據(jù)需要選擇不同的宏來配置不同其需要的運(yùn)算模式。

3.1.2 輸入數(shù)據(jù)預(yù)處理

輸入數(shù)據(jù)預(yù)處理是對(duì)用戶輸入數(shù)據(jù)進(jìn)行等價(jià)變換,防止CORDIC溢出和迭代不收斂。例如,利用CORDIC計(jì)算sinθ,由表1可知對(duì)應(yīng)于圓周坐標(biāo)系的CORDIC,且有μ=1,e(i)=arctan2-i,每次旋轉(zhuǎn)的角度為±arctan2-i。經(jīng)過無數(shù)次迭代旋轉(zhuǎn)后,角度旋轉(zhuǎn)之和最大值為:

因此,如果輸入角度不在這個(gè)范圍,可以利用三角函數(shù)性質(zhì),總能將其轉(zhuǎn)換后滿足θ∈[-π/2,π/2]。

3.1.3 CORDIC算法核心模塊處理

從式(1)可以看出,每旋轉(zhuǎn)一個(gè)角度只需要進(jìn)行一次判斷、兩次移位操作和三次加(減)法,硬件結(jié)構(gòu)如圖2所示。N次旋轉(zhuǎn)共需N級(jí)架構(gòu)相同的操作模塊,其硬件延時(shí)為N個(gè)時(shí)鐘周期,且前一級(jí)運(yùn)算結(jié)果作為后一級(jí)輸入,不存在反饋過程。在FPGA硬件實(shí)現(xiàn)時(shí),非常合適用流水線的方式去完成,N次旋轉(zhuǎn)共需要N級(jí)流水線。

圖2 單級(jí)CORDIC算法核心模塊硬件結(jié)構(gòu)

3.2 CORDIC算法IP核硬件RTL仿真驗(yàn)證

為了驗(yàn)證本設(shè)計(jì)CORDIC算法RTL代碼功能與時(shí)序的正確性,本文以經(jīng)過14次旋轉(zhuǎn)的CORDIC算法實(shí)現(xiàn)除法運(yùn)算為例,在Matlab中產(chǎn)生256點(diǎn)隨機(jī)定點(diǎn)數(shù)作為硬件仿真中被除數(shù)和除數(shù)點(diǎn),并以文本形式保存。編寫Testbench仿真程序,將該文件讀取后以特定時(shí)序送入CORDIC算法模塊,最終硬件仿真所得結(jié)果如圖3所示。

圖3 CORDIC算法IP核時(shí)序仿真結(jié)果

將硬件仿真結(jié)果與Matlab計(jì)算結(jié)果進(jìn)行對(duì)比,得到相對(duì)誤差曲線如圖4所示,統(tǒng)計(jì)得到相對(duì)誤差平均值為0.072%,說明本設(shè)計(jì)的CORDIC算法完全符合實(shí)際應(yīng)用的需求。

圖4 軟硬件仿真結(jié)果對(duì)比

3.3 CORDIC算法IP核性能分析

以除法和反正切角度計(jì)算為例,硬件輸入以16比特定點(diǎn)量化,根據(jù)不同旋轉(zhuǎn)次數(shù)N,對(duì)本設(shè)計(jì)的CORDIC算法IP核代碼進(jìn)行配置,利用Quarters II硬件編譯器對(duì)其進(jìn)行綜合布局布線,得到資源損耗與性能結(jié)果如表2所示。從表2可以看出,隨著旋轉(zhuǎn)次數(shù)N的增加,硬件資源使用會(huì)越來越多,計(jì)算精度將越來越高,但是FPGA能最大工作時(shí)鐘仍能維持在200 MHz以上,完全符合IP化的要求。

表2 CORDIC算法IP核性能分析表

4 結(jié) 語

本文首先通過對(duì)CORDIC算法統(tǒng)一表達(dá)式進(jìn)行研究,總結(jié)了CORDIC算法在不同坐標(biāo)系、不同模式下所對(duì)應(yīng)的計(jì)算對(duì)象及其之間的聯(lián)系。然后,利用SystemVerilog將表征不同CORDIC結(jié)構(gòu)的旋轉(zhuǎn)角度因子常量e(i)、伸縮因子K和旋轉(zhuǎn)模式符號(hào)di以二維寄存器組進(jìn)行統(tǒng)一化存取,并設(shè)計(jì)宏定義提供用戶配置接口,最終實(shí)現(xiàn)CORDIC算法IP核制作,并且在FPGA中進(jìn)行了仿真驗(yàn)證和性能分析。硬件仿真和實(shí)際應(yīng)用證明,本設(shè)計(jì)的IP核由于采用SystemVerilog語言描述,大大提高了RTL代碼的可讀性、靈活性和可移植性,在通信和信號(hào)處理領(lǐng)域具有一定的參考和應(yīng)用價(jià)值。

猜你喜歡
設(shè)計(jì)
二十四節(jié)氣在平面廣告設(shè)計(jì)中的應(yīng)用
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
基于PWM的伺服控制系統(tǒng)設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:36
基于89C52的32只三色LED搖搖棒設(shè)計(jì)
電子制作(2019年15期)2019-08-27 01:11:50
基于ICL8038的波形發(fā)生器仿真設(shè)計(jì)
電子制作(2019年7期)2019-04-25 13:18:16
瞞天過海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
從平面設(shè)計(jì)到“設(shè)計(jì)健康”
商周刊(2017年26期)2017-04-25 08:13:04
主站蜘蛛池模板: 制服丝袜在线视频香蕉| 国产香蕉97碰碰视频VA碰碰看| 国产精品人成在线播放| 成人国产一区二区三区| 日本高清成本人视频一区| 婷婷色在线视频| 久久久成年黄色视频| 国产久操视频| 亚洲精品福利视频| 日韩不卡高清视频| 日本黄色a视频| 欧美第九页| 五月天综合婷婷| 无码一区中文字幕| 亚洲欧美自拍视频| 欧美成人一级| 亚洲国产成人精品无码区性色| 日本爱爱精品一区二区| 青青青伊人色综合久久| 久久综合九九亚洲一区| 日本中文字幕久久网站| 天天操天天噜| 无码综合天天久久综合网| 色偷偷一区二区三区| 91无码人妻精品一区| 久久精品人妻中文视频| 国产欧美视频在线观看| 免费jjzz在在线播放国产| av色爱 天堂网| av午夜福利一片免费看| 亚洲国产高清精品线久久| 久久这里只精品热免费99 | 九九视频免费看| 国产欧美日韩另类精彩视频| 22sihu国产精品视频影视资讯| 白浆免费视频国产精品视频| 色婷婷综合激情视频免费看| 国产一区二区精品福利| 国产精品亚洲va在线观看| 国产精品视频久| 久久精品最新免费国产成人| 99久久99这里只有免费的精品| 午夜福利网址| 欧美综合区自拍亚洲综合天堂| 亚洲第一极品精品无码| 不卡网亚洲无码| 国产福利影院在线观看| 亚洲色图综合在线| 国产成人乱码一区二区三区在线| 999国内精品视频免费| 亚洲黄色视频在线观看一区| 国产一区成人| 自慰高潮喷白浆在线观看| 亚洲美女视频一区| 欧美一区二区自偷自拍视频| 在线视频97| 亚洲成人精品| 99在线小视频| 国产日产欧美精品| 欧美第二区| 亚洲成a人片7777| 91探花在线观看国产最新| 亚洲欧美精品日韩欧美| 一级全免费视频播放| 婷婷丁香在线观看| 看你懂的巨臀中文字幕一区二区| 四虎在线高清无码| 操美女免费网站| 思思热在线视频精品| 喷潮白浆直流在线播放| 国产簧片免费在线播放| 国产精品香蕉在线观看不卡| 久久久久亚洲精品无码网站| 无码网站免费观看| 国产97视频在线| 欧美亚洲一区二区三区导航| 国产高清不卡| 免费国产在线精品一区| 91精品久久久久久无码人妻| 欧美国产日韩一区二区三区精品影视| 亚洲伊人天堂| 青青久视频|