FPGA波形发生器实训报告Word文档格式.docx

上传人:b****5 文档编号:19614595 上传时间:2023-01-08 格式:DOCX 页数:31 大小:1.36MB
下载 相关 举报
FPGA波形发生器实训报告Word文档格式.docx_第1页
第1页 / 共31页
FPGA波形发生器实训报告Word文档格式.docx_第2页
第2页 / 共31页
FPGA波形发生器实训报告Word文档格式.docx_第3页
第3页 / 共31页
FPGA波形发生器实训报告Word文档格式.docx_第4页
第4页 / 共31页
FPGA波形发生器实训报告Word文档格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

FPGA波形发生器实训报告Word文档格式.docx

《FPGA波形发生器实训报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《FPGA波形发生器实训报告Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。

FPGA波形发生器实训报告Word文档格式.docx

4参考文献------------------------------------------------------------------------------------16

5附录------------------------------------------------------------------------------------------17

1基于DDS技术的信号发生器设计

1.1功能要求

具有产生正弦波、三角波、锯齿波3种周期性波形的功能。

1.2整体设计

如图1.1所示:

图1.1

相位累加器的作用:

在时钟的作用下,进行相位累加。

波形存储器的作用:

进行波形的相位—幅值转换。

频率预置与调节电路的作用:

实现频率控制量的输入。

D/A转换器的作用:

把已经合成的正弦波的数字量转换成模拟量。

滤除生成的阶梯形正弦波中的高频成分,将其变成光滑的正弦波。

如图1.2所示:

图1.2

1.3DDS技术的基本原理

DDS这种结构主要由相位累加器、相位调制器、波形ROM查找表、D/A构成。

其中相位累加器、相位调制器、波形ROM查找表是DDS结构中的数字部分,由于具有数控频率合成的功能,又合称为NCO[2]。

它的工作原理是:

将要产生的波形数据存入波形存储器,然后在参考时钟的作用下,对输入的频率数据进行累加,并且将累加器的输出一部分作为读取波形存储器的地址,将读出的波形数据经D/A转换为相应的模拟电压信号。

本研究的重点就是用VHDL来实现DDS的功能,能够达到高精度的输出,同时标准波形数据生成存放在ROM中,可以简化运算过程,提高运算速度,加快反应时间。

2FPGA硬件系统设计

2.1功能要求

在本设计中,利用FPGA,采用EDA(ElectronicDesignAutomation)中自顶向下(top-to-down)的设计方法,选用基于相位累加器的直接数字合成/DDS技术来完成数字信号发生器各功能模块的设计。

本设计主要通过VHDL语言实现频率控制、波形控制、波形数据的提取、波形的产生工作。

其中,波形数据运用VHDL语言编写。

控制部分主要采用产生高低电平的拨码开关控制。

程序下载到FPGA上实现,经过D/A输出波形。

并通过Altera公司QuartusII9.0软件进行波形的仿真,从而完成整个设计。

本设计的任务是设计一个基于FPGA的数字信号发生器,根据任务书要求必须达到以下要求:

1.利用EDA开发系统、QuartusII9.0软件实现数字信号发生器的设计;

2.根据整体电路的工作原理,完成各个子模块的设计及实现;

3.对数字信号发生器完成VHDL语言描述;

4.该数字信号发生器能够产生正弦波、方波、三角波、锯齿波信号;

5.产生的波形信号频率和幅度可通过按键进行调节;

6.用按键调节实现各种波形的转换。

2.2FPGA最小系统简介

本设计使用是FPGA芯片,其典型逻辑门数(包括逻辑门和RAM)为50000门,最大可用系统门数为116000门,逻辑单元(Logicelements)为2880个,逻辑阵列模块(Logicarrayblocks)为360个,嵌入式阵列模块(Embeddedarrayblocks)为10个,RAM总容量为20480字节,用户可用的I/O引脚最多为310个。

芯片的工作电压为+5V。

其内部结构如图2.1所示。

图2.1芯片结构图

通常情况下在硬件调试的过程中一般使用下载电缆进行下载,而当调试完成以后要用配置芯片对FPGA进行配置。

配置芯片在每次系统上电以后自动将配置文件加载到FPGA中形成电路。

2.3FPGA硬件系统组成

该数字信号发生器系统主要由输入部分、FPGA部分、D/A转换部分、频率、幅值调节和波形转换部分组成。

原理图如图2.2所示。

图2.2数字信号发生器系统原理图

2.4FPGA外围电路设计

D/A转换器电路的设计:

从波形RAM中读出的幅度量化数据还只是一个数字信号,要得到最后的输出信号必须经过数模转换器。

因此在波形RAM之后要设计一个D/A转换电路。

数模(D/A)转换电路的作用是把已经合成的波形幅值的数字量转换成模拟量,其速度和特性直接影响整个系统的性能。

D/A转换器件的首要特性要求是高速,其次是转换位数,本设计中选用8位的D/A芯片DAC0832。

波形幅度量化序列经D/A转换后成为阶梯波。

频率合成器对D/A转换器的分辨率有一定的要求,D/A转换器的分辨率越高,合成的波形台阶数就越多输出的波形的精度也就越高。

D/A的输出用电压形式表示一般应为:

式中D为D/A的输入数据值,N为D/AC的位数,即通常所指的D/AC的分辨率,

为输入D/A的参考电压。

D/A转换电路的设计首先是要选择一款合适的D/A转换芯片。

D/A转换芯片种类繁多。

选择D/A转换芯片要根据很多因素来确定,最主要的就是要考虑字长和转换速度。

本设计采用DAC0832作为D/A转换器件,其具有数字量的输入锁存功能,DAC0832芯片的输出通过放大器OP07,即可用示波器观察。

100KΩ的电位器在+5V和0V电压间为DAC0832提供参考电压。

D/A转换电路的原理图如图2.3所示:

图2.3D/A转换电路的原理图

2.5程序设计

mif文件生成

使用C程序:

#include<

stdio.h>

#include"

math.h"

main()

{inti;

floats;

for(i=0;

i<

1024;

i++)

{s=sin(atan

(1)*8*i/1024);

printf("

%d:

%d;

\n"

i,(int)((s+1)*1023/2));

}

}

生成该mif文件后需要创建该rom对应的eda程序,即创建对应的.vhd文件,创建完成后要注意程序内访问rom文件的地址是否正确。

同时对这vhd文件另存为一个新的工程,再编译,生成对应的bsf。

2.5.1锯齿波产生程序设计及仿真

锯齿波模块

锯齿波生成程序如下:

Q<

=SUB_WIRE0(9DOWNTO0);

ALTSYNCRAM_COMPONENT:

ALTSYNCRAM

GENERICMAP(

PORTMAP(

CLOCK0=>

CLOCK,

ADDRESS_A=>

ADDRESS,

Q_A=>

SUB_WIRE0

);

ENDSYN;

程序详见附录

仿真图形如图2.4.1:

图2.4.1

2.5.2三角波产生程序设计及仿真

三角波模块

三角波产生程序如下:

仿真图形如图2.4.2:

图2.4.2

2.5.3正弦波产生程序设计及仿真

正弦波模块

正弦波程序如下:

BEGIN

CLOCK_ENABLE_INPUT_A=>

"

BYPASS"

CLOCK_ENABLE_OUTPUT_A=>

仿真图形如图2.4.3:

图2.4.3

2.5.4顶层程序设计及仿真

(1)程序的功能

整合所有的子程序,产生所需要的波形

(2)结构图或实体图

(3)顶层程序(输出方案)

U1:

ADDER32BPORTMAP(A=>

F32B,B=>

D32B,S=>

DIN32B);

U2:

REG32BPORTMAP(DOUT=>

D32B,DIN=>

DIN32B,LOAD=>

CLK1);

U3:

ADDER10BPORTMAP(A=>

P10B,B=>

D32B(31DOWNTO22),S=>

LIN10B);

U4:

REG10BPORTMAP(DOUT=>

SIN10B,DIN=>

LIN10B,LOAD=>

U5:

SIN_ROMPORTMAP(ADDRESS=>

SIN10B,Q=>

V1,CLOCK=>

U6:

SJBROMPORTMAP(ADDRESS=>

V2,CLOCK=>

U7:

JCBROMPORTMAP(ADDRESS=>

V3,CLOCK=>

U8:

XZQPORTMAP(SEL1=>

SEL,D1=>

V1,D2=>

V2,D3=>

V3,Q=>

FOUT);

U9:

FPQPORTMAP(INCLK=>

CLK,OUTCLK=>

END;

(4)仿真波形及分析

2.5.5分频程序及作用

(1)程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYONEMHZIS

PORT(CLKIN:

INSTD_LOGIC;

--时钟信号输入

CLKOUT:

OUTSTD_LOGIC);

--时钟信号输出

ENDONEMHZ;

ARCHITECTUREONEMHZOFONEMHZIS

SIGNALDATA:

INTEGERRANGE0TO149;

SIGNALQ:

STD_LOGIC;

PROCESS(CLKIN)

IFRISING_EDGE(CLKIN)THEN

IF(DATA=50)THEN--此句为你想要的分频比,DATA=0,1,2,3,4.......9的分频比为1,2,3,,,10

DATA<

=0;

Q<

=NOTQ;

ELSE

=DATA+1;

ENDIF;

CLKOUT<

=Q;

ENDPROCESS;

(2)作用

由于FPGA提供的频率为50MHz,在不加处理的情况下,DAC无法分辨,且调频无法实现。

(3)频率区间

先对其500分频,故而

为50MHz/500

由于有公式:

DAC内N=10;

所能产生的各个频率包括

97.65*(000001B~111111B)Hz

2.5硬件测试及结果分析

通过杜邦线接高低电平于FPGA,频率控制与相位控制接0上电,进行调试。

可以产生正弦、锯齿、三角波,但是在放大后,图形不光滑,有许多尖刺出现。

接上滤波后,大为缓解。

3设计分析与总结

3.1故障分析

设计过程中出现的故障分析

故障一:

(1)现象:

只能产生一种波形

原因分析:

FPGA芯片烧录错误、引脚使用错误。

(2)现象:

波形不光滑。

原因分析:

没有接滤波,波形为直接合成,接上滤波后大为缓解。

3.2功能分析

采用杜邦线来选择波形,01是正弦波,10是三角波,11锯齿波。

(1为高电平,0接地)

3.3设计总结及感想

在这里感谢指导老师给我耐心的指导,在这次设计期间,碰到许多专业方面的难题,李老师都一一予以解答,特别在教学繁忙的情况下,还为我们提供了许多宝贵的资料和意见,对我们进行了详细的分析,使我们更加顺利地完成此次课程设计。

通过这一个多月的时间,使我学到许多知识,明白了许多以前上课时无法理解的知识,还积累了一些较简单的问题解决方案。

与此同时也感谢同组做课题设计的同学,在设计过程中,有许多东西我不懂,他们都耐心地给我讲解,给予我技术支援,帮助我解决了不少难题。

4参考文献

[1]朱小斌.电子测量仪器.北京:

电子工业出版社,1996

[2]MichaelLauterbachArtpin.任意波形发生器在通讯测试中的应用.电子产品世界,1997

[3]史海明.个人仪器多功能任意波形发生器的研制.仪表技术,1988

[4]林青.DDS在数字调制中的应用.无线电工程,2001

[5]张开增,张迎新,王尚忠.高分辨率高稳度宽带函数发生器的研制.华北工学院学报

[6]华清远见嵌入式培训中心.FPGA应用开发入门与典型实例.北京:

人民邮电出版社,2008

[7]薛刚.基于DDS技术的任意信号发生器.自动化与仪器仪表,1995

[8]陈冠百.锁相与频率合成.北京:

电子工业出版社,1995

[9]赵新民.智能化仪器设计基础.哈尔滨:

哈尔滨工业大学出版社,1999

[10]M.S.高西,K.R.赖克.现代滤波器设计.北京:

科学出版社,1989

5附录

硬件原理图

实验波形图。

最低值

理论值

三个频率分别为

97.65Hz97.60Hz97.63Hz,相对误差为:

-0.027%

理论输出

488.30Hz488.23Hz488.36Hz,相对误差为:

+0.0102%

683.51Hz、683.51Hz、683.58Hz,相对误差为:

-0.0072%

均在范围,十分精确。

详细程序

主程序

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDDSIS

PORT(CLK:

SEL:

INSTD_LOGIC_VECTOR(1DOWNTO0);

FWORD:

INSTD_LOGIC_VECTOR(7DOWNTO0);

PWORD:

FOUT:

OUTSTD_LOGIC_VECTOR(9DOWNTO0));

ENDENTITY;

ARCHITECTUREONEOFDDSIS

COMPONENTREG32B

PORT(LOAD:

DIN:

INSTD_LOGIC_VECTOR(31DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDCOMPONENT;

COMPONENTREG10B

INSTD_LOGIC_VECTOR(9DOWNTO0);

COMPONENTADDER32B

PORT(A:

INSTD_LOGIC_VECTOR(31DOWNTO0);

B:

S:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

COMPONENTADDER10B

INSTD_LOGIC_VECTOR(9DOWNTO0);

OUTSTD_LOGIC_VECTOR(9DOWNTO0));

COMPONENTSIN_ROM

PORT(ADDRESS:

INSTD_LOGIC_VECTOR(9DOWNTO0);

CLOCK:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(9DOWNTO0));

COMPONENTSJBROM

COMPONENTJCBROM

COMPONENTXZQ

PORT(SEL1:

D1,D2,D3:

COMPONENTFPQ

PORT(INCLK:

OUTCLK:

SIGNALF32B,D32B,DIN32B:

STD_LOGIC_VECTOR(31DOWNTO0);

SIGNALP10B,LIN10B,SIN10B:

STD_LOGIC_VECTOR(9DOWNTO0);

SIGNALV1,V2,V3:

SIGNALCLK1:

F32B(27DOWNTO20)<

=FWORD;

F32B(31DOWNTO28)<

="

0000"

;

F32B(19DOWNTO0)<

00000000000000000000"

P10B(9DOWNTO2)<

=PWORD;

P10B(1DOWNTO0)<

00"

三角波

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1