常州大学本科生毕业设计(论文)
if cnt< \ full<='1'; else full<='0'; end if; end if; q<=full; end process ; end;
3. 按键去抖模块 -- Company: -- Engineer: --
-- Create Date: 12:41:28 01/25/2008 -- Design Name:
-- Module Name: qudou - Behavioral -- Project Name: -- Target Devices: -- Tool versions: -- Description: --
-- Dependencies: --
-- Revision:
-- Revision 0.01 - File Created -- Additional Comments: --
---------------------------------------------------------------------------------- library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;
--use UNISIM.VComponents.all;
entity qudou is
port(clkin: IN STD_LOGIC ; -- 128Hz 时钟输入 reset: IN STD_LOGIC ; din: IN STD_LOGIC ; dout: OUT STD_LOGIC); end qudou;
architecture Behavioral of qudou is
TYPE state IS( s0,s1,s2,s3); SIGNAL pre_s, next_s: state; begin
P0:PROCESS(reset, clkin) BEGIN
第26页 共34页
常州大学本科生毕业设计(论文)
if reset = '0' then pre_s <= s0;
elsif rising_edge(clkin) then -- 在时钟的上升沿状态赋值 pre_s <= next_s; else null; end if;
END PROCESS P0; P1:PROCESS( pre_s, next_s, din ) BEGIN
case pre_s is
when s0 => -- 低电平时间不够长,就会跳转回s0 dout <= '1'; if din = '1' then next_s <= s0; else -- 前几个状态,dout都输出1 next_s <= s1; end if; when s1 => dout <= '1'; if din = '1' then next_s <= s0; else
next_s <= s2; end if; when s2 => dout <= '1'; if din = '1' then next_s <= s0; else
next_s <= s3; end if; when s3 =>
dout <= '0'; -- 在状态s3时,dout输出0 if din = '1' then next_s <= s0; else
next_s <= s3; end if; end case;
END PROCESS P1; end Behavioral; 4. 波形存储模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
第27页 共34页
常州大学本科生毕业设计(论文)
ENTITY BOX IS
ARCHITECTURE DACC OF BOX IS COMPONENT allwave
PROCESS BEGIN
WAIT UNTIL CLK'EVENT AND CLK = '1';
IF RES = '0' THEN
CLK_COUNT_64KHz <= X\ CLK_64KHz <= '0'; ELSE
IF CLK_COUNT_64KHz < X\ CLK_COUNT_64KHz <= CLK_COUNT_64KHz + 1; ELSE
CLK_COUNT_64KHz <= X\ CLK_64KHz <= NOT CLK_64KHz;
--分频器,产生64KHz的时钟
SIGNAL CLK_COUNT_64KHz: STD_LOGIC_VECTOR(19 DOWNTO 0); SIGNAL CLK_64KHz : STD_LOGIC;
signal DOUT_tmp,DOUT_tmp1: STD_LOGIC_VECTOR ( 7 DOWNTO 0 ); SIGNAL Q1 : STD_LOGIC_VECTOR ( 7 DOWNTO 0 );
--波形存储ROM
PORT( CLK :IN STD_LOGIC;
RES :IN STD_LOGIC; fre_adj :IN integer range 0 to 4; amp_adj :IN integer range 0 to 4; DOUT_en: out std_logic; ws : IN integer range 0 to 4);
--频率调整值
--幅度调整值
--波形数据输出
--波形数据使能
DOUT: OUT STD_LOGIC_VECTOR ( 7 DOWNTO 0 );
--波形类型选择
END;
PORT (address : IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 );
inclock : IN STD_LOGIC;--地址锁存器
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );
END COMPONENT;
BEGIN
第28页 共34页
常州大学本科生毕业设计(论文)
PROCESS BEGIN
WAIT UNTIL CLK'EVENT AND CLK = '1';
IF RES = '0' THEN
DOUT_tmp1 <= \ELSE case amp_adj is
--根据波形调整值,调整输出波形的幅度
END IF;
END IF;
END PROCESS;
when 0 => DOUT_tmp1 <= '0' & DOUT_tmp(7 downto 1); --每右移一位,输出幅度减为一半
when 1 => DOUT_tmp1 <= \ when 2 => DOUT_tmp1 <= \ when 3 => DOUT_tmp1 <= \ when others => DOUT_tmp1 <= '0' & DOUT_tmp(7 downto 1); end case;
END IF;
END PROCESS;
PROCESS ( CLK_64KHz ) BEGIN
IF CLK_64KHz'EVENT AND CLK_64KHz = '1' THEN 址
IF ws=0 THEN
IF ws=3 THEN
IF Q1<128 AND Q1>63 THEN
Q1<=Q1+fre_adj; ELSE Q1<=\END IF;
--64 point sawtooth wave
IF Q1<64 THEN
--64点正弦信号
Q1<=Q1+fre_adj; --Q1作为地址发生器计数器
--产生读ROM地
ELSE Q1<=\END IF;
END IF;
END IF;
第29页 共34页
常州大学本科生毕业设计(论文)
IF ws=1 THEN IF Q1<192 AND Q1>127 THEN
--64点三角波信号
Q1<=Q1+fre_adj; ELSE Q1<=\ END IF;
END IF;
IF ws=2 THEN
--64点方波
IF Q1<=255 AND Q1>191 THEN
Q1<=Q1+fre_adj; ELSE Q1<=\
END IF;
END IF;
END IF; END PROCESS;
DOUT <= DOUT_tmp1;
--数据和数据使能的输出DOUT_en <=CLK_64KHz;
u1 : allwave PORT MAP( address=>Q1,q=> DOUT_tmp,inclock=>CLK_64KHz ); ROM接口
END;
5. TLC5620驱动模块
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity tlc5620 is port(
rst_n : in std_logic; clk : in std_logic; write_n : in std_logic; data_en : in std_logic;
wr_data : in std_logic_vector(7 downto 0) ; dac_clk : out std_logic;
dac_data: out std_logic; -- DAC的输出信号 dac_load: out std_logic;
第30页 共34页
--
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库采用EDA技术的波形发生器的设计(7)在线全文阅读。
相关推荐: