智能函数发生器设计.doc

  • 格式:wps
  • 大小:1.21 MB
  • 文档页数:17

智能函数发生器设计一、产品设计需求说明1、本产品实现的功能函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波及阶梯波,并可通过开关选择输出的波形。

2、设计参数软件平台:WindowsXP+MuxplusII10.0二、方案设计及实现1、系统实现原理和总体框图智能函数发生器可由递增斜波产生模块(icrs)、递减斜波产生模块(dcrs)、三角波产生模块(delta)、阶梯波产生模块(ladder)、正弦波产生模块(sin)、方波产生模块(square)和输出波形选择模块(ch6la)组成,总体框图如图所示。

图中输出接在D/A转换的数据端,在D/A转换器的输出端即可得到各种不同的函数波形。

递增递减三角阶梯正弦方波选择模块时钟复位选择输出函数发生器原理框图2、主要模块之递增模块的设计<1>、模块说明:递增模块中,clk为输入时钟端口,reset为输入复位端口,q 为8位二进制输出端口。

<2>、工作流程图清零复位开始输出清零上升沿增1达到最大值YNNYYN<3>、源代码--File:icrs.vhd --Designer:刘雄 --Module:icrs --Description: 产生递增波形--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2011/05/03 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY icrs IS PORT(clk,reset:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END icrs;ARCHITECTURE behave OF icrs IS BEGIN PROCESS(clk,reset)VARIABLE tmp: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF reset='0' THENtmp :="00000000"; --复位信号清零ELSIF clk'EVENT AND clk='1'THENIF tmp="11111111" THENtmp:="00000000"; --递增到最大值清零ELSEtmp:=tmp+1; --递增运算END IF;END IF;q<=tmp;END PROCESS;END behave;<4>、功能仿真图3、主要模块之递减模块的设计<1>、模块说明:递减模块中,clk为输入时钟端口,reset为输入复位端口,q 为8位二进制输出端口。

<2>、工作流程图置位为最大值复位开始输出置位为最大值上升沿减1达到最小值0YNNYYN<3>、源代码--File:dcrs.vhd --Designer:刘雄--Module:dcrs --Description: 产生递减斜波--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2011/05/03 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dcrs ISPORT(clk,reset:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END dcrs;ARCHITECTURE behave OF dcrs IS BEGINPROCESS(clk,reset)VARIABLE tmp: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF reset='0' THEN --复位信号置最大值tmp :="11111111";ELSIF clk'EVENT AND clk='1'THENIF tmp="00000000" THENtmp:="11111111"; --递减到0置最大值ELSEtmp:=tmp-1; --递减运算END IF;END IF;q<=tmp;END PROCESS;END behave;<4>、功能仿真图4、主要模块之三角波模块的设计<1>、模块说明:三角波模块中,clk为输入时钟端口,reset为输入复位端口,q为8位二进制输出端口。

<2>、工作流程图清零复位开始减1上升沿输出清零“00000000”,a=‘0’中间变量a=‘0’YNNYYN置输出“11111111”,a=‘1’输出等于“00000001”输出等于“11111110”YNYN N增1输出<3>、源代码--File:delta.vhd --Designer:刘雄--Module:delta--Description: 产生三角波--Simulator:MAX plusII 10.0.9/Window XP--Synthesizer:MAX plusII 10.0.9/Window XP--Date:2011/05/03 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY delta ISPORT(clk,reset:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END delta;ARCHITECTURE behave OF delta ISBEGINPROCESS(clk,reset)VARIABLE tmp: STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE a: STD_LOGIC;BEGINIF reset='0' THENtmp :="00000000"; --复位清零ELSIF clk'EVENT AND clk='1'THENIF a='0' THENIF tmp="11111110" THENtmp:="11111111";a:='1'; --达到最大值置位标志位ELSEtmp:=tmp+1; --递增运算END IF;ELSEIF tmp="00000001"THENtmp:="00000000";a:='0'; --达到最小值清零标志位ELSEtmp:=tmp-1; --递减运算END IF;END IF;END IF;q<=tmp;END PROCESS;END behave;<4>、功能仿真图5、主要模块之阶梯波模块的设计<1>、模块说明:阶梯波模块中,clk为输入时钟端口,reset为输入复位端口,q为8位二进制输出端口。

改变递增的常数,可以改变阶梯的多少。

<2>、工作流程图清零复位开始a=‘0’上升沿中间变量a=‘0’YNNYY输出清零“00000000”,a=‘1’输出等于“11111111”YN N 增加16a=’1’输出<3>、源代码--File:ladder.vhd --Designer:刘雄 --Module:ladder --Description: 产生阶梯波--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2011/05/03 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ladder ISPORT(clk,reset:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ladder;ARCHITECTURE behave OF ladder ISBEGINPROCESS(clk,reset)VARIABLE tmp: STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE a: STD_LOGIC;BEGINIF reset='0' THENtmp :="00000000"; --复位清零ELSIF clk'EVENT AND clk='1'THENIF a='0' THENIF tmp="11111111" THENtmp:="00000000"; --达到最大值后清零a:='1';ELSEtmp:=tmp+16; --阶梯常数为16a:='1';END IF;ELSEa:='0';END IF;END IF;q<=tmp;END PROCESS;END behave;<4>、功能仿真图6、主要模块之正弦波模块的设计<1>、模块说明:正弦波模块中,clk为输入时钟端口,clr为输入复位端口,q 为8位二进制输出端口。

此模块中,一个周期取64个点。

<2>、工作流程图清零复位开始根据中间变量查表输出中间变量清零上升沿中间变量加1中间变量=63YNNYYN<3>、源代码--File:sin.vhd --Designer:刘雄--Module:sin --Description: 产生正弦波--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2011/05/03 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sin ISPORT(clk,clr:IN STD_LOGIC;d:OUT INTEGER RANGE 0 TO 255); END sin;ARCHITECTURE behave OF sin IS BEGINPROCESS(clk,clr)VARIABLE tmp: INTEGER RANGE 0 TO 63;BEGINIF clr='0' THENd<=0;ELSIF clk'EVENT AND clk='1'THENIF tmp=63 THEN --一个周期取64点tmp:=0;ELSEtmp:=tmp+1;END IF;CASE tmp IS --查表输出WHEN 00=>d<=255;WHEN 01=>d<=254;WHEN 02=>d<=252;WHEN 03=>d<=249;WHEN 04=>d<=245;WHEN 05=>d<=239;WHEN 06=>d<=233;WHEN 07=>d<=225;WHEN 08=>d<=217;WHEN 09=>d<=207;WHEN 10=>d<=197;WHEN 11=>d<=186;WHEN 12=>d<=174;WHEN 13=>d<=162;WHEN 14=>d<=150;WHEN 15=>d<=137;WHEN 16=>d<=124;WHEN 17=>d<=112;WHEN 18=>d<=99; WHEN 19=>d<=87; WHEN 20=>d<=75;WHEN 21=>d<=64; WHEN 22=>d<=53; WHEN 23=>d<=43;WHEN 24=>d<=34; WHEN 25=>d<=26; WHEN 26=>d<=19;WHEN 27=>d<=13; WHEN 28=>d<=8; WHEN 29=>d<=4;WHEN 30=>d<=1; WHEN 31=>d<=0; WHEN 32=>d<=0;WHEN 33=>d<=1; WHEN 34=>d<=4; WHEN 35=>d<=8;WHEN 36=>d<=13; WHEN 37=>d<=19; WHEN 38=>d<=26;WHEN 39=>d<=34; WHEN 40=>d<=43; WHEN 41=>d<=53;WHEN 42=>d<=64; WHEN 43=>d<=75; WHEN 44=>d<=87;WHEN 45=>d<=99; WHEN 46=>d<=112;WHEN 47=>d<=124;WHEN 48=>d<=137;WHEN 49=>d<=150;WHEN 50=>d<=162;WHEN 51=>d<=174;WHEN 52=>d<=186;WHEN 53=>d<=197;WHEN 54=>d<=207;WHEN 55=>d<=217;WHEN 56=>d<=225;WHEN 57=>d<=233;WHEN 58=>d<=239;WHEN 59=>d<=245;WHEN 60=>d<=249;WHEN 61=>d<=252;WHEN 62=>d<=254;WHEN 63=>d<=255;WHEN OTHERS=>NULL;END CASE;END IF;END PROCESS;END behave;<4>、功能仿真图7、主要模块之方波模块的设计<1>、模块说明:方波模块中,clk为输入时钟端口,clr为输入复位端口,q为8位二进制输出端口。