BJ-EPM CPLD入门套件VHDL例程1
0赞
发表于 4/11/2012 8:38:16 PM
阅读(3972)
BJ-EPM套件:http://item.taobao.com/item.htm?id=6733842901&
-- Filename ﹕ CLKDIV.vhd
-- Author ﹕ wuhouhang
-- Description ﹕ 分频计数器,50MHz时钟做分频后的50%占空比方波驱动蜂鸣器发声
-- 参考网址: http://wenku.baidu.com/view/fc10a00f79563c1ec5da71b5.html
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity CLKDIV is
port (
Clk : in STD_LOGIC; --50MHz输入时钟
Rst_n : in STD_LOGIC; --低电平复位信号
Clk_div : out STD_LOGIC --分频信号,连接到蜂鸣器
);
end entity CLKDIV;
port (
Clk : in STD_LOGIC; --50MHz输入时钟
Rst_n : in STD_LOGIC; --低电平复位信号
Clk_div : out STD_LOGIC --分频信号,连接到蜂鸣器
);
end entity CLKDIV;
--20bit计数器循环计数
architecture COUNTER OF CLKDIV is
signal cnt20b : STD_LOGIC_VECTOR (19 downto 0); --20bit计数器
begin
process (Clk,Rst_n)
begin
if Rst_n = '0' then
cnt20b <= x"00000";
elsif Clk'event AND Clk = '1' then
cnt20b <= cnt20b+"1"; --分频计数
end if;
end process;
Clk_div <= cnt20b(19); --分频赋值
end architecture COUNTER;
architecture COUNTER OF CLKDIV is
signal cnt20b : STD_LOGIC_VECTOR (19 downto 0); --20bit计数器
begin
process (Clk,Rst_n)
begin
if Rst_n = '0' then
cnt20b <= x"00000";
elsif Clk'event AND Clk = '1' then
cnt20b <= cnt20b+"1"; --分频计数
end if;
end process;
Clk_div <= cnt20b(19); --分频赋值
end architecture COUNTER;