1、在传统的信号发生器中,大都使用分立元件,而且体积庞大携带不便,且大部分只能输出一种脉冲信号波形。在设计领域,不管采用什么技术生产,生产的产品用在哪里,其产品设计的宗旨都是离不开以下几点:实用性高、成本低、可升级、功能完善可扩展等!使用专用的数字电路设计的信号发生器,设备成本高、使用复杂。基于以上考虑,在中小型数字电路的设计和测试中,迫切需要设计一种小型易用成本低廉的信号发生器。此课题的设计以小型经济,集成度高,性能稳定,使用方便为指导,在功能上力求完善实用,同时兼顾商业价值与应用价值的体现。第2章 设计方案2.1 总体设计思路2.1.1 设计步骤此设计将按模块式实现,据任务书要求,设计总共分四
2、大步份完成:(1)产生波形(三种波形:方波、三角波和矩形波)信号;(2)波形组合;(3)频率控制;(4)幅度控制。2.1.2设计思想利用VHDL编程,依据基本数字电路模块原理进行整合。系统各部分所需工作时钟信号由输入系统时钟信号经分频得到,系统时钟输入端应满足输入脉冲信号的要求。组合波形信号经显示模块输出。具备幅度和频率可调功能,幅度可通过电位器调整,频率控制模块则是一个简易的计数器,控制步径为100HZ的可调频率,最终送至脉冲发生模块输出脉冲信号,达到设计课题所要求的输出波形频率可调及幅度可调功能。幅度可调功能由于比较简单,可以在FPGA外部利用硬件电路实现。总体设计框图如下图1所示:控制电
3、路正弦波、方波、三角波信号产生模块频率控制模块/计数器模块输出电路波形组合选择模块滤波电路幅度控制/电位器100HZ1KHZ1KHZFPGA图1 总体设计框图2.2 方案论证2.2.1方案一采用DDS(直接数字频率合成器)来设计,设计总体框图如图2所示。在设计界里众所周知,DDS器件采用高速数字电路和高速D/A转换技术,具有频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,所以,我们可以利用DDS具有很好的相位控制和幅度控制功能,另外其数据采样功能也是极具精确和完善的,它可以产生较为精确的任何有规则波形信号,可以实现对信号进行全数字式调制。用FPGA和DDS实
4、现信号调制,既克服了传统的方法实现带来的缺点,若采用它来编程设计,必定会事半功倍,且使设计趋于理想状态。但鉴于DDS的占用RAM空间较大,我们设计是采用FPGA10K10器件,总共只有一万门的逻辑门数量,而整个DDS设计下来,大概最少会占用3-4万门的数量,所以在性价比方面不合理,这样也使得我们的设计会有些不切实际。相位累加器低通滤波D/A变换 频率控制字 信号输出 ROM 时钟 图2 DDS与FPGA总体设计图 2.2.2方案二采用震荡器频率合成方案。具体方案如下:首先通过频率合成技术产生所需要频率的方波,通过积分电路就可以得到同频率的三角波,再经过滤波器就可以得到正弦波。其优点是工作频率可
5、望做得很高,也可以达到很高的频率分辨率;缺点是使用的滤波器要求通带可变,实现很难,高低频率比不可能做得很高。2.2.3方案三采用VHDL语言来编程,然后下载文件到FPGA来实现。VHDL语言是电子设计领域的主流硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大降低了硬件设计任务,提高了设计效率和可靠性,要比模拟电路快得多。该方案是利用FPGA具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,极大地提高了电子系统设计的灵活性和通用性,而且大大缩短了系统的开发周期。2.3 方案确定 由上述三个方案对比,采用第三种方案:通
6、过FPGA软件扫描方式将波形数据读出传输给DAC0832产生波形输出。这种方法在软、硬件电路设计上都简单,且与我们的设计思路紧密结合。由于幅度控制部分在设计需要用到数字电子,这样有要经过D/A转换器再输出,必将占用大量资源,造成不必要的开销。鉴于有设计经验的同学和老师的建议,采用一个电位器代替,虽然精确度不够,但是也弥补了性价比方面的不足。波形组合如果采用分开式模块实现,也必将导致占用大量的资源,而且模块设计复杂度提高,只要采用重复调用一个模块的设计方法,既可以降低资源的占用率,也使得设计更加灵活且有针对性。此信号发生器的特点及功能集成度高,因采取整体模块式设计,在此也考虑到实际应用中,万一F
7、PGA的逻辑门数量不够,特准备了一套备用方案。备用方案:将波形数据存放在6116RAM中,6116的存储容量大,且可重复使用,虽用单片机在速度方面远不及FPGA,但是这样是在出现上述状况后的最佳补偿方式。综合以上涉及方面的分析,因此本次课题采用此方案进行设计。第3章 软件设计3.1 波形产生模块本设计用VHDL语言根据傅立叶函数采集点进行扫描,分别产生正弦波、三角波和矩形波。以下介绍各种常用周期信号的傅立叶函数展开式。3.1.1正弦波(1)设计思想 正弦波发生分为两个步骤,即正弦波幅值采样存储和正弦波波形的还原输出。幅值采样是将一个周期正弦波进行64等分,如图3所示,将64个采样点进行量化处理
8、,量化值=255*sin360/64(V),将64点量化值存入存储器。正弦波形的产生是通过循环反复将存储器中的64点采样值通过DAC0832进行还原输出,得到幅值正比于64点采样值的正弦波。f(t)tT图4 方波采样图图3 正弦波采样图 (2)VHDL实现1正弦信号波形数据文件建立正弦波波形数据由64个点构成,此数据经DAC0832,可在示波器上观察到正弦波形。源程序如下程序1所示: 程序1WIDTH=8; -表示数据输出位宽是8DEPTH=64; -表示共有64个8位数据点ADDRESS_RADIX=HEX; -表示地址信号用十六进制数表示DATA_RADIX=DEC; -表示输出数据是十进
9、制数CONTENT BEGIN 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:3
10、3:34:35:36:37: 38:39:3A:3B:3C:3D:3E:3F: END;2定制ROM源程序如下所示:SINDATA.VHD:LIBRARY ieee;USE ieee.std_logic_1164.all;entity sindata isport(address:in std_logic_vector(5 downto 0);inclock:in std_logic;q:out std_logic_vector(7 downto 0);end sindata;architecture syn of sindata issignal sub_wire0 :std_logic_v
11、ector(7 downto 0);component 1pm_romgeneric(1pm_width :natural;1pm_widthid :1pm_address_control:string;1pm_outdata:1pm_file:string);out std_logic_v ector(7 downto 0);end component;beginq8,lpm_widthad=6,lpm_address_comtrol=registered,lpm_outdata=unregistered,lpm_file=D:/SIN_G/DATA/sin_data.mif)port ma
12、p(address=address,inclock=inclock,q=sub_wire0);end syn;正弦波信号发生器顶层设计源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigend.all;entity signt isport(clk:dout:out std_logic_vector(7 downto 0);endarchitecture dacc of singt iscomponent sindataend conponent;signal q1:std_logic_vector(5 do
13、wnto 0);process(clk)if clkevent and clk=1then q1q1,q=dout;in clock=clk);end;3.1.2 矩形波1设计思路矩形波的实现较之正弦波发生简单,由于矩形波是两个电平值间的交替变换,因此波形采样值的预存只要有两个不同的数值就行了,为了使矩形波发生的频率灵活可调,采用60个采样值扫描输出来实现,每半个矩形波周期采用三十个采样值,循环反复将存储器中的60点采样值通过DAC0832进行还原输出,得到幅值正比于点采样值的矩形波。采样图如图4所示。2 VHDL实现源程序见附录。3.1.3 三角波由于三角波是线性的,比较简单就可以产生,如果
14、最低电压设为15V,最高是255V,那么根据它的公式255/15=17,每个点的电压只要依次加17就可以得到,一个波形所以采用简单的加减算法就可实现,如图5所示三角波的采样图:图5 三角波采样图 2 VHDL实现具体源程序见附录。3.1.4 基波通过VHDL编程产生的正弦波、方波、三角波三种周期性波形即为基波。3.1.5谐波的产生采用与基波产生的同样原理,编程产生三种波形的谐波,所不同的是一个波形的周期采样的点数不同,如果基波采样点为63个,谐波采样点数则为21个,其每点的电压值为255*(sin360/60+sin360/20)(V),在对其进行循环扫描即可实现基波与谐波的线性叠加。3.1.
15、6 波形模块图 最终波形的设计模块图如图6所示,L1是三角波,L2是方波,L3是正弦波,L4是谐波。3.2 频率控制模块 本课题要求频率控制是在100HZ-1KHZ,步进为100HZ。在本题设计中只需借助FPGA便可完成。根据用户需要的频率,通过编程把频率控制数值传送给各个模块,从而实现频率的控制。如下图7所示:3.3 选择波形模块这一部分主要是通过一个按键对波形进行循环选择,按下确认按钮后进行波形的调用。设计流程图如下图8所示图6 波形模块图键按下否? 图7 频率控制模块流程图确认键按下否? 图8 选择波形电路设计流程图3.4 分频器模块3.4.1 设计思路分频器模块将输入的高频脉冲降频得到
16、各模块所需的低频脉冲,分频器模块利用计数器的原理进行设计,通过对预设的分频值进行比较计数,实现输入高频时钟脉冲的分频输出功能。本次课题的设计方案中使用了十组分频器,其设计原理完全相同,将对应的频率用8421BCD码对其进行编程赋值,如100HZ则对应的二进制数是“0000”,200HZ则是“0001”1KHZ则是“1010”。现选取其中的500分频分频器进行简单说明。具体程序见附录。3.4.2 VHDL实现 PROCESS(CLK_IN) BEGIN IF(CLK_INEVENT AND CLK_IN=0) THEN IF Step249 THEN 分频值 Step=Step+1; ELSE=
17、0; 循环累加 CLK_OUT=NOT CLK_OUT; 计数满,输出翻转 END IF; END IF; END PROCESS;3.4.3 分频值计算分频值(输出时钟脉冲周期输入时钟脉冲周期)21输入时钟脉冲频率1KHz,周期1ms;输出时钟脉冲频率2Hz,周期500ms分频值(500ms1ms)212493.4.4 分频器模块及初步仿真图分频器模块及初步仿真图如图9所示。第4章 硬件电路设计4.1 硬件设计注意事项此次设计利用EDA试验箱实现硬件功能,试验箱设计可靠,干扰小,能使系统在良好的环境中正常工作。但是实际制作硬件电路时,就应考虑到干扰所带来的负面影响。为了避免干扰信号影响系统正
18、常工作,未分配功能的FPGA引脚必须接地,在FPGA器件的电源端必须并连一0.01uF的退耦电容,在所有的输入引脚上串联100欧姆左右电阻减弱干扰信号影响,如有必要还应在输入端设置上拉或下拉电阻。4.2滤波电路如图10所示,设计D/A输出后,通过滤波电路、输出缓冲电路,使信号平滑且具有负载能力。正弦波的输出频率小于262kHz,为保证262kHz 频带内输出幅度平坦,又要尽可能抑制谐波和高频噪声,综合考虑取 R1=1k,R2=1k,C1=100pF,C=100pF运放选用宽带运放LF351,用 Electronics Workbench 分析表明:截止频率约为1MHz,262KHz 以内幅度平
19、坦。 为保证稳幅输出,选用AD817,这是一种低功耗、高速、宽带运算放大器 , 具有很强的大电流驱动能力。实际电路测量结果表明:当负载100、输出电压峰-峰值1OV时,带宽大于500kHz,幅度变化小于土1%。图10 滤波电路4.3 幅度控制电路幅度控制电路采用初定方案来设计,即用一个电位器来控制波形的输出幅度。电位器的型号为10K 欧。4.4 FPGA器件引脚分配为了方便硬件设计,降低硬件设计的复杂度,对FPGA的输入输出引脚进行分配,将关联的引脚集中排布,将同一组内的引脚按顺序排布,将需要输入高频时钟脉冲的端口安排在时钟输入端,以提高其信号接收能力。分配如下: CLKUSR PIN62。C
20、S0 PIN67。CS1 PIN68BEV_CLK PIN76.BEV_OE PIN72 IN PIN31、33、73、75。D0 PIN1TD0 PIN9TD1 PIN4CE0 PIN64CE1 PIN3CONFIG PIN23CONF_DONE PIN65RS PIN70WS PIN69TMS PIN46TRST PIN45TCK PIN66DCLK PIN2STATUS PIN44MSEL0 PIN20MSEL1 PIN21INIT_DONE PIN58RDY_BUSY PIN59DEV_OE PIN72DEV_CLR PIN774.5 硬件电路实现此次设计硬件部分通过FPGA/CPLD实验箱完成,如今后需制作单独的硬件电路,亦可以依照实验箱各部分结构进行设计。第5 章 调试
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1