基于fpga的dds实验报告(xidian )

基于fpga的dds实验报告(xidian )

ID:21961573

大小:1.88 MB

页数:11页

时间:2018-10-25

基于fpga的dds实验报告(xidian )_第1页
基于fpga的dds实验报告(xidian )_第2页
基于fpga的dds实验报告(xidian )_第3页
基于fpga的dds实验报告(xidian )_第4页
基于fpga的dds实验报告(xidian )_第5页
资源描述:

《基于fpga的dds实验报告(xidian )》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于FPGA的DDS实现实验报告1.1.实验目的1.课程目标通过以多种方法设计并制作一个直接数字合成器,借以增强骨干班同志科研工作能力,学会具体制作实现DDS的实践技能,达到锻炼并提高学员解决实际问题能力的目的。2.具体目的(1)信息技术资料和科技文档的搜集、编写、翻译、处理能力,采用办公应用软件如OCR、CAT、FDF-WORD、PPT等。(2)DDS芯片硬件与软件的设计、制作及编程能力,包括信号放大、衰减、匹配和变换能力,EDA软件仿真设计能力,FPGA编程应用能力。(3)微机应用能力,仪器仪表知识和测量方法、技术。1.2.实验原理直接数字频率合成器

2、(DirectDigitalSynthesizer)是从相位概念出发直接合成所需波形的一种频率合成技术。DDS以较高的频率通过相位累加来产生给定频率的数字化波形。根据抽样理论,产生的最高频率不能超过1/2时钟频率(Nyquist速率)。图1、正弦波形的采样及系统时钟频率形成图1所示的是产生频率为1/8时钟频率的正弦波形的相位累加过程。圆周表示每个时钟周期p/4相位累加过程,圆周上的各点表示给定时刻的相位值,正弦波表示相应的幅度,相位到幅度的转化是通过查表来实现的。具体地说就是,在每个时钟周期内,存储在输入频率寄存器中的相位值和相位累加器中的值相加,利用得

3、到的结果相位值查表,得到相应的正弦幅度值,最后输出该值。DDS系统的基本原理图2:图2DDS系统的原理图由图2可知,我们用FPGA实现N位相位累加器和波形存储器,DAC芯片实现数模转换,模拟电路实现滤波器。相位累加器可对频率控制字的2进制码进行累加运算,产生的累加结果作为ROM查找表的取样地址值,而此查找表中储存了一个周期的正弦波幅度值。存储器ROM在参考时钟驱动下输出正弦波幅度值,直到相位累加器加满产生溢出,从而完成一个周期,用ROM的输出值来驱动DAC,然后经滤波即可转换成所需要的模拟正弦波形,也就是DDS信号的频率周期。1.实验过程1.1.实验时间

4、2007年10月19日——2007年11月13日1.2.实验小组成员旷海、李文杰、朱建光、任宇峰1.3.实验仪器方正电脑一台日立V-1565(100MHz)示波器一台FPGA设计板一块QuartusII7.1版软件1.4.实验步骤1、DDS的FPGA实现方案a、VHDL语言编写程序实现12位累加器(源代码见后)b、delphi语言编程对正弦信号量化编码生成.mif文件(1)编码方法:由于,,存在负值,二存储器中的数是以无符号的二进制数来表示,我们对正弦值统一加1,使,为了用二进制表示,考虑到查找表以12位输出,其能表示的最大十进制值为,我们对,取小数点后

5、三位,提高了精度。例如:DEPTH=4096;WIDTH=12;ADDRESS_RADIX=dec;DATA_RADIX=dec;CONTENTBEGIN0:2000;1:2003;2:2006;…………………………4095:1997;END;(2)mif文件实现:用delphi编程,对正弦值进行量化,一周期采样4096点,加上文件头和尾生成mif文件。图3mif文件生成器c、调用LPM_ROM模块载入mif文件实现波形储存器d、编译后生成矢量波形文件进行软件模拟仿真,查找FPGA编程中问题e、根据实验板电路图对FPGA管脚进行配置,编译下载到实验板进行

6、硬件实现,并用示波器观察输出波形,拨动开关实现频率控制字变化,观察输出波形的变化并记录2、VHDL程序(相位累加器的实现)--phase_add.vhd--clk为参考时钟信号--K为频率控制字(8位)--Address为累加器输出作为正弦查找表的地址线--调用库文件LIBRARYieee;USEieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;--实体部分entityadd_phaseisport(clk:instd_logic;K:in

7、std_logic_vector(7downto0);Address:outstd_logic_vector(11downto0));endadd_phase;--结构体--B为累加步进--acc为累加器中间变量ARCHITECTURESYNOFadd_phaseISsignalacc:std_logic_vector(11downto0);signalB:std_logic_vector(11downto0);beginprocess(clk)beginif(clk'eventandclk='1')thenB<='0'&K&"000";acc<=acc

8、+B;endif;Address<=acc;endprocess;endSYN;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。