基于FPGA信号发生器的设计文档格式.docx

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

基于FPGA信号发生器的设计文档格式.docx

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

基于FPGA信号发生器的设计文档格式.docx

在传统的信号发生器中,大都使用分立元件,而且体积庞大携带不便,且大部分只能输出一种脉冲信号波形。

在设计领域,不管采用什么技术生产,生产的产品用在哪里,其产品设计的宗旨都是离不开以下几点:

实用性高、成本低、可升级、功能完善可扩展等!

使用专用的数字电路设计的信号发生器,设备成本高、使用复杂。

基于以上考虑,在中小型数字电路的设计和测试中,迫切需要设计一种小型易用成本低廉的信号发生器。

此课题的设计以小型经济,集成度高,性能稳定,使用方便为指导,在功能上力求完善实用,同时兼顾商业价值与应用价值的体现。

第2章设计方案

2.1总体设计思路

2.1.1设计步骤

此设计将按模块式实现,据任务书要求,设计总共分四大步份完成:

(1)产生波形(三种波形:

方波、三角波和矩形波)信号;

(2)波形组合;

(3)频率控制;

(4)幅度控制。

2.1.2设计思想

利用VHDL编程,依据基本数字电路模块原理进行整合。

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

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

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

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

总体设计框图如下图1所示:

控制电路

正弦波、方波、三角波信号产生模块

频率控制模块/计数器模块

输出电路

波形组合选择模块

滤波电路

幅度控制/电位器

100HZ~1KHZ

1KHZ

FPGA

图1总体设计框图

2.2方案论证

2.2.1方案一

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

在设计界里众所周知,DDS器件采用高速数字电路和高速D/A 

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

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

但鉴于DDS的占用RAM空间较大,我们设计是采用FPGA10K10器件,总共只有一万门的逻辑门数量,而整个DDS设计下来,大概最少会占用3-4万门的数量,所以在性价比方面不合理,这样也使得我们的设计会有些不切实际。

相位累加器

低通滤波

D/A变换

频率控制字信号输出

ROM

时钟

图2DDS与FPGA总体设计图

2.2.2方案二

采用震荡器频率合成方案。

具体方案如下:

首先通过频率合成技术产生所需要频率的方波,通过积分电路就可以得到同频率的三角波,再经过滤波器就可以得到正弦波。

其优点是工作频率可望做得很高,也可以达到很高的频率分辨率;

缺点是使用的滤波器要求通带可变,实现很难,高低频率比不可能做得很高。

2.2.3方案三

采用VHDL语言来编程,然后下载文件到FPGA来实现。

VHDL语言是电子设计领域的主流硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大降低了硬件设计任务,提高了设计效率和可靠性,要比模拟电路快得多。

该方案是利用FPGA具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,极大地提高了电子系统设计的灵活性和通用性,而且大大缩短了系统的开发周期。

2.3方案确定

由上述三个方案对比,采用第三种方案:

通过FPGA软件扫描方式将波形数据读出传输给DAC0832产生波形输出。

这种方法在软、硬件电路设计上都简单,且与我们的设计思路紧密结合。

由于幅度控制部分在设计需要用到数字电子,这样有要经过D/A转换器再输出,必将占用大量资源,造成不必要的开销。

鉴于有设计经验的同学和老师的建议,采用一个电位器代替,虽然精确度不够,但是也弥补了性价比方面的不足。

波形组合如果采用分开式模块实现,也必将导致占用大量的资源,而且模块设计复杂度提高,只要采用重复调用一个模块的设计方法,既可以降低资源的占用率,也使得设计更加灵活且有针对性。

此信号发生器的特点及功能集成度高,因采取整体模块式设计,在此也考虑到实际应用中,万一FPGA的逻辑门数量不够,特准备了一套备用方案。

备用方案:

将波形数据存放在6116RAM中,6116的存储容量大,且可重复使用,虽用单片机在速度方面远不及FPGA,但是这样是在出现上述状况后的最佳补偿方式。

综合以上涉及方面的分析,因此本次课题采用此方案进行设计。

第3章软件设计

3.1波形产生模块

本设计用VHDL语言根据傅立叶函数采集点进行扫描,分别产生正弦波、三角波和矩形波。

以下介绍各种常用周期信号的傅立叶函数展开式。

3.1.1正弦波

(1)设计思想

正弦波发生分为两个步骤,即正弦波幅值采样存储和正弦波波形的还原输出。

幅值采样是将一个周期正弦波进行64等分,如图3所示,将64个采样点进行量化处理,量化值=255*sin360/64(V),将64点量化值存入存储器。

正弦波形的产生是通过循环反复将存储器中的64点采样值通过DAC0832进行还原输出,得到幅值正比于64点采样值的正弦波。

f(t)

t

T

图4方波采样图

图3正弦波采样图

(2)VHDL实现

1.正弦信号波形数据文件建立

正弦波波形数据由64个点构成,此数据经DAC0832,可在示波器上观察到正弦波形。

源程序如下程序1所示:

[程序1]

WIDTH=8;

------表示数据输出位宽是8

DEPTH=64;

----表示共有64个8位数据点

ADDRESS_RADIX=HEX;

-----表示地址信号用十六进制数表示

DATA_RADIX=DEC;

-----表示输出数据是十进制数

CONTENTBEGIN

00:

255;

01:

254;

02:

252;

03:

249;

04:

245;

05:

239;

06:

233;

07:

225;

08:

217;

09:

207;

0A:

197;

0B:

186;

0C:

174;

0D:

162;

0E:

150;

0F:

137;

10:

124;

11:

112;

12:

99;

13:

87;

14:

75;

15:

64;

16:

53;

17:

43;

18:

34;

19:

26;

1A:

19;

1B:

13;

1C:

8;

1D:

4;

1E:

1;

1F:

0;

20:

21:

22:

23:

24:

25:

26:

27:

28:

29:

2A:

2B:

2C:

2D:

2E:

2F:

30:

31:

32:

33:

34:

35:

36:

37:

38:

39:

3A:

3B:

3C:

3D:

3E:

3F:

END;

2.定制ROM源程序如下所示:

SINDATA.VHD:

LIBRARYieee;

USEieee.std_logic_1164.all;

entitysindatais

port(address:

instd_logic_vector(5downto0);

inclock:

instd_logic;

q:

outstd_logic_vector(7downto0);

endsindata;

architecturesynofsindatais

signalsub_wire0:

std_logic_vector(7downto0);

component1pm_rom

generic(1pm_width:

natural;

1pm_widthid:

1pm_address_control:

string;

1pm_outdata:

1pm_file:

string);

outstd_logic_vector(7downto0));

endcomponent;

begin

q<

=sub_wire0(7downto0);

1pm_rom_component:

1pm_rom

genericmap(lpm_width=>

8,lpm_widthad=>

6,

lpm_address_comtrol=>

"

registered"

lpm_outdata=>

unregistered"

lpm_file=>

D:

/SIN_G/DATA/sin_data.mif"

portmap(address=>

address,inclock=>

inclock,q=>

sub_wire0);

endsyn;

正弦波信号发生器顶层设计源程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigend.all;

entitysigntis

port(clk:

dout:

outstd_logic_vector(7downto0));

end

architecturedaccofsingtis

componentsindata

endconponent;

signalq1:

std_logic_vector(5downto0);

process(clk)

ifclk'

eventandclk='

1'

thenq1<

=q1+1;

endif

endprocess;

u1:

sindataportmap(address=>

q1,q=>

dout;

inclock=>

clk);

end;

3.1.2矩形波

1设计思路

矩形波的实现较之正弦波发生简单,由于矩形波是两个电平值间的交替变换,因此波形采样值的预存只要有两个不同的数值就行了,为了使矩形波发生的频率灵活可调,采用60个采样值扫描输出来实现,每半个矩形波周期采用三十个采样值,循环反复将存储器中的60点采样值通过DAC0832进行还原输出,得到幅值正比于点采样值的矩形波。

采样图如图4所示。

2VHDL实现

源程序见附录。

3.1.3三角波

由于三角波是线性的,比较简单就可以产生,如果最低电压设为15V,最高是255V,那么根据它的公式255/15=17,每个点的电压只要依次加17就可以得到,一个波形所以采用简单的加减算法就可实现,如图5所示三角波的采样图:

图5三角波采样图

2VHDL实现

具体源程序见附录。

3.1.4基波

通过VHDL编程产生的正弦波、方波、三角波三种周期性波形即为基波。

3.1.5谐波的产生

采用与基波产生的同样原理,编程产生三种波形的谐波,所不同的是一个波形的周期采样的点数不同,如果基波采样点为63个,谐波采样点数则为21个,其每点的电压值为255*(sin360/60+sin360/20)(V),在对其进行循环扫描即可实现基波与谐波的线性叠加。

3.1.6波形模块图

最终波形的设计模块图如图6所示,L1是三角波,L2是方波,L3是正弦波,L4是谐波。

3.2频率控制模块

本课题要求频率控制是在100HZ-1KHZ,步进为100HZ。

在本题设计中只需借助FPGA便可完成。

根据用户需要的频率,通过编程把频率控制数值传送给各个模块,从而实现频率的控制。

如下图7所示:

3.3选择波形模块

这一部分主要是通过一个按键对波形进行循环选择,按下确认按钮后进行波形的调用。

设计流程图如下图8所示

图6波形模块图

键按下否?

图7频率控制模块流程图

确认键按下否?

图8选择波形电路设计流程图

3.4分频器模块

3.4.1设计思路

分频器模块将输入的高频脉冲降频得到各模块所需的低频脉冲,分频器模块利用计数器的原理进行设计,通过对预设的分频值进行比较计数,实现输入高频时钟脉冲的分频输出功能。

本次课题的设计方案中使用了十组分频器,其设计原理完全相同,将对应的频率用8421BCD码对其进行编程赋值,如100HZ则对应的二进制数是“0000”,200HZ则是“0001”…1KHZ则是“1010”。

现选取其中的500分频分频器进行简单说明。

具体程序见附录。

3.4.2VHDL实现

PROCESS(CLK_IN)

BEGIN

IF(CLK_IN'

EVENTANDCLK_IN='

0'

)THEN

IFStep<

249THEN――分频值

Step<

=Step+1;

ELSE

=0;

――循环累加

CLK_OUT<

=NOTCLK_OUT;

――计数满,输出翻转

ENDIF;

ENDIF;

ENDPROCESS;

3.4.3分频值计算

分频值=(输出时钟脉冲周期/输入时钟脉冲周期)/2-1

输入时钟脉冲频率=1KHz,周期=1ms;

输出时钟脉冲频率=2Hz,周期=500ms

分频值=(500ms/1ms)/2-1=249

3.4.4分频器模块及初步仿真图

分频器模块及初步仿真图如图9所示。

第4章硬件电路设计

4.1硬件设计注意事项

此次设计利用EDA试验箱实现硬件功能,试验箱设计可靠,干扰小,能使系统在良好的环境中正常工作。

但是实际制作硬件电路时,就应考虑到干扰所带来的负面影响。

为了避免干扰信号影响系统正常工作,未分配功能的FPGA引脚必须接地,在FPGA器件的电源端必须并连一0.01uF的退耦电容,在所有的输入引脚上串联100欧姆左右电阻减弱干扰信号影响,如有必要还应在输入端设置上拉或下拉电阻。

4.2滤波电路

如图10所示,设计D/A输出后,通过滤波电路、输出缓冲电路,使信号平滑且具有负载能力。

正弦波的输出频率小于262kHz,为保证262kHz频带内输出幅度平坦,又要尽可能抑制谐波和高频噪声,综合考虑取

R1=1k,R2=1k,C1=100pF,C=100pF

运放选用宽带运放LF351,用ElectronicsWorkbench分析表明:

截止频率约为1MHz,262KHz以内幅度平坦。

为保证稳幅输出,选用AD817,这是一种低功耗、高速、宽带运算放大器,具有很强的大电流驱动能力。

实际电路测量结果表明:

当负载100Ω、输出电压峰-峰值1OV时,带宽大于500kHz,幅度变化小于土1%。

图10滤波电路

4.3幅度控制电路

幅度控制电路采用初定方案来设计,即用一个电位器来控制波形的输出幅度。

电位器的型号为10K欧。

4.4FPGA器件引脚分配

为了方便硬件设计,降低硬件设计的复杂度,对FPGA的输入输出引脚进行分配,将关联的引脚集中排布,将同一组内的引脚按顺序排布,将需要输入高频时钟脉冲的端口安排在时钟输入端,以提高其信号接收能力。

分配如下:

CLKUSRPIN62。

CS0PIN67。

CS1PIN68

BEV_CLKPIN76.

BEV_OEPIN72

INPIN31、33、73、75。

D0PIN1

TD0PIN9

TD1PIN4

CE0PIN64

CE1PIN3

CONFIGPIN23

CONF_DONEPIN65

RSPIN70

WSPIN69

TMSPIN46

TRSTPIN45

TCKPIN66

DCLKPIN2

STATUSPIN44

MSEL0PIN20

MSEL1PIN21

INIT_DONEPIN58

RDY_BUSYPIN59

DEV_OEPIN72

DEV_CLRPIN77

4.5硬件电路实现

此次设计硬件部分通过FPGA/CPLD实验箱完成,如今后需制作单独的硬件电路,亦可以依照实验箱各部分结构进行设计。

第5章调试

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

当前位置:首页 > PPT模板

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

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