FPGA波形发生器实验报告
波形发生器实验总结
波形发生器实验总结1. 引言波形发生器是电子实验中常用的仪器之一。
它能够产生各种不同类型的波形信号,包括正弦波、方波、三角波等。
在电路设计、通信系统等领域中,波形发生器发挥着重要的作用。
本文将总结我在进行波形发生器实验时的经验和收获。
2. 实验背景波形发生器实验旨在通过搭建相应的电路,利用电子元件的特性来产生特定的波形信号。
不同的波形形式有不同的应用场景,因此具备一个可调节的波形发生器对于电子工程师而言是非常重要的。
3. 实验目的本次实验的目的是掌握波形发生器的原理和使用方法,并能够成功产生出不同类型的波形信号。
4. 实验步骤以下是我在实验中所采取的步骤:4.1 搭建电路首先,我搭建了一个基础的波形发生器电路。
该电路包括一个电源、一个信号发生电路和一个输出接口。
电源用于提供所需的电压,信号发生电路则根据不同的需要产生不同类型的波形信号。
4.2 调节参数接下来,我根据实验要求,调节信号发生电路中的参数,以产生不同类型的波形。
例如,我可以调节频率、幅度等参数来生成不同频率和振幅的波形信号。
4.3 观察输出信号在调节参数之后,我连接示波器,观察并记录输出信号的波形。
通过不断调节参数,我可以得到所需的波形信号,并进行进一步的实验和测试。
5. 实验结果与分析在实验中,我成功产生了正弦波、方波和三角波等不同类型的波形信号。
通过调节参数,我还可以改变波形的频率和幅度。
这对于电子工程师而言非常重要,因为不同的应用场景需要不同类型和特性的波形信号。
在实验过程中,我注意到波形发生器的频率范围、输出阻抗等参数对于产生稳定且准确的波形信号十分重要。
此外,使用示波器可以帮助我们观察和分析波形信号的特征,并进行进一步的实验和测试。
6. 实验总结通过本次波形发生器实验,我深入了解了波形发生器的原理和使用方法。
我能够熟练搭建相应的电路,并根据需要调节参数来产生不同类型的波形信号。
此外,我还掌握了使用示波器观察和分析波形信号的方法。
波形发生器实验报告(1)
波形发生器实验报告(1)波形发生器实验报告一、实验目的本实验的目的是通过使用示波器和电子电路来调制和产生不同的波形。
二、实验仪器与器材示波器、经过校准的函数发生器、万用表。
三、实验原理函数发生器是一种电子电路,可以产生不同类型的波形,例如正弦波、方波、三角波等。
为了实现这些波形,函数发生器中需要使用不同的电路元件。
例如,产生正弦波需要使用振荡电路,而产生方波需要使用比较器电路。
函数发生器的输出信号通过示波器来显示和测量。
四、实验步骤1.连接电路:将电源线连接到函数发生器和示波器上。
2.打开电源:按照设备说明书的步骤打开函数发生器和示波器的电源。
3.调节函数发生器:使用函数发生器的控制按钮来选择所需的波形类型,并调节频率和振幅。
使用示波器来观察和测量所产生的波形。
4.调节示波器:使用示波器的控制按钮来调整波形的亮度、对比度、扫描速度等参数,以达到最佳观测效果。
5.记录实验结果:记录所产生的不同波形类型、频率和振幅,并观察和记录示波器的显示结果。
五、实验结果通过本实验,我们成功地产生了正弦波、方波和三角波等不同的波形,并观察了这些波形的频率和振幅。
示波器的显示结果非常清晰,可以直观地观察到波形的特征和参数。
我们还对示波器的参数进行了调整,以获得最佳的观测效果。
六、实验结论本实验通过使用示波器和函数发生器,成功地产生了不同类型的波形,并观察了波形的特征和参数。
这些波形可以应用于各种电子电路实验中,并且需要根据具体应用要求进行调整和优化。
示波器是一种非常重要的测试仪器,可以直接观察和测量电路中的波形和信号特性,因此应用广泛。
基于FPGA的多功能波形发生器设计研究
基于FPGA的多功能波形发生器设计研究设计以VHDL为开发语言,对FPGA芯片进行编程设计,并对输出数据进行数模转换,以完成一个简单的周期可调的多波形发生器。
标签:FPGA;VHDL;多波形发生器1 引言在教学实验和教学研究中,信号发生器作为提供测试用电信号的仪器必不可少。
目前通用的信号发生器一般只能输出常用的波形信号,无法满足教学实验和教学研究的需要。
基于可编程逻辑器件FPGA的多波形信号发生器,采用VHDL 编程实现,整个系统除晶体振荡器和D/A转换外,全部集成在一片美国Altera 公司生产的EPF10K10LC84-3的芯片上,FPGA输出的8位数据经DAC0832模数转换器后接示波器观察其波形,通过改变控制信号线的高低电平实现波行的转换。
它除了输出常用的正弦波、三角波、方波以外,还可以输出以上两种波形任意线性组合波形。
该信号发生器输出波形的频率可数控选择,100HZ~1KHZ,且可手动调节频率,频率步进间隔为100HZ。
2 各模块电路设计2.1 总体设计FPGA器件内部结构多功能波形发生器由初值模块、分频模块、方波产生模块、三角波产生模块、正弦波产生模块、波形输出控制模块等部分组成,如图1所示。
调频模块TIAOPIN的主要目的是使频率调节能够手动执行。
通过手动输入端口RESETY输入若干脉冲,可达到对周期可调的多波形发生器循环选择输出频率的目的。
初值模块CHUZHI提供初值,供下一个模块FANA分频时用,通过不同的初值,在波形产生模块得到不同的工作频率,从而实现调节波形频率的目的。
由于输入的晶振频率是5MHz。
而要求得到的波形的频率为100Hz~1KHz,频率步进为100Hz。
而又由于设计的波形模块都是64个时钟为一个周期。
因此要求波形模块得到的频率是6.4KHz~64KHz。
由5M/64KHz≈78,而又由频率输出分高电平和低电平。
这样78/2≈39,这样可以得到输入状态为1001时,Q的输出参数为39;分频模块FANA的功能是将前一模块CHUZHI送来的初值对时钟进行分频,得到不同的工作频率,从而调节波形频率;方波产生模块ZENG的功能是产生方波;三角波产生模块DELTA的功能是产生三角波;正弦波产生模块SIN的功能产生正弦波;波形输出控制模块CHPRO31设置了三个按键,分别控制三种波形任意一种,或任意两种波形的叠加。
课题设计 基于FPGA的多功能波形发生器的设计
课题实训基于FPGA的多功能波形发生器的设计一、实训目的1.懂得利用FPGA芯片实现多种波形的产生方法2.懂得多功能波形发生器的结构组成3.懂得一种复杂FPGA电路的设计二、实训器材1.EDA实验箱1台2.微型计算机1台3.MAX+PLUSII10.2软件1套4.下载电缆1条三、实训原理设计一个多功能波形发生器。
该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。
具体要求如下:(1)具有产生正弦波、方波、三角波、锯齿波4种周期性波形的功能。
(2)用键盘输入编辑生成上述4种波形(同周期)的线性组合波形。
(3)具有波形存储功能。
(4)输出波形的频率范围为100Hz~200kHz;重复频率可调,频率步进间隔≤100Hz。
(5)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整。
(6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。
(7)用键盘或其他输入装置产生任意波形。
多功能波形发生器系统由以下四部分组成.输入部分、FPGA部分、DAC、显示部分组成。
多功能波形发生器方框图四、设计程序(参考程序)--功能:实现4种常见波形正弦、三角、锯齿、方波(A、B)的频率、幅度可控输出(方波--A的占空比也是可控的),可以存储任意波形特征数据并能重现该波形,还可完成--各种波形的线形叠加输出。
--说明:SSS(前三位)和SW信号控制4种常见波形种哪种波形输出。
4种波形的频率、--幅度(基准幅度A)的调节均是通过up、down、set按键和4个BCD码置入器以及一--个置入档位控制信号(ss)完成的(AMP的调节范围是0~5V,调节量阶为1/51V)。
--其中方波的幅度还可通过u0、d0调节输出数据的归一化幅值(AMP0)进行进一步--细调(调节量阶为1/(51*255)V)。
方波A的占空比通过zu、zp按键调节(调节--量阶1/64*T)。
系统采用内部存储器——RAM实现任意输入波形的存储,程序只支--持键盘式波形特征参数置入存储,posting 为进入任意波置入(set)、清除(clr)状态--控制信号,SSS控制存储波形的输出。
波形发生器实验报告
波形发生器实验报告波形发生器实验报告引言波形发生器是电子实验室中常见的仪器之一,它能够产生不同形状和频率的电信号。
本实验旨在通过搭建和调试波形发生器电路,了解波形发生器的工作原理和应用。
实验目的1. 掌握波形发生器的基本原理和电路结构;2. 学会使用电子元器件和仪器搭建波形发生器电路;3. 调试波形发生器电路,产生不同形状和频率的波形信号。
实验器材与元器件1. 函数发生器2. 示波器3. 电阻、电容、电感等元器件4. 电源5. 连接线实验步骤1. 搭建基本的RC波形发生器电路。
将电阻和电容按照一定的连接方式搭建成RC电路,连接至电源和示波器。
2. 调节电源和示波器的参数。
根据实验要求,设置电源的电压和示波器的时间和电压刻度。
3. 调试波形发生器电路。
通过改变电阻和电容的数值,观察波形发生器输出的波形变化。
记录不同参数下的波形特点。
4. 搭建其他类型的波形发生器电路。
根据实验要求,搭建其他类型的波形发生器电路,如正弦波发生器、方波发生器等。
5. 调试其他类型的波形发生器电路。
通过改变电阻、电容或其他元器件的数值,观察不同类型波形发生器输出的波形特点。
实验结果与分析在实验过程中,我们成功搭建了基本的RC波形发生器电路,并调试出了不同频率和形状的波形信号。
通过改变电阻和电容的数值,我们观察到波形的周期和振幅发生了变化。
当电阻和电容的数值较小时,波形的频率较高;而当电阻和电容的数值较大时,波形的频率较低。
此外,我们还搭建了正弦波发生器和方波发生器电路,并成功调试出了相应的波形信号。
实验总结通过本次实验,我们深入了解了波形发生器的工作原理和应用。
波形发生器作为一种常见的仪器,广泛应用于电子实验、通信、音频等领域。
通过调节电路中的元器件数值,我们可以产生不同形状和频率的波形信号,满足不同实验和应用的需求。
然而,本实验中我们只涉及了基本的RC波形发生器电路和部分常见的波形类型。
在实际应用中,波形发生器还有更多的类型和功能,如脉冲波形发生器、锯齿波形发生器等。
基于fpga多功能波形发生器实验报告含程序
基于FPGA多功能波形发生器实验报告含程序基于FPGA的多功能波形发生器课程设计实验报告学院: 电气与控制工程学院班级: 微电子11011106080118 学号:姓名: 李少飞日期: 2015.4.2一、电路主体电路图二、各模块vhdl代码三、各模块仿真结果四、实验感悟一、实验主体电路二、各模块vhdl代码三角LIBRARY ieee; USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY sanjiao ISPORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END sanjiao;ARCHITECTURE SYN OF sanjiao ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); COMPONENT altsyncramGENERIC (clock_enable_input_a : STRING;clock_enable_output_a : STRING;init_file : STRING;intended_device_family : STRING;lpm_hint : STRING;lpm_type : STRING;numwords_a : NATURAL;operation_mode : STRING;outdata_aclr_a : STRING;outdata_reg_a : STRING;widthad_a : NATURAL;width_a : NATURAL;width_byteena_a : NATURAL);PORT (clock0 : IN STD_LOGIC ;address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END COMPONENT;BEGINq <= sub_wire0(7 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "sanjiao.hex",intended_device_family => "Cyclone II",lpm_hint => "ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=rom3", lpm_type => "altsyncram",numwords_a => 256,operation_mode => "ROM",outdata_aclr_a => "NONE",outdata_reg_a => "UNREGISTERED",widthad_a => 8,width_a => 8,width_byteena_a => 1)PORT MAP (clock0 => inclock,address_a => address,q_a => sub_wire0);END SYN;-正弦LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY sinx ISPORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END sinx;ARCHITECTURE SYN OF sinx ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); COMPONENT altsyncramGENERIC (clock_enable_input_a : STRING;clock_enable_output_a : STRING;init_file : STRING;intended_device_family : STRING;lpm_hint : STRING;lpm_type : STRING;numwords_a : NATURAL;operation_mode : STRING;outdata_aclr_a : STRING;outdata_reg_a : STRING;widthad_a : NATURAL;width_a : NATURAL;width_byteena_a : NATURAL);PORT (clock0 : IN STD_LOGIC ;address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT;BEGINq <= sub_wire0(7 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "sinx.hex",intended_device_family => "Cyclone II",lpm_hint => "ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=ROM1", lpm_type => "altsyncram",numwords_a => 256,operation_mode => "ROM",outdata_aclr_a => "NONE",outdata_reg_a => "UNREGISTERED",widthad_a => 8,width_a => 8,width_byteena_a => 1)PORT MAP (clock0 => inclock,address_a => address,q_a => sub_wire0);END SYN;方波LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY fangbo ISPORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END fangbo;ARCHITECTURE SYN OF fangbo ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); COMPONENT altsyncramGENERIC (clock_enable_input_a : STRING;clock_enable_output_a : STRING;init_file : STRING;intended_device_family : STRING;lpm_hint : STRING;lpm_type : STRING;numwords_a : NATURAL;operation_mode : STRING;outdata_aclr_a : STRING;outdata_reg_a : STRING;widthad_a : NATURAL;width_a : NATURAL;width_byteena_a : NATURAL);PORT (clock0 : IN STD_LOGIC ;address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END COMPONENT;BEGINq <= sub_wire0(7 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "fangbo.hex",intended_device_family => "Cyclone II",lpm_hint => "ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=rom2", lpm_type => "altsyncram",numwords_a => 256,operation_mode => "ROM",outdata_aclr_a => "NONE",outdata_reg_a => "UNREGISTERED",widthad_a => 8,width_a => 8,width_byteena_a => 1)PORT MAP (clock0 => inclock,address_a => address,q_a => sub_wire0);END SYN;斜波LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY xiebo ISPORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END xiebo;ARCHITECTURE SYN OF xiebo ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT altsyncramGENERIC (clock_enable_input_a : STRING;clock_enable_output_a : STRING;init_file : STRING;intended_device_family : STRING;lpm_hint : STRING;lpm_type : STRING;numwords_a : NATURAL;operation_mode : STRING;outdata_aclr_a : STRING;outdata_reg_a : STRING;widthad_a : NATURAL;width_a : NATURAL;width_byteena_a : NATURAL);PORT (clock0 : IN STD_LOGIC ;address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT;BEGINq <= sub_wire0(7 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "xiebo.hex",intended_device_family => "Cyclone II",lpm_hint => "ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=rom4", lpm_type => "altsyncram",numwords_a => 256,operation_mode => "ROM",outdata_aclr_a => "NONE",outdata_reg_a => "UNREGISTERED",widthad_a => 8,width_a => 8,width_byteena_a => 1)PORT MAP (clock0 => inclock,address_a => address,q_a => sub_wire0);END SYN;四选一library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity choice_4 isport(sel:in std_logic_vector(1 downto 0); d1,d2,d3,d4:instd_logic_vector(7 downto 0);q:out std_logic_vector(7 downto 0)); end choice_4;architecture behave of choice_4 is beginprocess(sel)begincase sel iswhen "00"=>q<=d1;when "01"=>q<=d2;when "10"=>q<=d3;when "11"=>q<=d4;when others=>null;end case;end process;end architecture;2-4译码器library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY decoder24 ISPORT(sel:IN std_logic_vector(1 downto 0);en1,en2,en3,en4:OUT std_logic); END;ARCHITECTURE be OF decoder24 IS BEGINprocess(sel)BEGINcase sel iswhen "00" => en1 <='1'; when "01" => en2 <='1'; when "10" =>en3<='1'; when "11" => en4 <='1'; when others=>null; end case;END process;END;正选扫描电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; --正弦信号发生器源文件USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sins ISPORT ( CLK,en ,reset: IN STD_LOGIC; --信号源时钟DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );--8位波形数据输出 END sins;ARCHITECTURE behave OF sins IS COMPONENT sinx --调用波形数据存储器LPM_ROM文件:datarom.vhd声明 PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);--8位地址信号 inclock : IN STD_LOGIC ;--地址锁存时钟q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT;SIGNAL Q1 : STD_LOGIC_VECTOR (7 DOWNTO 0); --设定内部节点作为地址计数器BEGINPROCESS(CLK,en,reset ) --LPM_ROM地址发生器进程BEGINif reset='0' then Q1<="00000000";elsif CLK'EVENT AND CLK = '1' and en='1' THEN Q1<=Q1+1; --Q1作为地址发生器计数器 END IF;END PROCESS;u1 : sinx PORT MAP(address=>Q1, q => DOUT,inclock=>CLK);--例化 END;斜波扫描电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; --正弦信号发生器源文件USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY xiebos ISPORT ( CLK,en ,reset: IN STD_LOGIC; --信号源时钟DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );--8位波形数据输出 END xiebos;ARCHITECTURE behave OF xiebos IS COMPONENT xiebo --调用波形数据存储器LPM_ROM文件:datarom.vhd声明 PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);--8位地址信号 inclock : IN STD_LOGIC ;--地址锁存时钟q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT;SIGNAL Q1 : STD_LOGIC_VECTOR (7 DOWNTO 0); --设定内部节点作为地址计数器 BEGINPROCESS(CLK,en,reset ) --LPM_ROM地址发生器进程BEGINif reset='0' then Q1<="00000000";elsif CLK'EVENT AND CLK = '1' and en='1' THEN Q1<=Q1+1; --Q1作为地址发生器计数器 END IF;END PROCESS;u1 : xiebo PORT MAP(address=>Q1, q => DOUT,inclock=>CLK);--例化 END;方波扫描电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; --正弦信号发生器源文件USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fangbos ISPORT ( CLK,en ,reset: IN STD_LOGIC; --信号源时钟DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );--8位波形数据输出 END fangbos;ARCHITECTURE behave OF fangbos ISCOMPONENT fangbo --调用波形数据存储器LPM_ROM文件:datarom.vhd声明PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);--8位地址信号 inclock :IN STD_LOGIC ;--地址锁存时钟q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT;SIGNAL Q1 : STD_LOGIC_VECTOR (7 DOWNTO 0); --设定内部节点作为地址计数器 BEGINPROCESS(CLK,en,reset ) --LPM_ROM地址发生器进程BEGINif reset='0' then Q1<="00000000";elsif CLK'EVENT AND CLK = '1' and en='1' THEN Q1<=Q1+1; --Q1作为地址发生器计数器 END IF;END PROCESS;u1 : fangbo PORT MAP(address=>Q1, q => DOUT,inclock=>CLK);--例化 END;三角波扫描电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; --正弦信号发生器源文件USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sanjiaos ISPORT ( CLK,en ,reset: IN STD_LOGIC; --信号源时钟DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );--8位波形数据输出 END sanjiaos;ARCHITECTURE behave OF sanjiaos IS COMPONENT sanjiao --调用波形数据存储器LPM_ROM文件:datarom.vhd声明 PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);--8位地址信号 inclock : IN STD_LOGIC ;--地址锁存时钟q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT;SIGNAL Q1 : STD_LOGIC_VECTOR (7 DOWNTO 0); --设定内部节点作为地址计数器 BEGINPROCESS(CLK,en,reset ) --LPM_ROM地址发生器进程BEGINif reset='0' then Q1<="00000000";elsif CLK'EVENT AND CLK = '1' and en='1' THEN Q1<=Q1+1; --Q1作为地址发生器计数器 END IF;END PROCESS;u1 : sanjiao PORT MAP(address=>Q1, q => DOUT,inclock=>CLK);--例化END;方波仿真三、各模块仿真结果斜波仿真三角仿真正弦仿真四选一仿真二四译码器四、实验感悟大学的生活就要接近尾声,为了巩固我们所学的专业知识,学院为我们开设了这门实验课,说真的我十分喜欢FPGA课程,因为从一开始我就认准这个行业会是将来发展的热门行业,因此我不仅把全部的精力投注到了这门实验上,而且为了进一步学到多的知识,我选择了有关FPGA的毕业设计课题。
波形发生器的设计实验报告
波形发生器的设计实验报告波形发生器是一种用于产生各种波形信号的仪器或设备。
它常常被用于电子实验、通信系统测试、音频设备校准等领域。
本文将介绍波形发生器的设计实验,并探讨其原理和应用。
波形发生器的设计实验主要包括以下几个方面:电路设计、元件选择、参数调整和信号输出。
首先,我们需要设计一个合适的电路来产生所需的波形。
常见的波形包括正弦波、方波、三角波等。
根据不同的波形要求,我们可以选择适当的电路结构和元件组成。
例如,正弦波可以通过RC电路或LC电路实现,方波可以通过比较器电路和计数器电路实现,三角波可以通过积分电路实现。
在元件选择方面,我们需要根据设计要求来选择合适的电阻、电容、电感等元件。
这些元件的数值和质量对波形发生器的性能和稳定性起着重要的影响。
因此,我们需要仔细考虑每个元件的参数,并选择合适的品牌和型号。
参数调整是波形发生器设计实验中的关键步骤之一。
我们需要根据设计要求来调整电路中各个元件的数值和工作状态,以确保所产生的波形符合要求。
参数调整需要依靠实验数据和仪器测量结果来进行,同时也需要运用一定的电路分析和计算方法。
信号输出是波形发生器设计实验的最终目标。
在设计过程中,我们需要确保所产生的波形信号能够正确输出,并具有稳定性和准确性。
为了实现这一目标,我们可以使用示波器等仪器来对输出信号进行检测和分析,并根据需要进行调整和优化。
波形发生器具有广泛的应用领域。
在电子实验中,波形发生器常常被用于产生各种测试信号,用于测试和验证电路的性能和功能。
在通信系统测试中,波形发生器可以产生各种模拟信号,用于测试和校准通信设备。
在音频设备校准中,波形发生器可以产生各种音频信号,用于校准音频设备的频率响应和失真特性。
波形发生器的设计实验是一个涉及电路设计、元件选择、参数调整和信号输出的复杂过程。
在实验中,我们需要仔细考虑每个步骤的要求,并根据实际情况进行调整和优化。
通过合理的设计和实验验证,我们可以获得稳定、准确的波形信号,满足各种应用需求。
基于FPGA的波形信号发生器的设计
基于FPGA的波形信号发生器的设计1、引言随着微电子技术的发展,20世纪80年代中期出现的现场可编程门阵列FPGA器件得到了飞速发展。
由于该器件具有体系结构、逻辑单元灵活、集成度高以及适用范围广等特点,可实现大规模和超大规模的集成电路,而且编程灵活。
因而在数字信号处理中得到了广泛应用,越来越受到硬件电路设计工程师们的青睐。
波形发生器是一种广泛应用于电子电路、自动控制和科学实验等领域的信号源,从某种意义上说高品质的的信号源更是实现高性能指标的关键。
正弦波信号、三角波信号和方波信号都是科研中最常用的三种信号形式,应非常广泛。
它们通常作为标准信号,用于电子电路的性能试验或参数测量。
本文就是利用GW48—SOPC/DSP实验开发系统采用宏功能模块较为方便地实现了正弦波信号、三角波信号和方波信号。
可编程门阵列(FPGA)中的波形发生器控制电路钟,它通过外来控制信号和高速时钟信号,向波形数据ROM 发出地址信号.输出波形的频率由发出的地址信号的速度决定:当以固定频率扫描输出地址时,模拟输出波形是固定频率。
而当以周期性时变方式扫描输出地址时.则模拟输出波形为扫频信号。
波形数据ROM中存有发生器的波形数据.如正弦波数据。
当接受来自FPGA的地址信号后,将从数据线输出相应的波形数据,地址变化得越快,则输出数据的速度越快,从而使D/A输出的模拟信号的变化速度越快。
在本实验设计过程中采用可编程逻辑器件FPGA,并通过运用Alter公司推出的功能强大的支持可编程逻辑器件的设计环境QuartusII软件和基于超高速硬件描述语言VHDL编程语言,可以进行软件模拟检测设计的正确性,大大简化了系统结构,降低了成本,提高了系统的性能和可靠性,从而方便的实现了信号(正弦信号、三角波信号、方波信号)发生器电路。
2、波形发生器的设计原理2.1 硬件电路的设计的理论基础本设计的设计基础是DDS(直接数字频率合成)技术。
DDS(直接数字频率合成)技术是七十年代初提出的一种新的频率合成技术,它是一种心的全数字频率合成技术,其数字结构满足了现代电子系统的许多要求。
波形发生器实验总结与体会
波形发生器实验总结与体会引言波形发生器作为电子实验中常用的一种仪器,广泛应用于信号发生、测试和测量等领域。
本文将对波形发生器的实验进行总结与体会,并深入探讨其原理和应用。
实验目的通过实验了解波形发生器的基本原理和工作方式,掌握波形发生器的操作方法,探索波形发生器在电子实验中的应用。
实验器材与原理实验使用的波形发生器为X型波形发生器,具有多种波形输出功能,包括正弦波、方波、三角波等。
其原理是通过数字信号处理技术控制输出电压的波形和频率。
实验步骤1.设置波形类型:根据实验要求选择相应的波形类型,如正弦波。
2.设置频率:调节频率控制旋钮,使得输出波形的频率符合实验要求。
3.设置幅值:通过幅值控制旋钮调节输出波形的幅值大小。
4.连接电路:将波形发生器的输出端与被测电路连接,确保信号传输的可靠性。
5.测量波形:使用示波器或多用表等仪器测量输出波形的频率、幅值等参数。
6.记录数据:将测量到的数据记录下来,并进行分析和比较。
实验结果与讨论在实验过程中,我们成功地使用波形发生器产生了各种类型的波形,并测量了其频率和幅值。
通过实验数据的分析,我们可以得出以下结论:1.波形类型与频率之间存在一定的关系:不同类型的波形具有不同的频率范围,以正弦波为例,频率控制旋钮可调节的频率范围为100Hz到5kHz。
2.幅值与输出电压之间存在线性关系:在一定范围内,幅值控制旋钮的调节能够直接影响输出电压的大小。
需要注意的是,超过一定范围后,幅值无法再继续调节。
3.波形发生器的输出稳定性较高:在实验过程中,我们观察到输出波形的频率和幅值都能够保持相对稳定的状态,且与设定值相符合。
4.波形发生器的应用广泛:波形发生器在电子实验中有着广泛的应用,例如信号发生、信号调制、信号分析等方面。
实验心得体会通过本次实验,我对波形发生器的原理和应用有了更深入的了解。
同时,我也体会到了实验的重要性和实验过程中需要注意的一些细节。
1.实验前的准备工作十分重要:在实验开始之前,我们需要对实验器材进行检查和准备,确保其正常工作。
波形发生器设计实验报告(推荐阅读)
波形发生器设计实验报告(推荐阅读)第一篇:波形发生器设计实验报告波形发生器设计实验报告一、设计目的掌握用99SE软件制作集成放大器构成方波,三角波函数发生器的设计方法。
二、设计原理波形发生器:函数信号发生器是指产生所需参数的电测试信号的仪器。
按信号波形可分为正弦信号、函(波形)信号、脉冲信号和随机信号发生器等四大类。
而波形发生器是指能够输出方波、三角波、正弦波等多种电压波形的信号源。
它可采用不同的电路形式和元器件来实现,具体可采用运算放大器和分立元件构成,也可用单片专用集成芯片设计。
设计原理图:三、设计元件电阻:R1 5.1K、R2 8.2K、R3 680、R4 3K、R5 39KR6 1K、R7 39K、R8 39K 电容:C 1uF 运算放大器:U1A LM324、U1B LM324 二极管:D1 3.3V、D23.3V 滑动变阻器:RW1 10K 接口:CON3 地线、GND四、设计步骤大概流程图1、打开99SE,建立Sch文件。
绘制原理图。
绘制原理图时要注意放大器的引脚(注意引脚上所对应的数字)和二极管的引脚(注意原理图和PCB中的引脚参数是否一致)。
元件元件库代码电阻:RES2 滑动变阻器:POT2电容:CAP 放大器:OPAMP 二极管:ZENER3 元件封装代码电阻: AXIAL0.4 滑动变阻器:VR5 放大器:DIP14二极管:DIODE0.4 电容:RB.2/.42、生成网络表格本步骤可完成建立材料清单(可执行report中的Bill of Material)、电器规则检查(Tools中ERC)、建立网络表(Design中Create Netlist,点击OK即可)3、PCB文件的设置建立PCB文件单双面板设置:Design中Options进行设置单双面板,及面板大小(8cm*7cm)建立原点(Edit中Origin中的set)并在KeepOutLayer层中制板4、引入网络表执行Design中Load Nets载入网络表,屏幕弹出对话框,点击Browse按钮选择网络表文件(*net),载入网络表,单机Execute,便成功引入网络表。
信号发生器FPGA实现实验报告
信号发生器FPGA实现实验报告摘要:信号发生器在各种实验和测试中是必不可少的器件,同时在生产和科技领域中有着广泛的运用,例如在通信、控制、雷达、教学、军事等领域。
本次设计的内容是信号发生器的FPGA实现,要求用EAD技术设计一个信号发生器,此信号发生器的实现是利用EDA的硬件描述语言VHDL产生各个模块,然后在Altera公司提供的FPGA/CPLD开发集成环境的Quartus II软件上实现波形的编译、仿真、下载到Cyclone 芯片上。
信号发生器由波形产生模块、频率调节模块和波形选择模块组成,波形产生模块可以产生三角波、正弦波、方波、阶梯波、递增斜坡、递减斜坡、自定义波形等,通过波形选择模块和频率调节模块可以选择自己所需要的波形和调节一定的频率。
关键字:信号发生器;FPGA;EDA;VHDL;Quartus第1章绪论1.1信号发生器的研究意义与内容信号发生器在系统检测和调试、自动测量和控制、教学实验和测试中是必不可少的一种基本的电子设备,它广泛的应用于通信工程、自动测控、雷达、电子设备以及现代化仪器仪表等多个领域,它可以产生正弦波、递增斜坡、递减斜坡、三角波、锯齿波、方波等多种波形。
信号发生器为电子测量工作提供了符合要求的精确的输入电信号和示波器等,几乎涉及电参量测量的都要用到信号发生器。
同时信号发生器是一种能够提供各种频率、波形以及输出电平的电信号,经常用来作为测试的信号源或者激励源的设备。
综上所述,不论是在生产实践还是在科研与教育上,信号发生器都是电子工程师和电气工程师等信号仿真试验的最佳工具。
随着我国经济和科技的迅速发展和进步,对相应的测量仪器也有了更高的要求,信号发生器已经不断成为测量仪器中必不可少的一类,所以对信号发生器的研究具有重大意义。
信号发生器的研究内容是利用EDA技术实现信号的产生,EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、逻辑分割、逻辑综合、结构综合,以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。
波形发生器实验总结与体会
波形发生器实验总结与体会一、实验目的二、实验原理三、实验步骤四、实验结果与分析五、实验体会一、实验目的本次波形发生器实验的主要目的是熟悉和掌握基本电路元件的使用方法,了解各种波形信号的产生原理和特点,掌握常用波形信号的产生方法,加深对电路基础知识的理解。
二、实验原理本次波形发生器实验主要涉及到以下几个方面的原理:1. 三角波发生器原理:利用RC电路中充放电时间不同而产生不同幅度和频率三角波信号。
2. 方波发生器原理:利用反相比较器将正弦或三角波信号转换为方波信号。
3. 正弦波发生器原理:利用RC振荡电路或LC振荡电路产生稳定幅值和频率的正弦波信号。
4. 脉冲发生器原理:利用555计时芯片或多谐振荡电路产生稳定幅值和频率的脉冲信号。
5. 信号放大与滤波:通过运放等元件对产生的各种波形进行放大和滤波,以得到稳定、干净的信号输出。
三、实验步骤1. 按照电路图连接电路元件,包括三角波发生器、方波发生器、正弦波发生器和脉冲发生器等。
2. 调整电路元件参数,包括电容、电阻等,以得到所需的各种波形信号。
3. 通过示波器等测量仪器检测各种波形信号的幅值、频率等参数,并进行调整和优化。
4. 通过运放等元件对产生的各种波形进行放大和滤波,以得到稳定、干净的信号输出。
5. 对产生的各种波形进行实时观察和比较,并记录下各种信号特点和参数。
四、实验结果与分析通过本次实验,我成功地产生了三角波、方波、正弦波和脉冲信号,并对其进行了调整和优化。
其中,三角波信号具有周期性变化的特点,在工业控制中常用于模拟周期性变化的物理量;方波信号具有高低电平切换快速、噪声抗干扰能力强等特点,在数字电路中应用广泛;正弦波信号具有频率稳定、幅值恒定、波形优美等特点,在音频和通讯等领域中应用广泛;脉冲信号具有宽度可调、占空比可调、频率稳定等特点,在计时和触发等领域中应用广泛。
通过对各种波形信号的实时观察和比较,我深刻认识到了不同波形信号的产生原理和特点,加深了对电路基础知识的理解。
波形发生器实验报告
波形发生器实验报告波形发生器实验报告第一部分设计内容一、任务利用运算放大器设计并制作一台信号发生器,能产生正弦波、方波、三角波、锯齿波等信号,其系统框图如图所示。
二、建议1不采用单片机,同时实现以下功能:(1)至少能产生正弦波、方波、三角波、锯齿波四种周期性波形;在示波器上可以清晰地看清楚每种波形。
20分(2)输入信号的频率可以通过按钮调节;(范围越大越不好)20分后(3)输出信号的幅度可通过按钮调节;(范围越大越好)20分(4)输入信号波形并无显著杂讯;10分后(5)稳压电源自制。
10分(6)其他2种拓展功能。
20分后信号发生器系统框图第二部分方案比较与论证方案一、以555芯片为核心,分别产生方波,三角波,锯齿波,正弦波电路布局例如图1右图图1此方案较直观,但是产生的频率比较小最后输入正弦波时,信号受到阻碍小。
方案二‘由直观的分立元件产生,可以利用晶体管、lc震荡电路,积分电路的同时实现方波三角波,正弦波的产生。
此方案原理简单但是调试复杂,受干扰也严重。
方案三、使用内置图夫尔如(lm324)构建rc文氏正弦振荡器产生正弦波,正弦波的频率,幅度均调节器,再将产生的正弦波经过过零比较器,同时实现方波的输入,再由方波至三角波和锯齿波。
此方案电路简单,在集成运放的作用下,可以较容易的测到所需的波形。
通过调整参数可以得到较完美的波形。
实际设计过程使用方案三,基本原理例如图2右图基本设计原理框图(图2)第三部分:电路原理及电路设计电路的构成:1、正弦波采用rc桥式振荡器(如图3), rc 串并联网络是正反馈网络,rf 和r1为负反馈网络。
为满足用户震荡的幅度条件||=1,所以af≥3。
加入rf、r1支路,构成串联电压负反馈。
当电路达至平衡平衡状态时:由以上原理可设计出产生正弦波的电路图:图4其中r4为小电阻,只要满足r4+r5略大于2r1使||>1,电路便Eymet奋,随着输入的减小a自动降至||=1,使得输出稳定在某一值。
波形发生器设计实验报告
波形发生器设计实验报告一、实验目的(1)熟悉555型集成时基电路结构、工作原理及其特点。
(2)掌握555型集成时基电路的基本应用。
(3)掌握由555集成型时基电路组成的占空比可调的方波信号发生器。
二、实验基本原理555电路的工作原理555集成电路开始是作定时器应用的,所以叫做555定时器或555时基电路。
但后来经过开发,它除了作定时延时控制外,还可用于调光、调温、调压、调速等多种控制及计量检测。
此外,还可以组成脉冲振荡、单稳、双稳和脉冲调制电路,用于交流信号源、电源变换、频率变换、脉冲调制等。
由于它工作可靠、使用方便、价格低廉,目前被广泛用于各种电子产品中,555集成电路内部有几十个元器件,有分压器、比较器、基本R-S触发器、放电管以及缓冲器等,电路比较复杂,是模拟电路和数字电路的混合体。
555芯片管脚介绍555集成电路是8脚封装,双列直插型,如图2(A)所示,按输入输出的排列可看成如图2(B)所示。
其中6脚称阈值端(TH),是上比较器的输入;2脚称触发端(TR),是下比较器的输入;3脚是输出端(Vo),它有O和1两种状态,由输入端所加的电平决定;7脚是放电端(DIS),它是内部放电管的输出,有悬空和接地两种状态,也是由输入端的状态决定;4脚是复位端(MR),加上低电平时可使输出为低电平;5脚是控制电压端(Vc),可用它改变上下触发电平值;8脚是电源端,1脚是地端。
用555定时器组成的多谐振荡器如图所示。
接通电源后,电容C2被充电,当电容C2上端电压Vc升到2Vcc/3时使555第3脚V0为低电平,同时555内放电三极管T导通,此时电容C2通过R1放电,Vc下降。
当Vc下降到Vcc/3时,V0翻转为高电平。
电容器C2放电所需的时间为t,R1,C,ln2pL2 ( 1-1)当放电结束时,T截止,Vcc将通过R1,R2,R3向电容器C2充电,Vc由Vcc/3 上升到2Vcc/3所需的时间为t,(R1,R2,R3)Cln2,0.7(R1,R2,R3)CpH22 (1-2)当Vc上升到2Vcc/3时,电路又翻转为低电平。
波形发生器实验报告
波形发生器实验报告实验仪器本次实验主要使用的仪器是波形发生器和示波器,其中,波形发生器是一种电子工具,可以发出各种波形信号,包括正弦波、方波、三角波等,主要用于测试电路的性能以及信号调试等方面。
示波器则是一种测量电信号的仪器,可以将电信号转化为可视化的波形,方便工程师进行测量和分析。
实验目的本次实验的主要目的是通过对波形发生器进行实验,了解波形发生器的工作原理、掌握波形的产生和调试方法,以及了解不同类型波形对电路的功效影响。
实验内容本次实验主要分为以下几个部分,分别为:正弦波产生、方波产生、三角波产生、调制波产生、频率和振幅调节和FFT 测量。
1. 正弦波产生首先,通过连接电源红黑极线和地线,将波形发生器及示波器连接电源,打开波形发生器开关,进入正弦波发生模式,将正弦波的频率参数设置在1kHz左右,然后将信号输出端连接至示波器通道A的输入端,打开示波器,在垂直方向调整光标,使波形垂直偏移最小,在水平方向调整光标,使波形居中,然后开始观测正弦波形。
2. 方波产生在正弦波产生模式下,通过在波形发生器上打开方波信号开关,设置相应频率和振幅参数,将信号输出端连接至示波器通道A的输入端,打开示波器,在垂直方向调整光标,使波形垂直偏移最小,在水平方向调整光标,使波形居中,然后开始观测方波形。
3. 三角波产生在正弦波产生模式下,通过在波形发生器上打开三角波信号开关,设置相应频率和振幅参数,将信号输出端连接至示波器通道A的输入端,打开示波器,在垂直方向调整光标,使波形垂直偏移最小,在水平方向调整光标,使波形居中,然后开始观测三角波形。
4. 调制波产生在正弦波产生模式下,通过在波形发生器上打开调制波信号开关,将调制波输出端连接至示波器通道B的输入端,然后将信号输出端连接至示波器通道A的输入端,打开示波器,分别观测A、B两路波形,通过观察示波器的显示屏,可以看到调制波对于正弦波的影响。
5. 频率和振幅调节通过在波形发生器上设置相应的频率和振幅参数,可以调节所产生的波形信号的频率和振幅,进一步了解不同频率和振幅对于电路的发挥作用。
基于FPGA的波形发生器设计
可编程器件应用 电 子 测 量 技 术 ELECTRONIC MEASUREMENT TECHNOLOGY第35卷第7期2012年7月 基于FPGA的波形发生器设计邹 建 林 强 王二锋(重庆大学光电工程学院 重庆 400030)摘 要:利用Altera公司的EP2C8Q208为控制核心,以TLV5618为DA转换芯片,运用DDS基本原理,通过Quartus II和ModelSim软件编写波形发生器的每个单元模块和测试模块,利用数码管显示波形的种类和频率值,利用按键步进控制波形的频率大小,系统产生的8种波形包括4种常规波形、3种常见调制波形以及任意波形。
实验表明,采用该设计系统稳定性高,可扩展性强,波形可以任意调整,降低了设计的成本。
关键词:FPGA;TLV5618;直接数字频率合成;波形发生器中图分类号:TN741 文献标识码:ADesign of wave generator based on FPGAZou Jian Lin Qiang Wang Erfeng(College of Opto-Electronic Engineering of Chongqing University,Chongqing 400030)Abstract:The design used Altera EP2C8Q208as the core chip and TLV5618as the DAC chip.By using DDS basicprinciple,each unit of the waveform generator module and test module are prepared by the Quartus II and ModelSimsoftware,digital tube displayed waveform and frequency value,used a key to step control the size of the frequency of thewaveform,eight kinds of waveform generated by the system include four conventional waveform,three commonmodulation waveforms and arbitrary waveforms.The experiment showed that the stability and the scalability of thesystem was well,and the waveform can be adjusted to reduce the cost of the design.Keywords:FPGA;TLV5618;DDS;waveform generator 本文于2012年3月收到。
FPGA波形发生器实训报告
JIANGSU UNIVERSITY OF TECHNOLOGY FPGA综合训练报告题目:基于FPGA的波形生成器专业:电子信息工程__班级:11电子2姓名:小龙人学号:12311222_指导教师:___陈海忠_____时间: 2015年9月__目录1基于DDS技术的信号发生器设计--------------------------------------------------------2 1.1功能要求------------------------------------------------------------------------------------2 1.2整体设计------------------------------------------------------------------------------------21.3DDS技术的基本原理---------------------------------------------------------------------32 FPGA硬件系统设计------------------------------------------------------------------------4 2.1 功能要求----------------------------------------------------------------------------------4 2.2 FPGA硬件系统组成--------------------------------------------------------------------5 2.3 FPGA最小系统简介--------------------------------------------------------------------6 2.4 FPGA外围电路设计--------------------------------------------------------------------7 2.5程序设计------------------------------------------------------------------------------------8 2.5.1锯齿波产生程序设计及仿真----------------------------------------------------------9 2.5.2三角波产生程序设计及仿真---------------------------------------------------------10 2.5.3正弦波产生程序设计及仿真---------------------------------------------------------11 2.5.4顶层程序设计及仿真-----------------------------------------------------------------12 2.5.5分频程序及作用------------------------------------------------------------------------13 2.6硬件测试及结果分析-------------------------------------------------------------------14 3设计分析与总结----------------------------------------------------------------------------15 3.1故障分析----------------------------------------------------------------------------------15 3.3设计总结及感想-------------------------------------------------------------------------15 4参考文献------------------------------------------------------------------------------------16 5附录------------------------------------------------------------------------------------------171基于DDS 技术的信号发生器设计1.1 功能要求具有产生正弦波、三角波、锯齿波3种周期性波形的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告册课程名称:Verilog HDL数字系统设计实验项目名称:频率可变的任意波形发生器学院:电子科学与技术专业:微电子班级:二班报告人:黄日才学号:2008160120指导教师:刘春平老师实验时间:2010.12.06 —2011.01.06提交时间:2011.01.06实验结论:经过不断的试验,最终完成了该实验设计的基本要求,输出四种不同的波形实现信号频率可调,并且在这基础上调用了FPGA芯片集成锁相环,增加了输出信号幅度可调。
经过测试显示输出波形信号稳定。
一、实验目的利用DE2实验板和DVCC试验箱的DA转换器设计出可出任意波形且频率可调的信号发生器,也就是基于FPGA的用Verilog描述的直接数字频率合成器(DDS)。
二、设计方案及其原理说明:DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。
它由相位累加器、相幅转换函数表、D/A转换器以及内部时序控制产生器等电路组成。
参考频率f_clk为整个合成器的工作频率,输入的频率字保存在频率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。
△P为频率字,即相位增量;参考频率为f_clk;相位累加器的长度为N位,输出频率f_out为:F_out——输出信号的频率;N————相位累加器的位数;△P———频率控制字(步长);F_clk——基准时钟频率。
1、系统总体设计方案框架图:FPGA图1-1 系统总体设计方案2、四种波形单周期的取样示意图:3、本实验采用每个周期取样16次,以便产生的波形更加的平滑。
函数查找表的设计:(十进制)地址(8位二进制)rom的值0 1201 1652 2043 2304 2405 2306 2047 1658 1209 7410 3511 912 013 914 3515 744、程序思路1)分频器控制读取rom的步长,通过输入变量改变分频器计数器的计数总量,控制分频实验频率可调。
2)制作rom,通过一个函数实现,给函数输入一个地址,通过case语句输出一个值。
3)波形选择,同个if语句选择地址计数器输出的值,从而输出四种不同的波形4)锁相环(附加),调用FPGA芯片集成的锁相环模块,让输出的相位更加的稳定。
5)调幅(附加),通过在rom的值除以不同的值来控制改变输出信号的幅度。
三、程序及具体方法注释module dds_ver(clk_50MHz,fout,change,freq,key0);input clk_50MHz; //输入50MHz的全局时钟input[1:0] change; //定义输入变量,用来切换输出波形,一共4个档位input [2:0] freq; //定义输入变量,用来改变输出信号的频率,一共8个档位output [7:0] fout; //输出8为rom的值,用来驱动DA转化芯片,输出波形input key0; //定义输入变量,用来改变幅值计数器的值,从而改变幅值//调用FPGA芯片集成的锁相环模块,让输出的波形相位更稳定pll pll_inst (.inclk0 ( clk_50MHz ),.c0 ( clk_pll ));wire [7:0] fout;//分频功能,根据输入变量的不同实现不同的分频,用于读取rom的步长reg clk;reg [15:0] cnt;always @(posedge clk_pll) //利用计数器实现任意分频beginif(cnt==(50*(freq+1))) //设定频率控制字节begincnt=0;clk=~clk;endelsecnt=cnt+1;end//调幅功能,输入key0更变计数器cntvol的值,从而更变输出信号的幅度reg [2:0] cntvol;always@(negedge key0)beginif (cntvol>=1&&cntvol<7)cntvol<=cntvol+1'd1;else cntvol<=1'b1;end//地址累加器,实现地址的分段累加,从而实现四种不同波形的切换输出reg [5:0] addr;always @(posedge clk)beginbeginif(change==0)beginif(addr>=0&&addr<15) //切换正弦波addr=addr+1;elseaddr=0;endelse if(change==1)beginif(addr>=16&&addr<31) //切换方波addr=addr+1;elseaddr=16;endelse if(change==2)beginif(addr>=32&&addr<47) //切换正三角波addr=addr+1;elseaddr=32;endelse if(change==3)beginif(addr>=48&&addr<63) //切换反三角波addr=addr+1;elseaddr=48;endendend//制作rom的函数function [7:0] rom;input [63:0] address;case(address)0:rom=120/cntvol; //正弦波的rom值1:rom=165/cntvol;2:rom=204/cntvol;3:rom=230/cntvol;4:rom=240/cntvol;5:rom=230/cntvol;6:rom=204/cntvol;7:rom=165/cntvol;8:rom=120/cntvol;9:rom=74/cntvol;10:rom=35/cntvol;11:rom=9/cntvol;12:rom=0/cntvol;13:rom=9/cntvol;14:rom=35/cntvol;16:rom=10/cntvol; //方波的rom值17:rom=10/cntvol;18:rom=10/cntvol;19:rom=10/cntvol;20:rom=10/cntvol;21:rom=10/cntvol;22:rom=10/cntvol;23:rom=10/cntvol;24:rom=250/cntvol;25:rom=250/cntvol;26:rom=250/cntvol;27:rom=250/cntvol;28:rom=250/cntvol;29:rom=250/cntvol;30:rom=250/cntvol;31:rom=250/cntvol;32:rom=30/cntvol; //正三角波的rom值33:rom=60/cntvol;34:rom=90/cntvol;35:rom=120/cntvol;36:rom=150/cntvol;37:rom=180/cntvol;38:rom=210/cntvol;39:rom=240/cntvol;40:rom=210/cntvol;41:rom=180/cntvol;42:rom=150/cntvol;43:rom=120/cntvol;44:rom=90/cntvol;45:rom=60/cntvol;46:rom=30/cntvol;47:rom=0/cntvol;48:rom=240/cntvol; //反弦波的rom值49:rom=210/cntvol;50:rom=180/cntvol;51:rom=150/cntvol;52:rom=120/cntvol;53:rom=90/cntvol;54:rom=60/cntvol;55:rom=30/cntvol;56:rom=0/cntvol;57:rom=30/cntvol;58:rom=60/cntvol;60:rom=120/cntvol;61:rom=150/cntvol;62:rom=180/cntvol;63:rom=210/cntvol;endcaseendfunctionassign fout=rom(addr);// //把读到的rom的值赋给输出端口,输出驱动DA转换芯片endmodule四、实验结果及分析1、QuartusII仿真结果2、下载到DE2实验板连接到DVCC试验箱用示波器显示输出的各种波形图1)输出正弦波2)输出正弦波频率调节3)输出正弦波幅值调节4)输出方波3、结果分析通过仿真和搭建实验平台。
成功完成了实验设计的要求输出波形有很严重的锯齿现象,但是基本上显示出了完整的波形,实现了设计的波形切换输出、频率可调和幅值可调,前后比较了没有加入锁相环和加入锁相环模块输出波形的质量,加入锁相环值之后波形稳定很多。
输出波形的质量只要取决于信号周期取样的频率,取样点越多输出波形的失真越小,当然跟取样点的准确性也有很大关系,但是rom的值是通过MATLAB 产生的,准确性很高。
为了验证这个结论,决定每个信号周期取256个点(8为DA转换最大取样点256个)再进行实验,观察实验结果。
输出波形质量明显提高。
实验结果波形图如下:1)正弦波2)方波3)三角波4)锯齿波说明:由于觉得正三角波和反三角波只是相位上相差180度,显示出来的波形没有区别,这是由于采用取值法决定的,取值是包括了DA输出负值的点,所以没有正三角波和负三角波在显示上占有180度相位差的区别。
所以把反三角波改成输出锯齿波。
(这只是取样点不同,没有本质其别)当然,这些输出信号也是可以调节频率和幅度的。
五、实验结论:经过不断的试验,最终完成了该实验设计的基本要求,输出四种不同的波形实现信号频率可调,并且在此基础上调用了锁相环技术,增加了输出信号幅度可调。
经过测量显示输出波形信号稳定。
通过该信号发生器的设计,学习和掌握了DA转换,更加熟练地使用Verilog 语言描述硬件电路和信号的输出,也更加熟练地掌语言编写过程中的握数据的控制、运用quartusII仿真和调用modelsim仿真。
熟悉软件在编译过程中出现的错误和排除这些错误。
在搭建实验平台的过程中,由于没有使用过DVCC实验箱,所以遇到麻烦,开始没有使DE2板和DVCC试验箱共地,所以输不出波形,但是有些同学没有共地也能输出波形,而我试验之后发现我的实验平台只有共地才能输出完整波形,理论上也是需要所有的实验系统共地才不会影响信号完整性输出的。
编写代码时应该细分代码实现的功能,从很小的一个功能部分开始编写,不能全部一起编写,要先编写一小部分进行仿真。
测试成功之后再编写下一个功能模块,最好能使用模块化设计,以功能分开编写,分别测试。