ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:445.54KB ,
资源ID:8121109      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8121109.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(数字中频基本原理及FPGA实现.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数字中频基本原理及FPGA实现.doc

1、 数字中频的基本原理和FPGA的实现 1. 基本原理 数字中频主要分两部分,数字上变频(DUC)和数字下变频(DDC)。它们的主要功能是相反,但原理和实现的方法是十分相似。在R8905项目中由于采用了零中频技术,数字上变频和下变频有一些差别,数字上变频没有了NCO模块。另外为了降低输出信号的峰均比又加入了削峰模块CFR,而CGC模块的引入则是补偿削峰所引起的功率损失。 图1 数字上变频模块框图 在数字下变频中RSSI模块是信号的功率检测模块,它配合AGC电路将信号的输出功率稳定在一定范围内。

2、 图2 数字下变频模块框图 在DDC和DUC中主要使用3种滤波器分别是RRC,HB和CIC,它们个自有个自的特点。 RRC滤波器一般来讲阶数比较多,多用于低频处。由于它的阶数比较多,所以可以得到比较锐利的带通特性,但它所用的乘法器比较多。CIC滤波器不需要乘法器,但它的带内不是很平坦,适合用在高频处。而HB滤波器的特性正好在它们之间,它有约一半的系数是0可以讲乘法器的个数减少一半。 削峰模块CFR实际上也是一组滤波器,它的功能是将CDMA信号中的峰值信号减小一些,以减小输出信号的峰均比,使射频功率放大器的效率更高。削峰的模块框图如图3

3、 图3 单级削峰示意图 削峰的原理是这样的一个复信号(I,Q)如果它的模大于某个门限,就将其减去这个门限得到一个复信号(dI,dQ),否则(dI,dQ)=(0,0)。将(dI,dQ)送到fir滤波器中,fir滤波器是一个低通滤波器将峰值限定在一定的带宽内,防止影响临道。将原信号(I,Q)减去滤波后的信号(fir_i,fir_q)就得到了削峰的值。如果有必要这这样的削峰可以连续做几次,在R8905设计中削峰用了两次。 2. 滤波器的设计 由于在滤波的同时还有内插和抽取,所以充分利用这一特性可以减少FPGA使用的资源。另外滤波器的系数一般都是对称

4、的,可以将头和尾的数相加再乘滤波器的系数,这样可以大大减少乘法器的使用。以R8905中的上变频RRC为例来说明: 设a(n)为RRC滤波器的系数而x(n)为3.84M输入数据则考虑了内插后的滤波器的数学表达式为 y=a(0)*x(n)+a(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实现的逻辑框图如下 图4 DUC RRC滤波器实现逻辑图 其中使用了4个乘法器和四个RAM以及一个ROM来存数据。

5、RRC_CTR_6144模块控制这些乘法器和ROM。参考代码如下: ////////////////////////////////////////// ////////////////////////////////////////// // Date : Sat Jul 21 10:51:51 2007 // // Author : duan chenghong // // Company : zte // // Description : // RRC滤波器用了4个RAM和4个乘法器完成IQ两路的滤波功能,

6、 // I,Q的处理方法完全相同。数据同时写入4个RAM中,但读的地址不// 同,由于RRC滤波器的系数是对称的所以读RAM的地址也是对称的,将地址 // 对称的RAM读出数相加再和RRC滤波器系数相成再累加就可以得到最后的结果 ////////////////////////////////////////// ////////////////////////////////////////// module rrc_ctr_6144 (waddr, raddr0, raddr1, raddr

7、2, 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, qdat, rrc_en); output [5:0] waddr ; reg [5:0] waddr ; output [5:0] raddr0 ; wire [5:0] raddr0 ;

8、 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 ; wire [31:0] dat0_out ; input [31:

9、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 ; re

10、g [16:0] il ; output [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 [3

11、2:0] mqh ; input [32:0] mql ; wire [32:0] mql ; output [15:0] idat ; reg [15:0] idat ; output [15:0] qdat ; reg [15:0] qdat ; output rrc_en ; reg rrc_en ; assign coef_h=coef[31:16]; assign coef_l=coef[15:0]; reg [3:0] cnt; always@(posedge clk or negedge reset)

12、 if(~reset) waddr<=0; else if(data_en) waddr<=waddr+1'b1; always@(posedge clk or negedge reset) if(~reset) cnt<=0; else if(data_en) cnt<=0; else cnt<=cnt+1'b1; assign raddr_coef = cnt[3]?cnt-3:cnt-1'b1;

13、//系数的地址 assign raddr0 =cnt[3]?waddr-23+cnt[2:0]:waddr-23+cnt[2:0]-1; assign raddr1 =cnt[3]?waddr-23+cnt[2:0]+6:waddr-23+cnt[2:0]+6-1; assign raddr2 =cnt[3]?waddr-cnt[2:0]-1:waddr-cnt[2:0]-1 ; assign raddr3 =cnt[3]?waddr-cnt[2:0]-6-1:waddr-cnt[2:0]-6-1 ; // 4个RAM的读地址 always@(p

14、osedge clk or negedge reset) if(~reset) ih<=0; else ih<={dat0_out[31],dat0_out[31:16]}+{dat2_out[31],dat2_out[31:16]}; always@(posedge clk or negedge reset) if(~reset) il<=0; else il<={dat1_out[31],dat1_out[31:16]}+{dat3_out[31],dat3_out[

15、31:16]}; always@(posedge clk or negedge reset) if(~reset) qh<=0; else qh<={dat0_out[15],dat0_out[15:0]}+{dat2_out[15],dat2_out[15:0]}; always@(posedge clk or negedge reset) if(~reset) ql<=0; else ql<={dat1_out[15],dat1_out[1

16、5:0]}+{dat3_out[15],dat3_out[15:0]}; //为防止相加溢出,补一位 wire [35:0] ex_mih,ex_mil,ex_mqh,ex_mql; assign ex_mih=mih[32]? {3'b111,mih}:{3'b000,mih}; assign ex_mil=mil[32]? {3'b111,mil}:{3'b000,mil}; assign ex_mqh=mqh[32]? {3'b111,mqh}:{3'b000,mqh}; assign ex_mql=mql[32]?

17、 {3'b111,mql}:{3'b000,mql}; //为防止累加溢出,补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(cnt[2:0]==3'b001) sum_ih<=0; else sum_ih<=sum_ih+ex_mih;

18、 always@(posedge clk or negedge reset) if(~reset) sum_il<=0; else if(cnt[2:0]==3'b001) sum_il<=0; else sum_il<=sum_il+ex_mil; always@(posedge clk or negedge reset) if(~reset) sum_qh<=0;

19、 else if(cnt[2:0]==3'b001) sum_qh<=0; else sum_qh<=sum_qh+ex_mqh; always@(posedge clk or negedge reset) if(~reset) sum_ql<=0; else if(cnt[2:0]==3'b001) sum_ql<=0; else sum_ql<=

20、sum_ql+ex_mql; always@(posedge clk or negedge reset) if(~reset) rrc_en<=0; else if(cnt[2:0]==3'b000) rrc_en<=1'b1; else rrc_en<=0; //产生RRC滤波器输出数据使能信号 always@(posedge clk or negedge reset)

21、 if(~reset) idat<=0; else if(cnt[2:0]==3'b000) idat<=(((sum_ih+sum_il)>>13)+1'b1)>>1; always@(posedge clk or negedge reset) if(~reset) qdat<=0; else if(cnt[2:0]==3'b000) qda

22、t<=(((sum_qh+sum_ql)>>13)+1'b1)>>1; //产生I,Q两路数据并对末位进行四舍五入 endmodule 如果是半带滤波器,考虑到内插 在奇数拍时有 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))...... 而在偶数拍有 y=a(0)*0+0*x(n-1)+a(2)*0+....+a(m)x(m)+0...+0; 及只有中间项有数,其他各项不是系数为0,就是数据为0,且

23、中间项的系数一般是0.5,利用这一点可以减少FPGA的资源。 HB滤波器的设计和RRC十分相似,如下图 图5 HB滤波器设计框图 而CIC滤波器相对简单些,它实际上就是一些加法和一些减法,其设计框图如图6所示 图6 CIC滤波器设计框图 在CIC滤波器中需要注意的是d1clk模块,它只是为了调整时序。 3.设计对时序要求的满足: 完成代码设计后除了要保证仿真正确同时也要保证电路的时序能够满足设计的要求。从图1可以看到信号的频率随着每一次内插而变高,那各个滤波器的工作时钟是不是也要逐步提高呢?实际上比较好的方法是时钟始终工作在最高频

24、率61.44M上而用使能信号来标识数据。当数据的速率是3.84M时就每16个61.44M时钟产生一个使能,而当速率是7.68M时就每8个61.44M时钟产生一个使能。这样整个DUC电路只有一个时钟,便于时钟的时序分析。如果我们使用Xilinx的ISE进行编译,建议综合工具使用synplify Pro而不要使用ISE本身的XST。选用synplify Pro的方法如图7 图7 在ISE中选用synplify Pro 在ISE的集成环境中有两个地方可以对时钟进行约束,分别是synplify Pro的sdc约束文件和ISE的UCF约束文件。sdc文件主要通过改变代码生成的

25、电路来提高速度,而UCF通过布局布线来提高速度,另外用面积约束的方法把相关模块放在一起减少布线延时也可以提高速度。点击synplify 界面中红线圈定的图标可以编辑时钟约束文件。 图8 synplify中加约束文件 同样在ISE中也要加约束文件 图9 在ISE中加约束文件 在ISE中可以添加时序约束和面积约束来提高时序。添加约束的时候可以加入一些过约束,如果你希望时钟可以跑到10ns,可以将约束设为8~9ns。但无论如何良好的代码设计是电路时序的根本保证。 如果时序不能满足,ISE的时序分析工具可以帮助你指出最长延时的路径,点击如图10所示分析关键可以看到关键路径。 图10 ISE时序分析工具 ISE的时序分析工具清楚的告诉你那条路径时序有问题,如图11所示 图11 路径延时的分析报告 4. 怎样验证频域电路 滤波器电路设计一个最大的问题是它是针对频域的设计,算法又比较复杂而我们一般的仿真工具都是针对时域的。怎么认定我们的设计是正确的往往是一个比较困难的事情。有以下几种方法可以帮助判断。 1. 输入一个等效幅度为1的冲击信号,滤波器的输出将是滤波器的各个系数 2. 输入单音信号,分析输出信号的频谱是否只有一个单音频点。 3. 和matlab仿真的数据逐个比较

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服