1、四总体设计方案 函数信号发生器主要由波形选择部分,波形发生部分和输出部分组成,其硬件结构图如下图。五电路图六单元电路设计一频率控制模块代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FREQUENCY IS PORT ( CLK : IN STD_LOGIC; A : IN STD_LOGIC_VECTOR(4 DOWNTO 0);-设置A的初值 FOUT : OUT STD_LOGIC ); END; ARCHITECTURE one OF FREQUENCY IS SI
2、GNAL FULL : STD_LOGIC; BEGIN P_REG: PROCESS(CLK) VARIABLE CNT1 : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF CNT1 = 11111 THEN CNT1 := A; -当CNT1计数计满时,输入数据D被同步预置给计数器CNT1 FULL = ; -同时使溢出标志信号FULL输出为高电平 ELSE CNT1 := CNT1 + 1; -否则继续作加1计数0 -且输出溢出标志信号FULL为低电平 END IF; END PROCESS P_R
3、EG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : IF FULLEVENT AND FULL = CNT2 := NOT CNT2; -如果溢出标志信号FULL为高电平,D触发器输出取反 IF CNT2 = THEN FOUT ELSE FOUT NULL; WHEN OTHERS = a = d(0);-dlt b = d(1);-sqr c = d(2);-sin END CASE; END PROCESS;END; 模块元件图三三角波信号产生模块library ieee; use ieee.std_logic_1164.all; use ieee.std
4、_logic_arith.all; use ieee.std_logic_unsigned.all; entity delta is port ( clk : in std_logic ; clr : in std_logic; q : out std_logic_vector(7 downto 0) ) ; end delta;architecture one of delta is beginprocess( clk,clr) variable num : std_logic_vector(7 downto 0); variable ff : std_logic; if clr = the
5、n num := 00000000 else if clkevent and clk = then-时钟信号有上升沿时有效 if ff = if num = 11111000 ff := else= num + 8; end if;-以上,ff=0时,上升,直至num加到11111000时,使ff=100000111= num -8;-以上,ff=1时,下降,直至num减到00000111时,使ff=0 q = num;-每一次脉冲,将num的值给q以输出 end process ;end;四方波信号产生模块 entity aquare is end aquare;architecture o
6、ne of aquare issignal ff:bit;p1: std_logic_vector(5 downto 0); ff then-当时钟脉冲有一个上升沿 if num 31 then= num+1;000000= not ff;-num每次加1,加32次ff取反1次end process p1;p2: process( clk,ff)begin if clk11111111-ff=1时输出高电平-ff=0时输出低电平 end process p2;五正弦波信号产生模块 entity sin is -正弦信号的相位 d : -正弦函数值 end ;architecture one o
7、f sin is-结构体开始 process( clk,clr) d null ; end case ; end process;六波形选择器 entity changer is port ( dlt,sqr,sin : dltd,sqrd,sind : in std_logic_vector(7 downto 0); end changer;architecture one of changer isprocess( dlt,dltd,sqr,sqrd,sin,sind) variable temp : std_logic_vector(2 downto 0); - variable a,b : std_logic_vector(9 downto 0); - variable c,d,e : temp :=dlt&sqr&sin; case temp is100= dltd;-a00输出三角波010= sqrd;-0b0输出方波001= sind;-00c输出正弦波 null; end case;七实验调试结果三角波波形方波波形正弦波波形八实验总结从仿真及实验结果可以看出,本设计较好地满足了设计要求。同时,由于采用模块化的设计方法,系统中的各个电路均可独立实现各自的功能从而使系统具有较强的可移植性和维护性,这也为系统的功能扩展和升级提供了很大的便利。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1