《8.20 电子时钟VHDL程序与仿真》.doc
文本预览下载声明
8.20 电子时钟VHDL程序与仿真
1. 10进制计数器设计与仿真
(1)10进制计数器VHDL程序
--文件名:counter10.vhd。
--功能:10进制计数器,有进位C
--最后修改日期:2004.3.20
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity counter10 is
Port ( clk : in std_logic;
reset : in std_logic;
din : in std_logic_vector(3 downto 0);
dout : out std_logic_vector(3 downto 0);
c:out std_logic);
end counter10;
architecture Behavioral of counter10 is
signal count : std_logic_vector(3 downto 0);
begin
dout = count;
process(clk,reset,din)
begin
if reset=0then
count = din ;
c=0;
elsif rising_edge(clk) then
if count = 1001 then
count = 0000;
c=1;
else
count = count+1;
c=0;
end if;
end if;
end process;
end Behavioral;
10进制计数器仿真
2. 6进制计数器设计与仿真
(1)6进制计数器VHDL程序
--文件名:counter6.vhd。
--功能:6进制计数器,有进位C
--最后修改日期:2004.3.20
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity counter6 is
Port ( clk : in std_logic;
reset : in std_logic;
din : in std_logic_vector(2 downto 0);
dout : out std_logic_vector(2 downto 0);
c:out std_logic);
end counter6;
architecture Behavioral of counter6 is
signal count : std_logic_vector(2 downto 0);
begin
dout = count;
process(clk,reset,din)
begin
if reset= 0 then
count = din;
c=0;
elsif rising_edge(clk) then
if count=101 then
count=000;
c=1;
else
count=count+1;
c=0;
end if;
end if;
end process;
end Behavioral;
(2)6进制计数器仿真
3. 6进制计数器设计与仿真
(1)24进制计数器VHDL程序
--文件名:counter24.vhd。
--功能:24进制计数器。
--最后修改日期:2004.3.20
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity counter24 is
Port ( clk : in std_logic;
reset : in std_logic;
din : in std_logic_vector(5 downto 0);
dout : out std_logic_ve
显示全部