采用EDA技术的波形发生器的设计(7)

2019-01-26 18:54

常州大学本科生毕业设计(论文)

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页

--


采用EDA技术的波形发生器的设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:某某医院生活污水处理设计方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: