基于FPGA的多功能信号发生器.docx

上传人:b****3 文档编号:3941949 上传时间:2022-11-26 格式:DOCX 页数:13 大小:40.68KB
下载 相关 举报
基于FPGA的多功能信号发生器.docx_第1页
第1页 / 共13页
基于FPGA的多功能信号发生器.docx_第2页
第2页 / 共13页
基于FPGA的多功能信号发生器.docx_第3页
第3页 / 共13页
基于FPGA的多功能信号发生器.docx_第4页
第4页 / 共13页
基于FPGA的多功能信号发生器.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于FPGA的多功能信号发生器.docx

《基于FPGA的多功能信号发生器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的多功能信号发生器.docx(13页珍藏版)》请在冰豆网上搜索。

基于FPGA的多功能信号发生器.docx

基于FPGA的多功能信号发生器

基于FPGA的多功能信号发生器

一.实验目的:

1.了解GW48-CK综合实验箱结构

2.熟悉VHDL语言

3.了解FPGA芯片

4.了解D/A芯片

5.熟悉FPGA设计软件quartusii9.0的使用

6.掌握产生三角波,锯齿波,梯形波的原理

7.学会用FPGA设计多功能信号发生器

二.实验仪器及设备:

1.pc机

2.GW48-CK型FPGA综合实验箱

3.FPGA芯片:

EP1K30TC144-3

4.D/A芯片:

DAC0832

5.示波器

6.quartusii9.0仿真软件

三.实验要求:

.设计基于FPGA的多功能信号发生器,此信号发生器可产生的波形有:

正弦波,方波,三角波,斜升锯齿波,斜降锯齿波,梯形波,阶梯波,双阶梯波中的六种。

F1NgHcUqUBb5E2RGbCAP

设计软件要求用quartusii,先用该软件仿真,再接上FPGA实验箱,编译,运行并下载到实验箱,用示波器观察期指定输出端波形。

F1NgHcUqUBp1EanqFDPw

四.实验原理:

1.基于QUASTUSII9.0平台,利用DDS<直接数字信号合成)技术,采用VHDL语言,设计一波形信号发生器。

首先根据对各波形的幅度进行采样,获得各波形的波形数据表,然后FPGA根据输入的时钟<频率可根据要求可变)作为地址信号,从FPGA数据线上输出相应的波形数据,再送入GW48-CK实验板上的D/A转换芯片进行转换为模拟信号,最后送入滤波电路滤波后输出。

F1NgHcUqUBDXDiTa9E3d

2.实验整体框图如下:

由方波模块

F1NgHcUqUBRTCrpUDGiT

五.实验步骤:

a)在桌面上双击quartusii9.0图标<或在开始中→程序→Alera→quartusii9.0)启动设计软件。

F1NgHcUqUB5PCzVD7HxA

b)新建工程命名(niushengli_xhfsq>,在新建VHDL文本文件,分别输入正弦波、方波、三角波、斜升锯齿波,梯形波,斜降锯齿波以及6选1选择器程序。

F1NgHcUqUBjLBHrnAILg

c)点击保存并命名<注意:

命名应与程序实体名相同,后缀为:

.vhd),编译,若有错误,则调试程序直至编译成功F1NgHcUqUBxHAQX74J0X

d)新建模块/原理图输入方式文件,用编译后生成的各信号模块编写原理图文件并设置为顶层文件<命名为niushengli_xhfsq.bdf)保存F1NgHcUqUBLDAYtRyKfE

e)新建一个仿真波形文件,添加输入/输出信号节点,编辑信号节点波形并保存<命名为:

niushengli_xhfsq.vwf)F1NgHcUqUBZzz6ZB2Ltk

f)点击Assignments菜单,选择目标芯片

g)点击编译器processing/StartCompilation,再点击StartSimulation命令启动仿真器,查看仿真波形并记录F1NgHcUqUBrqyn14ZNXI

h)连接好pc机和GW48-CK实验箱,下载编译好的程序到实验箱,用示波器观察输出端波形,检验设计的信号发生器功能并记录F1NgHcUqUBEmxvxOtOco

六.实验结果:

a)当键3、键2、键1组合为000时,输出方波仿真图形记录如下:

b)当键3、键2、键1组合为001时,输出阶梯波仿真图形记录如下:

c)当键3、键2、键1组合为010时,输出正弦波仿真图形记录如下:

d)当键3、键2、键1组合为011时,输出三角波仿真图形记录如下:

e)当键3、键2、键1组合为100时,输出斜降锯齿波仿真图形记录如下:

f)当键3、键2、键1组合为101时,输出斜升锯齿波仿真图形记录如下:

七.实验心的体会:

通过俩周的设计,我的设计较好地完成了既定目标,能够产生正弦波、方波、三角波、锯齿波等6种波形,并能改变波形发生的频率。

通过三个按键组合,可在6种波形中任意切换,使所设计系统容易使用。

成功的实现了系统的功能。

F1NgHcUqUBSixE2yXPq5

在实验中也有失败,如当经过几天的努力把各个信号模块做好后进行了整体的运作后,波形怎么也不出现。

后来才知道原来我们设计的电路只有在特定的实验箱特定的参数设置后才能实验成功,多亏老师的指导让我们少走很多弯路。

也从中发现自己还有很多知识不懂,最终把波形弄出来了!

在这次设计中,我更进一步地了解了开发工程该如何组织进行,对正弦波信号发生器、方波信号发生器、三角波信号发生器、锯齿波信号发生器的实现有了更好的理解。

同时也提高了查阅文档解决问题的能力,对EDA技术的运用有了深一层的认识,对VHDL程序语言设计有了更深的理解,并熟练掌握了杭州康芯硬件结构动态可配置型EDA+SOPC实验箱、北京达盛公司全开方式EDA+SOPC实验箱的用法。

F1NgHcUqUB6ewMyirQFL

通过本实验设计更增加了我对电子技术的热爱,对专业知识有了更透彻的认识!

有因掌握了这一技术而更加自信。

相信通过今后的学习会更成为一个科技含量高的技术人才!

在实验过程中,充分体会到团队精神的重要,我们很默契很团结,才最终把实验做成功。

通过实验也给自己一个成就感,让平时所学的知识有了实用的机会,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,让我以后更有信心,无论遇到什么困难都要勇于克服,遇到问题要善于思考并虚心请教。

F1NgHcUqUBkavU42VRUs

附录:

<1).多功能信号发生器FPGA芯片配置说明:

本次多功能信号发生器设计采用VHDL语言设计并通过QUARTUSII软件编译、仿真完成后,需将生成的配置文件下载到EDA实验箱中测试输出波形。

有关配制情况说明如下:

F1NgHcUqUBy6v3ALoS89

1.实验平台:

GW48系列EDA/SOC实验开发系统

2.FPGA芯片型号:

AlteraEP1K30TC144-3

3.芯片管脚分配:

<实验模式设置:

5)

信号名称

EP1K30TC144-3引脚

信号含义

实验箱按键

clk

126

时钟

reset

19

复位

键8

sel0

8

状态选择0

键1

sel1

9

状态选择1

键2

sel2

10

状态选择2

键3

q0

41

数据输出位0

q1

42

数据输出位1

q2

65

数据输出位2

q3

67

数据输出位3

q4

68

数据输出位4

q5

69

数据输出位5

q6

70

数据输出位6

q7

72

数据输出位7

(二>.程序:

1.--锯齿波<斜升)

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

USEIEEE.STD_LOGIC_UNSIGNED.ALL。

ENTITYniushengli_xsjcbIS--牛胜利<40604030109)

PORT(clk,reset:

INSTD_LOGIC。

q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0>>。

ENDniushengli_xsjcb。

ARCHITECTUREbehaveOFniushengli_xsjcbIS

BEGIN

PROCESS(clk,reset>

VARIABLEtmp:

STD_LOGIC_VECTOR(7DOWNTO0>。

BEGIN

IFreset='0'THEN

tmp:

="00000000"。

ELSIFclk'EVENTANDclk='1'THEN

IFtmp="11111111"THEN

tmp:

="00000000"。

ELSE

tmp:

=tmp+1。

ENDIF。

ENDIF。

q<=tmp。

ENDPROCESS。

ENDbehave。

2.--方波

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

ENTITYniushengli_fbIS--牛胜利<40604030109)

PORT(clk,reset:

INSTD_LOGIC。

q:

OUTINTEGERRANGE0TO255>。

ENDniushengli_fb。

ARCHITECTUREbehaveOFniushengli_fbIS

SIGNALa:

BIT。

BEGIN

PROCESS(clk,reset>

VARIABLEcnt:

INTEGER。

BEGIN

IFreset='0'THEN

A<='0'。

ELSIFclk'EVENTANDclk='1'THEN

IFcnt<63THEN

Cnt:

=cnt+1。

ELSE

cnt:

=0。

a<=NOTa。

ENDIF。

ENDIF。

ENDPROCESS。

Process(clk,a>

BEGIN

IFclk'EVENTANDclk='1'THEN

IFa='1'THEN

Q<=255。

ELSE

Q<=0。

ENDIF。

ENDIF。

ENDPROCESS。

ENDbehave。

3.--双阶梯波

libraryieee。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

entityniushengli_jtbis

port(clk,reset:

instd_logic。

q:

outstd_logic_vector(7downto0>>。

endniushengli_jtb。

architectureaofniushengli_jtbis

begin

process(clk,reset>

variabletmp:

std_logic_vector(7downto0>。

begin

ifreset='0'then

tmp:

="00000000"。

elseifclk'eventandclk='1'then

iftmp="11111111"then

tmp:

="00000000"。

else

tmp:

=tmp+16。

endif。

endif。

endif。

q<=tmp。

endprocess。

enda。

4.--正弦波

libraryieee。

useieee.std_logic_arith.all。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

entityniushengli_sinis--牛胜利<40604030109)

port(clk:

instd_logic。

reset:

instd_logic。

q:

outstd_logic_vector(7downto0>>。

endniushengli_sin。

architecturebehavofniushengli_sinis

signalb:

integerrange0to63。

signald:

integerrange0to255。

begin

process(clk>

begin

ifreset='0'thenb<=0。

elsifclk'eventandclk='1'then

ifb=63thenb<=0。

elseb<=b+1。

endif。

endif。

endprocess。

process(b>

begin

casebis

when00=>d<=255。

when01=>d<=254。

when02=>d<=252。

when03=>d<=249。

F1NgHcUqUBM2ub6vSTnP

when04=>d<=245。

when05=>d<=239。

when06=>d<=233。

when07=>d<=225。

F1NgHcUqUB0YujCfmUCw

when08=>d<=217。

when09=>d<=207。

when10=>d<=197。

when11=>d<=186。

1IYGVb4rTveUts8ZQVRd

when12=>d<=174。

when13=>d<=162。

when14=>d<=150。

when15=>d<=137。

1IYGVb4rTvsQsAEJkW5T

when16=>d<=124。

when17=>d<=112。

when18=>d<=99。

when19=>d<=87。

1IYGVb4rTvGMsIasNXkA

when20=>d<=75。

when21=>d<=64。

when22=>d<=53。

when23=>d<=43。

1IYGVb4rTvTIrRGchYzg

when24=>d<=34。

when25=>d<=26。

when26=>d<=19。

when27=>d<=13。

1IYGVb4rTv7EqZcWLZNX

when28=>d<=8。

when29=>d<=4。

when30=>d<=1。

when31=>d<=0。

1IYGVb4rTvlzq7IGf02E

when32=>d<=0。

when33=>d<=1。

when34=>d<=4。

when35=>d<=8。

1IYGVb4rTvzvpgeqJ1hk

when36=>d<=13。

when37=>d<=19。

when38=>d<=26。

when39=>d<=34。

1IYGVb4rTvNrpoJac3v1

when40=>d<=43。

when41=>d<=53。

when42=>d<=64。

when43=>d<=75。

1IYGVb4rTv1nowfTG4KI

when44=>d<=87。

when45=>d<=99。

when46=>d<=112。

when47=>d<=124。

1IYGVb4rTvfjnFLDa5Zo

when48=>d<=137。

when49=>d<=150。

when50=>d<=162。

when51=>d<=174。

1IYGVb4rTvtfnNhnE6e5

when52=>d<=186。

when53=>d<=197。

when54=>d<=207。

when55=>d<=217。

1IYGVb4rTvHbmVN777sL

when56=>d<=225。

when57=>d<=233。

when58=>d<=239。

when59=>d<=245。

1IYGVb4rTvV7l4jRB8Hs

when60=>d<=249。

when61=>d<=252。

when62=>d<=254。

when63=>d<=255。

1IYGVb4rTv83lcPA59W9

whenothers=>null。

endcase。

endprocess。

q<=conv_std_logic_vector(d,8>。

endbehav。

5--三角波

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

USEIEEE.STD_LOGIC_UNSIGNED.ALL。

ENTITYniushengli_sjbIS--牛胜利<40604030109)1IYGVb4rTvmZkklkzaaP

PORT(clk,reset:

INSTD_LOGIC。

q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0>>。

ENDniushengli_sjb。

ARCHITECTUREbehaveOFniushengli_sjbIS

BEGIN

PROCESS(clk,reset>

VARIABLEtmp:

STD_LOGIC_VECTOR(7DOWNTO0>。

VARIABLEa:

STD_LOGIC。

BEGIN

IFreset='0'THEN

tmp:

="00000000"。

ELSIFclk'EVENTANDclk='1'THEN

IFa='0'THEN

IFtmp="11111110"THEN

tmp:

="11111111"。

a:

='1'。

ELSE

tmp:

=tmp+1。

ENDIF。

ELSE

IFtmp="00000001"THEN

tmp:

="00000000"。

a:

='0'。

ELSE

Tmp:

=tmp-1。

ENDIF。

ENDIF。

ENDIF。

q<=tmp。

ENDPROCESS。

ENDbehave。

6.--锯齿波<斜降)

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

USEIEEE.STD_LOGIC_UNSIGNED.ALL。

ENTITYniushengli_xjcIS--牛胜利<40604030109)

PORT(clk,reset:

INSTD_LOGIC。

q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0>>。

ENDniushengli_xjc。

ARCHITECTUREbehaveOFniushengli_xjcIS

BEGIN

PROCESS(clk,reset>

VARIABLEtmp:

STD_LOGIC_VECTOR(7DOWNTO0>。

BEGIN

IFreset='0'THEN

tmp:

="11111111"。

ELSIFclk'EVENTANDclk='1'THEN

IFtmp="00000000"THEN

Tmp:

="11111111"。

ELSE

tmp:

=tmp-1。

ENDIF。

ENDIF。

q<=tmp。

ENDPROCESS。

ENDbehave。

7.--六选一选择器

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

ENTITYniushengli_MUX61IS--牛胜利<40604030109)

PORT(sel:

INSTD_LOGIC_VECTOR(2DOWNTO0>。

d0,d1,d2,d3,d4,d5:

INSTD_LOGIC_VECTOR(7DOWNTO0>。

1IYGVb4rTvAVktR43bpw

q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0>>。

ENDniushengli_MUX61。

ARCHITECTUREbehaveOFniushengli_MUX61IS

BEGIN

PROCESS(sel>

BEGIN

CASEselIS

WHEN"000"=>q<=d0。

WHEN"001"=>q<=d1。

WHEN"010"=>q<=d2。

WHEN"011"=>q<=d3。

WHEN"100"=>q<=d4。

WHEN"101"=>q<=d5。

WHENOTHERS=>NULL。

ENDCASE。

ENDPROCESS。

ENDbehave。

申明:

所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。

申明:

所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。

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

当前位置:首页 > 工程科技 > 能源化工

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

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