当前位置:文档之家› EDA课程设计--任意波形发生器

EDA课程设计--任意波形发生器

EDA课程设计--任意波形发生器EDA大作业学院:电子信息学院专业:通信专业102班姓名:许文博学号:41003030210EDA技术概述EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。

EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。

典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。

综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。

综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。

也就是说,综合器是软件描述与硬件实现的一座桥梁。

综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。

任意波形信号发生器的概述随着信息科技的发展,波形发生器在科技社会等多个领域发挥着越来越重要作用。

采用EDA技术利用MAX+PLUSII软件平台,设计的多功能波形发生器系统,大大简化其结构,降低成本,提高了系统的可靠性和灵活性。

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

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

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

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

任意波形产生器构成:上图为任意波形发生器的构成图,sel为控制波形输出。

Kk为分频模块,与k步长调整波形输出的频率。

输出8位数字信号经过D/A转换输出负波形,再经过1:1比例反向放大器输出正向波形,施密特触发电路输出方波然后经测频模块由数码管显示出频率。

仿真产生的波形如下:正弦波三角波方波示波器显示如下图:方波三角波正弦波电路模块组成部分:分频模块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") THEN Count <= (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;频率选择模块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;波形选择模块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;输出波形选择模块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;幅度控制模块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;11。

相关主题