IP核產(chǎn)生正弦函數(shù)(共14頁(yè))_第1頁(yè)
IP核產(chǎn)生正弦函數(shù)(共14頁(yè))_第2頁(yè)
IP核產(chǎn)生正弦函數(shù)(共14頁(yè))_第3頁(yè)
IP核產(chǎn)生正弦函數(shù)(共14頁(yè))_第4頁(yè)
IP核產(chǎn)生正弦函數(shù)(共14頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本文介紹如何使用xilinx的CORDIC 核生產(chǎn)一個(gè)sin和cos波形?cordic的原理就不介紹了,百度一大堆,我們知道原理后,需要去使用它。環(huán)境:xilinx ISE 14.5 cordic 4.0modelsim首先是IP核的選項(xiàng)設(shè)置,照例的有圖才方便學(xué)習(xí)標(biāo)注1:選擇函數(shù)的類型,我們選擇計(jì)算sin和cos值。標(biāo)注2:選擇cordic的結(jié)構(gòu),是字串行還是并行,我們選擇并行。標(biāo)注3:選擇輸出流水線類型,我們選擇不要流水線。關(guān)于cordic的計(jì)算結(jié)構(gòu),是并行還是串行,datasheet上面有介紹時(shí)序圖:看時(shí)序圖可知,serial類型計(jì)算一個(gè)值,需要的clk比parallel需要的多,但是da

2、tasheet后面有說(shuō)serial占用的資源少。如果感興趣可以看datasheet上介紹的二者的內(nèi)部結(jié)構(gòu)。serial 占用的資源少,需要的clk多,也會(huì)使端口多出幾個(gè)PIN,控制起來(lái)麻煩一點(diǎn),如下圖:關(guān)于輸出流水線類型,我們選擇NO Pipelining ,如果選擇其他的,那么輸出的結(jié)果會(huì)延遲不定時(shí)的clk才產(chǎn)生,當(dāng)然好處是節(jié)省資源。選擇NO Pipelining 時(shí), 1個(gè)clk就出一個(gè)計(jì)算值,有點(diǎn)費(fèi)資源。文檔的最后有對(duì)二者的資源占用比較,可以參考。如果對(duì)延時(shí)不在意,但是想節(jié)省資源的話,就選擇優(yōu)化。datasheet相關(guān)介紹:標(biāo)注1:選擇相位角的格式,我們選擇Scaled Radians(

3、意思是多少PI)。標(biāo)注2:選擇數(shù)據(jù)寬度,這個(gè)和你需要多少位寬的數(shù)據(jù)有關(guān),我們選擇16位。標(biāo)注3:舍位模式,選擇的是近似值。對(duì)于相位角格式,datasheet的定義為:數(shù)據(jù)的有效值的定義為:相位角: 第一位是符號(hào)位,第二、三位是整數(shù)位,其他是小數(shù)位。sin數(shù)據(jù): 第一位符號(hào)位,第二位整數(shù)位,其他小數(shù)位。cos數(shù)據(jù):第一位符號(hào)位,第二位整數(shù)位,其他小數(shù)位。數(shù)據(jù)的舍位模式:(具體可以看下表)標(biāo)注1:選擇階乘和精度,0表示根據(jù)數(shù)據(jù)來(lái)自動(dòng)選擇。標(biāo)注2:選擇cordic算法的范圍,將輸出值控制在-pi/4 +pi/4之間還是-pi +pi之間。標(biāo)注3:選擇PIN,本來(lái)sin和cos功能是可以不要RDY的,

4、但是我需要RDY來(lái)查看什么時(shí)候輸出數(shù)據(jù)才有效。標(biāo)注2的詳解:如果你要生成正弦余弦波,那么你的Coarse Rotation必須選上,讓輸出數(shù)據(jù)是整個(gè)圓平面。這樣設(shè)置好的cordic IP核只是第一步,下一步是來(lái)設(shè)置合適的相位phase,以產(chǎn)生完整的波形。datasheet所示:我設(shè)置的數(shù)據(jù)位是16位,那么+1.0 - 16h2000; -1.0 - 16he000;(暫時(shí)給定phase的步進(jìn)為16h00C0,至于怎么確定,下面會(huì)說(shuō)到,cordic的時(shí)鐘我設(shè)置的是100Mhz)如果直接讓phase從 16h2000到 16he000,那么波形就會(huì)變成這樣:原因是,16h2000 到 16he00

5、0 之間有一長(zhǎng)段的phase是大于+1和小于-1的,cordic IP核會(huì)當(dāng)做+1和-1計(jì)算,所以才會(huì)一直是相同的值。那么怎樣才能產(chǎn)生完整的正弦波?我們將phase從16he000 到 16h2000 ,仿真結(jié)果為:發(fā)現(xiàn)有的地方是完整的波形了,那么現(xiàn)在我們需要找到波形的銜接點(diǎn):我選取x_out的二個(gè)波谷做一個(gè)周期,那么找到二個(gè)波谷對(duì)應(yīng)的phase即可,注意cordic計(jì)算是需要clk,當(dāng)rdy為1時(shí),數(shù)據(jù)才有效,所以我們要找到延時(shí)的clk數(shù)。我用cnt來(lái)計(jì)算,大概11個(gè)clk,數(shù)據(jù)有效。(注意不同的cordic設(shè)置會(huì)產(chǎn)生不同的延時(shí),所以cnt不是固定的)那波谷對(duì)應(yīng)的phase是向前數(shù)11個(gè)cl

6、k對(duì)應(yīng)的phase:16hd980同樣找到另一個(gè)波谷的phase值為:16h1940仿真產(chǎn)生完整的正弦余弦波:測(cè)試的testbench:那么步進(jìn)的phase怎么計(jì)算呢?我選擇的是16h00C0,十進(jìn)制是192。剛才提到了,+1 到 -1(16h2000 到 16he000)之前有 :16he000 - 16h2000 = 16hC000,也就是49152.256 * 192 = 49152,那么當(dāng)步進(jìn)取192的時(shí)候,256個(gè)clk就可以從2000加到E000了。這樣不會(huì)出現(xiàn)起始數(shù)據(jù)不定的狀況。這里建議數(shù)值是49152的約數(shù)比較好,當(dāng)然不是它的約數(shù)也行。16h00C0 - 0000 0000 1100 0000,按照datasheet的phase數(shù)據(jù)格式:000,0 0000 1100 0000,也就是十進(jìn)制的0.0234375。而這個(gè)數(shù)的角度值為:0.0234375 * 180 = 4.21875,也就是每個(gè)clk步進(jìn)4.21875。一個(gè)圓有360,那么從0到360一共步進(jìn)360 / 4.21875 約等于 85.3次。我選擇的clk為10ns,也就是85.3 * 10 ns輸出一個(gè)完整的正弦余弦波。所以正弦余弦波的周期為1 / 853 ns 約等于

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論