当前位置:文档之家› 陈冲EDA课程设计_任意波形信号发生器

陈冲EDA课程设计_任意波形信号发生器

EDA课程设计任意波形信号发生器姓名: 陈冲班级: 07通信工程指导老师:孙惠章目录一.简述 (3)二.设计性能要求 (3)三.系统框图 (3)四.系统电路图 (3)五.基本工作原理 (4)六. 单元电路模块源程序及功能 (5)七.系统仿真波形 (10)八.引脚锁定 (11)九.实验结果及硬件验证 (11)十.实验心得 (13)任意波形信号发生器的设计一.简述随着信息科技的发展,波形发生器在科技社会等多个领域发挥着越来越重要作用。

采用eda技术利用quartus60软件平台,基于大规模可编程逻辑器件fpga设计的多功能波形发生器系统,大大简化其结构, 降低成本, 提高了系统的可靠性和灵活性。

设计中运用计数器,数据选择器,对所需的频率进行选择和同步。

使用宏功能模块存储波形。

然后多波形进行幅度的选择。

产生满足需要的不用频率和幅度的波形。

二.设计性能要求1.能输出正弦波,锯齿波,阶梯波,三角波,方波,矩形脉冲等八种波形。

2.具有幅度和频率的调整。

3.单元电路模块使用VHDL语言编写。

三.系统框图图1.任意波形信号发生器系统框图四.系统电路图图2.任意波形信号发生器系统电路图五.基本工作原理将要产生的波形数据存入波形存储器中, 然后在参考脉冲的作用下, 对输入的频率数据进行累加, 并将累加器输出的一部分作为读取波形存储器的地址, 将读出的波形数据经D/A 转换为相应的电压信号,D/A 转换器输出的一系列的阶梯电压信号经低通滤波器滤波后便输出了光滑的合成波形的信号。

选择八种基础波形为设计与实现的对象,而八个波形作为同一个任意波形发生器里的四个部分,是有着同一个输入与输出,因此在设计上还需要对波形进行选择与控制的部分,通过对时钟脉冲输入的选择,使得八个波形模块只有一个输入为时钟脉冲,其他三个模块则输入始终为0。

在波形输出时,设计一个模块控制输出的波形是所要求输出的波形,在时钟脉冲选择与输出波形选择两模块之间。

对于频率的选择可以选择分频器,同时也可以选择计数器,本实验采用的是计数器以实现分频的效果,输出分别为二分频,四分频,八分频,十六分频用以实现不同的频率。

幅度调节可以使用lpm_divide,可以实现八种不同的幅度调节。

六.单元电路模块源程序及功能1.分频模块以下为分频模块(CT74161)的VHDL语言编程源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CT74161 ISPORT(clk : IN STD_LOGIC;clk_div2 : OUT STD_LOGIC;clk_div4 : OUT STD_LOGIC;clk_div8 : OUT STD_LOGIC;clk_div16 : OUT STD_LOGIC);END CT74161;ARCHITECTURE rtl OF CT74161 ISSIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(clk)BEGINIF (clk'EVENT AND clk='1') THENIF(count="1111") THENCount <= (OTHERS =>'0');ELSECount <= count +1;END IF ;END IF ;END PROCESS;clk_div2 <= count(0);clk_div4 <= count(1);clk_div8 <= count(2);clk_div16 <= count(3);END rtl;在Quartus II 6.0下得到的电路模块图形和软件仿真数据:2.频率选择模块以下为频率选择模块(tiaopin)的VHDL语言编程源程序library ieee;use ieee.std_logic_1164.all;entity tiaopin isport(s1,s0: in std_logic;a,b,c,d: in std_logic;y: out std_logic);end tiaopin;architecture one of tiaopin issignal s: std_logic_vector(1 downto 0); signal y_temp: std_logic;begins<=s1&s0;process(s1,s0,a,b,c,d)begincase s iswhen "00"=>y_temp<=a;when "01"=>y_temp<=b;when "10"=>y_temp<=c;when "11"=>y_temp<=d;when others=>y<='X';end case;end process;y<=y_temp;end one;在Quartus II 6.0下得到的电路模块图形:3.波形选择模块以下为波形选择模块(decoder)的VHDL语言编程源程序library ieee;use ieee.std_logic_1164.all;entity DECODER isport(a0,a1,a2,s0,s1,s2:in std_logic;y0,y1,y2,y3,y4,y5,y6,y7:out std_logic);end DECODER;architecture ymq of DECODER issignal a:std_logic_vector(2 downto 0);begina<=a2&a1&a0;process(a,s0,s1,s2)variable y:std_logic_vector(7 downto 0); beginif(s2='0' and s1='0' and s0='1')thencase a iswhen"000"=>y:="11111110";when"001"=>y:="11111101";when"010"=>y:="11111011";when"011"=>y:="11110111";when"100"=>y:="11101111";when"101"=>y:="11011111";when"110"=>y:="10111111";when"111"=>y:="01111111";when others=>y:="XXXXXXXX";end case;elsey:="11111111";end if;y0<=y(0);y1<=y(1);y2<=y(2);y3<=y(3);y4<=y(4);y5<=y(5);y6<=y(6);y7<=y(7);end process;end ymq;在Quartus II 6.0下得到的电路模块图形和软件仿真数据:4.输出波形选择模块以下为输出波形模块(lpm)的VHDL语言编程源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lpm isport (s1,s2,s3:in std_logic;a,b,c,d,e,f,g,h:in std_logic_vector(7 downto 0);z:out std_logic_vector(7 downto 0));end lpm;architecture one of lpm issignal s:std_logic_vector(2 downto 0);begins<=s3&s2&s1;process (s1,s2,s3,a,b,c,d,e,f,g,h)begincase s iswhen "000"=>z<=a;when "001"=>z<=b;when "010"=>z<=c;when "011"=>z<=d;when "100"=>z<=e;when "101"=>z<=f;when "110"=>z<=g;when "111"=>z<=h;when others=>null ;end case;end process;end one;在Quartus II 6.0下得到的电路模块图形和软件仿真数据:5.幅度控制模块以下为幅度控制模块(tiaofu)的VHDL语言编程源程序library ieee;use ieee.std_logic_1164.all;entity tiaofu isport(a,b,c: in std_logic;sel: out std_logic_vector(2 downto 0)); end tiaofu;architecture three of tiaofu isbeginsel<=a&b&c;end three;在Quartus II 6.0下得到的电路模块图形七.系统仿真波形注:以正弦波为例八.引脚锁定试验中将脉冲输入选择和波形输出选择的输入端接在一起,以实现同步。

接实验箱的开关,实现数字信号对模拟波形的控制。

将八位输出端接数模转换模块。

其引脚锁定图如下:图3:实验引脚锁定图九.实验结果及硬件验证用导线连接各引脚,并将实验设计下载到试验箱。

用示波器观察输出波形。

软件模拟数据和示波器显示波形相吻合,能产生八种稳定的波形,具有八种幅度调节和四种频率选择。

相关主题