SOPCEDA综合课程设计报告直接数字频率合成器.docx
- 文档编号:30248339
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:17
- 大小:194.83KB
SOPCEDA综合课程设计报告直接数字频率合成器.docx
《SOPCEDA综合课程设计报告直接数字频率合成器.docx》由会员分享,可在线阅读,更多相关《SOPCEDA综合课程设计报告直接数字频率合成器.docx(17页珍藏版)》请在冰豆网上搜索。
SOPCEDA综合课程设计报告直接数字频率合成器
江西理工大学应用科学学院
SOPC/EDA综合课程设计报告
设计题目:
直接数字频率合成器
设计者:
学号:
班级:
指导老师:
完成时间
设计报告
综合测试
总评
格式
(10)
内容
(40)
图表
(10)
答辩
(20)
平时
(20)
目录
一.直接数字频率合成器的简介2
二.基于FPGA实现DDS4
三.DDS的工作原理5
四.直接数字合成器(DDS)设计流程7
4.1相位累加器7
4.2相位寄存器REG1的VHDL源程序:
8
4.3正弦查找表ROM的VHDL源程序:
9
4.4相位寄存器REG2的VHDL源程序:
12
4.5系统的整体组装DDS的VHDL源程序:
13
五.系统仿真结果分析15
5.1相位累加器SUM99的仿真结果15
5.2相位寄存器RG1的仿真结果15
5.3正弦查找表ROM仿真结果16
5.4相位寄存器REG2的仿真结果16
5.5整个系统DDS的仿真结果17
六.课程总结18
七.设计参考文献19
一.直接数字频率合成器的简介
1971年,美国学者J.Tierncy、C.M.Reader和B.Gold提出了以全数字技
术从相位概念出发直接合成所需波形的一种新的频率合成原理。
随着技术和水平的提高,一种新的频率合成技术——直接数字频率合成(DDS,DirectDigtalSynthesis)技术得到了飞速发展。
DDS技术是一种把一系列数字形式的信号通过DAC转换成模拟形式的信号合成技术,目前使用最广泛的一种DDS方式是利用高速存储器作查找表,然后通过高速DAC输出已经用数字形式存入的正弦波。
DDS技术具有频率切换时间短(<20ns),频率分辨率高(0.01Hz),频率稳定度高,输出信号的频率和相位可以快速程控切换,输出相位可连续,可编程以及灵活性大等优点,它以有别于其他频率合成方法的优越性能和特点成为现代频率合成技术中的姣姣者。
DDS广泛用于接受机本振、信号发生器、仪器、通信系统、雷达系统等,尤其适合跳频无线通信系统。
DDS技术的实现依赖于高速、高性能的数字器件。
可编程逻辑器件以其速度高、规模在、可编程,以及有强大EDA软件支持等特性,十分适合实现DDS技术。
Altera是著名的PLD生产厂商,多年来一直占据着行业领先的地位。
Altera的PLD具有高性能、高集成度和高性价比的优点,此外它还提供了功能全面的开发工具和丰富的IP核、宏功能外它还提供了功能全面的开发工具和丰富的IP核、宏功能库等,因此Altera的产品获得了广泛的应用。
Altera的产品有多个系列,按照推出的先后顺序依次为Classic系列、MAX(MultipleArrayMatrix)系列、FLEX(FlexibleLogicElementMatrix)系列、APEX(AdvancedLogicElementMatrix)系列、ACEX系列、Stratix系列以及Cyclone等。
Max+plusII是Altera提供的一个完整的EDA开发软件,可完成从设备输入、编译、逻辑综合、器件适配、设计仿真、定时分析、器件编程的所有过程。
QuartusII是Altera近几年来推出的新一代可编程逻辑器件设计环境,其功能更为强大。
用Max+plusII设计DDS系统数字部分最简单的方法是采用原理图输入。
相位累加器调用lmp_add_sub加减法器模拟,相位累加器的好坏将直接影响到整个系统的速度,采用流水线技术能大幅度地提升速度。
波形存储器(ROM)通过调用lpm_rom元件实现,其LPM_FILE的值*.mif是一个存放波形幅值的文件。
波形存储器设计主要考虑的问题是其容量的大小,利用波形幅值的奇、偶对称特性,可以节省3/4的资源,这是非常可观的。
为了进一步优化速度的设计,可以选择菜单Assign|GlobanProjectLogicSynthesis的选项Optimize10(速度),并设定GlobalProjectLogicSynthesisStyle为FAST,经寄存器性能分析最高频率达到100MHz以上。
用FPGA实现的DDS能工用在如此之高的频率主要依赖于FPGA先进的结构特点。
虽然有的专用DDS芯片的功能也比较多,但控制方式却是固定的,因此不一定是我们所需要的。
而利用FPGA则可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良好的实用性。
就可成信号质量而言,专用DDS芯片由于采用特定的集成工艺,内部数字信号抖动很小,可以输出高质量的模拟信号;利用FPGA也能输出较高质量的信号,虽然达不到专用DDS芯片的水平,但信号精度误差在允许范围之内。
DDS问世之初,构成DDS元器件的速度的限制和数字化引起的噪声这两个主要缺点阻碍了DDS的发展与实际应用。
近几年超高速数字电路的发展以及对DDS的深入研究,DDS的最高工作频率以及噪声性能已接近并达到锁相频率合成器相当的水平。
随着这种频率合成技术的发展,现已广泛应用于通讯、导航、雷达、遥控遥测、电子对抗以及现代化的仪器仪表工业等领域。
该实验的目的是为了以实验的形式展示直接数字频率合成器的工作原理。
通过实验使我们对直接数字频率合成技术有一个全面、直观的认识。
二.基于FPGA实现DDS
DDS技术的实现依赖于高速、高性能的数字器件。
可编程逻辑器件以其速度高、规模大、可编程,以及有强大EDA软件支持等特性,十分适合实现DDS技术。
Ahera是著名的PLD生产厂商,多年来一直占据着行业领先的地位。
Ahera的PLD具有高性能、高集成度和高性价比的优点,此外它还提供了功能全面的开发工具和丰富的IP核、宏功能库等,因此Altera的产品获得了广泛的应用。
Altera的产品有多个系列,按照推出的先后顺序依次为Classic系列、MAX(MultipleArrayMatrix)系列、FLEX(FlexibleLogicElementMatrix)系列、APEX(AdvancedLogicElementMatrix)系列、ACEX系列、Stratix系列以及Cyclone等。
用QuartuslI设计DDS系统数字部分最简单的方法是采用原理图输入。
相位累加器调用lmp_add_sub加减法器模块,相位累加器设计的好坏将直接影响到整个系统的速度,采用流水线技术能大幅度地提升速度。
波形存储器(ROM)通过调用lpm_rom元件实现,其LPM_FILE的值*.mif是一个存放波形幅值的文件。
波形存储器设计主要考虑的问题是其容量的大小,利用波形幅值的奇、偶对称特性,可以节省3/4的资源,这是非常可观的。
用FPGA实现的DDS能工作在如此之高的频率主要依赖于FPGA先进的结构特点。
DDS问世之初,构成DDS元器件的速度的限制和数字化引起的噪声这两个主要缺点阻碍了DDS的发展与实际应用。
近几年超高速数字电路的发展以及对DDS的深入研究,DDS的最高工作频率以及噪声性能已接近并达到锁相频率合成器相当的水平。
随着这种频率合成技术的发展,现已广泛应用于通讯、导航、雷达、遥控遥测、电子对抗以及现代化的仪器仪表工业等领域。
数字频率合成器DDS具有频率转换时间短、频率分辨率高、输出相位连续和全数字化、可编程、便于集成等优点,在现代电子器件、通信技术、医学成像、无线、PCS/PCN系统、雷达、卫星通信中,具有很广泛的应用。
DDS技术是一种把一系列数字形式的信号通过DAC转换成模拟形式的信号合成技术,目前使用最广泛的一种DDS方式是利用高速存储器rom作查找表,然后通过高速DAC输出已经用数字形式存入的正弦波。
三.DDS的工作原理
图1是DDS的基本原理图,频率控制字M和相位控制字分别控制DDS输出正(余)弦波的频率和相位。
DDS系统的核心是相位累加器,它由一个累加器和一个N位相位寄存器组成。
每来一个时钟脉冲,相位寄存器以步长M增加。
图1DDS基本原理图
DDS的FPGA实现设计
根据图1,并假定相位控制字为0,这时DDS的核心部分相位累加器的FPGA的设计可分为如下几个模块:
相位累加器SUM99、相位寄存器REG1、正弦查找表ROM和输出数据寄存器REG2,其内部组成框图如图2所示。
图中,输入信号有时钟输入CLK,使能端EN,复位端RESET,频率控制字K,输出信号为Q。
图2DDS内部组成框图
首先利用MATLAB或C语言编程对正弦函数进行采样;然后对采样数据进行二进制转换,其结果作为查找表地址的数值。
用MATLAB语言编写的正弦函数数据采集程序如下:
CLEARTIC;
T=2*PI/1024;
t=[0:
T:
2*pi];
y=255*sin(t);
round(y);
用C语言编写的正弦函数数据采样程序如下:
#include"stdio.h"
#include"math.h"
Main()
{intI;
Floats;
For(i=0;i<1024;i++)
{s=sin(actan
(1)*8*i/1024);
Printf("%d,%d;\n",(int)((s+1)*1023/2));
}
}
两个程序运行之后所得结果是一致的。
四.直接数字合成器(DDS)设计流程
4.1相位累加器
相位累加器是DDS最基本的组成部分,用于实现相位的累加并存储其累加结果。
时钟脉冲每触发一次,加法器便将频率控制数据与累加寄存器输出的累加相位数据相加,然后把相加后的结果送至累加寄存器的数据输入端。
累加寄存器将加法器在上一个时钟作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。
这样,相位累加器在参考时钟的作用下将进行线性相位累加,相位累加器累加满量时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDS合成信号的一个频率周期,累加器的溢出频率就是DDS输出的信号频率。
相位累加器SUM99VHDL程序:
--SUM99.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSUM99IS
PORT(K:
INSTD_LOGIC_VECTOR(9DOWNTO0);
CLK:
INSTD_LOGIC;
EN:
INSTD_LOGIC;
RESET:
INSTD_LOGIC;
OUT1:
OUTSTD_LOGIC_VECTOR(9DOWNTO0));
ENDENTITYSUM99;
ARCHITECTUREARTOFSUM99IS
SIGNALTEMP:
STD_LOGIC_VECTOR(9DOWNTO0);
BEGIN
PROCESS(CLK,EN,RESET)IS
BEGIN
IFRESET='1'THEN
TEMP<="0000000000";
ELSE
IFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
TEMP<=TEMP+K;
ENDIF;
ENDIF;
ENDIF;
OUT1<=TEMP;
ENDPROCESS;
ENDARCHITECTUREART;
相位累加器(SUM99)模块框图
4.2相位寄存器REG1的VHDL源程序:
--REG1.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYREG1IS
PORT(D:
INSTD_LOGIC_VECTOR(9DOWNTO0);
CLK:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(9DOWNTO0));
ENDENTITYREG1;
ARCHITECTUREARTOFREG1IS
BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
Q<=D;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
相位寄存器(REG1)模块框图
4.3正弦查找表ROM的VHDL源程序:
--ROM.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYROMIS
PORT(ADDR:
INSTD_LOGIC_VECTOR(9DOWNTO0);
CLK:
INSTD_LOGIC;
OUTP:
OUTSIGNED(7DOWNTO0));
ENDENTITYROM;
ARCHITECTUREARTOFROMIS
BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
CASEADDRIS
WHEN"0000000000"=>OUTP<="00000000";
WHEN"0000000001"=>OUTP<="00000010";
WHEN"0000000010"=>OUTP<="00000011";
WHEN"0000000011"=>OUTP<="00000101";
WHEN"0000000100"=>OUTP<="00000110";
WHEN"0000000101"=>OUTP<="00001000";
WHEN"0000000110"=>OUTP<="00001001";
WHEN"0000000111"=>OUTP<="00001011";
WHEN"0000001000"=>OUTP<="00001101";
WHEN"0000001001"=>OUTP<="00001110";
WHEN"0000001010"=>OUTP<="00010000";
WHEN"1111101001"=>OUTP<="11011100";
WHEN"1111101010"=>OUTP<="11011110";
WHEN"1111101011"=>OUTP<="11011111";
WHEN"1111101100"=>OUTP<="11100001";
WHEN"1111101101"=>OUTP<="11100010";
WHEN"1111101110"=>OUTP<="11100100";
WHEN"1111101111"=>OUTP<="11100101";
WHEN"1111110000"=>OUTP<="11100111";
WHEN"1111110001"=>OUTP<="11101001";
WHEN"1111110010"=>OUTP<="11101010";
WHEN"1111110011"=>OUTP<="11101100";
WHEN"1111110100"=>OUTP<="11101101";
WHEN"1111110101"=>OUTP<="11101111";
WHEN"1111110110"=>OUTP<="11110000";
WHEN"1111110111"=>OUTP<="11110010";
WHEN"1111111000"=>OUTP<="11110011";
WHEN"1111111001"=>OUTP<="11110101";
WHEN"1111111010"=>OUTP<="11110111";
WHEN"1111111011"=>OUTP<="11111010";
WHEN"1111111100"=>OUTP<="11111011";
WHEN"1111111101"=>OUTP<="11111101";
WHEN"1111111110"=>OUTP<="11111110";
WHEN"1111111111"=>OUTP<="00000000";
WHENOTHERS=>OUTP<="00000000";
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
正弦查找表(ROM)模块框图
4.4相位寄存器REG2的VHDL源程序:
--REG2.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYREG2IS
PORT(D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYREG2;
ARCHITECTUREARTOFREG2IS
BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
Q<=D;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
相位寄存器(REG2)模块框图
4.5系统的整体组装DDS的VHDL源程序:
--DDS.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYDDSIS
PORT(K:
INSTD_LOGIC_VECTOR(9DOWNTO0);
EN:
INSTD_LOGIC;
RESET:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYDDS;
ARCHITECTUREARTOFDDSIS
COMPONENTSUM99IS
PORT(K:
INSTD_LOGIC_VECTOR(9DOWNTO0);
EN:
INSTD_LOGIC;
RESET:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
OUT1:
OUTSTD_LOGIC_VECTOR(9DOWNTO0));
ENDCOMPONENTSUM99;
COMPONENTREG1IS
PORT(D:
INSTD_LOGIC_VECTOR(9DOWNTO0);
CLK:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(9DOWNTO0));
ENDCOMPONENTREG1;
COMPONENTROMIS
PORT(CLK:
INSTD_LOGIC;
ADDR:
INSTD_LOGIC_VECTOR(9DOWNTO0);
OUTP:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDCOMPONENTROM;
COMPONENTREG2IS
PORT(D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDCOMPONENTREG2;
SIGNALS1:
STD_LOGIC_VECTOR(9DOWNTO0);
SIGNALS2:
STD_LOGIC_VECTOR(9DOWNTO0);
SIGNALS3:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
U0:
SUM99PORTMAP(K=>K,EN=>EN,RESET=>RESET,CLK=>CLK,OUT1=>S1);
U1:
REG1PORTMAP(D=>S1,CLK=>CLK,Q=>S2);
U2:
ROMPORTMAP(ADDR=>S2,CLK=>CLK,OUTP=>S3);
U3:
REG2PORTMAP(D=>S3,CLK=>CLK,Q=>Q);
ENDARCHITECTUREART;
DDS模块框图
五.系统仿真结果分析
系统的有关仿真如图3~5所示:
5.1相位累加器SUM99的仿真结果
图3:
相位累加器SUM99的仿真结果
5.2相位寄存器RG1的仿真结果
图4:
相位寄存器RG1的仿真结果
5.3正弦查找表ROM仿真结果
图5:
正弦查找表ROM仿真结果
5.4相位寄存器REG2的仿真结果
图6:
相位寄存器REG2的仿真结果
5.5整个系统DDS的仿真结果
图7:
整个系统DDS的仿真结果
六.课程总结
首先,我要感谢老师的辛勤指导与帮助,感谢学院提供了优良的实验环境与场所,使我能够顺利完成本次的课程设计,获得了一些关于直接数字频率合成器的基本知识,丰富与加深了本人对EDA课程的认识与了解。
本人经过了两周的学习,初步掌握了直接数字频率合成器的工作原理,知道研究一门学术需要具备艰苦奋斗、坚持不懈、独立钻研的工作作风。
在这短时间,不懂的就问同学,感谢同学们的热心回答。
用FPGA实现DDS调频信号电路较采用专用DDS芯片更为灵活,只要改变FPGA中ROM内的数据和控制参数,DDS就可以产生任意调制波形,且分辨率高,具有相当大的灵活性。
相比之下,DDS的功能完全取决于设计需求,可以复杂也可以简单,而且FPGA芯片还支持在系统现场升级。
另外,将DDS设计嵌入到FPGA芯片所构成的系统中,其系统成本并不会增加多少,而购买专用芯片的价格则是前者的很多倍。
所以采用FPGA来设计DDS系统具有很高的性价比。
通过此次课程设计,初步了解了直接数字频率合成器的基本状况;本课题在经过了近两周的努力,采用FPGA设计DDS,使用的是VHDL描述语言,在QuartusII专用软件上实现了时序仿真,最终产生正弦波。
本次设计对设计原理和设计结果进行了一定的理论分析,通过实验使我对直接数字频率合成技术有一个初步、直观、基本的了解与认识。
最后,再次感谢辛勤的老师们。
七.设计参考文献
1.王忠峰,SOPC/EDA综合课程设计指导书
2.潘松,黄继业.EDA技术与VHDL(第三版).北京:
清华大学出版社,2009
3.潘松,黄继业.EDA技术实用教程.北京,科学出版社,2002
4.李国丽,朱维勇.EDA与数字系统设计.北京,机械工业出版社,2004
5.
6.
7.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOPCEDA综合课程设计报告 直接数字频率合成器 SOPCEDA 综合 课程设计 报告 直接 数字 频率 合成器