數(shù)字中頻的基本原理和FPGA的實(shí)現(xiàn)_第1頁(yè)
數(shù)字中頻的基本原理和FPGA的實(shí)現(xiàn)_第2頁(yè)
數(shù)字中頻的基本原理和FPGA的實(shí)現(xiàn)_第3頁(yè)
數(shù)字中頻的基本原理和FPGA的實(shí)現(xiàn)_第4頁(yè)
數(shù)字中頻的基本原理和FPGA的實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 數(shù)字中頻的基本原理和FPGA的實(shí)現(xiàn)1 基本原理 數(shù)字中頻主要分兩部分,數(shù)字上變頻(DUC)和數(shù)字下變頻(DDC)。它們的主要功能是相反,但原理和實(shí)現(xiàn)的方法是十分相似。在R8905項(xiàng)目中由于采用了零中頻技術(shù),數(shù)字上變頻和下變頻有一些差別,數(shù)字上變頻沒有了NCO模塊。另外為了降低輸出信號(hào)的峰均比又加入了削峰模塊CFR,而CGC模塊的引入則是補(bǔ)償削峰所引起的功率損失。 圖1 數(shù)字上變頻模塊框圖在數(shù)字下變頻中RSSI模塊是信號(hào)的功率檢測(cè)模塊,它配合AGC電路將信號(hào)的輸出功率穩(wěn)定在一定范圍內(nèi)。 圖2 數(shù)字下變頻模塊框圖在DDC和DUC中主要使用3種濾波器分別是RRC,HB和CIC,它們個(gè)自有個(gè)自的特點(diǎn)

2、。RRC濾波器一般來講階數(shù)比較多,多用于低頻處。由于它的階數(shù)比較多,所以可以得到比較銳利的帶通特性,但它所用的乘法器比較多。CIC濾波器不需要乘法器,但它的帶內(nèi)不是很平坦,適合用在高頻處。而HB濾波器的特性正好在它們之間,它有約一半的系數(shù)是0可以講乘法器的個(gè)數(shù)減少一半。 削峰模塊CFR實(shí)際上也是一組濾波器,它的功能是將CDMA信號(hào)中的峰值信號(hào)減小一些,以減小輸出信號(hào)的峰均比,使射頻功率放大器的效率更高。削峰的模塊框圖如圖3 圖3 單級(jí)削峰示意圖削峰的原理是這樣的一個(gè)復(fù)信號(hào)(I,Q)如果它的模大于某個(gè)門限,就將其減去這個(gè)門限得到一個(gè)復(fù)信號(hào)(dI,dQ),否則(dI,dQ)(0,0)。將(dI,d

3、Q)送到fir濾波器中,fir濾波器是一個(gè)低通濾波器將峰值限定在一定的帶寬內(nèi),防止影響臨道。將原信號(hào)(I,Q)減去濾波后的信號(hào)(fir_i,fir_q)就得到了削峰的值。如果有必要這這樣的削峰可以連續(xù)做幾次,在R8905設(shè)計(jì)中削峰用了兩次。2 濾波器的設(shè)計(jì)由于在濾波的同時(shí)還有內(nèi)插和抽取,所以充分利用這一特性可以減少FPGA使用的資源。另外濾波器的系數(shù)一般都是對(duì)稱的,可以將頭和尾的數(shù)相加再乘濾波器的系數(shù),這樣可以大大減少乘法器的使用。以R8905中的上變頻RRC為例來說明:設(shè)a(n)為RRC濾波器的系數(shù)而x(n)為3.84M輸入數(shù)據(jù)則考慮了內(nèi)插后的濾波器的數(shù)學(xué)表達(dá)式為 y=a(0)*x(n)+a

4、(1)*0+a(2)*x(n-1)+.+a(n-1)*0+a(0)*x(0)=a(0)*(x(n)+x(0) +a(2)*( x(n-1)+x(1).其FPGA實(shí)現(xiàn)的邏輯框圖如下 圖4 DUC RRC濾波器實(shí)現(xiàn)邏輯圖其中使用了4個(gè)乘法器和四個(gè)RAM以及一個(gè)ROM來存數(shù)據(jù)。RRC_CTR_6144模塊控制這些乘法器和ROM。參考代碼如下:/ Date : Sat Jul 21 10:51:51 2007/ Author : duan chenghong/ Company : zte/ Description : / RRC濾波器用了4個(gè)RAM和4個(gè)乘法器完成IQ兩路的濾波功能,/ I,Q的處理方

5、法完全相同。數(shù)據(jù)同時(shí)寫入4個(gè)RAM中,但讀的地址不/ 同,由于RRC濾波器的系數(shù)是對(duì)稱的所以讀RAM的地址也是對(duì)稱的,將地址/ 對(duì)稱的RAM讀出數(shù)相加再和RRC濾波器系數(shù)相成再累加就可以得到最后的結(jié)果/module rrc_ctr_6144 (waddr, raddr0, raddr1, raddr2, raddr3, clk, reset, data_en, dat0_out, dat1_out, dat2_out, dat3_out, coef, raddr_coef, ih, il, qh, ql, coef_h, coef_l, mih, mil, mqh, mql, idat, qd

6、at, rrc_en); output 5:0 waddr ; reg 5:0 waddr ; output 5:0 raddr0 ; wire 5:0 raddr0 ; output 5:0 raddr1 ; wire 5:0 raddr1 ; output 5:0 raddr2 ; wire 5:0 raddr2 ; output 5:0 raddr3 ; wire 5:0 raddr3 ; input clk ; wire clk ; input reset ; wire reset ; input data_en ; wire data_en ; input 31:0 dat0_out

7、 ; wire 31:0 dat0_out ; input 31:0 dat1_out ; wire 31:0 dat1_out ; input 31:0 dat2_out ; wire 31:0 dat2_out ; input 31:0 dat3_out ; wire 31:0 dat3_out ; input 31:0 coef ; wire 31:0 coef ; output 3:0 raddr_coef ; wire 3:0 raddr_coef ; output 16:0 ih ; reg 16:0 ih ; output 16:0 il ; reg 16:0 il ; outp

8、ut 16:0 qh ; reg 16:0 qh ; output 16:0 ql ; reg 16:0 ql ; output 15:0 coef_h ; wire 15:0 coef_h ; output 15:0 coef_l ; wire 15:0 coef_l ; input 32:0 mih ; wire 32:0 mih ; input 32:0 mil ; wire 32:0 mil ; input 32:0 mqh ; wire 32:0 mqh ; input 32:0 mql ; wire 32:0 mql ; output 15:0 idat ; reg 15:0 id

9、at ; output 15:0 qdat ; reg 15:0 qdat ; output rrc_en ; reg rrc_en ; assign coef_h=coef31:16; assign coef_l=coef15:0; reg 3:0 cnt; always(posedge clk or negedge reset) if(reset) waddr<=0; else if(data_en) waddr<=waddr+1'b1; always(posedge clk or negedge reset) if(reset) cnt<=0; else if(

10、data_en) cnt<=0; else cnt<=cnt+1'b1; assign raddr_coef = cnt3?cnt-3:cnt-1'b1; /系數(shù)的地址 assign raddr0 =cnt3?waddr-23+cnt2:0:waddr-23+cnt2:0-1; assign raddr1 =cnt3?waddr-23+cnt2:0+6:waddr-23+cnt2:0+6-1; assign raddr2 =cnt3?waddr-cnt2:0-1:waddr-cnt2:0-1 ; assign raddr3 =cnt3?waddr-cnt2:0-6-

11、1:waddr-cnt2:0-6-1 ; / 4個(gè)RAM的讀地址 always(posedge clk or negedge reset) if(reset) ih<=0; else ih<=dat0_out31,dat0_out31:16+dat2_out31,dat2_out31:16; always(posedge clk or negedge reset) if(reset) il<=0; else il<=dat1_out31,dat1_out31:16+dat3_out31,dat3_out31:16; always(posedge clk or neged

12、ge reset) if(reset) qh<=0; else qh<=dat0_out15,dat0_out15:0+dat2_out15,dat2_out15:0; always(posedge clk or negedge reset) if(reset) ql<=0; else ql<=dat1_out15,dat1_out15:0+dat3_out15,dat3_out15:0; /為防止相加溢出,補(bǔ)一位 wire 35:0 ex_mih,ex_mil,ex_mqh,ex_mql; assign ex_mih=mih32? 3'b111,mih:3&#

13、39;b000,mih; assign ex_mil=mil32? 3'b111,mil:3'b000,mil; assign ex_mqh=mqh32? 3'b111,mqh:3'b000,mqh; assign ex_mql=mql32? 3'b111,mql:3'b000,mql; /為防止累加溢出,補(bǔ)3位 reg 35:0 sum_ih,sum_il,sum_qh,sum_ql; always(posedge clk or negedge reset) if(reset) sum_ih<=0; else if(cnt2:0=3

14、9;b001) sum_ih<=0; else sum_ih<=sum_ih+ex_mih; always(posedge clk or negedge reset) if(reset) sum_il<=0; else if(cnt2:0=3'b001) sum_il<=0; else sum_il<=sum_il+ex_mil; always(posedge clk or negedge reset) if(reset) sum_qh<=0; else if(cnt2:0=3'b001) sum_qh<=0; else sum_qh&

15、lt;=sum_qh+ex_mqh; always(posedge clk or negedge reset) if(reset) sum_ql<=0; else if(cnt2:0=3'b001) sum_ql<=0; else sum_ql<=sum_ql+ex_mql; always(posedge clk or negedge reset) if(reset) rrc_en<=0; else if(cnt2:0=3'b000) rrc_en<=1'b1; else rrc_en<=0; /產(chǎn)生RRC濾波器輸出數(shù)據(jù)使能信號(hào) al

16、ways(posedge clk or negedge reset) if(reset) idat<=0; else if(cnt2:0=3'b000) idat<=(sum_ih+sum_il)>>13)+1'b1)>>1; always(posedge clk or negedge reset) if(reset) qdat<=0; else if(cnt2:0=3'b000) qdat<=(sum_qh+sum_ql)>>13)+1'b1)>>1; /產(chǎn)生I,Q兩路數(shù)據(jù)并對(duì)末位進(jìn)行四舍

17、五入 endmodule如果是半帶濾波器,考慮到內(nèi)插在奇數(shù)拍時(shí)有 y=a(0)*x(n)+0*0+a(2)*x(n-1)+.+0*0+a(0)*x(0)=a(0)*(x(n)+x(0) +a(2)*( x(n-1)+x(1).而在偶數(shù)拍有 y=a(0)*0+0*x(n-1)+a(2)*0+.+a(m)x(m)+0.+0;及只有中間項(xiàng)有數(shù),其他各項(xiàng)不是系數(shù)為0,就是數(shù)據(jù)為0,且中間項(xiàng)的系數(shù)一般是0.5,利用這一點(diǎn)可以減少FPGA的資源。 HB濾波器的設(shè)計(jì)和RRC十分相似,如下圖圖5 HB濾波器設(shè)計(jì)框圖而CIC濾波器相對(duì)簡(jiǎn)單些,它實(shí)際上就是一些加法和一些減法,其設(shè)計(jì)框圖如圖6所示 圖6 CIC濾波

18、器設(shè)計(jì)框圖在CIC濾波器中需要注意的是d1clk模塊,它只是為了調(diào)整時(shí)序。3.設(shè)計(jì)對(duì)時(shí)序要求的滿足: 完成代碼設(shè)計(jì)后除了要保證仿真正確同時(shí)也要保證電路的時(shí)序能夠滿足設(shè)計(jì)的要求。從圖1可以看到信號(hào)的頻率隨著每一次內(nèi)插而變高,那各個(gè)濾波器的工作時(shí)鐘是不是也要逐步提高呢?實(shí)際上比較好的方法是時(shí)鐘始終工作在最高頻率61.44M上而用使能信號(hào)來標(biāo)識(shí)數(shù)據(jù)。當(dāng)數(shù)據(jù)的速率是3.84M時(shí)就每16個(gè)61.44M時(shí)鐘DUC電路只有一個(gè)時(shí)鐘,便于時(shí)鐘的時(shí)序分析。如果我們使用Xilinx的ISE進(jìn)行編譯,建議綜合工具使用synplify Pro而不要使用ISE本身的XST。選用synplify Pro的方法如圖7 圖7 在ISE中選用synplify P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論