简易信号发生器的设计实现.docx

上传人:b****1 文档编号:3472730 上传时间:2023-05-05 格式:DOCX 页数:30 大小:42.25KB
下载 相关 举报
简易信号发生器的设计实现.docx_第1页
第1页 / 共30页
简易信号发生器的设计实现.docx_第2页
第2页 / 共30页
简易信号发生器的设计实现.docx_第3页
第3页 / 共30页
简易信号发生器的设计实现.docx_第4页
第4页 / 共30页
简易信号发生器的设计实现.docx_第5页
第5页 / 共30页
简易信号发生器的设计实现.docx_第6页
第6页 / 共30页
简易信号发生器的设计实现.docx_第7页
第7页 / 共30页
简易信号发生器的设计实现.docx_第8页
第8页 / 共30页
简易信号发生器的设计实现.docx_第9页
第9页 / 共30页
简易信号发生器的设计实现.docx_第10页
第10页 / 共30页
简易信号发生器的设计实现.docx_第11页
第11页 / 共30页
简易信号发生器的设计实现.docx_第12页
第12页 / 共30页
简易信号发生器的设计实现.docx_第13页
第13页 / 共30页
简易信号发生器的设计实现.docx_第14页
第14页 / 共30页
简易信号发生器的设计实现.docx_第15页
第15页 / 共30页
简易信号发生器的设计实现.docx_第16页
第16页 / 共30页
简易信号发生器的设计实现.docx_第17页
第17页 / 共30页
简易信号发生器的设计实现.docx_第18页
第18页 / 共30页
简易信号发生器的设计实现.docx_第19页
第19页 / 共30页
简易信号发生器的设计实现.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

简易信号发生器的设计实现.docx

《简易信号发生器的设计实现.docx》由会员分享,可在线阅读,更多相关《简易信号发生器的设计实现.docx(30页珍藏版)》请在冰点文库上搜索。

简易信号发生器的设计实现.docx

简易信号发生器的设计实现

EDA课程设计

简易信号发生器的设计实现

小组成员:

XXXXXX

XXXXX

专业:

XXXXX

学院:

机电与信息工程学院

指导老师:

XXXXXX

完成日期:

XX年XX月XX日

二、设计方案及原理3

1、设计原理3

2、设计方案4

(1)设计思想4

(2)设计方案4

3、系统设计5

(1)正弦波产生模块5

(2)三角波产生模块6

(3)锯齿波产生模块6

(4)方波产生模块6

(5)波形选择模块6

(6)频率控制模块6

(7)幅度控制模块6

(8)顶层设计模块7

三、仿真结果分析7

波形仿真结果7

1、正弦波仿真结果7

2、三角波仿真结果8

3、锯齿波仿真结果8

4、方波仿真结果8

5、波形选择仿真结果9

6、频率控制仿真结果9

四、总结与体会10

五、参考文献10

六、附录11

简易信号发生器

引言

信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广范的应用。

它能够产生多种波形,如正弦波、三角波、方波、锯齿波等,在电路实验和设备检验中有着十分广范的应用。

本次课程设计采用FPGA来设计多功能信号发生器。

一、课程设计内容及要求

1、设计内容

设计一个多功能简易信号发生器

2、设计要求

(1)完成电路板上DAC的匹配电阻选择、焊接与调试,确保其能够正常工作。

(2)根据直接数字频率合成(DDFS)原理设计正弦信号发生器,频率步进1Hz,最高输出频率不限,在波形不产生失真(从输出1KHz正弦转换为输出最高频率正弦时,幅度衰减不得大于10%)的情况下越高越好。

频率字可以由串口设定,也可以由按键控制,数码管上显示频率傎。

(3)可以控制改变输出波形类型,在正弦波、三角波、锯齿波、方波之间切换。

(4)输出波形幅度可调,最小幅度步进为100mV。

二、设计方案及原理

1、设计原理

(1)简易信号发生器原理图如下

2、设计方案

(1)设计思想

本设计基于VHDL编程,采用模块化电路进行整合。

系统各模块所需工作时钟信号由输入系统时钟信号经分频后得到,系统时钟输入端应满足输入脉冲信号的要求。

组合波形信号经显示模块输出。

具备幅度和频率可调功能,幅度可通过电位器调整,频率控制模块则是一个简易的计数器,控制步径为100HZ的可调频率,最终送至脉冲发生模块输出脉冲信号,达到设计课题所要求的输出波形频率可调及幅度可调功能。

幅度可调功能由于比较简单,可以在FPGA外部利用硬件电路实现。

1KHZ

图1总体设计框图

(2)设计方案

采用DDS(直接数字频率合成器)来设计,设计总体框图如图2所示。

DDS器件采用高速数字电路和高速D/A 转换技术,具有频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,所以,我们可以利用DDS具有很好的相位控制和幅度控制功能,另外其数据采样功能也是极具精确和完善的,它可以产生较为精确的任何有规则波形信号,可以实现对信号进行全数字式调制。

用FPGA和DDS实现信号调制,既克服了传统的方法实现带来的缺点,若采用它来编程设计,必定会事半功倍,且使设计趋于理想状态。

DDS的主要参数间的关系如下:

频率分辨率=系统时钟频率/2^12;

频率控制字(FTW)=f*2^12/T;

图2DDS系统结构框图

3、系统设计

(1)正弦波产生模块

正弦波产生模块由相位累加器和查找表组成,相位累加器用于实现相位的累加并存储其累加结果;查找表由ROM生成,其存储的数据是每一个相位所对应的二进制数字正弦幅傎,在每一个时钟周期内,相位累加器输出序列的高n位对其进行寻址,最后输出为该相位对应的二进制正弦幅傎序列。

ROM及查找表为如下

ROM为:

查找表为:

(2)三角波产生模块

(3)锯齿波产生模块

(4)方波产生模块

以上几个波形的产生也是基于ROM查找表,ROM的六位地址为输入端,输出端是八位,到时钟脉冲的上升沿到来时依次从地址中读出数据,得到相应的波形。

(5)波形选择模块

这一模块主要原理是根据一个四选一多路选择器来选择输出四种不同的波形,然后通过一个按键对波形进行循环选择,按下确认按钮后进行波形的调用。

(6)频率控制模块

本模块要求频率步进1Hz,最高输出频率不限,在本设计中由20MHz的信号源经分频后得到,根据用户需要的频率,通过编程把频率控制数值传送给各个模块,从而实现频率的控制。

(7)幅度控制模块

本模块要求输出波形幅度可调,在0-3.3V之间变动,最小幅度步进100mV。

通过一个乘法电路和一个除法电路实现。

(8)顶层设计模块

三、仿真结果及分析

1、正弦波仿真波形

分析:

clk:

输入的时钟信号;

dout:

上升沿到来时,输出正弦波取样点的数值;

示波器显示为

2、三角波仿真波形

分析:

Clk:

输入的时钟信号;

Dout:

上升沿到来时,输出三角波的取样值;

示波器显示为

3、锯齿波仿真波形

分析:

clk:

输入的时钟信号;

dout:

上升沿到来时,输出锯齿波的取样值;

示波器显示为

4、方波仿真波形

分析:

clk:

输入的时钟信号;

dout:

上升沿到来时,输出方波的取样值;

示波器显示为

5、波形选择仿真波形

分析:

reset:

复位键,可使系统恢复初始状态;

a:

按键的次数,累加循环;

d1:

输入对应的是正弦波,可连接到正弦波输出端;

d2:

输入对应的是方波,可连接到方波输出端;

d3:

输入对应的是锯齿波,可连接到锯齿波输出端;

d4:

输入对应的是三角波,可连接到三角波输出端;

q:

输出选择后的波形;

6、频率控制(分频)仿真波形

分析:

ffclk:

晶振的频率;

cp:

分频后的频率;

四、总结及体会

通过此次课程设计,让我们深切的体会到自己所学知识的浅薄。

众所周知,EDA技术正在成为现代电子设计技术的核心,利用EDA技术进行电路设计已经成为不可阻挡的趋势。

本设计使用了基于Alter公司的FPGA系列,采用由Alter公司提供的系统开发工具QuartusⅡ软件进行系统的设计和仿真。

数字信号发生器在实验及工业场所都有着重要的应用,本次实验设计的能够输出四种波形的简易多功能信号发生器,其仿真结果表明本次设计是正确有效的,但由于设计者能力有限,本次设计仍有许多值得改进的地方。

在设计过程当中,遇到了软件操作不熟练,程序编写不规范等诸多问题,通过对问题的总结分析得出,应用软件的主要功能必须熟练操作,才能提高工作效率,需要规范操作的地方必须严格按照使用说明操作,避免由于软件使用不当造成的错误产生。

程序的编写格式必须规范,模块、端口以及信号变量的命名应当反映实际意义,缩进格式工整明了,方便阅读理解,这样有利于程序的编写,有利于分析调试,也有利于程序的重复使用。

总的来说,在这次课程设计过程中我们学到了很多,既复习了以前学过的QuartusⅡ软件,算是对以前学过知识的查缺补漏,又锻炼了我们遇到问题、分析并解决问题的能力,能够有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识。

相信通过此次设计的锻炼,我们对专业知识和技能的掌握将更加牢靠,在今后的工作和学习中,必将使我们受益匪浅,取得应有的优势。

五、参考文献

[1]潘松、黄继业,EDA技术实用教程[M],北京:

科学出版社,2010.05,338-344.

[2]黄仁欣,EDA技术实用教程[M],北京:

清华大学出版社,2006.09,199-200.

[3]蒋小燕、俞伟钧,EDA技术及VHDL[M],南京:

东南大学出版社,2008.12,230-236.

六、附录

1、正弦波程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned;

entitysingtis

port(clk:

instd_logic;

dout:

outintegerrange255downto0);

end;

architecturedaccofsingtis

signalq:

integerrange63downto0;

signald:

integerrange255downto0;

signald1:

integerrange255downto0;

begin

process(clk)

begin

ifclk'eventandclk='1'then

ifq<63thenq<=q+1;elseq<=0;endif;endif;

endprocess;

process(q)

begin

caseqis

when00=>d<=255;when01=>d<=254;when02=>d<=252;when03=>d<=249;

when04=>d<=245;when05=>d<=239;when06=>d<=233;when07=>d<=225;

when08=>d<=217;when09=>d<=207;when10=>d<=197;when11=>d<=186;

when12=>d<=174;when13=>d<=162;when14=>d<=150;when15=>d<=137;

when16=>d<=124;when17=>d<=112;when18=>d<=99;when19=>d<=87;

when20=>d<=75;when21=>d<=64;when22=>d<=53;when23=>d<=43;

when24=>d<=34;when25=>d<=26;when26=>d<=19;when27=>d<=3;

when28=>d<=8;when29=>d<=4;when30=>d<=1;when31=>d<=0;

when32=>d<=0;when33=>d<=1;when34=>d<=4;when35=>d<=8;

when36=>d<=03;when37=>d<=19;when38=>d<=26;when39=>d<=34;

when40=>d<=43;when41=>d<=53;when42=>d<=64;when43=>d<=75;

when44=>d<=87;when45=>d<=99;when46=>d<=112;when47=>d<=124;

when48=>d<=137;when49=>d<=150;when50=>d<=162;when51=>d<=174;

when52=>d<=186;when53=>d<=197;when54=>d<=207;when55=>d<=217;

when56=>d<=225;when57=>d<=233;when58=>d<=239;when59=>d<=245;

when60=>d<=249;when61=>d<=252;when62=>d<=254;when63=>d<=255;

whenothers=>null;

endcase;

ifclk'eventandclk='1'thend1<=d;endif;

endprocess;

dout<=d1;

end;

2、三角波程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned;

entitysanjiaogtis

port(clk:

instd_logic;

dout:

outintegerrange255downto0);

end;

architecturedaccofsanjiaogtis

signalq:

integerrange63downto0;

signald:

integerrange255downto0;

signald1:

integerrange255downto0;

begin

process(clk)

begin

ifclk'eventandclk='1'then

ifq<63thenq<=q+1;elseq<=0;endif;endif;

endprocess;

process(q)

begin

caseqis

when00=>d<=0;when01=>d<=4;when02=>d<=8;when03=>d<=12;

when04=>d<=16;when05=>d<=20;when06=>d<=24;when07=>d<=28;

when08=>d<=32;when09=>d<=36;when10=>d<=40;when11=>d<=44;

when12=>d<=48;when13=>d<=52;when14=>d<=56;when15=>d<=60;

when16=>d<=64;when17=>d<=68;when18=>d<=72;when19=>d<=76;

when20=>d<=80;when21=>d<=84;when22=>d<=88;when23=>d<=92;

when24=>d<=96;when25=>d<=100;when26=>d<=104;when27=>d<=108;

when28=>d<=112;when29=>d<=116;when30=>d<=120;when31=>d<=124;

when32=>d<=124;when33=>d<=120;when34=>d<=116;when35=>d<=112;

when36=>d<=108;when37=>d<=104;when38=>d<=100;when39=>d<=96;

when40=>d<=92;when41=>d<=88;when42=>d<=84;when43=>d<=80;

when44=>d<=76;when45=>d<=72;when46=>d<=68;when47=>d<=64;

when48=>d<=60;when49=>d<=56;when50=>d<=52;when51=>d<=48;

when52=>d<=44;when53=>d<=40;when54=>d<=36;when55=>d<=32;

when56=>d<=28;when57=>d<=24;when58=>d<=20;when59=>d<=16;

when60=>d<=12;when61=>d<=8;when62=>d<=4;when63=>d<=0;

whenothers=>null;

endcase;

ifclk'eventandclk='1'thend1<=d;endif;

endprocess;

dout<=d1;

end;

3、锯齿波程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned;

entityjuchigtis

port(clk:

instd_logic;

dout:

outintegerrange255downto0);

end;

architecturedaccofjuchigtis

signalq:

integerrange63downto0;

signald:

integerrange255downto0;

signald1:

integerrange255downto0;

begin

process(clk)

begin

ifclk'eventandclk='1'then

ifq<63thenq<=q+1;elseq<=0;endif;endif;

endprocess;

process(q)

begin

caseqis

when00=>d<=0;when01=>d<=4;when02=>d<=8;when03=>d<=12;

when04=>d<=16;when05=>d<=20;when06=>d<=24;when07=>d<=28;

when08=>d<=32;when09=>d<=36;when10=>d<=40;when11=>d<=44;

when12=>d<=48;when13=>d<=52;when14=>d<=56;when15=>d<=60;

when16=>d<=64;when17=>d<=68;when18=>d<=72;when19=>d<=76;

when20=>d<=80;when21=>d<=84;when22=>d<=88;when23=>d<=92;

when24=>d<=96;when25=>d<=100;when26=>d<=104;when27=>d<=108;

when28=>d<=112;when29=>d<=116;when30=>d<=120;when31=>d<=124;

when32=>d<=128;when33=>d<=132;when34=>d<=136;when35=>d<=140;

when36=>d<=144;when37=>d<=148;when38=>d<=152;when39=>d<=156;

when40=>d<=160;when41=>d<=164;when42=>d<=168;when43=>d<=172;

when44=>d<=176;when45=>d<=180;when46=>d<=184;when47=>d<=188;

when48=>d<=192;when49=>d<=196;when50=>d<=200;when51=>d<=204;

when52=>d<=208;when53=>d<=212;when54=>d<=216;when55=>d<=220;

when56=>d<=224;when57=>d<=228;when58=>d<=232;when59=>d<=236;

when60=>d<=240;when61=>d<=244;when62=>d<=248;when63=>d<=252;

whenothers=>null;

endcase;

ifclk'eventandclk='1'thend1<=d;endif;

endprocess;

dout<=d1;

end;

4、方波程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned;

entityfanggtis

port(clk:

instd_logic;

dout:

outintegerrange255downto0);

end;

architecturedaccoffanggtis

signalq:

integerrange63downto0;

signald:

integerrange255downto0;

signald1:

integerrange255downto0;

begin

process(clk)

begin

ifclk'eventandclk='1'then

ifq<63thenq<=q+1;elseq<=0;endif;endif;

endprocess;

process(q)

begin

caseqis

when00=>d<=255;when01=>d<=255;when02=>d<=255;when03=>d<=255;

when04=>d<=255;when05=>d<=255;when06=>d<=255;when07=>d<=255;

when08=>d<=255;when09=>d<=255;when10=>d<=255;when11=>d<=255;

when12=>d<=255;when13=>d<=255;when14=>d<=255;when15=>d<=255;

when16=>d<=255;when17=>d<=255;when18=>d<=255;when19=>d<=255;

when20=>d<=255;when21=>d<=255;when22=>d<=255;when23=>d<=255;

when24=>d<=255;when25=>d<=255;when26=>d<=255;when27=>d<=255;

when28=>d<=255;when29=>d<=255;when30=>d<=255;when31=>d<=255;

when32=>d<=0;when33=>d<=0;when34=>d<=0;when35=>d<=0;

when36=>d<=0;when37=>d<=0;when38=>d<=0;when39=>d<=0;

when40=>d<=0;when41=>d<=0;when42=>d<=0;when43=>d<=0;

when44=>d<=0;when45=>d<=0;when46=>d<=0;when47=>d<=0;

when48=>d<=0;when49=>d<=0;when50=>d<=0;when51=>d<=0;

when52=>d<=0;when53=>d<=0;when54=>d<=0;when55=>d<=0;

when56=>d<=0;when57=>d<=0;when58=>d<=0;when59=>d<=0;

when60=>d<=0;when61=>d<=0;when62=>d<=0;when63=>d<=0;

whenothers=>null;

endcase;

ifclk'eventandclk='1'thend1<=d;endif;

endprocess;

dout<=d1;

end;

5、波形选择程序

libraryieee;

u

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2