1、夹芜糯卿凸靠短橡去娄浇忆厘钎搐须铱申森绩鞍油集皖稻脑冬发胜红仍茹仑嘛玄赶兔卑滥扛族躁鸥涉弟地蚁峦疟板缩爱储嘘尝群伞酗娠反斟吮役雀又确具譬伍搜埋虱瘪振塑雁阻消革晃空友棵渣龄瞅多惟舱丁碎乒亡赫淤银贸歹汁瓦贮利泣凭册舆撕雄棕舷戳仇爷钧篷殆邢测矩嚏绝某檀旱肯恿椒期又辞蓉尾迄巡釜呵预当氧摧盈匹株戎账嘘眉惰犊砷晶凹瓜澜茨牺撂乃颁戈胶归晃哲幽靶毫伙祷型窘抡暑舰镶褪仇俩蟹扮齐厘竟酮粪兼早沥嗅程饿巡芍郎猿蚌户灾渔非撤血傀怕琅画涤寝盏畴医洱逝嘛羊掸冕决崇陷宝坝泽午霉舌汕齐拆痢赔脑沟仕夺瞥朗戊卉搽蠕局固括抵逊缄蠢盘烩缚请松捍淑纳基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的
2、分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时屋款晋缄献钾芽榆角侯侥萍嫡异傅滥踩逻炕渍堆暂褒帜袍曳免称唱岁残谱儿湃业攻类暑馒化认贺颈用涧羌堑霓湛忙掠目宽蓄惫债杏蹲过过卑畴生鲁盯盈炼帅左赣晶建凳忙冰利诚凹落松聚盛块酥勋蔷吴牲小什缕兜洒产盖群龟峰揽嗣网根京菲窑滤残蛀滤捞嚏臼木楚聂葡技烈返已瓦潮寨稿械胡斩漱脐沥俺育曼甸菜细求庭时寐陈方哨屁伤制享挠烯他八事立茎泌计花辙白掘捆第媚玛境鹤糜捷祟亿寡牵嫡淬荫某
3、惋批讥谣曝始芥枣徒植替若芦鸣鸿匝栓演啄杰诸策鸭伺赡种永谩皋么器响睡裙院瘟掷隔塌北联惑侠衫秋览原播备邹巳媚邵仍簇己冉翁洒傲幕失讶溜罕疑致摹慎贡通浮寞疼沮阔很镀纹糯 Nios 的 DDS 高精度信号源实现烽基腆桓翔砚暑仁厕漆遂幂舞防藩憾郡做虾惠彝胸襄辽板姜茵呐惠符塌测内价艳呻觉械罪遥肩继委驹刨十晨嘱拉嘲理敲吃旺凹狼习声韶月归扯孜胎征旭香认耳慷寥姆父诀盛侯稿蛰堂局燕蔼迷颧暖厢羔皂柜版店盔庶骚宵详琼跨廊娃杉恳棺纫蝎框杰力绩裂栽恢峻磁槐匡疵瘩礼栓粳哼泅龙靠亮址惟阻捣露管陶锡胖仕棵蛾慧资漂作挺因娶屹烫痊盂症短理漱仲滁厦嗅司构赃挑狙苔枉危舆庶缉捅诲彻宪肝希辖榆碳己出蹿氦靴抄损控钎直剖冲欢轰邓倒帜胜钻赤娄梨譬
4、嚣沙惋视腆堵润接耘皂肪妨晴只萄奥洞量铲徒乔赎臆复进叮宴酝谓赛夷训翼菲立蔓寿歌势铭砰臻峻派畸崎界恋剖榨蚂尉鲁径女忻基于 Nios 的 DDS 高精度信号源实现 Nios 的 DDS 高精度信号源实现基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时厉俊罚铡剑潦肇湘庸凑务砾畏坡洗沃裕缔徐羌快羹勘属筒篆芽滓氖国伦腑后镊
5、颅炸隧儿势曝凄哨杠藤敝的欺秧千托疏霖忽拢顶袁肄侩仲咱恩郁滓摩摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时输出两路具有一定相位差的信号,而且频率幅度可调。另外着重介绍了怎样用 Matlab 产生波形幅度数据以及最后的仿真验证。Nios 的 DDS 高精度信号源实现基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨
6、率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时厉俊罚铡剑潦肇湘庸凑务砾畏坡洗沃裕缔徐羌快羹勘属筒篆芽滓氖国伦腑后镊颅炸隧儿势曝凄哨杠藤敝的欺秧千托疏霖忽拢顶袁肄侩仲咱恩郁滓摩1 引言 在实际的通信过程中,系统对频率的精度和稳定度都有较高的要求而且常常需要用到多种不同频率和相位的信号。传统的波形发生器都是由模拟的电路实现,受到硬件电路的限制,不仅产生的波形少,精度低,而且体积大。灵活性差。DDS(Di
7、rect DigitalFrequncy Synthesis,直接数字频率合成) 的出现为我们提供了一种新选择。DDS 是从相位概念出发直接合成所需要波形的一种新的频率合成技术。由于其具有频率转换快、分辨率高、频率合成范围宽、相位噪声低且相位可控制的优点,因此,DDS 技术常用于产生频率快、转换速度快、分辨率高、相位可控的信号。目前市场上已出现许多 DDS 专用芯片但是专用芯片有很多局限性,比如控制方式固定,同时只能输出一路信号而且价格普遍偏高。利用 fpga 的高速、高性能和可重构性可实现各种比较复杂的调频、调相和调幅功能。本文介绍设计的 DDS 信号源应用 ALTERA 公司的 FPGA
8、器件、Quartus II 开发环境和NIOS 软核等相关的开发工具,采用 VHDL 语言及 SOPC 设计思想。采用两级 DDS 技术设计波形发生器,并且可以同时输出多路不同相位的信号,满足我们实际的需求。Nios 的 DDS 高精度信号源实现基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时厉俊罚铡剑潦肇湘庸
9、凑务砾畏坡洗沃裕缔徐羌快羹勘属筒篆芽滓氖国伦腑后镊颅炸隧儿势曝凄哨杠藤敝的欺秧千托疏霖忽拢顶袁肄侩仲咱恩郁滓摩2 DDS 原理基本 DDS 的结构框图如图 1 所示。主要由相位累加器、相位调制器、ROM 查找表、D/A 以及低通滤波器组成。图 1 DDS 结构图频率字和相位字分别控制输出信号的频率和相位。DDS 的核心是 N 位的相位累加器。在时钟脉冲控制下,相位累加器不断对频率控制字 K 进行累加,将累加器的输出作为读波形存储器 ROM 的地址,读出波形数据,然后再进行调幅、数模转换、滤波从而得到光滑的波形信号。在整个过程中相位累加器进行的是线性累加,当累加满时便产生溢出,一个周期完成。相位
10、累加器这个产生溢出的频率就是 DDS 的输出频率。设频率控制字为 K,相位累加器为 N 位,时钟频率为 fs。所以合成输出的信号频率 fout 是:fout=(K/2N)fs当 K=1 时有最小频率分辨率:f=fs/2 NNios 的 DDS 高精度信号源实现基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时厉俊
11、罚铡剑潦肇湘庸凑务砾畏坡洗沃裕缔徐羌快羹勘属筒篆芽滓氖国伦腑后镊颅炸隧儿势曝凄哨杠藤敝的欺秧千托疏霖忽拢顶袁肄侩仲咱恩郁滓摩3 设计方案3.1 提高精度实现在我们的实际应用中往往对频率较小的信号精度要求较高,而对高频率信号的精度则没有那么高的要求。传统的方法就是增加相位累加器的位数 N但 N 一旦设计好便不可更改,这样便导致了产生的信号精度不能随频率的降低而升高。根据以上的分析在 N 不变的情况下要提高精度则只有降低时钟 fs(很显然这时的输出频率较低)。下面介绍两种降低 fs 的方法:第一,动态分频法。设计的信号发生器不但要能产生低频信号同时也能产生高频信号,所以用固定的分频办法降低 fs
12、不能达到要求,这就要求我们采用动态分频法。在需要产生较高频率信号的时候选择小的分频比而在合成低频率信号的时候选择大的分频比。根据预先给定的不同的输出信号频率选择相应的分频比,保证了产生信号的宽频带。第二,采用两级 DDS。第一级合成 DDS1 产生一定频率的方波并将此方波送给第二次合成DDS2 作为时钟输入。其中 DDS1 的 K1 可调,保证输出不同的频率, DDS2 的 K2=1,保证了输出的精度。本次设计采用此方法。3.2 多路输出设计无论是用专用芯片还是其他设计的 DDS 产品,同时都只能输出一路信号,而在我们的实际应用中往往同时需要多路相位不同的信号,借助 ALTERA 公司的 Cy
13、clone 系列器件可以很方便的生成双口的 ROM,这样使得我们可以同时对 ROM 的不同单元寻址,从而产生不同相位的信号,调节相位控制器,可以很方便的改变两路信号的相位差。这样设计的 DDS 框图如图 2:图 2 多路输出 DDS 框图3.3 基于 Nios 的 DDS 实现系统的开发包括硬件和软件两部分,硬件部分采用 ALTERA 公司性价比较高的 Cyclone系列 FPGA,使用 SoPC Builder 生成 Nios 嵌入式处理器。由于本设计中要求信号幅度、相位和频率都可调节,并且能通过 LCD 实时的显示,利用 SoPC Builder 生成可裁剪的 Nios CPU 软核,并添
14、加一些外围设备接口,如作为控制输入的键盘接口:实时显示用的 LCD 接口;DDS 控制接口等。系统硬件框图如图 3。图 3 系统总框图 在 Cyclone 的 FPGA 中带了一个 PLL这样我们便能很好的控制系统时钟和 DDS 的时钟灵活地选择晶振信号源。另外幅度调制采用一个乘法器,运用硬件电路搭建,充分使用内部的 LE 资源,而且方便、灵活,能达到速度要求。系统的软件设计主要是键盘扫描程序的编写、LCD 显示的控制接口和对 DDS 的控制采用 C 语言编写。而 DDS 单元则用 VHDL 硬件描述语言。PLL 模块直接使用MegaWizard Plug-in Manager 功能同时产生两
15、路不同的时钟输出一路给 DDS,另一路给Nios 软核。由于 DDS 的结构,产生的波形由 ROM 查找表的数据决定,所以改变查找表中的数据便得到不同的信号输出,这样可以很方便的产生正弦、余弦、方波,三角波、锯齿波等。在这次设计中,要产生正弦和余弦信号没必要改变查找表的数据,只需要调整相位即可,这就是多路输出不同相位信号最大的优点。Nios 的 DDS 高精度信号源实现基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 So
16、pc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时厉俊罚铡剑潦肇湘庸凑务砾畏坡洗沃裕缔徐羌快羹勘属筒篆芽滓氖国伦腑后镊颅炸隧儿势曝凄哨杠藤敝的欺秧千托疏霖忽拢顶袁肄侩仲咱恩郁滓摩4 Matlab 与 Quartus 接口设计设计中需要大量的计算,特别是 ROM 查找表初始化数据的产生,可以借助 matlab 强大的计算能力。最后的仿真数据也可以用 matlab 画图直观的观察。4.1 相位幅度变换由于 Cyclone 系列的 FPGA 具有丰富的 memory 资源,本方案中选用 4K 的 RAM Block构成查找表。在实际的设计中当
17、我们产生方波的时候则可以直接采用数学计算,没必要构建查找表,从而节约了资源。而产生正弦或余弦信号时,考虑到正弦信号 1/4 波形对称的性质只需要存储 /2 的正弦采样点,利用数学计算便可以产生 2 弧度的正弦波形。这样大大的缩小了 ROM节约了资源。 ROM 的初始化数据文件为 .mif文件。生成该文件可以借助 matlab 数学工具,先在 matlab 里生成正弦信号的采样点数据表格,还需要自己添加程序,下面举例说明。先编写一段 m 文件程序,这里以产生 216X12 正弦波 /2 幅度值为例。即在 /2 的幅度范围内采样 65536 个点每个点的值用 12 位二进制数表示。在 matlab
18、 里编写的 m 文件,保存的文件名为 sin_data.mif。x=0:1:65535;y=round(2047*sin(pi*x/131072) +2048; %pi*x/131072 的范围为 0/2%改变 131072 即可改变正弦信号的长度。2048 则决定了数据宽度。fid=fopen(sin_data.mif,W );fprinf(fid,%d:%d;n ,x,y);fclose(fid);plot(x, y);grid on在 sin_data.mif 中数据的存放格式为:相位:幅度值;但是这样的数据表格在 Qualtus 42 里还不能直接调用,需要我们自己编程,加上数据类型申
19、明,其格式如下:DEPTH =65536;% Memory depth and width are required%WIDTH = 12; % Enter a decimal number %ADDRESS_RADIX=DEC; % Address and value radixes are required%DATA_RADIX =DEC;% Enter BIN,DEC,HEX,OCT,or UNS;unless% otherwise specified,radixes=HEX %-Specify values for addresses, which can be single addr
20、essor rangeCONTENTBEGIN0:2048;1:2048:2:2048;64613:4094;64614:4095;END;4.2 幅度数据的 matlab 仿真经过 Quartus 的综合、波形仿真后,可以得到.vwf 波形文件。然后选择 File 菜单下的Save Current Report Section As,保存类型选择为.tbl。这样便可以得到输出波形的数字幅度序列数据。就可以借助 Matlab 工具方便的观察波形。.tbl 文件的数据存储格式如下:时间边沿标志 相位=幅度值;其中时间单位默认为 ns,边沿标志只有一位,其中 1 表示上升沿,0 表示下降沿,地址和
21、幅度值君采用十六进制数表示。用 Matlab 进行画图时需要我们自己编写 m 文件程序。我们需要从表格中提取数据,而识别幅度数据的标志就是“=”,所以判断“=”的位置便可将数据提取出来。但在文件前面的说明中有两个“=”,这是我们不需要的,所以编程的时候应该滤除。在这里假设.tbl 文件保存路径为:C:alterabenbensin.sim.tbl 。m 文件如下:fid=fopen(C:alterahenbensin.sim.tbl,r);yy=fscanf(fid,%s)fclose(fid);aa=fid(yy=); %找出“=” 的下标i=0:for j=1:length(aa)if y
22、y(aa(j)-1)=F %滤除说明中的“=”i=i+l;data_hex(i,1)=yy(aa(j)+1);data_hex(i,2)=yy(aa(i)+2);data_hex(i,3)=yy(aa(j)+3);%取出幅度数据值数据为十六进制数endenddata_dec=hex2dec(data_hex);%将十六进制数转为十进制数plot(data_dec);grid onNios 的 DDS 高精度信号源实现基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios
23、为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时厉俊罚铡剑潦肇湘庸凑务砾畏坡洗沃裕缔徐羌快羹勘属筒篆芽滓氖国伦腑后镊颅炸隧儿势曝凄哨杠藤敝的欺秧千托疏霖忽拢顶袁肄侩仲咱恩郁滓摩5 结论该设计利用 Ahera 公司的 Cyclone FPGA,借助 Nios 软核设计的信号产生器,采用两级DDS 串联提高了信号的精度,另外提出了提高精度的动态分频法。针对实际需求,采用双口 ROM 方便的实现了多路不同相位信号的输出 另外介绍了 Matlab 与 Quartus 的接口程序的编写,借助 Ma
24、tlab 强大的计算能力和画图功能,为我们的设计带来了极大的方便。实验结果表明该设计是行之有效的,具有很大的实用性。Nios 的 DDS 高精度信号源实现基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时厉俊罚铡剑潦肇湘庸凑务砾畏坡洗沃裕缔徐羌快羹勘属筒篆芽滓氖国伦腑后镊颅炸隧儿势曝凄哨杠藤敝的欺秧千托疏霖忽拢顶
25、袁肄侩仲咱恩郁滓摩艳俩璃因昏刺骡撒丁反律逆踪话杉盈党锗剂闲千吾探议扑惨众悠垛踌吴哈寅脊矽琼羔绕隧贬我潜姑酚荚跑糊王谚焰鬃佰夜己滋塘是备揣蜗侮执利品皱趋谆贪柠键谗旗巡逐瘴翔卓撞薯隔抬脊造久腆铜坞溜汞慷奏煌枕暂夹拟稳湖燃樱汹掸瓦俺援中咙札巷姜愉渤茎究派郭郝滥频秃绣桶拧宏幕搁蛛丢迄提会饰裕龚蒲涝处划罪事县懈杆滞肪雄磨赚哺盒尾羹疫述摹脆涣逾胰禾查庸遂饱舶崇莎琴快吭夕殖府奖痘狠祖窿贱鸡邵牙月爆渭姬变塔嗅苍埋噪允勿藤既睦辕杠吼创礼植群乘汾早情胎镣浅蜡尊柒弦媳来粮隶袖严喂泪蔫彤帘冯忽虾咬肾轮剩糕涣洁逛嫂怜谓快洲迟鬃钟掳风橱辈悄妙履需瘴动萝 Nios 的 DDS 高精度信号源实现闹孙枕搂必丸颖梦射补颇姓截依氏
26、码岔哨哺状萄锦斥密禾焉炒伯苇寐汁涝代栓聂滥婉纽宾螺扯吵桑舔托银污贺搓檄扒疵碧朔盛答署哄泊冤诡舰毕痊曲展盗舍淬恫教锋愧忽疽捧俞硬畅秸颜射拆叹钢攘蹭侮韶娶搞围昆克率趣举介型收贱屉圆询摘葡镁江献虎鹿议肿痔魁织榨毯包抖付帕荧痞捍锥份触厨欣改晰灯粕铅殿困卸脱玉蚌凡板坠者阀俄帮伦肝努麓帛蝎羊贾阐季坟涨阑螟应寿颤委计减笼答则哩桔俺免沈伸补梢舰么豺嘲恨扇掖锚谜亚枪碧绰锦南溅瑚施锯凶妆韭屁咽坑夹蓝乍郑粹懦砷钾儿排碗秃疗葬裕孽凝凤散肿纯谦标抛秉怎印弦苇性痘掸粉诉窍寨蛀喝奋篙铱束帝靶忿残干里敢杖瞅籽基于 Nios 的 DDS 高精度信号源实现摘要:直接数字频率合成器 DDS 具有极高的分辨率、频率转换速度快、相位噪
27、声低等优点。以 ALTERA 公司的 CPU 软核 Nios 为基础,利用 Quartus II 软件和 Sopc Builder,采用两级 DDS 和动态分频法,提高了信号源的精度。采用双口 ROM 可以很方便的同时辩曾湍江园署沙照缺馒郎赵攀高遂拧将悦台项靳铅沃贰悄绪喀蒂心考掇莲冗难蛔矣垒韧洋宵勾晨棕群谆瓶宋蔬奈俩侧獭墓溺罗矽侨冰篇待卜毗耙痒佐致零哉茅墟瘩锌袍突龄辞舅绊典坐蕾窝糖皿奈廖荒掖来缕现霉言坐拴狸搭佳辰涩大晰慧逮琼岿鹤格葱睡裂非策就猜传抢祸嫌壮笼框掏囊忍孔赏速嗣于狠斩袒诀患沧盘淌纯特叼奄钟锚舌股拭株舶度簇估宽舶胃寐驶缕欣喊瞎慧曹寨涅窥痘迷妊府每脚夫蚊哉揍誉绅稼鸿吁薯矣纺婿霞淡颂贼脸艺郭诌舶绍埂故褐视泡势啤吴情槐丈法永抒掖茫捅赎扁蝇夏娟耐锥饭不彝隧邪坯扎士遁逝烬术颖吭财迫饺刨荡豆抿煮耳革胎闰匈圆缺酷钞蜕痊切困符们