DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 130|回复: 0
打印 上一主题 下一主题

基于FPGA的DDC的设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 15:07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要:数字下变频技术是软件无线电的核心技术之一。本文首先介绍了DDC的组成结构,然后详细分析了DDC各功能模块的工作原理,通过Modelsim完成了DDC其主要模块的仿真和调试,并进行初步系统级验证。在仿真的基础上使用了FPGA开发系统,实测了DDC的性能。
关键词:DDC;数控振荡器;查表法;数字混频器;现场可编程门阵列
0 引言
??? 近年来,软件无线电已经成为通信领域一个新的发展方向,数字下变频技术(Digital Down Converter-DDC)是软件无线电的核心技术之一,也是计算量最大的部分,一般通过FPGA或专用芯片等硬件实现。
??? 现场可编程门阵列(FPGA)是一种由用户自行配置的高密度专用数字集成芯片,具有小型化、低功耗、可编程、数字化和快速方便实用的特点。FPGA的灵活性与高速处理的能力,使其由一种灵活的逻辑设计平台发展为重要的信号处理元件,在各种软件无线电产品中得到了广泛的应用。
??? 本文设计和实现了基于FPGA的可编程DDC(DDC),用于宽带数字中频软件无线电接收机中,完成数字下变频、数据抽取等功能。采用自顶向下的模块化设计方法,将整个DDC划分为基本单元,实现这些功能模块并组成模块库。在具体应用时,优化配置各个模块来满足具体无线通
信系统性能的要求。
??? DDC由数控振荡器(NCO)、数字混频器和积分清洗滤波器三部分组成,如图1所示。从原理上比较,DDC和模拟下变频器是一致的,都是输入信号与本地振荡信号混频,然后经低通滤波器滤除高频分量,得到基带信号。



?
1 DDC的设计
1.1 数控振荡器的设计
??? NCO是DDC中的重要组成部分,NCO的目标是产生频率可变的正交正、余弦样本信号。NCO产生正弦波样本通常可采用查表法。即通过输入的相位数据来寻址查表以输出相应的正弦波幅值。如图2所示,码发生器由相位累加器和查找表构成。累加器按已定的步长进行累加,在每个参考时钟周期累加,并将结果存入寄存器。当结果溢出时重复执行,累加的过程可以看作NCO输出频率的周期。使用查找表选择相应的SIN和COS值输出。若使用字长为N位宽的累加器,对于某一频率控制字A,输出频率fout与输入频率控制字A的关系为:
???


其中,fclk为系统时钟。只要改变控制字A的大小,就可以控制输出频率fout。fout变化的最小步长△f由累加器的数据宽度决定。即:
???



1.2 数字混频器和积分清洗滤波器的设计及实现
?? 在本设计中,全部过程均采用数字化处理,DDC由一对载波混频器和一对积分清洗滤波器组成。载波混频器主要用来实现下变频,积分清洗滤波器用来去掉高频分量,数据信息通过监测相邻两个符号时间内的相位变化来解调数据。两路信号在经过积分清洗滤波器后,输出信号的函数形式仍然不变,只是信号的幅值发生了变化。
??? 由于利用FPGA设计时,采用的是数字化的解调过程,因此在用VHDL实现时,需要将送过来的基于比特数据类型的位矢量先转化为有符号数,然后再进行数字运算,运算过程结束后,再将其转化为位矢量以便于进行信号的传输。两个载波混频器的输入信号为前端送来的2比特的采样数据,取值分别为±1和±3,其中,“00”代表‘1’,“01”代表‘3’,“10”代表‘-1’,“11”代表‘-3’,同样,本地载波取值±1,±3,这样经过载波混频后得到了±1、±3、±9等6个值。将这6个值用三位二进制数表示,高位为符号位,0表示正,1表示负,低位为数据位00、01、10分别代表1、3、9。所以载波混频器比较简单,用简单的门电路就可以实现,图3为混频器的综合图。对于本系统来说,虽然载波NCO的输出不是一个方波,但对整体设计没什么影响。




??? 在实现积分清洗滤波时,采取了前后两个样点相加(基于主时钟mainclk),然后由chip时钟(chipclk)进行抽样输出。这样做可以回避低通滤波器的同步问题。因为如果采取累加10次(Tchip=10Tmain)然后输出累加量方式的话,需要准确确定Iout和Qout的chip同步点,这样才能恢复出正确的基带信号。因此接收进来的QPSK信号经过下变频和低通滤波后的波形如图5中的i out和q out所示。
                          
                       
                          
                               
2 DDC的系统仿真
??? 通过VHDL语言编写NCO模块,其在Modelsim中的仿真如图4所示。






??? 其中:clk为基准时钟信号;i和q分别为sin、cos两路载波输出;carr clock为载波周期时钟,用来记录载波周期个数;load p为装载初始相位有效信号;p_init为初始相位值;fctrl为频率控制字。本设计用的是全局时钟作为工作时钟,所以虽然载波NCO的输出不是一个方波,但对整体设计没什么影响,本地载波在一个周期内有4个相位,输出为系统时钟的分频信号。
??? 图5是数字混频器仿真图,其中,sample in为接收到的信号,本文中用伪随机码;sin in、cos in为输入的两路载波信号;i out、q out为输出结果。



3 结论
??? 本文所设计的简单DDC系统可以完成基本的下变频功能,适用于各种需要进行下变频的场合。并可免去使用专业DDC芯片的麻烦,有效实现所期望的功能。程序设计和实验表明,将接收进来的经过采样量化的数字中频信号进行数字式下变频在单片FPGA中完成是完全可行的。
?
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-28 20:40 , 耗时 0.193970 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表